mikrocontroller.net

Forum: Projekte & Code Funkuhr+Wecker


Autor: Jing P. (Gast)
Datum:
Angehängte Dateien:

Bewertung
2 lesenswert
nicht lesenswert
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

Autor: Harald W. (wilhelms)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
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

Autor: Frankl (Gast)
Datum:

Bewertung
-5 lesenswert
nicht lesenswert
Vielleicht die Brücken nächstes Mal im rechten Winkel.

Autor: Stefan T. (stefan_t741)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dude (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alter Falter mit 16 so ein Projekt zu schaffen? Respekt. Hätte ich 
damals nicht hinbekommen.

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jing P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Warum nicht hier? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Jing P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

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

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.