Hallo funky34,
ohne Grundlagen geht es nun mal nicht.
vielleicht hilft das etwas weiter?:
https://www.rahner-edu.de/grundlagen.../timer-ic-555/
Gruß
Hallo funky34,
ohne Grundlagen geht es nun mal nicht.
vielleicht hilft das etwas weiter?:
https://www.rahner-edu.de/grundlagen.../timer-ic-555/
Gruß
Mit einem 555 wird das nicht so ohne weiteres gehen.
Erstell erst mal mit einem 555 ein retriggerbares Monoflop.
Der Ausgang geht beim Start von OFF auf ON (je nach Spannung die verwendet wird z.B. von 0V auf 5V).
Und bei Ablauf der Zeit auf ON auf OFF.
Retriggerbar heist, das wenn innerhalb der ON-Zeit ein neuer Startimpuls kommt der Timer zurückgesetzt wird und die ON-Zeit entsprechend länger wird.
Danach nimmt man ein Latch (Flankengesteuertes Flip Flop) bei jedem Wechsel (OFF nach ON oder ON nach OFF) wird der Ausgang des Latch von OF auf ON gesetzt.
Jetzt benötigt man eine Verzögerungskette (das kann ein zweiter 555 sein) die nach einer Sekunde das Latch zurücksetzt.
So bekommt man ein paar Nanosekunden nach dem Auslösereigniss einen 1S Puls und am Ende der eingestellten Zeit einen zweiten 1S Puls.
Wobeoi man die Länge des Pulses der beim Flankenwechsel auftritt auch einstellen kann wenn er nur kürzer ist als die kürzeste Zeit des ersten Monoflops.
Wie gesagt in dem genannten Video über den 555, ab 4:44 wird der Monoflop erklärt.
https://www.youtube.com/watch?v=i0SNb__dkYI
Wenn das mit dem Verständniss bei der Hardware Entwicklung noch hängt oder das Elektronik wissen nicht ausreicht, wäre die µC Variante allerdings wirklich eine Überlegung wert.
Eventuell mal den:
"Digispark Mini, ATtiny85, USB"
ansehen.
(ich selbst habe keine Erfahrung mit dem)
Der soll mit der Arduino IDE direkt per USB programimerbar sein, ist klein und kostet nicht die Welt.
Wenn die eine Sekunde langen Pulse nicht auf die Nanosekunde genau sein muß, ist ein Programm auch nicht all zu komplex.
Mit dem Triggerereigniss (und wenn Merkvariable2 nicht gesetzt ist) wird der aktuelle Wert des freilaufenden Timers in eine Variable1 geschrieben
Eine Merkvariable2 wird gesetzt und der Ausgang3 gesetzt.
Bei jedem Programmdurchlauf wird der Timer mit der Variable1 + eine Sekunde verglichen.
Bei Erreichen oder Überschreiten wird Ausgang3 gelöscht.
Ebenfalls bei jedem Programmdurchlauf wird der freilaufende Timer mit dem Wert der Varibale1 + der Zeit die bis zum zweiten Puls vergehen soll verglichen.
Ist das erreicht oder überschritten wird der Timer in eine Variable4 eingelesen und der Ausgang3 gesetzt, bei jedem Programmdurchlauf wird der Timer mit der Variable4 + eine Sekunde verglichen.
Bei Erreichen oder Überschreiten wird Ausgang3 gelöscht und die Merkvariable2 gelöscht.
Erfolgt ein Triggerereigniss wärend die Merkvariable2 gesetzt ist, wird Variable1 auf den aktuellen Timerwert gesetzt aber nicht der der Programmteil für den ersten ein Sekunden Puls durchlaufen.
Diese Variante hat gegenüber delay() (eine Funktion der Arduino IDE) den Vorteil, daß der µC wärend der ganzen Zeit weiter Daten verarbeitet und nicht blokiert ist. Theoretisch kann der also noch etwas anderes parallel machen, solange die Zykluszeit für den Programmdurchlauf dadurch nicht zu lang wird. Falls doch müsste man einen Interrupteingang nuzten und ggf. Timer-IRQs nutzen.
Das wäre im groben die Programmlogik.
Kosten wären bei dieser Variante nur, knapp 13 € wenn man bei Reichelt kauft (andere Anbieter könnten ggf. günstiger sein).
Die Arduino IDE kann man kostenlos runterladen.
Eine Eingangs- und eine Ausgangsschaltung müsste man ggf. genauso bauen wie bei der Hardware Variante auch.
(Anpass- und Schuzschaltung für den Eingang und Lestungstreiber/Anpaßschaltung für den Ausgang)
Geändert von i_make_it (13.03.2018 um 07:11 Uhr)
Mit der Überlegung über einen µC könnte ich mich anfreunden.
Du hast mr nun schon den möglichen Programmablauf recht detailreich beschrieben. Kannst du mir nicht die Programmzeilen zu Papier bringen. Ich werde mir den vorgeschlagenen Typ bei Reichelt bestellen.
Und danke für die Tipps
lg Funky
Ich kann wenn überhaupt frühestens am Wochenende mal was versuchen (Familinetermine).
Da ich mich mit dem Board nicht auskenne, muß ich erst mal nach Doku suchen damit ich weis welche Pins was können.
Wenn das triggerSignal lang genug ansteht, reicht ja ein digitalRead(). Steht das nur kurz an, brauchts einen Interrupteingang und eine ISR (Interrupt Service Routine).
Kann also sein, das ich was schreibe, das bei mir (nano, uno, due, mega) funktioniert, aber nicht an dem "Digispark Mini, ATtiny85, USB".
Das wäre dann anpassarbeit.
Und wie schon geschrieben, eine eventuell notwendige Eingangs und Ausgangsbeschaltung sollte man nicht vergessen.
Wäre doof so ein Teil wegen in paar gesparter Cent zu toasten.
https://s3.amazonaws.com/digistump-r...kSchematic.pdf
https://www.google.de/url?sa=t&rct=j...EtAIxFbzGqNLO6
http://www.cboden.de/mikro-controlle...-dem-digispark
https://arduino.ua/images/DPC254-2.jpg
Code:// Digispark Mini, ATtiny85, USB // Test 1 - Feste Zeiten mit Delay void setup() { pinMode(0, INPUT); pinMode(1, OUTPUT); } void loop() { int trigger = digitalRead(0); if (trigger <> 0) { digitalWrite(1, HIGH); delay(1000); //1 Sekunde an digitalWrite(1, LOW); delay(10000); //10 Sekunden aus digitalWrite(1, HIGH); delay(1000); //1 Sekunde an digitalWrite(1, LOW); } }Code:NICHT FERTIG // Digispark Mini, ATtiny85, USB // Test 2 - unsigned long prev1micros = 0; int trigger = 0; int togglesatate = LOW; void setup() { pinMode(0, INPUT); pinMode(1, OUTPUT); // attachInterrupt(0, Eingang, LOW); } void loop() { int trigger = digitalRead(0); if (trigger <> 0 && togglestate == LOW) { togglestate = HIGH; unsigned long cur1micros = millis(); } if (trigger <> 0 && togglestate == HIGH) { unsigned long cur1micros = millis(); } digitalWrite(1, HIGH); digitalWrite(1, LOW); }#Code:// Digispark Mini, ATtiny85, USB // Test 3 -
Geändert von i_make_it (16.03.2018 um 10:45 Uhr)
Also, ich werde das Teil ja erst mal bestellen und da habe ich es auch sicher nicht vor dem WE, also ein Zeitproblem gibts nicht. Das Eingangssignal stammt vom Dämmerungsschalter und liegt minimal eine Minute an. Da der Dämmerungsschalter Hochspannung liefert, muss da erst noch ein Relais her.
Also, wenns erst nächste Woche oder später wird, würde ich mich trotdem über die Programmzeilen freuen, ich übernehme sie nicht ungesehen, versprochen, sondern nur als Einstieg für meine Versuche mit dem Teil. Aber eine Supergrundlage wäre das bestimmt. Quellen für die notwendigen Infos habe ich Dank eurer Hilfe bekommen.
Lesezeichen