Gast
#4710086
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

