Hallo Leute! Habe einen Countdown Timer für einen UV Belichter gebaut. Eine kleine Platine mit einem ATMEGA48 und ein bisschen peripherer Hardware. Ein- bzw. Ausgeschalten wird der Belichter über ein Relay. 3 Taster dienen zur Steuerung des Timers: + Taste für Minuten + Taste für Sekunden Start/Stop Taste wird die + Taste für Minuten und die + Taste für Sekunden gleichzeitig gedrückt so wird der Timer auf 0 gesetzt. der letzte Wert wird im EEPROM verspeichert und beim nächsten mal als Timerzeit vorgeschlagen. Falls jemand die Eagle files dafür haben möchte. Bitte per mail Anfragen -> schicke sie euch zu. Ich freue mich hier meine Schaltung und den Sourcecode posten zu dürfen. Ich Garantiere nicht das der Code 100%ig sauber geschrieben ist und ich weiß das man auch noch einiges vereinfachen könnte. "ES IST NOCH NIE EIN MEIßTER VOM HIMMEL GEFALLEN" An Verbesserungsvorschlägen bin ich immer interresiert. Falls jemand genauere Details zu den verwendeten Bauteilen braucht -> einfach Posten. Platinen sind es 2 Stück Eine Hauptplatine und eine Platine mit den 7 segment Displays die Hautplatine wird an 220V angeklemmt (Sicherheitsvorkehrungen beachten) die 7segment Anzeigen sind Lowpower Anzeigen und können direkt vom Port getrieben werden.
und übrigends: die Sourcen sind in C geschrieben und können mit dem neuesten WINAVR bearbeitet und ggf. neu Compiliert werden. schöne grüße Ferrice
Hallo Ferrice, Ich (als Anfänger) habe Probleme Deine Datei auf einen Atmega zu brennen. Ich denke mal, das hier etwas grundsätzliches falsch ist. Ich benutze das Prog. myAvr Workpad. Wenn ich auf brenen gehe, taucht die Fehlermeldung ------------------------------------------------------------------------ - compilieren ... In file included from timeruv.c:4: signal.h:36 36:2: warning: #warning "This header file is obsolete. Use ." timeruv.c:8 8:1: warning: "SIG_OUTPUT_COMPARE1A" redefined In file included from C:/Programme/myAvrWorkpad/WinAVR/avr/include/avr/io.h:256, from C:/Programme/myAvrWorkpad/WinAVR/avr/include/define.h:1, from timeruv.c:1: iom8.h:188 188:1: warning: this is the location of the previous definition timeruv.c:9 9:1: warning: "SIG_OUTPUT_COMPARE1B" redefined iom8.h:192 192:1: warning: this is the location of the previous definition timeruv.c In function `main': timeruv.c:75 75: error: `TIMSK0' undeclared (first use in this function) 75: error: (Each undeclared identifier is reported only once 75: error: for each function it appears in.) 75: error: `OCIE0A' undeclared (first use in this function) timeruv.c:76 76: error: `OCR0A' undeclared (first use in this function) timeruv.c:77 77: error: `TCCR0B' undeclared (first use in this function) timeruv.c:81 81: error: `TIMSK1' undeclared (first use in this function) timeruv.c:65 65: warning: return type of 'main' is not `int' io.h:256 256, from C:/Programme/myAvrWorkpad/WinAVR/avr/include/define.h:1, from timeruv.c:1: iom8.h:188 188:1: warning: this is the location of the previous definition timeruv.c:9 9:1: warning: "SIG_OUTPUT_COMPARE1B" redefined iom8.h:192 192:1: warning: this is the location of the previous definition timeruv.c In function `main': timeruv.c:75 75: error: `TIMSK0' undeclared (first use in this function) 75: error: (Each undeclared identifier is reported only once 75: error: for each function it appears in.) ------------------------------------------------------------------------ - auf. Und das war nur den Anfang. Er hat also Probleme beim Compilieren. Aber was möchte er mir damit sagen? Fällt Dir da was drauf ein? Gruß Daniel
Hallo, mir fällt da etwas auf. In der neusten WinAVR-Version ist die signal.h als deprecated, d.h. veraltet eingestuft. Dafür nimmt man die interrupt.h. Man muß die Interruptvektoren nicht definieren. Das ist überflüssig. Dafür band man früher die signal.h ein und jetzt die interrupt.h mit den passenden Vektoren. Einfach in der Doku der avrlib nachsehen.
Hallo. Wenn man die Schaltbilder richtig gelesen hätte, dann wäre einem aufgefallen, das nicht der Atmega8 sondern der Atmega 48 verbaut wurde. Wenn ich die Datei nun compiliere,dann bringt er zwar noch Hinweise ------------------------------------------------------------------ compilieren ... In file included from timeruv.c:4: signal.h:36 36:2: warning: #warning "This header file is obsolete. Use ." timeruv.c In function `main': timeruv.c:65 65: warning: return type of 'main' is not `int' linken ... ------------------------------------------------------------------- raus, aber sieht sost ganz gut aus. Habe mir gerade noch mal Bauteile Bestellt, und werde es dann noch mal testen. Nun noch eine Frage. Welche Quarz muss ich da benutzen? Auf dem "main board" Plan steht nur die Bezeichnung Q1. Gruß Daniel
> Wenn man die Schaltbilder richtig gelesen hätte, dann wäre einem > aufgefallen, das nicht der Atmega8 sondern der Atmega 48 verbaut wurde. Wie der OP schon schrieb: > Eine kleine Platine mit einem ATMEGA48 ...
Hallo, wie sieht es denn so mit der Störunterdrückung aus. Was passiert, wenn der Timer läuft und ein Stötimpuls aus dem Netz kommt in die Schaltung. Ist die Software danach überprüft worden? Gruss bernd
Hallo, wenn man das Makefile gelesen hätte, würde man folgendes zu Thema Quarz lesen: F_OSC = 4194000 ;-P Gruß Elektrikser
Hallo Elektrikser, Ich befasse mich seid 5 Tagen mit µC und Assembler. Den Hinweis habe ich aber bislang noch in keiner DOKU gefunden. Durch solche Fehler kann ich nur lernen. Schönen Dank für die Info. Gruß Daniel
Ich weiß, jeder Anfang ist schwer, aber ich konnte es mir nicht verkneifen.;-) Die Taktfrequenz und der Controllertyp wird sehr oft in dem Makefile angegeben. Findet man die Taktfrequenz dort nicht, kann es auch irgendwo in den C-Dateien (oft in der main.h oder main.c) sein. Aus dem AVR-GCC-Tutorial, das du auf dieser Seite links oben in dem Menü unter AVR findest (oder http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Taktfrequenz): > Taktfrequenz > >Neuere Versionen der WinAVR/Mfile Vorlage für Makefiles beinhalten die >Definition einer Variablen F_CPU (WinAVR 2/2005). Darin wird die >Taktfrequenz >des Controllers in Hertz eingetragen. Die Definition steht dann im gesamten >Projekt ebenfalls unter der Bezeichnung F_CPU zur Verfügung (z.B. um daraus >UART-, SPI- oder ADC-Frequenzeinstellungen abzuleiten). > >Die Angabe hat rein "informativen" Charakter, die tatsächliche Taktrate wird >über den externen Takt (z.B. Quarz) bzw. die Einstellung des internen >R/C-Oszillators bestimmt. Die Nutzung von F_CPU hat also nur Sinn, wenn die >Angabe mit dem tatsächlichen Takt übereinstimmt. > >Innerhalb neuerer Versionen der avr-libc (ab Version 1.2) wird die Definition >der Taktfrequenz (F_CPU) zur Berechnung der Wartefunktionen in delay.h genutzt. >Diese funktionieren nur dann korrekt, wenn F_CPU mit der tatsächlichen >Taktfrequenz übereinstimmt. F_CPU muss dazu jedoch nicht unbedingt im makefile >definiert werden. Ich habe bei meinem ersten Posting zu deinem Posting ja auch nicht gesehen, dass der Compiler von einem Atmega8 ausging (iom8.h:188 188:1: warning: this is the location of the previous definition) Wenn noch Fragen sind einfach melden... Gruß Elektrikser
Hi ich bin Anfänge und wollte Mal Fragen wie ich vorgehen muss wenn ich den Timer mit einem Attiny2313 Verwenden möchte. Danke manni
Hallo Ferrice, der Beitrag ist zwar schon was älter, würde mich aber freuen wenn Dein Angebot bezüglich des eagle Layouts und weiteren infos noch gilt. Gruß Donald ..
Donald D. schrieb: > der Beitrag ist zwar schon was älter, würde mich aber > freuen wenn Dein Angebot bezüglich des eagle Layouts > und weiteren infos noch gilt. Ich habe den http://www.avr-projekte.de/timer.htm und bin zufrieden. Da ist ein Layout mit bei.
> Ich habe den http://www.avr-projekte.de/timer.htm und bin zufrieden. > Da ist ein Layout mit bei. So schön das Projekt auch gemacht ist, eigentlich geht es am Thema vorbei. Wenn man Belichtung steuern will, sollte man die Lichtmenge zählen, und nicht die Zeit. Also eine Photodiode (oder ein TSL230 oder so) und der uC zählt die Lichtmenge, denn jeder weiss, wie temperaturabhängig gerade Leuchtstoffröhren ihr Licht aussenden, in den ersten Minuten kommt fast nichts raus, und bei kurzen Belichtungszeiten stört schon die Zeit des flackerns die die Lampen zum zünden brauchen.
MaWin schrieb: > Wenn man Belichtung steuern will, > sollte man die Lichtmenge zählen, und nicht die Zeit. > Also eine Photodiode (oder ein TSL230 oder so) > und der uC zählt die Lichtmenge, Das ist in der Praxis absoluter Quatsch. Jeder der seine Leiterplatten selbst fertigt, wird am anfang eine Belichtungsreihe anfertigen in dem er unterschiedliche BelichtungsZEITEN ausprobiert. Hier z.B ein professionelles Gerät das mit Timer ausgestattet ist. http://www.tme.eu/katalog_pics/6/f/b/6fbb634cec3cf8e70a4bd21ac5438f96/bel14007.jpg Vielleicht erzählst du mal den Profies von der Fa. ISEL deine Theorie.
jörg schrieb: > Ich habe den http://www.avr-projekte.de/timer.htm und bin zufrieden. > Da ist ein Layout mit bei. Hallo Jörg, das habe ich doch, Jürgen hats sogar an meine Zeiten angepasst siehe "Custom Hex" ganz unten auf der Seite. Mich interessieren natürlich auch andere Timer, vor allem welche wo man auch mal selber einiges in Source ändern kann um etwas zu experimentieren. Nachbauen ist kein Problem, nur mit dem Programmieren beziehungsweise selber schreiben der Programme bin ich noch Anfänger. Hoffe aber das sich das mit der Zeit noch ändern wird. Gruß Donald ..
> Das ist in der Praxis absoluter Quatsch.
Erst denken jörg, dann schreiben.
hallo, seht euch mal diesen timer an .... http://hs-ware.de/osc234/product_info.php/cPath/1_53/products_id/378
... tztztz .... Einen uralten Thread aus dem Grab gezogen um Werbung für den eigenen Shop zu machen...
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.