PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stromimpuls von 1s auf 300ms beschränken



wafink
18.05.2018, 17:14
Hallo Forum,

möchte mit meiner Türsprechanlage eine Türglocke ansteuern. Die Türglocke hat eigene stromversorgung, brauch nur einen kurzen impuls (8-12Volt AC oder DC),der darf aber nicht 1 sekunde dauern. Wie lang er sein darf weis ich nicht genau aber kurzes Kontaktschliessen löst türglöcke aus 1 Sekunde kontaktschliesen schon nicht mehr. Kann denn impuls in der Konfig der Türsprechanlage nicht weiter verkürzen als 1 Sekunde.

Jetzt suche ich kleine Schaltung die das übernimmt. Hab schon was von Monoflop gelesen, blicke aber nicht mehr durch.

Ich hab leider meine Elektroniker Lehre nicht zu ende gemacht. Und mein Halbwissen ist nach 24 jahren
auch schon verblast.:(

Kann mir da jemand weiterhelfen?

i_make_it
18.05.2018, 19:20
Willkomen im Forum.

Welche Spannung hat denn die Türsprechanlage?
Auch 8-12V?
Kannst Du 5V/8-12V dauerhaft über die Türsprechanlage oder Klingel bekommen? (für die Zusatzschaltung)

Monoflop ist schon nicht verkehrt.
In Deinem Fall ist der Auslöseimpuls länger als der den Du ausgeben willst, also sollte es flankengesteuert sein und zwar die steigende Flanke (oder du willst zwei mal Klingeln, dann kannst Du auch mit beiden Flanken des Eingangsimpulses triggern.

Rein in Hardware geht das, aber da Du nicht durchblickst, wäre eine µC Lösung mit Minimalbeschaltung und der entsprechenden Software eventuell besser.

Bsp.:
http://www.instructables.com/id/Digispark-Attiny-85-With-Arduino-IDE/
Das Board ist per USB proggrammierbar, Arduino IDE gibt kostenlos, Board gibt es recht günstig.
Du brauchst nur einen Eingang und einen Ausgang. Wird vom Board erfüllt.

Zusatzbeschaltung kann auf etwas Lochrasterplatine aufgebaut werden.
Eigentlich brauchst Du eine Spannungsanpassung für den Eingang (Spannungsteiler) und einen Treiber für den Ausgang (Transistor) sowie die Stromversorgung für den µC (Längsregler 7805 mit Blockkondensatoren, Stützkondensator und Schutzdiode).
Bsp.:
33464
Bei DC Versorgung entfällt C1 und Br1.
R1 plus LED1 sind die Last also dann das Board.

Programmseitig, kann Pin 0 raising und falling IRQ.

Also ein Raising IRQ an Pin 0 löst ein setzen des Ausgangs aus, dem eine Wartezeit (delay) folgt und dann wieder ein Zurücksetzen des Ausgangs.

wafink
19.05.2018, 21:18
Hallo,

Die Lösung mit dem Board, hört sich sehr interessant an, aber dafür müsste ich mich auch erstmal durch ein paar Foren lesen.
Kleine Schaltung wäre da besser, kann nur leider nicht die richtigen bauteile berechnen.
Habe nochmal den gong getesten er funktioniert auch mit 5V AC. Kann aber auch jede andere spannung bereitstellen, weil mir der türsprechanlage Schalte ich nur einen kontakt.
Schön wäre kleine Schaltung die ich für 1 Sekunde mit spannung versorge die aber nur für ca 300ms die spannung rausgibt (Welche Spannung genau ist nicht so wichtig(5-12volt AC und Dc getestet).

- - - Aktualisiert - - -

Habe mir nochmal den digispark mini attiny85 angeschaut.
für 7€ werde ich mir mal einen besorgen.
Werde wohl keine Deppen Anleitung zum selberlöten finden,für die kleine Schaltung.
Wenn ich Probleme beim programmieren habe finde ich bestimmt hier Hilfe;)

Siro
20.05.2018, 08:50
Ich habe das mal grad ausprobiert auf dem Steckbrett.

HaWe
20.05.2018, 09:43
ich würde einen Arduino Nano oder Micro nehmen, der lässt sich einfacher programmieren (digitalRead(), digitalWrite(), delay(), millis() ) und das Programm lässt sich auch einfacher (per USB) hochladen.

i_make_it
20.05.2018, 12:06
Nachteil eines µC ist, das er ja schon eine Spannungsversorgung braucht. Bzw. beim Einschalten derselben erst mal "bootet" (Die per USB Programmierbaren haben einen bootloader) das braucht Zeit. Dafür ist das Programm einfacher. Da einfach beim Einschalten einmalig der Ausgang für eine definierte Zeit gesetzt wird.
Einen Eingang braucht es dann gar nicht, da der Eingang ja das Bereitstellen der Betriebsspannung ist.
Das ganze Programm dürfte in Arduino nicht mehr sein wie:


void setup() {
pinMode(0, OUTPUT);
digitalWrite(0,HIGH);
delay(50);
digitalWrite(0,LOW);
}

void loop() {

}



Eine Schaltung, die durch den Triggerimpuls mit Spannung versorgt wird, hat natürlich auch etwas für sich.
Ein NE555 als nicht retrigerbares Monoflop.

Der Eingang geht auf einen Stützkondensator und Vcc.
Trigger hängt an einem Spannungsteiler der aus einem Widerstand und einem Kondensator gebildet wird.
Beginnt der Eingangsimpuls, wird der Stützkondensator geladen und gleichzeitig über den Widerstand der Kondensator vom Spannungsteiler.
Ist Vcc hoch genug, ist der NE555 einsatzbereit.
Durch den Widerstand am Spannungsteiler und den Kondensator steigt die Spannung an Trigger langsamer.

Wenn Du die Bauteile nicht berechnen kannst, hast Du Dir schon mal LT-Spice angesehen?
In der Simmulation kannst Du zur Not auch mit Trial and Error Bauteilwerte durchprobieren.

Fang mit einer Grundschaltung für ein Monoflop an so das dein Ausgangsimpuls richtig raus kommt wenn Du eine stabile DC Versorgung hast.
Dann änder die Versorgung auf einen Rechteckimpuls und schau was raus kommt.
Fügen den Spannungsteiler Als Eingangsverzögerung für Trigger ein und taste Dich zu funktionierenden Werten vor.
Mal ein quick and dirty LTSpice Entwurf: (ohne Stützkondensator, da null Belastung in der Simulation)
33468
Grün ist die Spannungsversorgung (Signal von der Türsprechanlage).
Blau ist die Verzögerung des Triggereingangs.
Rot ist das Ausgangssignal (Der Spannungsteiler R5, R6 ist nur da, damit die Simulation nicht den offenen Pin anmeckert). R2/C1 beeinflusst die Länge.

Simulationsdauer: 3 Sekunden.
Spannungsquelle: Pulse, 1 Sekunde 0V, 1 Sekunde 8V, dann 0V, Keine Anstiegs- oder Fallzeiten.

Bauteilaufwand:
3 Kondensatoren
3 Widerstände
1 NE555

Als Grundlage habe ich die folgende Schaltung genommen:
http://de.f-alpha.net/elektronik/integrierte-schaltungen/timer-555/weiter-gehts/experiment-12-non-retriggerable-monoflop/





(http://de.f-alpha.net/elektronik/integrierte-schaltungen/timer-555/weiter-gehts/experiment-12-non-retriggerable-monoflop/)

HaWe
20.05.2018, 12:40
Nachteil eines µC ist, das er ja schon eine Spannungsversorgung braucht. Bzw. beim Einschalten derselben erst mal "bootet" (Die per USB Programmierbaren haben einen bootloader) das braucht Zeit. Dafür ist das Programm einfacher. Da einfach beim Einschalten einmalig der Ausgang für eine definierte Zeit gesetzt wird.
Einen Eingang braucht es dann gar nicht, da der Eingang ja das Bereitstellen der Betriebsspannung ist.
Das ganze Programm dürfte in Arduino nicht mehr sein wie:


void setup() {
pinMode(0, OUTPUT);
digitalWrite(0,HIGH);
delay(50);
digitalWrite(0,LOW);
}

void loop() {

}




der Arduino muss nicht unbedingt jedes Mal neu booten, man kann ihn in einen Sleep-Zustand versetzen und per Pinchange-Interrupt (Klingelknopf) aufwecken.
Das geht sehr schnell, und nach getaner Arbeit schläft er dann sogleich wieder ein.
Dass er eine eigene Spannungsversorgung braucht, stimmt ntl.

hardware.bas
20.05.2018, 12:50
Ich bin zwar kein Fan von elektromechanischen Steuerugen, will aber
ausnahmsweise mal einen einfachsten Vorschlag machen, fall die
Klingel an einem normalen 8-VAC-Klingeltrafo hängen sollte.
Man schaltet ein billiges 6-VDC-Relais in Reihe mit einer Diode und
einem Widerstand. Parallel zum Relais kommt ein richtig gepolter
Elko. Beim Wert von R und C muss dann etwas probiert werden.
Das Relais braucht mindestens einen Ruhe- oder Umschaltkontakt
(vulgärelektrische Bezeichnung: Öffner bzw Wechsler)
Die genannte Anordnung kommt an die geschaltete Klingelpannung
und die Klingel, allerdings zusätzlich geschaltet durch die Ruheseite
des Relaiskontaktes, auch.
Bei einem Tastendruck klingelt es zunächst, bei ausreichender Länge
zieht das Relais verzögert an und unterbricht die Klingel.
Nach Loslasen der Taste bleibt das Relais allerdings noch einen
Moment angezogen, so dass Mitmenschen, welche gene
Klingelsturm zelebrieren, schnell die Lust dran verlieren.
Durch das etwas gleitende Schalten des Relaiskontaktes ist die
Schaltung technisch nicht ganz sauber, für derartig kleine
Leistung sollte das jedoch problemlos sein.
VG Micha

wafink
20.05.2018, 13:22
Danke für die ganzen Tips, nächste woche kommt der Digispark Attiny 85.
Wenn ich das richtig verstanden habe kann ich denn so programmieren,
das wenn er eingeschaltet wird über die türsprechanlage(5V 1s).
Er einen Ausgang für für ca 300ms mit 5V schaltet?
Und noch nicht mal eine dauerstromversorgung braucht?

Wenn das so einfach klappen würde wäre das für mich die beste lösung.
Wenn das nichtg klappt werde ich mal nach Conrad paar bauteile besorgen.

i_make_it
20.05.2018, 14:23
der Arduino muss nicht unbedingt jedes Mal neu booten, man kann ihn in einen Sleep-Zustand versetzen und per Pinchange-Interrupt (Klingelknopf) aufwecken.
Das geht sehr schnell, und nach getaner Arbeit schläft er dann sogleich wieder ein.
Dass er eine eigene Spannungsversorgung braucht, stimmt ntl.

Unter der Bedingung:


Schön wäre kleine Schaltung die ich für 1 Sekunde mit spannung versorge die aber nur für ca 300ms die spannung rausgibt schon.

Mein erster Vorschlag war ja mit IRQ Eingang und dauerhaft versorgtem µC.
Aber wenn die Versorgung der Trigger ist und sonst nichts da ist, würde es auf einen Boot je Vorgang hinauslaufen.

oberallgeier
20.05.2018, 16:27
.. Aber wenn die Versorgung der Trigger ist und sonst nichts da ist, würde es auf einen Boot je Vorgang hinauslaufen.Und das könnte dauern. Und zwar satte sechs Sekunden oder mehr - geschätzt 6 sec ±1 sec. Wieso? Darum:

i) Vor 5 Wochen hatte ich mir mit andern Teilchen auch ein Digispark-namenlos (dies (https://csd-electronics.de/ICs/Mikrocontroller/Starterkits/Arduino/Arduino-kompatibles-Digispark::12590.html?MODsid=6k79sa86i9sopkpl35r52 v6rj1)) gekauft.
ii) gerade eben hatte ich mal mein eigenes Progrämmelchen zeitlich ausgemessen. Ein Kleinstsprogramm, siehe iii), programmiert in C.
iii) Programmablauf: Konfiguration PortB, mein übliches "Resetblinken", d.h. 10 mal "blinzeln" = board-LED 10 ms ein, 90 ms aus, danach ein 0,5 Hz-Blink = 1 sec ein, 1 sec aus.
iv) Das eigene Programm startet "sofort" beim Einstecken in den USB-Anschluss, sprich: sobald Power anliegt. Eine Verzögerung ist nicht erkennbar - warum auch (siehe unten).
v) Das originale "Test"programm das mit dem Digispark geliefert wurde scheint der Bootloader zu sein. Ich hatte den sofort nach Kauf gesichert und heute wieder aufgespielt.
vi) Allgemein: ein Bootloader wartet erfahrungsgemäss anfangs ein paar Sekunden, ob ein Programm ansteht das geladen werden muss, danach wird dieses geladenen Programm gestartet, bzw immer nach Anfang Programmspeicher (+ offset für den Boot-Sprungvektor) gesprungen. Fazit: der Controller/das Board wartet bei JEDEM PowerOn ob etwas zum Flashen per USB ansteht eine gewisse Zeit zum Reagieren des Programmiereres *gg*.
vii) Das originale Testprogramm wartet bei mir (laut Handstoppung mit Stoppuhr) 6,0x Sekunden bis eine Art Sekundenblinken anläuft.
viii) Diese rund sechs Sekunden scheinen mir die Wartezeit zu sein, die DIESES spezielle Teilchen von PowerOn bis Programmlauf JEDES MAL durchläuft.
Diese Wartezeit startet bei JEDEM PowerOn neu !
ix) Ein sofortiger Anlauf dürfte nur mit nem eigenen Programm sinnvoll sein. Dann dürfte der Programmstart auf deutlich unter 1 ms zu drücken sein.

Ein eigenes Programm aufzuspielen ist pipieinfach: ich habs mit meinem Programmer (diesem hier (https://www.pololu.com/product/1300)) gemacht. Die sechs Pinne gehen an GND, Vcc, MOSI-an-PB0, MISO-an-PB1, SCK-an-PB2 und /RESET-an-PB5. Siehe Bezeichnungen z.B. hier (http://digistump.com/products/1). Das ergab bei mir ein selbst gestricktes Flashkabel einfachster Art - 6fach-Buchsenstecker auf der Programmerseite + Steckbuchsen für Digispark.

Aus den Fuses ist zur Startzeit folgenes zu errechnen:
Startzeit BIS ZUM START des BOOTLOADERS ( ! ! ) : PLL Clock; Start-up time PWRDWN/RESET 1KCK/14CK+64ms, grob also etwas mehr als 64 ms. DANACH kommt die Wartezeit des Bootloaders ! !
Startzeit ohne Bootloader sowie bei/nach Ändern der Fuses auf Int. RC Osc, 8 MHz; Start-up time PWRDWN/RESET: 6ck/14Ck + 0 ms - - - also unter 1 ms ! Hier die Voraussetzung dass die Anstiegszeit der Versorgungsspannung nicht zu lang wird. 1 ms ist schon etwas sehr kurz!

Viel Erfolg

HaWe
20.05.2018, 17:07
Und das könnte dauern. Und zwar satte sechs Sekunden oder mehr - geschätzt 6 sec ±1 sec. Wieso? Darum:

i) Vor 5 Wochen hatte ich mir mit andern Teilchen auch ein Digispark-namenlos (dies (https://csd-electronics.de/ICs/Mikrocontroller/Starterkits/Arduino/Arduino-kompatibles-Digispark::12590.html?MODsid=6k79sa86i9sopkpl35r52 v6rj1)) gekauft.
ii) gerade eben hatte ich mal mein eigenes Progrämmelchen zeitlich ausgemessen. Ein Kleinstsprogramm, siehe iii), programmiert in C.
iii) Programmablauf: Konfiguration PortB, mein übliches "Resetblinken", d.h. 10 mal "blinzeln" = board-LED 10 ms ein, 90 ms aus, danach ein 0,5 Hz-Blink = 1 sec ein, 1 sec aus.
iv) Das eigene Programm startet "sofort" beim Einstecken in den USB-Anschluss, sprich: sobald Power anliegt. Eine Verzögerung ist nicht erkennbar - warum auch (siehe unten).
v) Das originale "Test"programm das mit dem Digispark geliefert wurde scheint der Bootloader zu sein. Ich hatte den sofort nach Kauf gesichert und heute wieder aufgespielt.
vi) Allgemein: ein Bootloader wartet erfahrungsgemäss anfangs ein paar Sekunden, ob ein Programm ansteht das geladen werden muss, danach wird dieses geladenen Programm gestartet, bzw immer nach Anfang Programmspeicher (+ offset für den Boot-Sprungvektor) gesprungen. Fazit: der Controller/das Board wartet bei JEDEM PowerOn ob etwas zum Flashen per USB ansteht eine gewisse Zeit zum Reagieren des Programmiereres *gg*.
vii) Das originale Testprogramm wartet bei mir (laut Handstoppung mit Stoppuhr) 6,0x Sekunden bis eine Art Sekundenblinken anläuft.
viii) Diese rund sechs Sekunden scheinen mir die Wartezeit zu sein, die DIESES spezielle Teilchen von PowerOn bis Programmlauf JEDES MAL durchläuft.
Diese Wartezeit startet bei JEDEM PowerOn neu !
ix) Ein sofortiger Anlauf dürfte nur mit nem eigenen Programm sinnvoll sein. Dann dürfte der Programmstart auf deutlich unter 1 ms zu drücken sein.

Ein eigenes Programm aufzuspielen ist pipieinfach: ich habs mit meinem Programmer (diesem hier (https://www.pololu.com/product/1300)) gemacht. Die sechs Pinne gehen an GND, Vcc, MOSI-an-PB0, MISO-an-PB1, SCK-an-PB2 und /RESET-an-PB5. Siehe Bezeichnungen z.B. hier (http://digistump.com/products/1). Das ergab bei mir ein selbst gestricktes Flashkabel einfachster Art - 6fach-Buchsenstecker auf der Programmerseite + Steckbuchsen für Digispark.

Aus den Fuses ist zur Startzeit folgenes zu errechnen:
Startzeit BIS ZUM START des BOOTLOADERS ( ! ! ) : PLL Clock; Start-up time PWRDWN/RESET 1KCK/14CK+64ms, grob also etwas mehr als 64 ms. DANACH kommt die Wartezeit des Bootloaders ! !
Startzeit ohne Bootloader sowie bei/nach Ändern der Fuses auf Int. RC Osc, 8 MHz; Start-up time PWRDWN/RESET: 6ck/14Ck + 0 ms - - - also unter 1 ms ! Hier die Voraussetzung dass die Anstiegszeit der Versorgungsspannung nicht zu lang wird. 1 ms ist schon etwas sehr kurz!

Viel Erfolg

beziehst du dich damit auch auf den von mir vorgeschlagenen Arduino Nano oder Micro?
Und z.B. mit i_make_it's Arduino-Sketch?
denn darauf bezog sich ja sein Zitat

.. Aber wenn die Versorgung der Trigger ist und sonst nichts da ist, würde es auf einen Boot je Vorgang hinauslaufen.

wenn ja, dann teste es doch bitte erstmal selber genau damit aus, bevor du hier Leute mit völlig aus der Luft gegriffenen Werten verunsicherst. Ich halte deine "bis zu 6 Sekunden" für die beiden Arduino-MCUs für völlig (VÖLLIG!) abwegig.

- - - Aktualisiert - - -

PS,
gerade getestet mit Blink-Sketch:
unter 1 sec, eher eine halbe als 1 ganze.

Was nicht heißen soll, dass es schnell ist, aber Lichtjahre entfernt von 6 sec.

wafink
20.05.2018, 21:00
Also ich könnte, wenn die bootzeit nicht zu lange ist, mit jedem klingeln neu starten und ihn so programmieren
das er bei jedem booten für 300ms einen ausgang schaltet.

Wenn das bootet zu lange dauert, kann ich das ganze mit dauerstrom versorgen und dem Digispark Attiny 85 so programmieren das wenn ich am eingang X
für 1 sec 5v drauf gebe (klingeltaster) und er am ausgang Y für 300ms 5V ausgibt.(gong)

Habe ich das soweit richtig verstanden?

i_make_it
20.05.2018, 21:33
Ja, beides geht.
Dauerhaft versorgter µC mit Interrupteingang fürs Klingelsignal und µC der mit dem Einschalten der Spannungsversorgung einmal den Code ausführt.

Bei meinen Digispark Clones habe ich die Dauer des "Bootvorgangs" nicht gemessen. Aber wenn das über 6 Sekunden sind, wäre es sinnvoll einen Nano zusätzlich zu holen, den kann man dann als ArduinoISP nutzen, aber auch "normal" für eigene Projekte.
Da sollte man von einem Clone absehen, meine letzten 5 Nano Clones kamen ohne Bootloader. Die musste ich selbst erst mit ArduinoISP brennen.

Als ISP könnte man dann den ATTiny direkt programmieren damit kein interner Bootloader durchlaufen wird.

wafink
20.05.2018, 23:04
Ich werde mich sofort melden wenn er da ist.
Dann mal schauen ob mit oder ohne dauerstrom.
ist mir eigendlich egal, hauptsache ich bekomm das gebacken mit dem programmieren.