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?
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.
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
... 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?
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
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang