Hallo,
ich möchte hier mal mich und mein erstes avr Projekt vorstellen.
Ich heiße Tristan, bin jetzt 16 Jahre und habe einige Male mit
Arduino-Boards herum gespielt und auch kleinere Projekte verwirklicht
(Stellpult für die Modellbahn, Roboterarm,...). Irgendwann wollte ich
mal "nur" mit avr-Controllern was basteln, und da kurz vorher mein alter
Wecker den Geist aufgegeben hatte, entschloss ich mich, einen neuen zu
bauen.
Übersicht:
atmega 328 als Controller
Empfang der Zeit einmal täglich über DCF-Modul
eigener Sekundentakt über Quarzoszillator mit Taktteiler
2x16 Zeichen LCD zur Ausgabe
5 Taster zur Navigation
Stromversorgung über USB
Piezosummer zum Wecken
Alles wird gesteuert von einem Atmega 328. Die Zeit+Datum werden immer
um Mitternacht und nachdem der Controller Strom bekommen hat mithilfe
eines DCF-Moduls empfangen. Von da an wird ein Sekundentakt mithilfe
eines Quarztaktteilers erzeugt.. Zum Steuern des Ganzen gibt es fünf
Taster (hoch, runter, links, rechts, enter). Als Anzeige dient ein 2x16
Zeichen LCD. Zum erzeugen des Tones habe ich einen Piezosummer mit
fertiger Elektronik genommen.
Im Allgemeinen ist der Controller im Sleep-Mode, wird jedoch über
Interrupts vom Taktteiler oder den Tastern aufgeweckt. Weckt man ihn mit
den Tastern, dann wird einem für ein paar Sekunden Uhrzeit + Datum
angezeigt. Danach geht wird der Bildschirm wieder abgeschaltet und der
AVR geht zurück in den Sleep-Mode. Wenn man den Controller geweckt hat,
kann man durch drücken eines Tasters in das Menu gelangen.
Dort hat man zuerst die Auswahl zwischen "alarm menu" und "settings
menu". Im "settings menu" kann man veranlassen, dass die Zeit neu
empfangen wird. Im "alarm menu" kann man die Weckzeit und die
Schlummerzeit einstellen bzw. den Wecker ausschalten.
Noch ein paar lose Einzelheiten:
Wie schon angedeutet befindet sich der Controller den Großteil der Zeit
im Sleep-mode und wird über Interrupts von Tastern und dem Taktteiler
aufgeweckt, so kann ein wenig Strom gespart werden. Wenn der uC schlafen
geht, wird auch der LCD komplett vom Strom getrennt. Wenn die Zeit
empfangen wurde, wird der Taktgeber kurz resetet und das DCF-Modul
ausgeschalten. Den LCD steuere ich im 4-bit Modus an, die Library dazu
habe ich angehängt.
Da ich die Platine so klein wie möglich halten wollte, habe ich den LCD
über das DCF-Modul + Antenne und den avr gebaut. Zwischen LCD und dem
Summer ist noch versteckt ein Resettaster (extra schwer zu erreichen,
damit am Morgen nicht die schlechte Laune siegt und ich den Wecker
abwürge :) ). Aufgebaut habe ich alles auf einer Lochrasterplatine und
die dann mit Distanzhülsen auf eine Holzplatte geschraubt.
In den Eagle-Dateien sind, wie der Name sagt, keine Umrisse von den
einzelnen Teilen wie LCD und Antenne drauf.
wie der LCD liegt sieht man ja auf den Bildern, die obere Pinleiste ist
dessen Anschluss. Die Antenne liegt direkt unterhalb der 16er Pinleiste
quer (festgeklebt). Die kleine PLatine vom DCF-Modul setzt an der 4er
Pinleiste rechts an und liegt halb unter dem LCD.
Das nur als Übersicht über mein Projekt. Der Code ist definitiv noch
nicht perfekt, aber das sollte er auch gar nicht sein. Ich hoffe, ich
konnte damit ein paar Anregungen geben.
viele Grüße,
Tristan
Tristan V. schrieb:> Die Zeit+Datum werden immer um Mitternacht empfangen.
Um Ptobleme mit der Zeitumstellung zu vermeiden, wäre drei Uhr
morgens besser geeignet
Sehr hübsch geworden, Respekt!
Weiter so, laß dich von Rückschlägen nicht entmutigen, bleib neugierig.
O.T.
16...
Ich hatte neulich eines meiner frühen Kunstwerke in der Hand: UKW
Radio, nachgebaut aus Nührmanns "Radiobasteln". Platinen geätzt, Spulen
gewickelt, Taschengeld vernichtet.
Irgendwas kam auch aus dem Lautsprecher, nur kein UKW-Sender...
Vielleicht lags dran, weil ich die Brücken schief reingebraten habe ;-)
Gruß
Stefan
Hallo Tristan,
würde mich gerne genauer über den DCF-77 mit dir austauschen. Falls du
Interesse hast melde dich bei mir, würde mich freuen. Außerdem habe ich
noch ein paar Fragen.
timmarx787@gmail.com
lg Tim
Hi Leute,
sorry, habe mich jetzt schon länger nicht mehr gemeldet. Ich habe mich
sehr über die Rückmeldungen hier gefreut. Das Problem mit den Brücken
habe ich schon bemerkt. Das nächste mal muss ich auch auf jeden Fall
aufpassen, dass die RESET-Leitung nicht auf der Platine läuft. Am Anfang
hatte ich das Problem, dass mir die an einer der Distanzhülsen hing und
jedes Mal, wenn ich die Schraube angefasst habe, gab es ein Reset :) .
Nächste Aufgabe ist es jetzt, dass der uC die einzelnen Menus nach einer
gewissen Zeit wieder verlässt. Ich hatte schon mehrfach das Problem,
dass ich offensichtlich über Nacht auf die Taster gekommen bin und der
Wecker so in den Menus fest hing und am nächsten Morgen nicht mehr
geklingelt hat (also erst, nachdem ich aufgewacht bin und aus den Menus
heraus gegangen bin.
Wenn es was neues gibt, melde ich mich!
vG, Tristan
Besprecht die relevanten Dinge doch bitte hier im Forum! Es könnten noch
andere Leute davon profitieren ;)
BTW: Schönes Projekt! Und das mit 16. Hut ab!
Hi,
hier noch ein kurzer Nachtrag zum Projekt:
Ich hatte arge Probleme mit der Resetleitung des uC (wurde oft
unfreiwillig betätigt), sodass ich direkt vor den Pin des Chips eine
kleine Pinleiste eingelötet habe, die ich bei Bedarf mit einem Jumper
überbrücken kann.
Auch habe ich den Code ein wenig abgewandelt, damit die
Hintergrundbeleuchtung des LCDs nicht in der Nacht angeht, wenn die Zeit
synchronisiert wird.
@Gast: das wäre zu umfangreich geworden, um es hier zu besprechen.
Vielleicht gibt es ja noch mal einen eigenen Thread dazu.
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