Countdown timer für UV Belichter

Gast #370765
Lesenswert?

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.
Angehängte Dateien:
#633949
Lesenswert?

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
#634022
Lesenswert?

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.
#634060
Lesenswert?

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
Gast #634065
Lesenswert?

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
#634959
Lesenswert?

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
Gast #1556916
Lesenswert?

> 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.
Gast #1556929
Lesenswert?

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.
#1558862
Lesenswert?

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


..

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren