Hallo, benötige für eine Schaltung eine Art Timer der mir einfach nach dem anlegen der Steuerspannung/Stromversorgung nacheinander 3 Relais ansteuern kann, also ohne Taster oder so was, einfach STromversorgung an und der Timer arbeitet vom Relais 1 bis 3 durch und weiter nichts. Da die Geschichte mit herkömlicher Technick ausartet was Kosten und Teile angeht, suchte ich das Inet ab ohne einen passenden Denkanstoß zu finden wie ich so was mit einem Atmega/Attiny verwirklichen kann, da sich mit hilfe dieser Technologie die Bauteilemenge und die Kosten deutlich reduzieren würden. Die einschalt/ausschaltverzögerung die richtung ist egal, sollte einfach: Relais 1 nach 35 Sekunden Relais 2 nach 1 Minute und 20 Sekunden Relais 3 nach 2 Minuten und 30 Sekunden schalten wie Programiert man so etwas oder wo finde ich ein Beispiel in dem einfach erklärt ist was wo ist oder hingehört. Nen einfachen Timer mit nem LM311 hab ich schon gebaut aber der aufwand und die menge der Bauteile sowie die Größe lässt das ganze etwas extrem zu groß und aufwendig werden um das zu verwirklichen. Vieleicht hat auch jemand von Euch mal so was ähnliches gebaut? Der Timer soll nur einmal durchlaufen und danach einfach beim letzten Punkt stehen bleiben, also Relais 3 an. Im vorraus schon mal vielen Dank und frohe Ostern euch. LG Michael
Hallo, Denkanstoß: Als erstes benötigst du den größten gemeinsamen Teiler der drei Zeiten. Also von 35s,80s und 150s. Der Wert, der dabei rauskommt, musst du dann mit einem Timerinterrupt erzeugen. In der ISR zählts du dann eine Variable hoch. Und dann brauchst du nur noch drei If-Abfragen in denen du schreibst:
1 | if (variable == x) { |
2 | PORTy = (1<<PORTyz); |
3 | }
|
x steht an dieser Stelle für die Anzahl von Interrupts, die du brauchst um die geforderte Zeit zu erreichen y für den Port z für den Portpin Was mich noch interresieren würde, wofür braucht man so kurze Abstände? Gruß Jannis
Jannis C. schrieb: > Denkanstoß: Das ist ja vollkommen richtig, was du da schreibst. Und eigentlich macht man das ja auch so. Aber wenn das Ganze nichts anderes machen soll, als nacheinander 3 Relais einschalten, geht's viel einfacher und vor allen Dingen anfängerfreundlicher. 1. Alle Relais AUS 2. Delay 35 Sekunden 3. Relais 1 EIN 4. Delay 45 Sekunden 5. Relais 2 EIN 6. Delay 70 Sekunden 7. Relais 3 EIN 8. Warten auf Godot Attiny25, 1x 100nF, 3x BC..., 3-5V für den µC, Spannung für die Relais mfg.
Hallo,
deine Methode ist sicher Anfängerfreundlicher. Darauf habe ich ehrlich
gesagt nicht geachtet. Der TO hat seine Frage jedoch ziemlich genau
gestellt, was mich darauf schließen ließ, dass er mit der Materie
vertraut ist.
>Timer arbeitet vom Relais 1 bis 3 durch
Langerede kurzer Sinn: Beide Methoden werden zuverlässig funktionieren
Gruß Jannis
>@Jannis >x steht an dieser Stelle für die Anzahl von Interrupts, die du brauchst >um die geforderte Zeit zu erreichen >y für den Port >z für den Portpin Ja also wieviel Interup's brauche ich um 35 bis 70 Sekunden zu warten? sollte ja etwa dann so aussehen? : Config PortD = Output if (variable == x) { PORTD = (1<<PORTD0); } if (variable == x) { PORTD = (1<<PORTD1); } if (variable == x) { PORTD = (1<<PORTD2); } End ist das Richtig? Achso ich brauche das erste Relais für ne Testschaltung. Relais 2 macht dann nen Überladung Relais 3 schaltet in den Normalzustand, ab hier übernimmt ne Transistorregelung die Arbeit. Eigentlich ein einfaches vorhaben, das halt in Transistortechnik sehr auswendig realisierbar ist, die Zeitsteuerung wäre mit nem Atmel deutlich kleiner und hätte viel weniger bauteile, vorallem die Zeitaufwendige abgleicherei mit Elkos und Poties wäre da nicht nötig! Kann ja wenns fertig ist und super Funktioniert der Allgemeinheit mitsammt allen Schaltbildern und Photos zur verfügung stellen :-) _____________ Thomas Eckmann schrieb: > Jannis C. schrieb: >> Denkanstoß: > > Das ist ja vollkommen richtig, was du da schreibst. Und eigentlich macht > man das ja auch so. Aber wenn das Ganze nichts anderes machen soll, als > nacheinander 3 Relais einschalten, geht's viel einfacher und vor allen > Dingen anfängerfreundlicher. > > 1. Alle Relais AUS > 2. Delay 35 Sekunden > 3. Relais 1 EIN > 4. Delay 45 Sekunden > 5. Relais 2 EIN > 6. Delay 70 Sekunden > 7. Relais 3 EIN > 8. Warten auf Godot > > Attiny25, 1x 100nF, 3x BC..., 3-5V für den µC, Spannung für die Relais > > mfg. Hmmmm wie mach ich das? Wie man Port's als Ein b.z.w. Ausgänge schaltet! z.b. Config Portd = Output ??? Denke ich das ich weiß wie das geht, aber wie weiter? wie bring ich den Atmel dazu das er Punkt 1. bis 8. durchmacht und nichts weiter als nur die 3 Relais nacheinander anzuschalten?
Michael Haussmann schrieb: > Hmmmm wie mach ich das? http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Grunds.C3.A4tzlicher_Programmaufbau_eines_.C2.B5C-Programms http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Zugriff_auf_IO-Ports http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Warteschleifen_.28delay.h.29 mfg.
Hallo, hier ist eine Version, die auf zwei Modulen von Peter Dannegger basiert: der Task Scheduler und die Enprellenfunktionen. Verwendet habe ich einen atTiny45/85 und alle Pins belegt. PB0: Relais1 PB1: Relais2 PB2: Relais3 PB3: #Key ; Reset aller Relais. PB4: LED# ; Zeigt durch 1sek blinken den Betriebszustand an. Mehr im Bild und in den Programmdateien. Ich finde diese Art zu programmieren sehr 'schön' und ich denke auch übersichtlich. Man mache sich klar wie der Task: task_led, task_key und die Tasks: task_relais(N) funktionieren. Die Definitionen der Makros stehen in |main.h|. Der Task-Scheduler und die Entprellroutine läuft über timer0 im 25ms Zeitfenster. Danke Peter.
Cool Danke ich glaub das versuche ich gleich mal ;-) noch frohe Ostern euch. LG Michael
was soll ich sagen? Hab so meine Probleme, mein USB AVR Programierer scheint hin zu sein. Bekomme es auch nicht gebacken mit den mir zur verfügung stehenden Informationen oder Daten etwas anzufangen, fummle mit AVRStudio 4 und 5 rum und Ponyprog zum Übertragen an den Atmel, hab noch ein Pollin Evulationsboard, und recht viele Tiny13 rumliegen, Google Leese Probiere und verzweifle, weil ich es auch durch die ganzen Tutorials und diversen anderen Hilfestellungen einfach nicht verstehe wie ich was machen kann, hatte mal so ein Rotary LED Programm hier im Forum runtergeladen, und damit rumexperementiert, mit einem Simulator, wollte das Lauflicht zum Testen und verstehen auf 16/24 Ports erweitern, naja im Simulator hab ich gesehen das die anderen Ports (b,c/b,c,d) alle Zeitgleich das selbe machen, und war nicht mal mit so etwas einfachem erfolgreich :-((( bin voll der Looser. Den Timer bekomme ich ja eh nie hin denk ich mal! Scheitere ja schon ein Funktionierendes Programm um nur ein paar Ports zu erweitern die das Programm auch durchlaufen soll??????????? Mir Brennt der Kopf und ich macherstmal die ungelogen 34 Fenster wieder zu, da ich daraus nicht schlau werde! Ps diese Gummitastatur ist ein grauß
Hallo, hab mich etwas mit Bascom beschäftigt, da C und Assembler echt Spanisch für mich ist, ergebniss ist ein fertiger Timer auf einem ATTINY13 der genau das macht was er soll und nach Ablauf einfach stehen bleibt! Im Anhang das Programm, das Ganze fertige Projekt werde ich auch noch mit Schaltbildern und Code Zusammen Posten wenn ich alles zusammengestellt habe, damit das Teil auch anderen nützen wird. Aber hier schonmal den Code und ein Videolink, sind im Video halt alles nur rote LED's aber den ablauf kann trotzdem erkennen. http://www.youtube.com/watch?v=-6eI_k2FihA Das Programm habe ich als Rar gepackt damit mans einfacher Laden kann, es kann mit Ponyprog einfach auf den ATTINY übertragen werden, Beschaltung und Programmablauf im Groben. PortB ist Ausgang und davon: Nr.0 nicht verwendet! Nr.1 Relais und LED1. (Testschaltung) Nr.2 Relais und LED2. (100% Leistung) Nr.3 Relais und LED3. (Leichtes Überladen) Nr.4 LED4. (Programm Ende, und übergabe an andere Steuerung(Normalbetrieb)) Nr.5 nicht verwendet! Ausgänge schalten auf Positiv! LG Michael
Könnte man nicht 3* NE555 nehmen...jedes geschaltete Relais macht über nen Fet den jeweiligen NE555 wieder aus?
... schrieb: > Könnte man nicht 3* NE555 nehmen...jedes geschaltete Relais macht über > nen Fet den jeweiligen NE555 wieder aus? Zweieinhalb Minuten sinf für analoge Zeitgeberschaltungen schon ein bisschen lang. Da wäre eine kleine Zählerschaltung mit ca. 3 ICs schon angebracht. Gruss Harald
... schrieb: > Könnte man nicht 3* NE555 nehmen...jedes geschaltete Relais macht über > nen Fet den jeweiligen NE555 wieder aus? Danke hatte das mit dem im moment noch eingebauten einfach Timer gemacht, Relais flattern viel Geld viele Bauteile, Aufwendige abgleicherei (Feintuning) ich finde das mit dem Tiny viel besser vorallem viel Kompakter, und auch noch Zuverlässiger ohne Relaisflattern, und genauer und Billiger. Was habt ihr alle immer mit eurem NE555 Zeugs wenn es um eine Zeitsteuerung geht, ist es etwa verwerflich wenn man ne Atmel dafür benutzt? Vorallem schaut euch mal den Code an, wie winzig der für die Anwendung ist?
1 | >$regfile = "attiny13.dat" 'definieren des verwendeten Chips |
2 | >
|
3 | >Config Portb = Output |
4 | >
|
5 | >Do |
6 | >
|
7 | >Portb = 0 |
8 | >Portb.1 = 1 'Generatotest ein |
9 | >Wait 22 'Warten 250 |
10 | >Portb.2 = 1 'Generator auf 100% |
11 | >Wait 16 'Warten 120 |
12 | >Portb.2 = 0 'Generator 100% aus |
13 | >Portb.3 = 1 'Generator auf leichte Überladung |
14 | >Wait 25 'Warten 300 |
15 | >Portb.3 = 0 |
16 | >Wait 4 |
17 | >Portb = 0 |
18 | >Portb.4 = 1 'Generator Normalbetrieb |
19 | >End 'end program |
20 | >
|
21 | >Loop |
hab die angaben hinten zwar nicht mehr Aktualisiert aber das Programm ist doch klein oder?
1 | $regfile = "attiny13.dat" 'definieren des verwendeten Chips |
2 | |
3 | Config Portb = Output 'PortB als ausgang schalten |
4 | |
5 | Do
|
6 | |
7 | Portb = 0 'alle Pimd an Port B auf 0 also aus |
8 | Portb.1 = 1 'Generatotest ein (kohlen |
9 | testen Warmlaufphase) |
10 | Wait 22 'Warten 22 |
11 | Portb.2 = 1 'Generator auf 100% |
12 | Wait 16 'Warten 16 |
13 | Portb.2 = 0 'Generator 100% aus |
14 | Portb.3 = 1 'Generator auf leichte Überladung |
15 | Wait 25 'Warten 25 |
16 | Portb.3 = 0 'Zurück zum Test für kurze Zeit |
17 | Ladekontrolle signalisiert Ende vom |
18 | Programm für etwa 13 Sekunden |
19 | Wait 4 'Warten 4 |
20 | Portb = 0 'alle Pins von Port B auf 0 (aus( |
21 | Generator Normalbetrieb)) |
22 | Portb.4 = 1 'Status LED (später grün zeigt am Timer |
23 | normalen Regelbetrieb und Programmende |
24 | an
|
25 | End 'end program |
26 | |
27 | Loop
|
Habe die Angaben nochmal für besseres Verständniss überarbeitet. LG Michael
Michael Haussmann schrieb: >> Könnte man nicht 3* NE555 nehmen... > Danke hatte das mit dem im moment noch eingebauten einfach Timer > gemacht, Relais flattern viel Geld viele Bauteile, Naja, wenn das Relais flattert, hast Du irgendwas falsch gemacht; Das kann Dir bei Deinem uC dann auch passieren > ich finde das mit dem Tiny viel besser vor allem viel Kompakter, Das stimmt natürlich. Wenn Du sowas innerhalb einer Stunde programmiert bekommst, ist es natürlich auch schneller. > und auch noch Zuverlässiger ohne Relaisflattern, Das stimmt nun wieder nicht. Bei der Entstörung einer uC Schaltung muss man sich sicherlich etwas mehr Mühe geben. > Was habt ihr alle immer mit eurem NE555 Zeugs wenn es um eine > Zeitsteuerung geht, ist es etwa verwerflich wenn man ne Atmel dafür > benutzt? Nein, allerdings gibts nach wie vor eine Menge Leute, die so ein Programm eben nicht in einer Stunde schnell schreiben können. Dann bekommt man eine Lösung mit 4000er ICs schneller aufgebaut. Gruss Harald
Schon gut Harald, hast recht, bin Stunden drann gehockt bis es ging un d dann der Feinschliff, aber wenn ich mir die einfache Timerschaltung vorstelle mit herkömmlicher Technik da hab ich noch ewig mit Stopuhr und Schraubendreher rumgeorgelt bis das Ding etwa das gemacht hatte, vorallem der selbe Aufwand wäre gleich 5 mal für das was nun dieser eine Tiny macht, aber halt viel Zeit aber dafür dann ganz fertig nur noch Transistoren drann Stromversorgung LED's alles auf ne Platine mit den Relais verbinden und es sollte fertig sein. Im Grunde ist es nun echt abhängig vom eigenen Geschmack was man macht, die Zahlen im Programm weichen natürlich ab von dem was sie bedeuten, aber surch etwas mehr oder weniger hab ich es dann ganz gut hinbekommen, jedenfalls für den Zweck den das ganze erfüllen soll. Und andere können das Bascom Programm ja auch noch benutzen und Zeit Sparen, einfach andere Zahlen verwenden, oder weniger Ports benutzen oder mehr gehen auch noch, z.b. 2 Relais oder LED's mehr, wie auch immer, das Spart dann denke ich Zeit, bei der Entwicklung und ist dann Hilfreich. LG MIchael
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.