Forum: Projekte & Code Countdown timer für UV Belichter


von Ferrice (Gast)


Angehängte Dateien:

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.

von Ferrice (Gast)


Lesenswert?

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

von Daniel A. (stadafarma)


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

von Gerd G. (elektrikser)


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.

von Daniel A. (stadafarma)


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

von Gast (Gast)


Lesenswert?

> 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 ...

von Bernd (Gast)


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

von Elektrikser (Gast)


Lesenswert?

Hallo,

wenn man das Makefile gelesen hätte, würde man folgendes zu Thema Quarz 
lesen:
F_OSC = 4194000
;-P

Gruß Elektrikser

von Daniel A. (stadafarma)


Lesenswert?

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

von Gerd G. (elektrikser)


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

von Manfred M. (manfred-m)


Lesenswert?

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

von Donald D. (donald)


Lesenswert?

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


..

von jörg (Gast)


Lesenswert?

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.

von MaWin (Gast)


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.

von jörg (Gast)


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.

von Donald D. (donald)


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


..

von MaWin (Gast)


Lesenswert?

> Das ist in der Praxis absoluter Quatsch.

Erst denken jörg, dann schreiben.

von Heinz S. (Gast)


Lesenswert?


von Waldemar H. (vual)


Lesenswert?

...alles klar :-D

von Mr. Uralt (Gast)


Lesenswert?

... tztztz ....
Einen uralten Thread aus dem Grab gezogen um Werbung für den eigenen 
Shop zu machen...

von Eagle (Gast)


Lesenswert?


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
Noch kein Account? Hier anmelden.