AVR-Wecker

4

Zuerst einmal sei angemerkt, dass es mir ziemlich auf den (nicht vorhandenen) Wecker ging, dass ich jeden morgen von meinen Eltern auf äußerst unsanftem Wege geweckt wurde. Deshalb habe ich mich entschlossen, mir einen einfachen, aber zuverlässigen Wecker mit allen nötigen Einstellungsmöglichkeiten zu bauen. Im Vordergrund stand für mich lediglich eine möglichst unkomplizierte Hardware. Was bietet sich da besser an als ein Mikrocontroller?

Also habe ich mich für den AtMega 8 entschieden, welcher unter anderem über mehrere Timer mit verschiedenen Modi und zahlreiche I/O Pins verfügt. An den Mikrocontroller selbst werden ein 2×16 Zeichen LCD mit steuerbarer Hintergrundbeleuchtung, ein Miniaturlautsprecher und vier Taster angeschlossen.

1) Software

Der Wecker bietet dank der in C geschriebenen Software folgenden Funktionsumfang:

  • zwei einstellbare und unabhängig voneinander aktivierbare Weckzeiten
  • mögliche Deaktivierung des Alarms am Wochenende (wichtige Funktion v.a. für Schüler)
  • frei wählbare Dauer des Wecksignals
  • zeitgesteuerte (frei wählbares Zeitintervall) und manuelle Regelung der Hintergrundbeleuchtung
  • Uhrzeit- und Wochentagsanzeige
  • übersichtliche Menüführung und -anzeige
  • Speicherung der Einstellungen im internen Eeprom des Mikrocontrollers
  • einfach zu bedienendes Ring-Menü mit einem einzigen Taster
  • keine unbequeme Snooze-Funktion, der Alarm wird einmalig ausgegeben (erfordert allerdings eine gewisse Disziplin, damit man auch wirklich aufsteht)

Der Wecker verfügt wie oben bereits erwähnt über vier Taster. Der erste dient zur (De-)Aktivierung der beiden Wecksignale. Durch Drücken, werden erst einzeln Alarm 1 und Alarm 2 und dann beide gleichzeitig aktiviert und dann wieder deaktiviert. Der zweite Taster dient zur Menüführung. Hierbei durchläuft man durch Drücken des Tasters alle möglichen Einstellungsmöglichkeiten (Alarm 1 Stunden, Alarm 1 Minuten, Alarm 2 Stunden, Alarm 2 Minuten, Wochentag, Stunde, Minute, Alarm am Wochenende, Alarmdauer, Modus der Hintergrundbeleuchtung (an, aus, auto), [falls vorherige Option = auto] Zeitintervall der Hintergrundbeleuchtung, NULL-MODUS (Anzeige-Modus)). Über zwei weitere Taster werden die Werte hoch- bzw. heruntergezählt.

Das hört sich extrem kompliziert und unbequem an, ist in der Praxis aber äußerst einfach und intuitiv zu bedienen und ermöglicht eine einfache Konfiguration des Weckers.

2) Hardware

Aufgebaut wurde der Wecker aus Zeitgründen auf einer einfachen Lochrasterplatine. Da ein Gehäuse aus Aluminium geplant war, kam es auch weniger auf das Aussehen der Platine an. Des Weiteren bietet eine Lochrasterplatine ein wesentlich höhere Flexibiltät. Sollten in Zukunft noch ein DCF77-Modul, eine Real-Time-Clock oder andere Module hinzukommen, kann ich diese ohne großen Aufwand auf die Platine löten. Nichtsdestotrotz habe ich ein Platinenlayout mittels Eagle 5.10 erstellt, das am Ende des Artikels heruntergeladen werden kann. Da ich es noch nicht getestet habe, kann ich allerdings nicht garantieren, dass das Layout so stimmt (müsste es aber theoretisch).

Die Beschaltung des Mikrocontrollers wurde sehr einfach gehalten. An Port D ist das LCD im 4-bit Modus angeschlossen. Die Taster hängen an Port C und Lautsprecher, sowie die Hintergrundbeleuchtung für das LCD sind an die PWM-fähigen Timer-Pins B3 bzw. B2 angeschlossen. Genaueres steht im ersten Kommentar im Quellcode. Die restliche Beschaltung entspricht der Standard-Beschaltung des AtMega 8, sprich externer 4 MHz-Quarz, Spannungsversorgung über Festspannungsregler (7805) und herausgeführte ISP-Schnittstelle.

3) Was kommt als nächstes?

Die Möglichkeiten eines Mikrocontrollers sind mit diesem Wecker natürlich bei Weitem nicht ausgeschöpft. Denkbar sind eine stufenlos per PWM geregelte Hintergrundbeleuchtung, die Implemetierung von RTTTL-Sounds als Wecksignal, ein DCF77-Modul zum Empfangen des Zeitsignals, eine RTC (Real-Time-Clock) zum Weiterzählen der Uhrzeit auch bei einem Stromausfall, eine software-gesteuerte Lautstärkeregelung, usw. Alle diese Funktionen können aufgrund der hohen Flexibiltät der Hard- und Software recht schnell nachgerüstet werden.

4) Downloads

Hier kann die Firmware für den AtMega 8 heruntergeladen werden. Zum Flashen wird der Extreme Burner AVR benötigt. Bevor meine Firmware geflasht werden kann, müssen die Fuses des AtMega 8 programmiert werden. Die Werte sind im Projektordner unter Fuses.txt einzusehen. Wenn dies geschehen ist, wird die wecker.hex aus dem Projektordner mit dem Extreme Burner geöffnet und auf den Mikrocontroller geflasht. Jetzt sollte der Wecker funktionieren.

Download – Projektordner

Download – Platinenlayout

Platinenlayout des AVR-Weckers

Hinterlasse einen Kommentar zu Lukas Bommes Antworten abbrechen

Ihre Email-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert.

*

Kommentare umschalten

4 Kommentare zu "AVR-Wecker"

  • Boris sagt:

    Hallo Lukas,
    vielen Dank für Dein Wecker Projekt mittels Atmega 8.
    Hast Du inzwischen die DCF Funktion einbinden können?
    Wäre um das Update sehr dankbar.

    Gruß
    Boris

    • Lukas Bommes sagt:

      Hallo Boris,

      dankeschön deinen Kommentar.
      Die DCF-Funktion wurde noch nicht eingebunden und ich bin mir auch nicht sicher, ob ich irgendwann nochmal Zeit dafür haben werde, da ich mit dem Studium recht gut ausgelastet bin und nebenbei auch noch an einigen anderen Projekten (Cansat und Version 3 des Quadrocopters) arbeite.

      Grüße
      Lukas

  • Michael sagt:

    Hi Lukas,
    ein Schaltplan zum Board wäre schön gewesen.
    Reverse-Engineering oder stellst du ihn zur Verfügung?

    Gruß Michael

    • Lukas Bommes sagt:

      Hallo Michael,

      mit einem Schaltplan kann ich leider nicht dienen, da ich das Dokument zum damaligen Zeitpunkt “mal eben schnell” aufgebaut habe. Grundsätzlich ist es aber keine besondere Beschaltung, sprich externer Quarz für den µC, Gleichrichter (optional) + 7805 Festspannungsregler + Kondensatoren zum Entstören, Taster und das LCD ist im 4-bit mode parallel angesteuert. Das Backlight wird über einen handelsüblichen NPN-Transistor geschaltet und das Poti dient zur Regelung der Kontrastspannung des LCDs.

      Ich hoffe, ich konnte dir einigermaßen helfen. Leider fehlt mir die Zeit, die Dokumentation großartig zu verbessern.

      Beste Grüße
      Lukas