<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Matthes77</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Matthes77"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Matthes77"/>
	<updated>2026-04-21T12:38:45Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Solarwecker_mit_DCF77_sowie_Temperatursensor&amp;diff=77314</id>
		<title>Solarwecker mit DCF77 sowie Temperatursensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Solarwecker_mit_DCF77_sowie_Temperatursensor&amp;diff=77314"/>
		<updated>2013-06-27T22:34:22Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: /* Technische Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Motivation==&lt;br /&gt;
[[Bild: SW_WeckerFull.jpg|thumb|300px|Wecker Vollansicht]]&lt;br /&gt;
Der Wecker gehört zu den bedeutendsten Geräten im Alltag. Seine Qualität steht und fällt mit seiner zentralen Funktion: Schafft er es, mich am nächsten Morgen zu wecken?&lt;br /&gt;
Manch ein käuflich erworbenes Gerät ist:&lt;br /&gt;
* zu leise,&lt;br /&gt;
* zu schnell oder versehentlich abschaltbar (keine ordentliche „snooze“-Funktionalität),&lt;br /&gt;
* vom Stromnetz abhängig,&lt;br /&gt;
* von Batterien betrieben, die im falschen Moment versagen können.&lt;br /&gt;
* zu ungenau, zumindest nach ein paar Monaten&lt;br /&gt;
&lt;br /&gt;
Die zentrale Motivation für diesen Wecker ist allerdings: Als ehemals begeisterter Bastler hatte ich nach Jahrelanger Abstinenz mal wieder richtig Lust auf ein Elektronik-Projekt :-)&lt;br /&gt;
Inzwischen ist der Wecker ohne Ausfall seit 6 Monaten in Betrieb und eine Dokumentation ist überfällig. Ich gehe nicht auf alle Details ein, sie soll nur einen Überblick bieten. Im Detail ist ein Blick in den Sourcecode oder Schaltplan die bessere Auskunft. Na dann mal ran&#039;...&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
Okay, was kann der Wecker?&lt;br /&gt;
* wecken :-) mittels Piezo-Summer und einfacher, schöner 4-Ton Melodie per PWM&lt;br /&gt;
* sekundengenaue Uhrzeit mittels des DCF77 Signals (&amp;quot;Funkwecker&amp;quot;)&lt;br /&gt;
* Datumsanzeige&lt;br /&gt;
* Anzeige der Tage seit letzter erfolgreicher DCF77 Synchronisation&lt;br /&gt;
* Anzeige der Raumtemperatur mit hoher Genauigkeit&lt;br /&gt;
* Eingabe komfortabel mittels Drehgeber und LED-Taster&lt;br /&gt;
* drei programmierbare Weckzeiten - schnell einstellbar am Abend ohne minutenlang Morse-Codes zu drücken&lt;br /&gt;
* kein 230V Stromnetz notwendig&lt;br /&gt;
* kein Batteriewechsel notwendig&lt;br /&gt;
* die 2 fetten Solarmodule (5V, 150mA) laden die Buffer NiMH-Akkus auch bei geringem Lichteinfall ins Schlafzimmer zur Wintersaison ausreichend&lt;br /&gt;
* verschiedene Stromsparmechanismen&lt;br /&gt;
* bei Dunkelheit &amp;amp; Tastenaktivität -&amp;gt; rote LCD Hintergrundbeleuchtung&lt;br /&gt;
* Spannungsmessung des Akku-Packs&lt;br /&gt;
* Spannungsmessung der Solarzellen&lt;br /&gt;
* ... ein paar Kleinigkeiten, die nicht der Rede wert sind&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
===Schaltung===&lt;br /&gt;
[[Bild: SW_Schaltplan.png|800px|Schaltplan]]&lt;br /&gt;
[[Bild: SW_ElectricComments.jpg|800px|Unterseite]]&lt;br /&gt;
===Display===&lt;br /&gt;
[[Bild: SW_DisplayTime.jpg|200px|Display Time]]&lt;br /&gt;
[[Bild: SW_DisplayTemperature.jpg|200px|Display Temperature]]&lt;br /&gt;
[[Bild: SW_DisplayDatum.jpg|200px|Display Datum]]&lt;br /&gt;
[[Bild: SW_DisplayAlarm.jpg|200px|Display Alarm]]&lt;br /&gt;
[[Bild: SW_DisplayNight.jpg|200px|Display LED Active]]&lt;br /&gt;
&lt;br /&gt;
==Technische Details==&lt;br /&gt;
Der Aufbau ist mit einer kleinen Lochraster-Platine realisiert, da die Beschaltung noch recht übersichtlich ist. Die Verbindungen/Stecker etc. kommen aus der Restekiste. Das Gehäuse ist aus preiswertem Pappelholz mit der Laubsäge bearbeitet, verleimt und mit Leinöl versiegelt.&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung===&lt;br /&gt;
Gespeist wird die Schaltung von 3xAAA NiMH Zellen mit je ca. 750mAh, welche eine sehr geringe Selbstentladung besitzen.&lt;br /&gt;
* Die Nennspannung liegt bei 3x1.2V = 3.6V.  &lt;br /&gt;
* Entladen 3x1.0V = 3.0V.&lt;br /&gt;
* Vollgeladen 3x1.5V = 4.5V.&lt;br /&gt;
Die Hauptschaltung des Weckers würde theoretisch bis etwa 1.8V gut funktionieren, allerdings ist spätestens ab 2.8V das LCD nicht mehr funktionsfähig, weshalb 3 Zellen in Serie geschaltet werden müssen um die Versorgung mit ca. 3V sicher zu stellen.&lt;br /&gt;
Für eine stabile Spannungsversorgung der gesamten Schaltung dient der Lowdrop-Längsregler MCP1702-3002, welcher zudem durch sehr geringe Verluste auffällt. Die gewählten 3.0V helfen gegenüber den üblichen 3.3V, die Energiebilanz etwas zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle spielt die Unabhängigkeit des Weckers von externer Energieeinspeisung - vom Sonnenlicht mal abgesehen.&lt;br /&gt;
Die beiden in Serie geschalteten Solarzellen mit spezifizierten 2x5V = 10V und 150mA liefern diese natürlich nur unter direktem Sonnenlicht.&lt;br /&gt;
Im Wohnbereich sind Werte um 1-2 Promille dieser Angaben realistisch - dies bestätigen auch meine Messungen: An einem durchschnittlichem Wintertag bricht selbst die Leerlauf-Zellspannung stark ein und es können nur geringe Ströme vom ca. 160-300uA bei insgesamt 4,5V fließen. &lt;br /&gt;
Diese elektrische Leistung wird direkt abgegriffen, um die 3 NiMH-Zellen zu laden. Bei diesen geringen Strömen ist keine besondere Ladeschaltung notwendig. Selbst bei unrealistisch hoher Sonneneinstrahlung werden die Akkus auf diese Weise nicht beschädigt, da bis ca. 100mA als &amp;quot;Erhaltungsladung&amp;quot; akzeptabel sind.&lt;br /&gt;
&lt;br /&gt;
(!) Das Tolle bei der Dimensionierung der Solarzellen in Verbindung mit den Akkus bezogen auf den Lichteinfall in unserem Schlafzimmer: Die Ladung regelt sich quasi automatisch bei ca. 3.8V ein, was der Lebensdauer der Akkuzellen sehr zugute kommt.&lt;br /&gt;
Ist die Spannung des Akkupacks höher, fällt der Ladestrom der Solarzellen ab. Bei niedriger Spannung des Akkupacks genügt hingegen sehr wenig Licht um einen Ladestrom zu liefern.&lt;br /&gt;
&lt;br /&gt;
===Stromsparmechanismen===&lt;br /&gt;
Der Mikrocontroller von Atmel bietet verschiedene Möglichkeiten, um seinen Stromverbrauch zu minimieren. So ist er Beispielweise programmiert, die meiste Zeit im Sleep-Mode zu verbringen.  Nur selten wird er per Interrupt geweckt, um Benutzereingaben zu bearbeiten oder Tasks des Scheduler auszuführen. Eine RTC dient dazu, den Controller 4 mal in der Sekunde zu wecken und etwaige Tasks abzuarbeiten.&lt;br /&gt;
&lt;br /&gt;
Es sind 3 Fälle zu betrachten:&lt;br /&gt;
* Nacht-betrieb (ca. 8uA Stromverbrauch) &lt;br /&gt;
Alle 8 Sekunden überprüft der Controller, ob das Umgebungslicht hell genug ist, um das LCD-Display ablesen zu können. Als Lichtdetektor dienen hier die Solarzellen bzw. die per AD gemessene Spannung am Widerstand R2/R4. Ist eine gewisse Schwelle unterschritten, so wird einer der größten Verbraucher (LCD) abgeschaltet.&lt;br /&gt;
Eine regelmäßige Temperaturmessung findet ebenfalls nicht statt.&lt;br /&gt;
Der Nachtbetrieb kann durch beliebigen Tastendruck jederzeit für einige Sekunden unterbrochen werden.&lt;br /&gt;
&lt;br /&gt;
* Tag-betrieb (ca. 155uA Stromverbrauch)&lt;br /&gt;
Das LCD ist eingeschaltet und verursacht den größten Strombedarf. Der Temperatursensor wird lediglich alle 8 Sekunden eingeschaltet und nach der ersten Messung wieder deaktiviert - der Strombedarf ist für diesen in Summe zu vernachlässigen.&lt;br /&gt;
&lt;br /&gt;
* Aktivität DCF/Alarm/LED-Backlight (bis ca. max. 5mA Stromverbrauch)&lt;br /&gt;
Egal ob der Alarm ertönt, auf das DCF77-Signal synchronisiert wird oder das LED-Backlight nachts bei Aktivität dazugeschaltet wird - es werden bis zu 5mA fließen.&lt;br /&gt;
In Summe ist der Einfluss auf den Gesamtenergiebedarf allerdings recht gering und muss nicht weiter betrachtet werden. &lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Als Basis dient der 8Bit Mikrocontroller Atmel ATMEGA328P-PU, welcher mit insgesamt 28Pins bzw. 3 I/O Ports gerade so genügend Anschlüsse bietet.&lt;br /&gt;
Die komplette Software passt bequem dort hinein:&lt;br /&gt;
	Program Memory Usage 	:	7802 bytes   23,8 % Full&lt;br /&gt;
	Data Memory Usage 		:	723 bytes   35,3 % Full&lt;br /&gt;
&lt;br /&gt;
===RTC===&lt;br /&gt;
Mit einem externen Standard-Uhrenquarz (32kHz) sowie dem Timer2 des ATMEGA-Serie lässt sich sehr einfach eine RealTimeClock aufbauen, die als Taktgeber für die Uhrzeit verwendet werden kann. Der Vorteil zum Ringoszillator des Controllers liegt in der deutlich stabileren Frequenz sowie des niedrigen Taktes, der dabei hilft, richtig Strom zu sparen. Als Alternative könnte ein noch genaueres externes RTC-Modul verwendet werden, doch angesichts der DCF77-Synchronisation ist dies definitiv unnötig. Die Ganglaufzeit der Uhr variiert natürlich mit der Frequenzgenauigkeit des Quarzes und muss durch Software kalibriert werden. Auch wenn dies dank des DCF77-Zeitsignals überflüssig erscheint, so wird die Uhrzeit einmal täglich automatisch angepasst: Bei meinem verbauten Quarz muss ich sie täglich um fast eine Sekunde zurück stellen ((126/128) sec.)&lt;br /&gt;
				&lt;br /&gt;
===Temperatur Sensor TSic306===&lt;br /&gt;
Der Sensor ist mehr eine Spielerei und technische Herausforderung. Eine Herausforderung insofern, als dass er mittels eines 1-Draht Protokolls (ZACwire) ausgelesen werden muss. Kritisch ist hierbei die Synchronisation der Datenbits. Ein permanentes polling der Information wäre problemlos möglich, erfordert jedoch eine ständige Aktivität des Controllers, was gegen das Stromsparprinzip verstößt. Als Alternative bietet sich ein flanken-gesteuerter Datenempfang per Interrupt an, der nur aktiviert wird, sobald der Sensor seine Daten sendet. In diesem Fall ist allerdings die Auswertung des Datums am Port innerhalb der ISR dermaßen Zeitkritisch, dass die standardmäßige CPU-Frequenz von 1Mhz nicht genügt um das ZACwire-Protokoll zu verarbeiteten. Ein setzen des Atmel FRQDIV FUSE-Registers auf den Teiler Faktor 1x schafft hier problemlos Abhilfe als sodann die 8MHz des Ringoszillator direkt abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
===LCD Display DOG-M 1x8===&lt;br /&gt;
Ein tolles DUT-Matrix LCD welches auch bei 3V VDD hervorragend funktioniert, verhältnismäßig wenig Strom benötigt und mittels SPI ansprechbar ist. Gerade letztere Eigenschaft hilft dabei, wertvolle I/O-Ports zu sparen.&lt;br /&gt;
&lt;br /&gt;
===LCD LED Backlight red===&lt;br /&gt;
Falls das Umgebungslicht eine gewisse Schwelle unterschreitet sowie eine Benutzereingabe erfolgt, wird das LCD auch bei Dunkelheit lesbar :-)&lt;br /&gt;
&lt;br /&gt;
===DCF77 Empfangsmodul===&lt;br /&gt;
Erst war ich enttäuscht über die Empfangsqualität des Empfängers DCF-2 von ELV, da eine Synchronisation nur mit exakter Ausrichtung nach Frankfurt möglich war. Später war jedoch klar, dass mein Versuchsaufbau zu viele Störquellen aufwies. Im reinen Batteriebetrieb ist der Winkel der Ferritantenne zum Sender fast nicht mehr entscheidend.&lt;br /&gt;
Das Modul bietet keine echte Auswertung des DCF-Signals, ob also eine &amp;quot;1&amp;quot; oder &amp;quot;0&amp;quot; übertragen worden ist, muss der Controller selbst entscheiden bzw. messen. Die Implementierung ist letztlich recht einfach: Die Flanken des DCF77-Moduls werden durch einen externen Interrupt im Controller ausgewertet bzw. die Abstände zwischen den Flanken mit dem 32kHz Timer2 gemessen. Nach einer Minute liegt das komplette Datenpaket vor und muss auf Fehler geprüft werden. Es ist wichtig zu wissen, dass der vorgesehene CRC-Test NICHT hinreichend ist, um Übertragungsfehler zu detektieren - zumindest nicht, wenn man an nächsten Morgen pünktlich geweckt werden möchte! Daher verwendet der Wecker das DCF77 Datenpaket erst, wenn es nur eine minimale Zeit-Abweichung zur aktuellen Uhrzeit/Datum besitzt oder insgesamt 3mal hintereinander korrekt ausgewertet wurde. Das DCF-Signal unterliegt vielen Störungen, von daher ist eine saubere Fehlerdetektion von zentraler Bedeutung. Im Zweifel sollte die Synchronisation beendet werden. Falls nach 10min. keine Synchronisation erfolgte, bricht der Wecker diese ab, reportet dies und läuft ansonsten ungestört per RTC weiter.&lt;br /&gt;
&lt;br /&gt;
===Drehgeber===&lt;br /&gt;
Ein Standard-Drehgeber von ALPS. Er wird per externem I/O Interrupt ausgewertet, was zwar nicht die ideale, aber zumindest die sparsamste Variante ist. So kommt es schon einmal vor, dass eine dreh-Abtastung „verschluckt“ wird. Ein dauerhaftes polling führt zu einer sauberen Auswertung, aber leider auch zu höherem Stromverbrauch. &lt;br /&gt;
				&lt;br /&gt;
===Wecksignal===&lt;br /&gt;
Der Piezo-Summer Ekulit RMP-14P/HT leistet beim derzeitigem Setup im Bereich der Resonanzfrequenz etwa 70dbA in 10cm Abstand, was genügt um mich zu wecken und die Nachbarn in Ruhe lässt. &lt;br /&gt;
				&lt;br /&gt;
===Software===&lt;br /&gt;
Da der Controller im Zweifel viele ISRs bedienen muss, sind diese sehr kurz gehalten. Für die Ausführung von längeren Aufgaben dient ein Task-Handler zur seriellen Abarbeitung gesammelter Aufgaben wie z.B. Display-Updates.&lt;br /&gt;
Weiterhin ist ein Task-Scheduler implementiert, der sich um die Ausführung von seltenen Ereignissen kümmert, wie Beispielsweise die Weckfunktion, die Temperaturmessung oder die tägliche DCF77-Synchronisation.&lt;br /&gt;
&lt;br /&gt;
===Entwicklungsumgebung===&lt;br /&gt;
Zum debuggen und proggen: Der AVR Dragon sowie Atmel Studio 6&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Bisher bin ich sehr zufrieden. Die Software bzw. das Menü ist flott zu bedienen, der Wecker weckt zuverlässig und die Spannung des Akkupacks liegt seit Monaten sehr stabil bei ca. 3.8V. Klar, ein schönes PCB-Layout und ein optimales Gehäuse wären schon lecker, aber es würde der Bastel-Look fehlen.&lt;br /&gt;
&lt;br /&gt;
Ach ja, sollten wir mal umziehen, so darf das Schlafzimmer nicht ohne Fenster sein ;-)&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
*[[Media:AtmelStudio6AlarmClockV1.zip|Firmware Source Code]]&lt;br /&gt;
*[[Media:EagleAlarmClockV1.zip|Eagle Schematics]]&lt;br /&gt;
&lt;br /&gt;
==Todo==&lt;br /&gt;
Ein paar Links oder eine BOM müssten hier nochmal irgendwann rein.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Solarwecker_mit_DCF77_sowie_Temperatursensor&amp;diff=77313</id>
		<title>Solarwecker mit DCF77 sowie Temperatursensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Solarwecker_mit_DCF77_sowie_Temperatursensor&amp;diff=77313"/>
		<updated>2013-06-27T22:22:05Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: /* DCF77 Empfangsmodul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Motivation==&lt;br /&gt;
[[Bild: SW_WeckerFull.jpg|thumb|300px|Wecker Vollansicht]]&lt;br /&gt;
Der Wecker gehört zu den bedeutendsten Geräten im Alltag. Seine Qualität steht und fällt mit seiner zentralen Funktion: Schafft er es, mich am nächsten Morgen zu wecken?&lt;br /&gt;
Manch ein käuflich erworbenes Gerät ist:&lt;br /&gt;
* zu leise,&lt;br /&gt;
* zu schnell oder versehentlich abschaltbar (keine ordentliche „snooze“-Funktionalität),&lt;br /&gt;
* vom Stromnetz abhängig,&lt;br /&gt;
* von Batterien betrieben, die im falschen Moment versagen können.&lt;br /&gt;
* zu ungenau, zumindest nach ein paar Monaten&lt;br /&gt;
&lt;br /&gt;
Die zentrale Motivation für diesen Wecker ist allerdings: Als ehemals begeisterter Bastler hatte ich nach Jahrelanger Abstinenz mal wieder richtig Lust auf ein Elektronik-Projekt :-)&lt;br /&gt;
Inzwischen ist der Wecker ohne Ausfall seit 6 Monaten in Betrieb und eine Dokumentation ist überfällig. Ich gehe nicht auf alle Details ein, sie soll nur einen Überblick bieten. Im Detail ist ein Blick in den Sourcecode oder Schaltplan die bessere Auskunft. Na dann mal ran&#039;...&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
Okay, was kann der Wecker?&lt;br /&gt;
* wecken :-) mittels Piezo-Summer und einfacher, schöner 4-Ton Melodie per PWM&lt;br /&gt;
* sekundengenaue Uhrzeit mittels des DCF77 Signals (&amp;quot;Funkwecker&amp;quot;)&lt;br /&gt;
* Datumsanzeige&lt;br /&gt;
* Anzeige der Tage seit letzter erfolgreicher DCF77 Synchronisation&lt;br /&gt;
* Anzeige der Raumtemperatur mit hoher Genauigkeit&lt;br /&gt;
* Eingabe komfortabel mittels Drehgeber und LED-Taster&lt;br /&gt;
* drei programmierbare Weckzeiten - schnell einstellbar am Abend ohne minutenlang Morse-Codes zu drücken&lt;br /&gt;
* kein 230V Stromnetz notwendig&lt;br /&gt;
* kein Batteriewechsel notwendig&lt;br /&gt;
* die 2 fetten Solarmodule (5V, 150mA) laden die Buffer NiMH-Akkus auch bei geringem Lichteinfall ins Schlafzimmer zur Wintersaison ausreichend&lt;br /&gt;
* verschiedene Stromsparmechanismen&lt;br /&gt;
* bei Dunkelheit &amp;amp; Tastenaktivität -&amp;gt; rote LCD Hintergrundbeleuchtung&lt;br /&gt;
* Spannungsmessung des Akku-Packs&lt;br /&gt;
* Spannungsmessung der Solarzellen&lt;br /&gt;
* ... ein paar Kleinigkeiten, die nicht der Rede wert sind&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
===Schaltung===&lt;br /&gt;
[[Bild: SW_Schaltplan.png|800px|Schaltplan]]&lt;br /&gt;
[[Bild: SW_ElectricComments.jpg|800px|Unterseite]]&lt;br /&gt;
===Display===&lt;br /&gt;
[[Bild: SW_DisplayTime.jpg|200px|Display Time]]&lt;br /&gt;
[[Bild: SW_DisplayTemperature.jpg|200px|Display Temperature]]&lt;br /&gt;
[[Bild: SW_DisplayDatum.jpg|200px|Display Datum]]&lt;br /&gt;
[[Bild: SW_DisplayAlarm.jpg|200px|Display Alarm]]&lt;br /&gt;
[[Bild: SW_DisplayNight.jpg|200px|Display LED Active]]&lt;br /&gt;
&lt;br /&gt;
==Technische Details==&lt;br /&gt;
Der Aufbau ist mit einer kleinen Lochraster-Platine realisiert, da die Beschaltung noch recht übersichtlich ist. Die Verbindungen/Stecker etc. kommen aus der Grabbeikiste. Das Gehäuse ist aus preiswertem Pappelholz mit der Laubsäge bearbeitet, verleimt und mit Leinöl versiegelt.&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung===&lt;br /&gt;
Gespeist wird die Schaltung von 3xAAA NiMH Zellen mit je ca. 750mAh, welche eine sehr geringe Selbstentladung besitzen.&lt;br /&gt;
* Die Nennspannung liegt bei 3x1.2V = 3.6V.  &lt;br /&gt;
* Entladen 3x1.0V = 3.0V.&lt;br /&gt;
* Vollgeladen 3x1.5V = 4.5V.&lt;br /&gt;
Die Hauptschaltung des Weckers würde theoretisch bis etwa 1.8V gut funktionieren, allerdings ist spätestens ab 2.8V das LCD nicht mehr funktionsfähig, weshalb 3 Zellen in Serie geschaltet werden müssen um die Versorgung mit ca. 3V sicher zu stellen.&lt;br /&gt;
Für eine stabile Spannungsversorgung der gesamten Schaltung dient der Lowdrop-Längsregler MCP1702-3002, welcher zudem durch sehr geringe Verluste auffällt. Die gewählten 3.0V helfen gegenüber den üblichen 3.3V, die Energiebilanz etwas zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle spielt die Unabhängigkeit des Weckers von externer Energieeinspeisung - vom Sonnenlicht mal abgesehen.&lt;br /&gt;
Die beiden in Serie geschalteten Solarzellen mit spezifizierten 2x5V = 10V und 150mA liefern diese natürlich nur unter direktem Sonnenlicht.&lt;br /&gt;
Im Wohnbereich sind Werte um 1-2 Promille dieser Angaben realistisch - dies bestätigen auch meine Messungen: An einem durchschnittlichem Wintertag bricht selbst die Leerlauf-Zellspannung stark ein und es können nur geringe Ströme vom ca. 160-300uA bei insgesamt 4,5V fließen. &lt;br /&gt;
Diese elektrische Leistung wird direkt abgegriffen, um die 3 NiMH-Zellen zu laden. Bei diesen geringen Strömen ist keine besondere Ladeschaltung notwendig. Selbst bei unrealistisch hoher Sonneneinstrahlung werden die Akkus auf diese Weise nicht beschädigt, da bis ca. 100mA als &amp;quot;Erhaltungsladung&amp;quot; akzeptabel sind.&lt;br /&gt;
&lt;br /&gt;
(!) Das Tolle bei der Dimensionierung der Solarzellen in Verbindung mit den Akkus bezogen auf den Lichteinfall in unserem Schlafzimmer: Die Ladung regelt sich quasi automatisch bei ca. 3.8V ein, was der Lebensdauer der Akkuzellen sehr zugute kommt.&lt;br /&gt;
Ist die Spannung des Akkupacks höher, fällt der Ladestrom der Solarzellen ab. Bei niedriger Spannung des Akkupacks genügt hingegen sehr wenig Licht um einen Ladestrom zu liefern.&lt;br /&gt;
&lt;br /&gt;
===Stromsparmechanismen===&lt;br /&gt;
Der Mikrocontroller von Atmel bietet verschiedene Möglichkeiten, um seinen Stromverbrauch zu minimieren. So ist er Beispielweise programmiert, die meiste Zeit im Sleep-Mode zu verbringen.  Nur selten wird er per Interrupt geweckt, um Benutzereingaben zu bearbeiten oder Tasks des Scheduler auszuführen. Eine RTC dient dazu, den Controller 4 mal in der Sekunde zu wecken und etwaige Tasks abzuarbeiten.&lt;br /&gt;
&lt;br /&gt;
Es sind 3 Fälle zu betrachten:&lt;br /&gt;
* Nacht-betrieb (ca. 8uA Stromverbrauch) &lt;br /&gt;
Alle 8 Sekunden überprüft der Controller, ob das Umgebungslicht hell genug ist, um das LCD-Display ablesen zu können. Als Lichtdetektor dienen hier die Solarzellen bzw. die per AD gemessene Spannung am Widerstand R2/R4. Ist eine gewisse Schwelle unterschritten, so wird einer der größten Verbraucher (LCD) abgeschaltet.&lt;br /&gt;
Eine regelmäßige Temperaturmessung findet ebenfalls nicht statt.&lt;br /&gt;
Der Nachtbetrieb kann durch beliebigen Tastendruck jederzeit für einige Sekunden unterbrochen werden.&lt;br /&gt;
&lt;br /&gt;
* Tag-betrieb (ca. 155uA Stromverbrauch)&lt;br /&gt;
Das LCD ist eingeschaltet und verursacht den größten Strombedarf. Der Temperatursensor wird lediglich alle 8 Sekunden eingeschaltet und nach der ersten Messung wieder deaktiviert - der Strombedarf ist für diesen in Summe zu vernachlässigen.&lt;br /&gt;
&lt;br /&gt;
* Aktivität DCF/Alarm/LED-Backlight (bis ca. max. 5mA Stromverbrauch)&lt;br /&gt;
Egal ob der Alarm ertönt, auf das DCF77-Signal synchronisiert wird oder das LED-Backlight nachts bei Aktivität dazugeschaltet wird - es werden bis zu 5mA fließen.&lt;br /&gt;
In Summe ist der Einfluss auf den Gesamtenergiebedarf allerdings recht gering und muss nicht weiter betrachtet werden. &lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Als Basis dient der 8Bit Mikrocontroller Atmel ATMEGA328P-PU, welcher mit insgesamt 28Pins bzw. 3 I/O Ports gerade so genügend Anschlüsse bietet.&lt;br /&gt;
Die komplette Software passt bequem dort hinein:&lt;br /&gt;
	Program Memory Usage 	:	7802 bytes   23,8 % Full&lt;br /&gt;
	Data Memory Usage 		:	723 bytes   35,3 % Full&lt;br /&gt;
&lt;br /&gt;
===RTC===&lt;br /&gt;
Mit einem externen Standard-Uhrenquarz (32kHz) sowie dem Timer2 des ATMEGA-Serie lässt sich sehr einfach eine RealTimeClock aufbauen, die als Taktgeber für die Uhrzeit verwendet werden kann. Der Vorteil zum Ringoszillator des Controllers liegt in der deutlich stabileren Frequenz sowie des niedrigen Taktes, der dabei hilft, richtig Strom zu sparen. Als Alternative könnte ein noch genaueres externes RTC-Modul verwendet werden, doch angesichts der DCF77-Synchronisation ist dies definitiv unnötig. Die Ganglaufzeit der Uhr variiert natürlich mit der Frequenzgenauigkeit des Quarzes und muss durch Software kalibriert werden. Auch wenn dies dank des DCF77-Zeitsignals überflüssig erscheint, so wird die Uhrzeit einmal täglich automatisch angepasst: Bei meinem verbauten Quarz muss ich sie täglich um fast eine Sekunde zurück stellen ((126/128) sec.)&lt;br /&gt;
				&lt;br /&gt;
===Temperatur Sensor TSic306===&lt;br /&gt;
Der Sensor ist mehr eine Spielerei und technische Herausforderung. Eine Herausforderung insofern, als dass er mittels eines 1-Draht Protokolls (ZACwire) ausgelesen werden muss. Kritisch ist hierbei die Synchronisation der Datenbits. Ein permanentes polling der Information wäre problemlos möglich, erfordert jedoch eine ständige Aktivität des Controllers, was gegen das Stromsparprinzip verstößt. Als Alternative bietet sich ein flanken-gesteuerter Datenempfang per Interrupt an, der nur aktiviert wird, sobald der Sensor seine Daten sendet. In diesem Fall ist allerdings die Auswertung des Datums am Port innerhalb der ISR dermaßen Zeitkritisch, dass die standardmäßige CPU-Frequenz von 1Mhz nicht genügt um das ZACwire-Protokoll zu verarbeiteten. Ein setzen des Atmel FRQDIV FUSE-Registers auf den Teiler Faktor 1x schafft hier problemlos Abhilfe als sodann die 8MHz des Ringoszillator direkt abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
===LCD Display DOG-M 1x8===&lt;br /&gt;
Ein tolles DUT-Matrix LCD welches auch bei 3V VDD hervorragend funktioniert, verhältnismäßig wenig Strom benötigt und mittels SPI ansprechbar ist. Gerade letztere Eigenschaft hilft dabei, wertvolle I/O-Ports zu sparen.&lt;br /&gt;
&lt;br /&gt;
===LCD LED Backlight red===&lt;br /&gt;
Falls das Umgebungslicht eine gewisse Schwelle unterschreitet sowie eine Benutzereingabe erfolgt, wird das LCD auch bei Dunkelheit lesbar :-)&lt;br /&gt;
&lt;br /&gt;
===DCF77 Empfangsmodul===&lt;br /&gt;
Erst war ich enttäuscht über die Empfangsqualität des Empfängers DCF-2 von ELV, da eine Synchronisation nur mit exakter Ausrichtung nach Frankfurt möglich war. Später war jedoch klar, dass mein Versuchsaufbau zu viele Störquellen aufwies. Im reinen Batteriebetrieb ist der Winkel der Ferritantenne zum Sender fast nicht mehr entscheidend.&lt;br /&gt;
Das Modul bietet keine echte Auswertung des DCF-Signals, ob also eine &amp;quot;1&amp;quot; oder &amp;quot;0&amp;quot; übertragen worden ist, muss der Controller selbst entscheiden bzw. messen. Die Implementierung ist letztlich recht einfach: Die Flanken des DCF77-Moduls werden durch einen externen Interrupt im Controller ausgewertet bzw. die Abstände zwischen den Flanken mit dem 32kHz Timer2 gemessen. Nach einer Minute liegt das komplette Datenpaket vor und muss auf Fehler geprüft werden. Es ist wichtig zu wissen, dass der vorgesehene CRC-Test NICHT hinreichend ist, um Übertragungsfehler zu detektieren - zumindest nicht, wenn man an nächsten Morgen pünktlich geweckt werden möchte! Daher verwendet der Wecker das DCF77 Datenpaket erst, wenn es nur eine minimale Zeit-Abweichung zur aktuellen Uhrzeit/Datum besitzt oder insgesamt 3mal hintereinander korrekt ausgewertet wurde. Das DCF-Signal unterliegt vielen Störungen, von daher ist eine saubere Fehlerdetektion von zentraler Bedeutung. Im Zweifel sollte die Synchronisation beendet werden. Falls nach 10min. keine Synchronisation erfolgte, bricht der Wecker diese ab, reportet dies und läuft ansonsten ungestört per RTC weiter.&lt;br /&gt;
&lt;br /&gt;
===Drehgeber===&lt;br /&gt;
Ein Standard-Drehgeber von ALPS. Er wird per externem I/O Interrupt ausgewertet, was zwar nicht die ideale, aber zumindest die sparsamste Variante ist. So kommt es schon einmal vor, dass eine dreh-Abtastung „verschluckt“ wird. Ein dauerhaftes polling führt zu einer sauberen Auswertung, aber leider auch zu höherem Stromverbrauch. &lt;br /&gt;
				&lt;br /&gt;
===Wecksignal===&lt;br /&gt;
Der Piezo-Summer Ekulit RMP-14P/HT leistet beim derzeitigem Setup im Bereich der Resonanzfrequenz etwa 70dbA in 10cm Abstand, was genügt um mich zu wecken und die Nachbarn in Ruhe lässt. &lt;br /&gt;
				&lt;br /&gt;
===Software===&lt;br /&gt;
Da der Controller im Zweifel viele ISRs bedienen muss, sind diese sehr kurz gehalten. Für die Ausführung von längeren Aufgaben dient ein Task-Handler zur seriellen Abarbeitung gesammelter Aufgaben wie z.B. Display-Updates.&lt;br /&gt;
Weiterhin ist ein Task-Scheduler implementiert, der sich um die Ausführung von seltenen Ereignissen kümmert, wie Beispielsweise die Weckfunktion, die Temperaturmessung oder die tägliche DCF77-Synchronisation.&lt;br /&gt;
&lt;br /&gt;
===Entwicklungsumgebung===&lt;br /&gt;
Zum debuggen und proggen: Der AVR Dragon sowie Atmel Studio 6&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Bisher bin ich sehr zufrieden. Die Software bzw. das Menü ist flott zu bedienen, der Wecker weckt zuverlässig und die Spannung des Akkupacks liegt seit Monaten sehr stabil bei ca. 3.8V. Klar, ein schönes PCB-Layout und ein optimales Gehäuse wären schon lecker, aber es würde der Bastel-Look fehlen.&lt;br /&gt;
&lt;br /&gt;
Ach ja, sollten wir mal umziehen, so darf das Schlafzimmer nicht ohne Fenster sein ;-)&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
*[[Media:AtmelStudio6AlarmClockV1.zip|Firmware Source Code]]&lt;br /&gt;
*[[Media:EagleAlarmClockV1.zip|Eagle Schematics]]&lt;br /&gt;
&lt;br /&gt;
==Todo==&lt;br /&gt;
Ein paar Links oder eine BOM müssten hier nochmal irgendwann rein.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Solarwecker_mit_DCF77_sowie_Temperatursensor&amp;diff=77312</id>
		<title>Solarwecker mit DCF77 sowie Temperatursensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Solarwecker_mit_DCF77_sowie_Temperatursensor&amp;diff=77312"/>
		<updated>2013-06-27T22:19:01Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: /* DCF77 Empfangsmodul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Motivation==&lt;br /&gt;
[[Bild: SW_WeckerFull.jpg|thumb|300px|Wecker Vollansicht]]&lt;br /&gt;
Der Wecker gehört zu den bedeutendsten Geräten im Alltag. Seine Qualität steht und fällt mit seiner zentralen Funktion: Schafft er es, mich am nächsten Morgen zu wecken?&lt;br /&gt;
Manch ein käuflich erworbenes Gerät ist:&lt;br /&gt;
* zu leise,&lt;br /&gt;
* zu schnell oder versehentlich abschaltbar (keine ordentliche „snooze“-Funktionalität),&lt;br /&gt;
* vom Stromnetz abhängig,&lt;br /&gt;
* von Batterien betrieben, die im falschen Moment versagen können.&lt;br /&gt;
* zu ungenau, zumindest nach ein paar Monaten&lt;br /&gt;
&lt;br /&gt;
Die zentrale Motivation für diesen Wecker ist allerdings: Als ehemals begeisterter Bastler hatte ich nach Jahrelanger Abstinenz mal wieder richtig Lust auf ein Elektronik-Projekt :-)&lt;br /&gt;
Inzwischen ist der Wecker ohne Ausfall seit 6 Monaten in Betrieb und eine Dokumentation ist überfällig. Ich gehe nicht auf alle Details ein, sie soll nur einen Überblick bieten. Im Detail ist ein Blick in den Sourcecode oder Schaltplan die bessere Auskunft. Na dann mal ran&#039;...&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
Okay, was kann der Wecker?&lt;br /&gt;
* wecken :-) mittels Piezo-Summer und einfacher, schöner 4-Ton Melodie per PWM&lt;br /&gt;
* sekundengenaue Uhrzeit mittels des DCF77 Signals (&amp;quot;Funkwecker&amp;quot;)&lt;br /&gt;
* Datumsanzeige&lt;br /&gt;
* Anzeige der Tage seit letzter erfolgreicher DCF77 Synchronisation&lt;br /&gt;
* Anzeige der Raumtemperatur mit hoher Genauigkeit&lt;br /&gt;
* Eingabe komfortabel mittels Drehgeber und LED-Taster&lt;br /&gt;
* drei programmierbare Weckzeiten - schnell einstellbar am Abend ohne minutenlang Morse-Codes zu drücken&lt;br /&gt;
* kein 230V Stromnetz notwendig&lt;br /&gt;
* kein Batteriewechsel notwendig&lt;br /&gt;
* die 2 fetten Solarmodule (5V, 150mA) laden die Buffer NiMH-Akkus auch bei geringem Lichteinfall ins Schlafzimmer zur Wintersaison ausreichend&lt;br /&gt;
* verschiedene Stromsparmechanismen&lt;br /&gt;
* bei Dunkelheit &amp;amp; Tastenaktivität -&amp;gt; rote LCD Hintergrundbeleuchtung&lt;br /&gt;
* Spannungsmessung des Akku-Packs&lt;br /&gt;
* Spannungsmessung der Solarzellen&lt;br /&gt;
* ... ein paar Kleinigkeiten, die nicht der Rede wert sind&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
===Schaltung===&lt;br /&gt;
[[Bild: SW_Schaltplan.png|800px|Schaltplan]]&lt;br /&gt;
[[Bild: SW_ElectricComments.jpg|800px|Unterseite]]&lt;br /&gt;
===Display===&lt;br /&gt;
[[Bild: SW_DisplayTime.jpg|200px|Display Time]]&lt;br /&gt;
[[Bild: SW_DisplayTemperature.jpg|200px|Display Temperature]]&lt;br /&gt;
[[Bild: SW_DisplayDatum.jpg|200px|Display Datum]]&lt;br /&gt;
[[Bild: SW_DisplayAlarm.jpg|200px|Display Alarm]]&lt;br /&gt;
[[Bild: SW_DisplayNight.jpg|200px|Display LED Active]]&lt;br /&gt;
&lt;br /&gt;
==Technische Details==&lt;br /&gt;
Der Aufbau ist mit einer kleinen Lochraster-Platine realisiert, da die Beschaltung noch recht übersichtlich ist. Die Verbindungen/Stecker etc. kommen aus der Grabbeikiste. Das Gehäuse ist aus preiswertem Pappelholz mit der Laubsäge bearbeitet, verleimt und mit Leinöl versiegelt.&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung===&lt;br /&gt;
Gespeist wird die Schaltung von 3xAAA NiMH Zellen mit je ca. 750mAh, welche eine sehr geringe Selbstentladung besitzen.&lt;br /&gt;
* Die Nennspannung liegt bei 3x1.2V = 3.6V.  &lt;br /&gt;
* Entladen 3x1.0V = 3.0V.&lt;br /&gt;
* Vollgeladen 3x1.5V = 4.5V.&lt;br /&gt;
Die Hauptschaltung des Weckers würde theoretisch bis etwa 1.8V gut funktionieren, allerdings ist spätestens ab 2.8V das LCD nicht mehr funktionsfähig, weshalb 3 Zellen in Serie geschaltet werden müssen um die Versorgung mit ca. 3V sicher zu stellen.&lt;br /&gt;
Für eine stabile Spannungsversorgung der gesamten Schaltung dient der Lowdrop-Längsregler MCP1702-3002, welcher zudem durch sehr geringe Verluste auffällt. Die gewählten 3.0V helfen gegenüber den üblichen 3.3V, die Energiebilanz etwas zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle spielt die Unabhängigkeit des Weckers von externer Energieeinspeisung - vom Sonnenlicht mal abgesehen.&lt;br /&gt;
Die beiden in Serie geschalteten Solarzellen mit spezifizierten 2x5V = 10V und 150mA liefern diese natürlich nur unter direktem Sonnenlicht.&lt;br /&gt;
Im Wohnbereich sind Werte um 1-2 Promille dieser Angaben realistisch - dies bestätigen auch meine Messungen: An einem durchschnittlichem Wintertag bricht selbst die Leerlauf-Zellspannung stark ein und es können nur geringe Ströme vom ca. 160-300uA bei insgesamt 4,5V fließen. &lt;br /&gt;
Diese elektrische Leistung wird direkt abgegriffen, um die 3 NiMH-Zellen zu laden. Bei diesen geringen Strömen ist keine besondere Ladeschaltung notwendig. Selbst bei unrealistisch hoher Sonneneinstrahlung werden die Akkus auf diese Weise nicht beschädigt, da bis ca. 100mA als &amp;quot;Erhaltungsladung&amp;quot; akzeptabel sind.&lt;br /&gt;
&lt;br /&gt;
(!) Das Tolle bei der Dimensionierung der Solarzellen in Verbindung mit den Akkus bezogen auf den Lichteinfall in unserem Schlafzimmer: Die Ladung regelt sich quasi automatisch bei ca. 3.8V ein, was der Lebensdauer der Akkuzellen sehr zugute kommt.&lt;br /&gt;
Ist die Spannung des Akkupacks höher, fällt der Ladestrom der Solarzellen ab. Bei niedriger Spannung des Akkupacks genügt hingegen sehr wenig Licht um einen Ladestrom zu liefern.&lt;br /&gt;
&lt;br /&gt;
===Stromsparmechanismen===&lt;br /&gt;
Der Mikrocontroller von Atmel bietet verschiedene Möglichkeiten, um seinen Stromverbrauch zu minimieren. So ist er Beispielweise programmiert, die meiste Zeit im Sleep-Mode zu verbringen.  Nur selten wird er per Interrupt geweckt, um Benutzereingaben zu bearbeiten oder Tasks des Scheduler auszuführen. Eine RTC dient dazu, den Controller 4 mal in der Sekunde zu wecken und etwaige Tasks abzuarbeiten.&lt;br /&gt;
&lt;br /&gt;
Es sind 3 Fälle zu betrachten:&lt;br /&gt;
* Nacht-betrieb (ca. 8uA Stromverbrauch) &lt;br /&gt;
Alle 8 Sekunden überprüft der Controller, ob das Umgebungslicht hell genug ist, um das LCD-Display ablesen zu können. Als Lichtdetektor dienen hier die Solarzellen bzw. die per AD gemessene Spannung am Widerstand R2/R4. Ist eine gewisse Schwelle unterschritten, so wird einer der größten Verbraucher (LCD) abgeschaltet.&lt;br /&gt;
Eine regelmäßige Temperaturmessung findet ebenfalls nicht statt.&lt;br /&gt;
Der Nachtbetrieb kann durch beliebigen Tastendruck jederzeit für einige Sekunden unterbrochen werden.&lt;br /&gt;
&lt;br /&gt;
* Tag-betrieb (ca. 155uA Stromverbrauch)&lt;br /&gt;
Das LCD ist eingeschaltet und verursacht den größten Strombedarf. Der Temperatursensor wird lediglich alle 8 Sekunden eingeschaltet und nach der ersten Messung wieder deaktiviert - der Strombedarf ist für diesen in Summe zu vernachlässigen.&lt;br /&gt;
&lt;br /&gt;
* Aktivität DCF/Alarm/LED-Backlight (bis ca. max. 5mA Stromverbrauch)&lt;br /&gt;
Egal ob der Alarm ertönt, auf das DCF77-Signal synchronisiert wird oder das LED-Backlight nachts bei Aktivität dazugeschaltet wird - es werden bis zu 5mA fließen.&lt;br /&gt;
In Summe ist der Einfluss auf den Gesamtenergiebedarf allerdings recht gering und muss nicht weiter betrachtet werden. &lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Als Basis dient der 8Bit Mikrocontroller Atmel ATMEGA328P-PU, welcher mit insgesamt 28Pins bzw. 3 I/O Ports gerade so genügend Anschlüsse bietet.&lt;br /&gt;
Die komplette Software passt bequem dort hinein:&lt;br /&gt;
	Program Memory Usage 	:	7802 bytes   23,8 % Full&lt;br /&gt;
	Data Memory Usage 		:	723 bytes   35,3 % Full&lt;br /&gt;
&lt;br /&gt;
===RTC===&lt;br /&gt;
Mit einem externen Standard-Uhrenquarz (32kHz) sowie dem Timer2 des ATMEGA-Serie lässt sich sehr einfach eine RealTimeClock aufbauen, die als Taktgeber für die Uhrzeit verwendet werden kann. Der Vorteil zum Ringoszillator des Controllers liegt in der deutlich stabileren Frequenz sowie des niedrigen Taktes, der dabei hilft, richtig Strom zu sparen. Als Alternative könnte ein noch genaueres externes RTC-Modul verwendet werden, doch angesichts der DCF77-Synchronisation ist dies definitiv unnötig. Die Ganglaufzeit der Uhr variiert natürlich mit der Frequenzgenauigkeit des Quarzes und muss durch Software kalibriert werden. Auch wenn dies dank des DCF77-Zeitsignals überflüssig erscheint, so wird die Uhrzeit einmal täglich automatisch angepasst: Bei meinem verbauten Quarz muss ich sie täglich um fast eine Sekunde zurück stellen ((126/128) sec.)&lt;br /&gt;
				&lt;br /&gt;
===Temperatur Sensor TSic306===&lt;br /&gt;
Der Sensor ist mehr eine Spielerei und technische Herausforderung. Eine Herausforderung insofern, als dass er mittels eines 1-Draht Protokolls (ZACwire) ausgelesen werden muss. Kritisch ist hierbei die Synchronisation der Datenbits. Ein permanentes polling der Information wäre problemlos möglich, erfordert jedoch eine ständige Aktivität des Controllers, was gegen das Stromsparprinzip verstößt. Als Alternative bietet sich ein flanken-gesteuerter Datenempfang per Interrupt an, der nur aktiviert wird, sobald der Sensor seine Daten sendet. In diesem Fall ist allerdings die Auswertung des Datums am Port innerhalb der ISR dermaßen Zeitkritisch, dass die standardmäßige CPU-Frequenz von 1Mhz nicht genügt um das ZACwire-Protokoll zu verarbeiteten. Ein setzen des Atmel FRQDIV FUSE-Registers auf den Teiler Faktor 1x schafft hier problemlos Abhilfe als sodann die 8MHz des Ringoszillator direkt abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
===LCD Display DOG-M 1x8===&lt;br /&gt;
Ein tolles DUT-Matrix LCD welches auch bei 3V VDD hervorragend funktioniert, verhältnismäßig wenig Strom benötigt und mittels SPI ansprechbar ist. Gerade letztere Eigenschaft hilft dabei, wertvolle I/O-Ports zu sparen.&lt;br /&gt;
&lt;br /&gt;
===LCD LED Backlight red===&lt;br /&gt;
Falls das Umgebungslicht eine gewisse Schwelle unterschreitet sowie eine Benutzereingabe erfolgt, wird das LCD auch bei Dunkelheit lesbar :-)&lt;br /&gt;
&lt;br /&gt;
===DCF77 Empfangsmodul===&lt;br /&gt;
Erst war ich enttäuscht über die Empfangsqualität des Empfängers DCF-2 von ELV, da eine Synchronisation nur mit exakter Ausrichtung nach Frankfurt möglich war. Später war jedoch klar, dass mein Versuchsaufbau zu viele Störquellen aufwies. Im reinen Batteriebetrieb ist der Winkel der Ferritantenne zum Sender fast nicht mehr entscheidend.&lt;br /&gt;
Das Modul bietet keine echte Auswertung des DCF-Signals, ob also eine &amp;quot;1&amp;quot; oder &amp;quot;0&amp;quot; übertragen worden ist, muss der Controller selbst entscheiden bzw. messen. Die Implementierung ist letztlich recht einfach: Die Flanken des DCF77-Moduls werden durch einen externen Interrupt im Controller ausgewertet bzw. die Abstände zwischen den Flanken mit dem 32kHz Timer2 gemessen. Nach einer Minute liegt das komplette Datenpaket vor und muss auf Fehler geprüft werden. Es ist wichtig zu wissen, dass der vorgesehene CRC-Test NICHT hinreichend ist, um Übertragungsfehler zu detektieren - zumindest nicht, wenn man an nächsten Morgen pünktlich geweckt werden möchte! Daher verwendet der Wecker das DCF77 Datenpaket erst, wenn es nur eine minimale Zeit-Abweichung zur aktuellen Uhrzeit/Datum besitzt oder insgesamt 3mal hintereinander korrekt ausgewertet wurde. Das DCF-Signal unterliegt vielen Störungen, von daher ist eine saubere Fehlerdetektion von zentraler Bedeutung. Im Zweifel sollte die Synchronisation beendet werden. Falls nach 10min. Keine Synchronisation erfolgte, bricht der Wecker diese ab, reportet dies und läuft ansonsten ungestört per RTC weiter.&lt;br /&gt;
&lt;br /&gt;
===Drehgeber===&lt;br /&gt;
Ein Standard-Drehgeber von ALPS. Er wird per externem I/O Interrupt ausgewertet, was zwar nicht die ideale, aber zumindest die sparsamste Variante ist. So kommt es schon einmal vor, dass eine dreh-Abtastung „verschluckt“ wird. Ein dauerhaftes polling führt zu einer sauberen Auswertung, aber leider auch zu höherem Stromverbrauch. &lt;br /&gt;
				&lt;br /&gt;
===Wecksignal===&lt;br /&gt;
Der Piezo-Summer Ekulit RMP-14P/HT leistet beim derzeitigem Setup im Bereich der Resonanzfrequenz etwa 70dbA in 10cm Abstand, was genügt um mich zu wecken und die Nachbarn in Ruhe lässt. &lt;br /&gt;
				&lt;br /&gt;
===Software===&lt;br /&gt;
Da der Controller im Zweifel viele ISRs bedienen muss, sind diese sehr kurz gehalten. Für die Ausführung von längeren Aufgaben dient ein Task-Handler zur seriellen Abarbeitung gesammelter Aufgaben wie z.B. Display-Updates.&lt;br /&gt;
Weiterhin ist ein Task-Scheduler implementiert, der sich um die Ausführung von seltenen Ereignissen kümmert, wie Beispielsweise die Weckfunktion, die Temperaturmessung oder die tägliche DCF77-Synchronisation.&lt;br /&gt;
&lt;br /&gt;
===Entwicklungsumgebung===&lt;br /&gt;
Zum debuggen und proggen: Der AVR Dragon sowie Atmel Studio 6&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Bisher bin ich sehr zufrieden. Die Software bzw. das Menü ist flott zu bedienen, der Wecker weckt zuverlässig und die Spannung des Akkupacks liegt seit Monaten sehr stabil bei ca. 3.8V. Klar, ein schönes PCB-Layout und ein optimales Gehäuse wären schon lecker, aber es würde der Bastel-Look fehlen.&lt;br /&gt;
&lt;br /&gt;
Ach ja, sollten wir mal umziehen, so darf das Schlafzimmer nicht ohne Fenster sein ;-)&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
*[[Media:AtmelStudio6AlarmClockV1.zip|Firmware Source Code]]&lt;br /&gt;
*[[Media:EagleAlarmClockV1.zip|Eagle Schematics]]&lt;br /&gt;
&lt;br /&gt;
==Todo==&lt;br /&gt;
Ein paar Links oder eine BOM müssten hier nochmal irgendwann rein.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Solarwecker_mit_DCF77_sowie_Temperatursensor&amp;diff=77311</id>
		<title>Solarwecker mit DCF77 sowie Temperatursensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Solarwecker_mit_DCF77_sowie_Temperatursensor&amp;diff=77311"/>
		<updated>2013-06-27T22:08:46Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: /* Display */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Motivation==&lt;br /&gt;
[[Bild: SW_WeckerFull.jpg|thumb|300px|Wecker Vollansicht]]&lt;br /&gt;
Der Wecker gehört zu den bedeutendsten Geräten im Alltag. Seine Qualität steht und fällt mit seiner zentralen Funktion: Schafft er es, mich am nächsten Morgen zu wecken?&lt;br /&gt;
Manch ein käuflich erworbenes Gerät ist:&lt;br /&gt;
* zu leise,&lt;br /&gt;
* zu schnell oder versehentlich abschaltbar (keine ordentliche „snooze“-Funktionalität),&lt;br /&gt;
* vom Stromnetz abhängig,&lt;br /&gt;
* von Batterien betrieben, die im falschen Moment versagen können.&lt;br /&gt;
* zu ungenau, zumindest nach ein paar Monaten&lt;br /&gt;
&lt;br /&gt;
Die zentrale Motivation für diesen Wecker ist allerdings: Als ehemals begeisterter Bastler hatte ich nach Jahrelanger Abstinenz mal wieder richtig Lust auf ein Elektronik-Projekt :-)&lt;br /&gt;
Inzwischen ist der Wecker ohne Ausfall seit 6 Monaten in Betrieb und eine Dokumentation ist überfällig. Ich gehe nicht auf alle Details ein, sie soll nur einen Überblick bieten. Im Detail ist ein Blick in den Sourcecode oder Schaltplan die bessere Auskunft. Na dann mal ran&#039;...&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
Okay, was kann der Wecker?&lt;br /&gt;
* wecken :-) mittels Piezo-Summer und einfacher, schöner 4-Ton Melodie per PWM&lt;br /&gt;
* sekundengenaue Uhrzeit mittels des DCF77 Signals (&amp;quot;Funkwecker&amp;quot;)&lt;br /&gt;
* Datumsanzeige&lt;br /&gt;
* Anzeige der Tage seit letzter erfolgreicher DCF77 Synchronisation&lt;br /&gt;
* Anzeige der Raumtemperatur mit hoher Genauigkeit&lt;br /&gt;
* Eingabe komfortabel mittels Drehgeber und LED-Taster&lt;br /&gt;
* drei programmierbare Weckzeiten - schnell einstellbar am Abend ohne minutenlang Morse-Codes zu drücken&lt;br /&gt;
* kein 230V Stromnetz notwendig&lt;br /&gt;
* kein Batteriewechsel notwendig&lt;br /&gt;
* die 2 fetten Solarmodule (5V, 150mA) laden die Buffer NiMH-Akkus auch bei geringem Lichteinfall ins Schlafzimmer zur Wintersaison ausreichend&lt;br /&gt;
* verschiedene Stromsparmechanismen&lt;br /&gt;
* bei Dunkelheit &amp;amp; Tastenaktivität -&amp;gt; rote LCD Hintergrundbeleuchtung&lt;br /&gt;
* Spannungsmessung des Akku-Packs&lt;br /&gt;
* Spannungsmessung der Solarzellen&lt;br /&gt;
* ... ein paar Kleinigkeiten, die nicht der Rede wert sind&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
===Schaltung===&lt;br /&gt;
[[Bild: SW_Schaltplan.png|800px|Schaltplan]]&lt;br /&gt;
[[Bild: SW_ElectricComments.jpg|800px|Unterseite]]&lt;br /&gt;
===Display===&lt;br /&gt;
[[Bild: SW_DisplayTime.jpg|200px|Display Time]]&lt;br /&gt;
[[Bild: SW_DisplayTemperature.jpg|200px|Display Temperature]]&lt;br /&gt;
[[Bild: SW_DisplayDatum.jpg|200px|Display Datum]]&lt;br /&gt;
[[Bild: SW_DisplayAlarm.jpg|200px|Display Alarm]]&lt;br /&gt;
[[Bild: SW_DisplayNight.jpg|200px|Display LED Active]]&lt;br /&gt;
&lt;br /&gt;
==Technische Details==&lt;br /&gt;
Der Aufbau ist mit einer kleinen Lochraster-Platine realisiert, da die Beschaltung noch recht übersichtlich ist. Die Verbindungen/Stecker etc. kommen aus der Grabbeikiste. Das Gehäuse ist aus preiswertem Pappelholz mit der Laubsäge bearbeitet, verleimt und mit Leinöl versiegelt.&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung===&lt;br /&gt;
Gespeist wird die Schaltung von 3xAAA NiMH Zellen mit je ca. 750mAh, welche eine sehr geringe Selbstentladung besitzen.&lt;br /&gt;
* Die Nennspannung liegt bei 3x1.2V = 3.6V.  &lt;br /&gt;
* Entladen 3x1.0V = 3.0V.&lt;br /&gt;
* Vollgeladen 3x1.5V = 4.5V.&lt;br /&gt;
Die Hauptschaltung des Weckers würde theoretisch bis etwa 1.8V gut funktionieren, allerdings ist spätestens ab 2.8V das LCD nicht mehr funktionsfähig, weshalb 3 Zellen in Serie geschaltet werden müssen um die Versorgung mit ca. 3V sicher zu stellen.&lt;br /&gt;
Für eine stabile Spannungsversorgung der gesamten Schaltung dient der Lowdrop-Längsregler MCP1702-3002, welcher zudem durch sehr geringe Verluste auffällt. Die gewählten 3.0V helfen gegenüber den üblichen 3.3V, die Energiebilanz etwas zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle spielt die Unabhängigkeit des Weckers von externer Energieeinspeisung - vom Sonnenlicht mal abgesehen.&lt;br /&gt;
Die beiden in Serie geschalteten Solarzellen mit spezifizierten 2x5V = 10V und 150mA liefern diese natürlich nur unter direktem Sonnenlicht.&lt;br /&gt;
Im Wohnbereich sind Werte um 1-2 Promille dieser Angaben realistisch - dies bestätigen auch meine Messungen: An einem durchschnittlichem Wintertag bricht selbst die Leerlauf-Zellspannung stark ein und es können nur geringe Ströme vom ca. 160-300uA bei insgesamt 4,5V fließen. &lt;br /&gt;
Diese elektrische Leistung wird direkt abgegriffen, um die 3 NiMH-Zellen zu laden. Bei diesen geringen Strömen ist keine besondere Ladeschaltung notwendig. Selbst bei unrealistisch hoher Sonneneinstrahlung werden die Akkus auf diese Weise nicht beschädigt, da bis ca. 100mA als &amp;quot;Erhaltungsladung&amp;quot; akzeptabel sind.&lt;br /&gt;
&lt;br /&gt;
(!) Das Tolle bei der Dimensionierung der Solarzellen in Verbindung mit den Akkus bezogen auf den Lichteinfall in unserem Schlafzimmer: Die Ladung regelt sich quasi automatisch bei ca. 3.8V ein, was der Lebensdauer der Akkuzellen sehr zugute kommt.&lt;br /&gt;
Ist die Spannung des Akkupacks höher, fällt der Ladestrom der Solarzellen ab. Bei niedriger Spannung des Akkupacks genügt hingegen sehr wenig Licht um einen Ladestrom zu liefern.&lt;br /&gt;
&lt;br /&gt;
===Stromsparmechanismen===&lt;br /&gt;
Der Mikrocontroller von Atmel bietet verschiedene Möglichkeiten, um seinen Stromverbrauch zu minimieren. So ist er Beispielweise programmiert, die meiste Zeit im Sleep-Mode zu verbringen.  Nur selten wird er per Interrupt geweckt, um Benutzereingaben zu bearbeiten oder Tasks des Scheduler auszuführen. Eine RTC dient dazu, den Controller 4 mal in der Sekunde zu wecken und etwaige Tasks abzuarbeiten.&lt;br /&gt;
&lt;br /&gt;
Es sind 3 Fälle zu betrachten:&lt;br /&gt;
* Nacht-betrieb (ca. 8uA Stromverbrauch) &lt;br /&gt;
Alle 8 Sekunden überprüft der Controller, ob das Umgebungslicht hell genug ist, um das LCD-Display ablesen zu können. Als Lichtdetektor dienen hier die Solarzellen bzw. die per AD gemessene Spannung am Widerstand R2/R4. Ist eine gewisse Schwelle unterschritten, so wird einer der größten Verbraucher (LCD) abgeschaltet.&lt;br /&gt;
Eine regelmäßige Temperaturmessung findet ebenfalls nicht statt.&lt;br /&gt;
Der Nachtbetrieb kann durch beliebigen Tastendruck jederzeit für einige Sekunden unterbrochen werden.&lt;br /&gt;
&lt;br /&gt;
* Tag-betrieb (ca. 155uA Stromverbrauch)&lt;br /&gt;
Das LCD ist eingeschaltet und verursacht den größten Strombedarf. Der Temperatursensor wird lediglich alle 8 Sekunden eingeschaltet und nach der ersten Messung wieder deaktiviert - der Strombedarf ist für diesen in Summe zu vernachlässigen.&lt;br /&gt;
&lt;br /&gt;
* Aktivität DCF/Alarm/LED-Backlight (bis ca. max. 5mA Stromverbrauch)&lt;br /&gt;
Egal ob der Alarm ertönt, auf das DCF77-Signal synchronisiert wird oder das LED-Backlight nachts bei Aktivität dazugeschaltet wird - es werden bis zu 5mA fließen.&lt;br /&gt;
In Summe ist der Einfluss auf den Gesamtenergiebedarf allerdings recht gering und muss nicht weiter betrachtet werden. &lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Als Basis dient der 8Bit Mikrocontroller Atmel ATMEGA328P-PU, welcher mit insgesamt 28Pins bzw. 3 I/O Ports gerade so genügend Anschlüsse bietet.&lt;br /&gt;
Die komplette Software passt bequem dort hinein:&lt;br /&gt;
	Program Memory Usage 	:	7802 bytes   23,8 % Full&lt;br /&gt;
	Data Memory Usage 		:	723 bytes   35,3 % Full&lt;br /&gt;
&lt;br /&gt;
===RTC===&lt;br /&gt;
Mit einem externen Standard-Uhrenquarz (32kHz) sowie dem Timer2 des ATMEGA-Serie lässt sich sehr einfach eine RealTimeClock aufbauen, die als Taktgeber für die Uhrzeit verwendet werden kann. Der Vorteil zum Ringoszillator des Controllers liegt in der deutlich stabileren Frequenz sowie des niedrigen Taktes, der dabei hilft, richtig Strom zu sparen. Als Alternative könnte ein noch genaueres externes RTC-Modul verwendet werden, doch angesichts der DCF77-Synchronisation ist dies definitiv unnötig. Die Ganglaufzeit der Uhr variiert natürlich mit der Frequenzgenauigkeit des Quarzes und muss durch Software kalibriert werden. Auch wenn dies dank des DCF77-Zeitsignals überflüssig erscheint, so wird die Uhrzeit einmal täglich automatisch angepasst: Bei meinem verbauten Quarz muss ich sie täglich um fast eine Sekunde zurück stellen ((126/128) sec.)&lt;br /&gt;
				&lt;br /&gt;
===Temperatur Sensor TSic306===&lt;br /&gt;
Der Sensor ist mehr eine Spielerei und technische Herausforderung. Eine Herausforderung insofern, als dass er mittels eines 1-Draht Protokolls (ZACwire) ausgelesen werden muss. Kritisch ist hierbei die Synchronisation der Datenbits. Ein permanentes polling der Information wäre problemlos möglich, erfordert jedoch eine ständige Aktivität des Controllers, was gegen das Stromsparprinzip verstößt. Als Alternative bietet sich ein flanken-gesteuerter Datenempfang per Interrupt an, der nur aktiviert wird, sobald der Sensor seine Daten sendet. In diesem Fall ist allerdings die Auswertung des Datums am Port innerhalb der ISR dermaßen Zeitkritisch, dass die standardmäßige CPU-Frequenz von 1Mhz nicht genügt um das ZACwire-Protokoll zu verarbeiteten. Ein setzen des Atmel FRQDIV FUSE-Registers auf den Teiler Faktor 1x schafft hier problemlos Abhilfe als sodann die 8MHz des Ringoszillator direkt abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
===LCD Display DOG-M 1x8===&lt;br /&gt;
Ein tolles DUT-Matrix LCD welches auch bei 3V VDD hervorragend funktioniert, verhältnismäßig wenig Strom benötigt und mittels SPI ansprechbar ist. Gerade letztere Eigenschaft hilft dabei, wertvolle I/O-Ports zu sparen.&lt;br /&gt;
&lt;br /&gt;
===LCD LED Backlight red===&lt;br /&gt;
Falls das Umgebungslicht eine gewisse Schwelle unterschreitet sowie eine Benutzereingabe erfolgt, wird das LCD auch bei Dunkelheit lesbar :-)&lt;br /&gt;
&lt;br /&gt;
===DCF77 Empfangsmodul===&lt;br /&gt;
Erst war ich enttäuscht über die Empfangsqualität des Empfängers DCF-2 von ELV, da eine Synchronisation nur mit exakter Ausrichtung nach Frankfurt möglich war. Später war jedoch klar, dass mein Versuchsaufbau zu viele Störquellen aufwies. Im reinen Batteriebetrieb ist der Winkel der Ferritantenne zum Sender fast nicht mehr entscheidend.&lt;br /&gt;
Das Modul bietet keine echte Auswertung des DCF-Signals, ob also eine &amp;quot;1&amp;quot; oder &amp;quot;0&amp;quot; übertragen worden ist, muss der Controller selbst entscheiden bzw. messen. Die Implementierung ist letztlich recht einfach: Die Flanken des DCF77-Moduls werden durch einen externen Interrupt im Controller ausgewertet bzw. die Abstände zwischen den Flanken mit dem 32kHz Timer2 gemessen. Nach einer Minute liegt das komplette Datenpaket vor und muss auf Fehler geprüft werden. Es ist wichtig zu wissem, dass der vorgesehene CRC-Test NICHT hinreichend ist, um Übertragungsfehler zu detektieren - zumindest nicht, wenn man an nächsten Morgen pünktlich geweckt werden möchte! Daher verwendet der Wecker das DCF77 Datenpaket erst, wenn es nur eine minimale Zeit-Abweichung zur aktuellen Uhrzeit/Datum besitzt oder insgesamt 3mal hintereinander korrekt ausgewertet wurde. Das DCF-Signal unterliegt vielen Störungen, von daher ist eine saubere Fehlerdetektion von zentraler Bedeutung. Im Zweifel sollte die Synchronisation beendet werden. Falls nach 10min. Keine Synchronisation erfolgte, bricht der Wecker diese ab, reportet dies und läuft ansonsten ungestört per RTC weiter.&lt;br /&gt;
&lt;br /&gt;
===Drehgeber===&lt;br /&gt;
Ein Standard-Drehgeber von ALPS. Er wird per externem I/O Interrupt ausgewertet, was zwar nicht die ideale, aber zumindest die sparsamste Variante ist. So kommt es schon einmal vor, dass eine dreh-Abtastung „verschluckt“ wird. Ein dauerhaftes polling führt zu einer sauberen Auswertung, aber leider auch zu höherem Stromverbrauch. &lt;br /&gt;
				&lt;br /&gt;
===Wecksignal===&lt;br /&gt;
Der Piezo-Summer Ekulit RMP-14P/HT leistet beim derzeitigem Setup im Bereich der Resonanzfrequenz etwa 70dbA in 10cm Abstand, was genügt um mich zu wecken und die Nachbarn in Ruhe lässt. &lt;br /&gt;
				&lt;br /&gt;
===Software===&lt;br /&gt;
Da der Controller im Zweifel viele ISRs bedienen muss, sind diese sehr kurz gehalten. Für die Ausführung von längeren Aufgaben dient ein Task-Handler zur seriellen Abarbeitung gesammelter Aufgaben wie z.B. Display-Updates.&lt;br /&gt;
Weiterhin ist ein Task-Scheduler implementiert, der sich um die Ausführung von seltenen Ereignissen kümmert, wie Beispielsweise die Weckfunktion, die Temperaturmessung oder die tägliche DCF77-Synchronisation.&lt;br /&gt;
&lt;br /&gt;
===Entwicklungsumgebung===&lt;br /&gt;
Zum debuggen und proggen: Der AVR Dragon sowie Atmel Studio 6&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Bisher bin ich sehr zufrieden. Die Software bzw. das Menü ist flott zu bedienen, der Wecker weckt zuverlässig und die Spannung des Akkupacks liegt seit Monaten sehr stabil bei ca. 3.8V. Klar, ein schönes PCB-Layout und ein optimales Gehäuse wären schon lecker, aber es würde der Bastel-Look fehlen.&lt;br /&gt;
&lt;br /&gt;
Ach ja, sollten wir mal umziehen, so darf das Schlafzimmer nicht ohne Fenster sein ;-)&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
*[[Media:AtmelStudio6AlarmClockV1.zip|Firmware Source Code]]&lt;br /&gt;
*[[Media:EagleAlarmClockV1.zip|Eagle Schematics]]&lt;br /&gt;
&lt;br /&gt;
==Todo==&lt;br /&gt;
Ein paar Links oder eine BOM müssten hier nochmal irgendwann rein.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:SW_DisplayNight.jpg&amp;diff=77310</id>
		<title>Datei:SW DisplayNight.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:SW_DisplayNight.jpg&amp;diff=77310"/>
		<updated>2013-06-27T22:07:40Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Solarwecker_mit_DCF77_sowie_Temperatursensor&amp;diff=77308</id>
		<title>Solarwecker mit DCF77 sowie Temperatursensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Solarwecker_mit_DCF77_sowie_Temperatursensor&amp;diff=77308"/>
		<updated>2013-06-27T22:01:19Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: /* Todo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Motivation==&lt;br /&gt;
[[Bild: SW_WeckerFull.jpg|thumb|300px|Wecker Vollansicht]]&lt;br /&gt;
Der Wecker gehört zu den bedeutendsten Geräten im Alltag. Seine Qualität steht und fällt mit seiner zentralen Funktion: Schafft er es, mich am nächsten Morgen zu wecken?&lt;br /&gt;
Manch ein käuflich erworbenes Gerät ist:&lt;br /&gt;
* zu leise,&lt;br /&gt;
* zu schnell oder versehentlich abschaltbar (keine ordentliche „snooze“-Funktionalität),&lt;br /&gt;
* vom Stromnetz abhängig,&lt;br /&gt;
* von Batterien betrieben, die im falschen Moment versagen können.&lt;br /&gt;
* zu ungenau, zumindest nach ein paar Monaten&lt;br /&gt;
&lt;br /&gt;
Die zentrale Motivation für diesen Wecker ist allerdings: Als ehemals begeisterter Bastler hatte ich nach Jahrelanger Abstinenz mal wieder richtig Lust auf ein Elektronik-Projekt :-)&lt;br /&gt;
Inzwischen ist der Wecker ohne Ausfall seit 6 Monaten in Betrieb und eine Dokumentation ist überfällig. Ich gehe nicht auf alle Details ein, sie soll nur einen Überblick bieten. Im Detail ist ein Blick in den Sourcecode oder Schaltplan die bessere Auskunft. Na dann mal ran&#039;...&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
Okay, was kann der Wecker?&lt;br /&gt;
* wecken :-) mittels Piezo-Summer und einfacher, schöner 4-Ton Melodie per PWM&lt;br /&gt;
* sekundengenaue Uhrzeit mittels des DCF77 Signals (&amp;quot;Funkwecker&amp;quot;)&lt;br /&gt;
* Datumsanzeige&lt;br /&gt;
* Anzeige der Tage seit letzter erfolgreicher DCF77 Synchronisation&lt;br /&gt;
* Anzeige der Raumtemperatur mit hoher Genauigkeit&lt;br /&gt;
* Eingabe komfortabel mittels Drehgeber und LED-Taster&lt;br /&gt;
* drei programmierbare Weckzeiten - schnell einstellbar am Abend ohne minutenlang Morse-Codes zu drücken&lt;br /&gt;
* kein 230V Stromnetz notwendig&lt;br /&gt;
* kein Batteriewechsel notwendig&lt;br /&gt;
* die 2 fetten Solarmodule (5V, 150mA) laden die Buffer NiMH-Akkus auch bei geringem Lichteinfall ins Schlafzimmer zur Wintersaison ausreichend&lt;br /&gt;
* verschiedene Stromsparmechanismen&lt;br /&gt;
* bei Dunkelheit &amp;amp; Tastenaktivität -&amp;gt; rote LCD Hintergrundbeleuchtung&lt;br /&gt;
* Spannungsmessung des Akku-Packs&lt;br /&gt;
* Spannungsmessung der Solarzellen&lt;br /&gt;
* ... ein paar Kleinigkeiten, die nicht der Rede wert sind&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
===Schaltung===&lt;br /&gt;
[[Bild: SW_Schaltplan.png|800px|Schaltplan]]&lt;br /&gt;
[[Bild: SW_ElectricComments.jpg|800px|Unterseite]]&lt;br /&gt;
===Display===&lt;br /&gt;
[[Bild: SW_DisplayTime.jpg|200px|Display Time]]&lt;br /&gt;
[[Bild: SW_DisplayTemperature.jpg|200px|Display Temperature]]&lt;br /&gt;
[[Bild: SW_DisplayDatum.jpg|200px|Display Datum]]&lt;br /&gt;
[[Bild: SW_DisplayAlarm.jpg|200px|Display Alarm]]&lt;br /&gt;
&lt;br /&gt;
==Technische Details==&lt;br /&gt;
Der Aufbau ist mit einer kleinen Lochraster-Platine realisiert, da die Beschaltung noch recht übersichtlich ist. Die Verbindungen/Stecker etc. kommen aus der Grabbeikiste. Das Gehäuse ist aus preiswertem Pappelholz mit der Laubsäge bearbeitet, verleimt und mit Leinöl versiegelt.&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung===&lt;br /&gt;
Gespeist wird die Schaltung von 3xAAA NiMH Zellen mit je ca. 750mAh, welche eine sehr geringe Selbstentladung besitzen.&lt;br /&gt;
* Die Nennspannung liegt bei 3x1.2V = 3.6V.  &lt;br /&gt;
* Entladen 3x1.0V = 3.0V.&lt;br /&gt;
* Vollgeladen 3x1.5V = 4.5V.&lt;br /&gt;
Die Hauptschaltung des Weckers würde theoretisch bis etwa 1.8V gut funktionieren, allerdings ist spätestens ab 2.8V das LCD nicht mehr funktionsfähig, weshalb 3 Zellen in Serie geschaltet werden müssen um die Versorgung mit ca. 3V sicher zu stellen.&lt;br /&gt;
Für eine stabile Spannungsversorgung der gesamten Schaltung dient der Lowdrop-Längsregler MCP1702-3002, welcher zudem durch sehr geringe Verluste auffällt. Die gewählten 3.0V helfen gegenüber den üblichen 3.3V, die Energiebilanz etwas zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle spielt die Unabhängigkeit des Weckers von externer Energieeinspeisung - vom Sonnenlicht mal abgesehen.&lt;br /&gt;
Die beiden in Serie geschalteten Solarzellen mit spezifizierten 2x5V = 10V und 150mA liefern diese natürlich nur unter direktem Sonnenlicht.&lt;br /&gt;
Im Wohnbereich sind Werte um 1-2 Promille dieser Angaben realistisch - dies bestätigen auch meine Messungen: An einem durchschnittlichem Wintertag bricht selbst die Leerlauf-Zellspannung stark ein und es können nur geringe Ströme vom ca. 160-300uA bei insgesamt 4,5V fließen. &lt;br /&gt;
Diese elektrische Leistung wird direkt abgegriffen, um die 3 NiMH-Zellen zu laden. Bei diesen geringen Strömen ist keine besondere Ladeschaltung notwendig. Selbst bei unrealistisch hoher Sonneneinstrahlung werden die Akkus auf diese Weise nicht beschädigt, da bis ca. 100mA als &amp;quot;Erhaltungsladung&amp;quot; akzeptabel sind.&lt;br /&gt;
&lt;br /&gt;
(!) Das Tolle bei der Dimensionierung der Solarzellen in Verbindung mit den Akkus bezogen auf den Lichteinfall in unserem Schlafzimmer: Die Ladung regelt sich quasi automatisch bei ca. 3.8V ein, was der Lebensdauer der Akkuzellen sehr zugute kommt.&lt;br /&gt;
Ist die Spannung des Akkupacks höher, fällt der Ladestrom der Solarzellen ab. Bei niedriger Spannung des Akkupacks genügt hingegen sehr wenig Licht um einen Ladestrom zu liefern.&lt;br /&gt;
&lt;br /&gt;
===Stromsparmechanismen===&lt;br /&gt;
Der Mikrocontroller von Atmel bietet verschiedene Möglichkeiten, um seinen Stromverbrauch zu minimieren. So ist er Beispielweise programmiert, die meiste Zeit im Sleep-Mode zu verbringen.  Nur selten wird er per Interrupt geweckt, um Benutzereingaben zu bearbeiten oder Tasks des Scheduler auszuführen. Eine RTC dient dazu, den Controller 4 mal in der Sekunde zu wecken und etwaige Tasks abzuarbeiten.&lt;br /&gt;
&lt;br /&gt;
Es sind 3 Fälle zu betrachten:&lt;br /&gt;
* Nacht-betrieb (ca. 8uA Stromverbrauch) &lt;br /&gt;
Alle 8 Sekunden überprüft der Controller, ob das Umgebungslicht hell genug ist, um das LCD-Display ablesen zu können. Als Lichtdetektor dienen hier die Solarzellen bzw. die per AD gemessene Spannung am Widerstand R2/R4. Ist eine gewisse Schwelle unterschritten, so wird einer der größten Verbraucher (LCD) abgeschaltet.&lt;br /&gt;
Eine regelmäßige Temperaturmessung findet ebenfalls nicht statt.&lt;br /&gt;
Der Nachtbetrieb kann durch beliebigen Tastendruck jederzeit für einige Sekunden unterbrochen werden.&lt;br /&gt;
&lt;br /&gt;
* Tag-betrieb (ca. 155uA Stromverbrauch)&lt;br /&gt;
Das LCD ist eingeschaltet und verursacht den größten Strombedarf. Der Temperatursensor wird lediglich alle 8 Sekunden eingeschaltet und nach der ersten Messung wieder deaktiviert - der Strombedarf ist für diesen in Summe zu vernachlässigen.&lt;br /&gt;
&lt;br /&gt;
* Aktivität DCF/Alarm/LED-Backlight (bis ca. max. 5mA Stromverbrauch)&lt;br /&gt;
Egal ob der Alarm ertönt, auf das DCF77-Signal synchronisiert wird oder das LED-Backlight nachts bei Aktivität dazugeschaltet wird - es werden bis zu 5mA fließen.&lt;br /&gt;
In Summe ist der Einfluss auf den Gesamtenergiebedarf allerdings recht gering und muss nicht weiter betrachtet werden. &lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Als Basis dient der 8Bit Mikrocontroller Atmel ATMEGA328P-PU, welcher mit insgesamt 28Pins bzw. 3 I/O Ports gerade so genügend Anschlüsse bietet.&lt;br /&gt;
Die komplette Software passt bequem dort hinein:&lt;br /&gt;
	Program Memory Usage 	:	7802 bytes   23,8 % Full&lt;br /&gt;
	Data Memory Usage 		:	723 bytes   35,3 % Full&lt;br /&gt;
&lt;br /&gt;
===RTC===&lt;br /&gt;
Mit einem externen Standard-Uhrenquarz (32kHz) sowie dem Timer2 des ATMEGA-Serie lässt sich sehr einfach eine RealTimeClock aufbauen, die als Taktgeber für die Uhrzeit verwendet werden kann. Der Vorteil zum Ringoszillator des Controllers liegt in der deutlich stabileren Frequenz sowie des niedrigen Taktes, der dabei hilft, richtig Strom zu sparen. Als Alternative könnte ein noch genaueres externes RTC-Modul verwendet werden, doch angesichts der DCF77-Synchronisation ist dies definitiv unnötig. Die Ganglaufzeit der Uhr variiert natürlich mit der Frequenzgenauigkeit des Quarzes und muss durch Software kalibriert werden. Auch wenn dies dank des DCF77-Zeitsignals überflüssig erscheint, so wird die Uhrzeit einmal täglich automatisch angepasst: Bei meinem verbauten Quarz muss ich sie täglich um fast eine Sekunde zurück stellen ((126/128) sec.)&lt;br /&gt;
				&lt;br /&gt;
===Temperatur Sensor TSic306===&lt;br /&gt;
Der Sensor ist mehr eine Spielerei und technische Herausforderung. Eine Herausforderung insofern, als dass er mittels eines 1-Draht Protokolls (ZACwire) ausgelesen werden muss. Kritisch ist hierbei die Synchronisation der Datenbits. Ein permanentes polling der Information wäre problemlos möglich, erfordert jedoch eine ständige Aktivität des Controllers, was gegen das Stromsparprinzip verstößt. Als Alternative bietet sich ein flanken-gesteuerter Datenempfang per Interrupt an, der nur aktiviert wird, sobald der Sensor seine Daten sendet. In diesem Fall ist allerdings die Auswertung des Datums am Port innerhalb der ISR dermaßen Zeitkritisch, dass die standardmäßige CPU-Frequenz von 1Mhz nicht genügt um das ZACwire-Protokoll zu verarbeiteten. Ein setzen des Atmel FRQDIV FUSE-Registers auf den Teiler Faktor 1x schafft hier problemlos Abhilfe als sodann die 8MHz des Ringoszillator direkt abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
===LCD Display DOG-M 1x8===&lt;br /&gt;
Ein tolles DUT-Matrix LCD welches auch bei 3V VDD hervorragend funktioniert, verhältnismäßig wenig Strom benötigt und mittels SPI ansprechbar ist. Gerade letztere Eigenschaft hilft dabei, wertvolle I/O-Ports zu sparen.&lt;br /&gt;
&lt;br /&gt;
===LCD LED Backlight red===&lt;br /&gt;
Falls das Umgebungslicht eine gewisse Schwelle unterschreitet sowie eine Benutzereingabe erfolgt, wird das LCD auch bei Dunkelheit lesbar :-)&lt;br /&gt;
&lt;br /&gt;
===DCF77 Empfangsmodul===&lt;br /&gt;
Erst war ich enttäuscht über die Empfangsqualität des Empfängers DCF-2 von ELV, da eine Synchronisation nur mit exakter Ausrichtung nach Frankfurt möglich war. Später war jedoch klar, dass mein Versuchsaufbau zu viele Störquellen aufwies. Im reinen Batteriebetrieb ist der Winkel der Ferritantenne zum Sender fast nicht mehr entscheidend.&lt;br /&gt;
Das Modul bietet keine echte Auswertung des DCF-Signals, ob also eine &amp;quot;1&amp;quot; oder &amp;quot;0&amp;quot; übertragen worden ist, muss der Controller selbst entscheiden bzw. messen. Die Implementierung ist letztlich recht einfach: Die Flanken des DCF77-Moduls werden durch einen externen Interrupt im Controller ausgewertet bzw. die Abstände zwischen den Flanken mit dem 32kHz Timer2 gemessen. Nach einer Minute liegt das komplette Datenpaket vor und muss auf Fehler geprüft werden. Es ist wichtig zu wissem, dass der vorgesehene CRC-Test NICHT hinreichend ist, um Übertragungsfehler zu detektieren - zumindest nicht, wenn man an nächsten Morgen pünktlich geweckt werden möchte! Daher verwendet der Wecker das DCF77 Datenpaket erst, wenn es nur eine minimale Zeit-Abweichung zur aktuellen Uhrzeit/Datum besitzt oder insgesamt 3mal hintereinander korrekt ausgewertet wurde. Das DCF-Signal unterliegt vielen Störungen, von daher ist eine saubere Fehlerdetektion von zentraler Bedeutung. Im Zweifel sollte die Synchronisation beendet werden. Falls nach 10min. Keine Synchronisation erfolgte, bricht der Wecker diese ab, reportet dies und läuft ansonsten ungestört per RTC weiter.&lt;br /&gt;
&lt;br /&gt;
===Drehgeber===&lt;br /&gt;
Ein Standard-Drehgeber von ALPS. Er wird per externem I/O Interrupt ausgewertet, was zwar nicht die ideale, aber zumindest die sparsamste Variante ist. So kommt es schon einmal vor, dass eine dreh-Abtastung „verschluckt“ wird. Ein dauerhaftes polling führt zu einer sauberen Auswertung, aber leider auch zu höherem Stromverbrauch. &lt;br /&gt;
				&lt;br /&gt;
===Wecksignal===&lt;br /&gt;
Der Piezo-Summer Ekulit RMP-14P/HT leistet beim derzeitigem Setup im Bereich der Resonanzfrequenz etwa 70dbA in 10cm Abstand, was genügt um mich zu wecken und die Nachbarn in Ruhe lässt. &lt;br /&gt;
				&lt;br /&gt;
===Software===&lt;br /&gt;
Da der Controller im Zweifel viele ISRs bedienen muss, sind diese sehr kurz gehalten. Für die Ausführung von längeren Aufgaben dient ein Task-Handler zur seriellen Abarbeitung gesammelter Aufgaben wie z.B. Display-Updates.&lt;br /&gt;
Weiterhin ist ein Task-Scheduler implementiert, der sich um die Ausführung von seltenen Ereignissen kümmert, wie Beispielsweise die Weckfunktion, die Temperaturmessung oder die tägliche DCF77-Synchronisation.&lt;br /&gt;
&lt;br /&gt;
===Entwicklungsumgebung===&lt;br /&gt;
Zum debuggen und proggen: Der AVR Dragon sowie Atmel Studio 6&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Bisher bin ich sehr zufrieden. Die Software bzw. das Menü ist flott zu bedienen, der Wecker weckt zuverlässig und die Spannung des Akkupacks liegt seit Monaten sehr stabil bei ca. 3.8V. Klar, ein schönes PCB-Layout und ein optimales Gehäuse wären schon lecker, aber es würde der Bastel-Look fehlen.&lt;br /&gt;
&lt;br /&gt;
Ach ja, sollten wir mal umziehen, so darf das Schlafzimmer nicht ohne Fenster sein ;-)&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
*[[Media:AtmelStudio6AlarmClockV1.zip|Firmware Source Code]]&lt;br /&gt;
*[[Media:EagleAlarmClockV1.zip|Eagle Schematics]]&lt;br /&gt;
&lt;br /&gt;
==Todo==&lt;br /&gt;
Ein paar Links oder eine BOM müssten hier nochmal irgendwann rein.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Liste_der_Wecker-_und_Uhrenprojekte&amp;diff=77307</id>
		<title>Liste der Wecker- und Uhrenprojekte</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Liste_der_Wecker-_und_Uhrenprojekte&amp;diff=77307"/>
		<updated>2013-06-27T22:00:07Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: /* mikrocontroller.net */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Scheinbar dominiert unter Hobbyelektroniker neben dem Verstärkerbau noch ganz groß der selbst gebaute Wecker. Bevor nun jeder von vorne sein eigens Projekt startet, hier zur Anregung eine Sammlung ähnlich gelagerter Projekte.&lt;br /&gt;
&lt;br /&gt;
== mikrocontroller.net ==&lt;br /&gt;
&lt;br /&gt;
* [[Wake-Up Light]]&lt;br /&gt;
* [[DCF77-Funkwecker mit AVR]]&lt;br /&gt;
* [[Word Clock]]&lt;br /&gt;
* [[EEU]] Elektronische Eieruhr &lt;br /&gt;
* [[Solarwecker mit DCF77 sowie Temperatursensor]]&lt;br /&gt;
* siehe auch Artikel in Kategorie [[:Kategorie:Timer und Uhren|&amp;quot;Timer und Uhren&amp;quot;]]&lt;br /&gt;
* siehe auch: [http://www.mikrocontroller.net/search?query=wecker&amp;amp;forums&amp;amp;#x5B;&amp;amp;#x5D;=1&amp;amp;forums&amp;amp;#x5B;&amp;amp;#x5D;=19&amp;amp;forums&amp;amp;#x5B;&amp;amp;#x5D;=4&amp;amp;forums&amp;amp;#x5B;&amp;amp;#x5D;=6&amp;amp;forums&amp;amp;#x5B;&amp;amp;#x5D;=11&amp;amp;forums&amp;amp;#x5B;&amp;amp;#x5D;=8&amp;amp;max_age=-&amp;amp;sort_by_date=0 Suche in µc.net nach Wecker ]&lt;br /&gt;
&lt;br /&gt;
== www ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.wiesolator.de/index.php?area=Projekte&amp;amp;topic=MP3-Wecker MP3-Wecker]&lt;br /&gt;
* [http://genuhr.grasbon.de/GenIndex.html GenuhR: DCF Wecker/Timer mit µC 80C31]&lt;br /&gt;
* [http://weckomat.grasbon.de/WIndex.html Weckomat: ATmega32 Funkwecker mit OLED]&lt;br /&gt;
* [http://s-huehn.de/elektronik/tischuhr/tischuhr.htm Projekt: Tischuhr]&lt;br /&gt;
* [http://s-huehn.de/elektronik/multiuhr/multiuhr.htm Projekt: Multifunktionsuhr]&lt;br /&gt;
* [http://s-huehn.de/elektronik/wecker/wecker.htm Projekt: Wecker]&lt;br /&gt;
* [http://mosfetkiller.de/?s=funkwecker Funkwecker mosfetkiller.de]&lt;br /&gt;
* [http://www.mcamafia.de/nixie/ncp_dt/ncp.htm Mein Nixie Uhren Projekt]&lt;br /&gt;
* [http://www.stefankneller.de/elektronik/nixieuhr/nixie.html Stefan Knellers Nixie Uhr]&lt;br /&gt;
* [http://www.kielnet.net/home/julien.thomas/tech/NETZUHR.htm Energieeffizienter Uhrenwecker mit Leuchtanzeige 0,25 W ohne Trafo/mit Kondensatornetzteil]&lt;br /&gt;
* [http://pic-projekte.de/dcf.html Mit LC-Touchdisplay]&lt;br /&gt;
* [http://www.elektronikbasteln.pl7.de/dcf77-uhr-mit-pic.html DCF77-Uhr mit PIC 16F84]&lt;br /&gt;
* [http://www.marwedels.de/malte/uhr/ DCF77-Uhr mit Atmega16 und RS232 Interface]&lt;br /&gt;
&lt;br /&gt;
* [http://www.stefan-buchgeher.info/elektronik/dcf_uhr_cpld/dcf_uhr_cpld.html CPLD] statt Mikrocontroller&lt;br /&gt;
&lt;br /&gt;
== Zeitschriften ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.elektor.de/jahrgang/2004/marz/wecker-mit-pic.62739.lynkx Wecker mit PIC]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Timer und Uhren| ]]&lt;br /&gt;
[[Kategorie:Listen]]&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Solarwecker_mit_DCF77_sowie_Temperatursensor&amp;diff=77306</id>
		<title>Solarwecker mit DCF77 sowie Temperatursensor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Solarwecker_mit_DCF77_sowie_Temperatursensor&amp;diff=77306"/>
		<updated>2013-06-27T21:48:29Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: Die Seite wurde neu angelegt: „==Motivation== Wecker Vollansicht Der Wecker gehört zu den bedeutendsten Geräten im Alltag. Seine Qualität steht und…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Motivation==&lt;br /&gt;
[[Bild: SW_WeckerFull.jpg|thumb|300px|Wecker Vollansicht]]&lt;br /&gt;
Der Wecker gehört zu den bedeutendsten Geräten im Alltag. Seine Qualität steht und fällt mit seiner zentralen Funktion: Schafft er es, mich am nächsten Morgen zu wecken?&lt;br /&gt;
Manch ein käuflich erworbenes Gerät ist:&lt;br /&gt;
* zu leise,&lt;br /&gt;
* zu schnell oder versehentlich abschaltbar (keine ordentliche „snooze“-Funktionalität),&lt;br /&gt;
* vom Stromnetz abhängig,&lt;br /&gt;
* von Batterien betrieben, die im falschen Moment versagen können.&lt;br /&gt;
* zu ungenau, zumindest nach ein paar Monaten&lt;br /&gt;
&lt;br /&gt;
Die zentrale Motivation für diesen Wecker ist allerdings: Als ehemals begeisterter Bastler hatte ich nach Jahrelanger Abstinenz mal wieder richtig Lust auf ein Elektronik-Projekt :-)&lt;br /&gt;
Inzwischen ist der Wecker ohne Ausfall seit 6 Monaten in Betrieb und eine Dokumentation ist überfällig. Ich gehe nicht auf alle Details ein, sie soll nur einen Überblick bieten. Im Detail ist ein Blick in den Sourcecode oder Schaltplan die bessere Auskunft. Na dann mal ran&#039;...&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
Okay, was kann der Wecker?&lt;br /&gt;
* wecken :-) mittels Piezo-Summer und einfacher, schöner 4-Ton Melodie per PWM&lt;br /&gt;
* sekundengenaue Uhrzeit mittels des DCF77 Signals (&amp;quot;Funkwecker&amp;quot;)&lt;br /&gt;
* Datumsanzeige&lt;br /&gt;
* Anzeige der Tage seit letzter erfolgreicher DCF77 Synchronisation&lt;br /&gt;
* Anzeige der Raumtemperatur mit hoher Genauigkeit&lt;br /&gt;
* Eingabe komfortabel mittels Drehgeber und LED-Taster&lt;br /&gt;
* drei programmierbare Weckzeiten - schnell einstellbar am Abend ohne minutenlang Morse-Codes zu drücken&lt;br /&gt;
* kein 230V Stromnetz notwendig&lt;br /&gt;
* kein Batteriewechsel notwendig&lt;br /&gt;
* die 2 fetten Solarmodule (5V, 150mA) laden die Buffer NiMH-Akkus auch bei geringem Lichteinfall ins Schlafzimmer zur Wintersaison ausreichend&lt;br /&gt;
* verschiedene Stromsparmechanismen&lt;br /&gt;
* bei Dunkelheit &amp;amp; Tastenaktivität -&amp;gt; rote LCD Hintergrundbeleuchtung&lt;br /&gt;
* Spannungsmessung des Akku-Packs&lt;br /&gt;
* Spannungsmessung der Solarzellen&lt;br /&gt;
* ... ein paar Kleinigkeiten, die nicht der Rede wert sind&lt;br /&gt;
&lt;br /&gt;
==Bilder==&lt;br /&gt;
===Schaltung===&lt;br /&gt;
[[Bild: SW_Schaltplan.png|800px|Schaltplan]]&lt;br /&gt;
[[Bild: SW_ElectricComments.jpg|800px|Unterseite]]&lt;br /&gt;
===Display===&lt;br /&gt;
[[Bild: SW_DisplayTime.jpg|200px|Display Time]]&lt;br /&gt;
[[Bild: SW_DisplayTemperature.jpg|200px|Display Temperature]]&lt;br /&gt;
[[Bild: SW_DisplayDatum.jpg|200px|Display Datum]]&lt;br /&gt;
[[Bild: SW_DisplayAlarm.jpg|200px|Display Alarm]]&lt;br /&gt;
&lt;br /&gt;
==Technische Details==&lt;br /&gt;
Der Aufbau ist mit einer kleinen Lochraster-Platine realisiert, da die Beschaltung noch recht übersichtlich ist. Die Verbindungen/Stecker etc. kommen aus der Grabbeikiste. Das Gehäuse ist aus preiswertem Pappelholz mit der Laubsäge bearbeitet, verleimt und mit Leinöl versiegelt.&lt;br /&gt;
&lt;br /&gt;
===Stromversorgung===&lt;br /&gt;
Gespeist wird die Schaltung von 3xAAA NiMH Zellen mit je ca. 750mAh, welche eine sehr geringe Selbstentladung besitzen.&lt;br /&gt;
* Die Nennspannung liegt bei 3x1.2V = 3.6V.  &lt;br /&gt;
* Entladen 3x1.0V = 3.0V.&lt;br /&gt;
* Vollgeladen 3x1.5V = 4.5V.&lt;br /&gt;
Die Hauptschaltung des Weckers würde theoretisch bis etwa 1.8V gut funktionieren, allerdings ist spätestens ab 2.8V das LCD nicht mehr funktionsfähig, weshalb 3 Zellen in Serie geschaltet werden müssen um die Versorgung mit ca. 3V sicher zu stellen.&lt;br /&gt;
Für eine stabile Spannungsversorgung der gesamten Schaltung dient der Lowdrop-Längsregler MCP1702-3002, welcher zudem durch sehr geringe Verluste auffällt. Die gewählten 3.0V helfen gegenüber den üblichen 3.3V, die Energiebilanz etwas zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Eine zentrale Rolle spielt die Unabhängigkeit des Weckers von externer Energieeinspeisung - vom Sonnenlicht mal abgesehen.&lt;br /&gt;
Die beiden in Serie geschalteten Solarzellen mit spezifizierten 2x5V = 10V und 150mA liefern diese natürlich nur unter direktem Sonnenlicht.&lt;br /&gt;
Im Wohnbereich sind Werte um 1-2 Promille dieser Angaben realistisch - dies bestätigen auch meine Messungen: An einem durchschnittlichem Wintertag bricht selbst die Leerlauf-Zellspannung stark ein und es können nur geringe Ströme vom ca. 160-300uA bei insgesamt 4,5V fließen. &lt;br /&gt;
Diese elektrische Leistung wird direkt abgegriffen, um die 3 NiMH-Zellen zu laden. Bei diesen geringen Strömen ist keine besondere Ladeschaltung notwendig. Selbst bei unrealistisch hoher Sonneneinstrahlung werden die Akkus auf diese Weise nicht beschädigt, da bis ca. 100mA als &amp;quot;Erhaltungsladung&amp;quot; akzeptabel sind.&lt;br /&gt;
&lt;br /&gt;
(!) Das Tolle bei der Dimensionierung der Solarzellen in Verbindung mit den Akkus bezogen auf den Lichteinfall in unserem Schlafzimmer: Die Ladung regelt sich quasi automatisch bei ca. 3.8V ein, was der Lebensdauer der Akkuzellen sehr zugute kommt.&lt;br /&gt;
Ist die Spannung des Akkupacks höher, fällt der Ladestrom der Solarzellen ab. Bei niedriger Spannung des Akkupacks genügt hingegen sehr wenig Licht um einen Ladestrom zu liefern.&lt;br /&gt;
&lt;br /&gt;
===Stromsparmechanismen===&lt;br /&gt;
Der Mikrocontroller von Atmel bietet verschiedene Möglichkeiten, um seinen Stromverbrauch zu minimieren. So ist er Beispielweise programmiert, die meiste Zeit im Sleep-Mode zu verbringen.  Nur selten wird er per Interrupt geweckt, um Benutzereingaben zu bearbeiten oder Tasks des Scheduler auszuführen. Eine RTC dient dazu, den Controller 4 mal in der Sekunde zu wecken und etwaige Tasks abzuarbeiten.&lt;br /&gt;
&lt;br /&gt;
Es sind 3 Fälle zu betrachten:&lt;br /&gt;
* Nacht-betrieb (ca. 8uA Stromverbrauch) &lt;br /&gt;
Alle 8 Sekunden überprüft der Controller, ob das Umgebungslicht hell genug ist, um das LCD-Display ablesen zu können. Als Lichtdetektor dienen hier die Solarzellen bzw. die per AD gemessene Spannung am Widerstand R2/R4. Ist eine gewisse Schwelle unterschritten, so wird einer der größten Verbraucher (LCD) abgeschaltet.&lt;br /&gt;
Eine regelmäßige Temperaturmessung findet ebenfalls nicht statt.&lt;br /&gt;
Der Nachtbetrieb kann durch beliebigen Tastendruck jederzeit für einige Sekunden unterbrochen werden.&lt;br /&gt;
&lt;br /&gt;
* Tag-betrieb (ca. 155uA Stromverbrauch)&lt;br /&gt;
Das LCD ist eingeschaltet und verursacht den größten Strombedarf. Der Temperatursensor wird lediglich alle 8 Sekunden eingeschaltet und nach der ersten Messung wieder deaktiviert - der Strombedarf ist für diesen in Summe zu vernachlässigen.&lt;br /&gt;
&lt;br /&gt;
* Aktivität DCF/Alarm/LED-Backlight (bis ca. max. 5mA Stromverbrauch)&lt;br /&gt;
Egal ob der Alarm ertönt, auf das DCF77-Signal synchronisiert wird oder das LED-Backlight nachts bei Aktivität dazugeschaltet wird - es werden bis zu 5mA fließen.&lt;br /&gt;
In Summe ist der Einfluss auf den Gesamtenergiebedarf allerdings recht gering und muss nicht weiter betrachtet werden. &lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
Als Basis dient der 8Bit Mikrocontroller Atmel ATMEGA328P-PU, welcher mit insgesamt 28Pins bzw. 3 I/O Ports gerade so genügend Anschlüsse bietet.&lt;br /&gt;
Die komplette Software passt bequem dort hinein:&lt;br /&gt;
	Program Memory Usage 	:	7802 bytes   23,8 % Full&lt;br /&gt;
	Data Memory Usage 		:	723 bytes   35,3 % Full&lt;br /&gt;
&lt;br /&gt;
===RTC===&lt;br /&gt;
Mit einem externen Standard-Uhrenquarz (32kHz) sowie dem Timer2 des ATMEGA-Serie lässt sich sehr einfach eine RealTimeClock aufbauen, die als Taktgeber für die Uhrzeit verwendet werden kann. Der Vorteil zum Ringoszillator des Controllers liegt in der deutlich stabileren Frequenz sowie des niedrigen Taktes, der dabei hilft, richtig Strom zu sparen. Als Alternative könnte ein noch genaueres externes RTC-Modul verwendet werden, doch angesichts der DCF77-Synchronisation ist dies definitiv unnötig. Die Ganglaufzeit der Uhr variiert natürlich mit der Frequenzgenauigkeit des Quarzes und muss durch Software kalibriert werden. Auch wenn dies dank des DCF77-Zeitsignals überflüssig erscheint, so wird die Uhrzeit einmal täglich automatisch angepasst: Bei meinem verbauten Quarz muss ich sie täglich um fast eine Sekunde zurück stellen ((126/128) sec.)&lt;br /&gt;
				&lt;br /&gt;
===Temperatur Sensor TSic306===&lt;br /&gt;
Der Sensor ist mehr eine Spielerei und technische Herausforderung. Eine Herausforderung insofern, als dass er mittels eines 1-Draht Protokolls (ZACwire) ausgelesen werden muss. Kritisch ist hierbei die Synchronisation der Datenbits. Ein permanentes polling der Information wäre problemlos möglich, erfordert jedoch eine ständige Aktivität des Controllers, was gegen das Stromsparprinzip verstößt. Als Alternative bietet sich ein flanken-gesteuerter Datenempfang per Interrupt an, der nur aktiviert wird, sobald der Sensor seine Daten sendet. In diesem Fall ist allerdings die Auswertung des Datums am Port innerhalb der ISR dermaßen Zeitkritisch, dass die standardmäßige CPU-Frequenz von 1Mhz nicht genügt um das ZACwire-Protokoll zu verarbeiteten. Ein setzen des Atmel FRQDIV FUSE-Registers auf den Teiler Faktor 1x schafft hier problemlos Abhilfe als sodann die 8MHz des Ringoszillator direkt abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
===LCD Display DOG-M 1x8===&lt;br /&gt;
Ein tolles DUT-Matrix LCD welches auch bei 3V VDD hervorragend funktioniert, verhältnismäßig wenig Strom benötigt und mittels SPI ansprechbar ist. Gerade letztere Eigenschaft hilft dabei, wertvolle I/O-Ports zu sparen.&lt;br /&gt;
&lt;br /&gt;
===LCD LED Backlight red===&lt;br /&gt;
Falls das Umgebungslicht eine gewisse Schwelle unterschreitet sowie eine Benutzereingabe erfolgt, wird das LCD auch bei Dunkelheit lesbar :-)&lt;br /&gt;
&lt;br /&gt;
===DCF77 Empfangsmodul===&lt;br /&gt;
Erst war ich enttäuscht über die Empfangsqualität des Empfängers DCF-2 von ELV, da eine Synchronisation nur mit exakter Ausrichtung nach Frankfurt möglich war. Später war jedoch klar, dass mein Versuchsaufbau zu viele Störquellen aufwies. Im reinen Batteriebetrieb ist der Winkel der Ferritantenne zum Sender fast nicht mehr entscheidend.&lt;br /&gt;
Das Modul bietet keine echte Auswertung des DCF-Signals, ob also eine &amp;quot;1&amp;quot; oder &amp;quot;0&amp;quot; übertragen worden ist, muss der Controller selbst entscheiden bzw. messen. Die Implementierung ist letztlich recht einfach: Die Flanken des DCF77-Moduls werden durch einen externen Interrupt im Controller ausgewertet bzw. die Abstände zwischen den Flanken mit dem 32kHz Timer2 gemessen. Nach einer Minute liegt das komplette Datenpaket vor und muss auf Fehler geprüft werden. Es ist wichtig zu wissem, dass der vorgesehene CRC-Test NICHT hinreichend ist, um Übertragungsfehler zu detektieren - zumindest nicht, wenn man an nächsten Morgen pünktlich geweckt werden möchte! Daher verwendet der Wecker das DCF77 Datenpaket erst, wenn es nur eine minimale Zeit-Abweichung zur aktuellen Uhrzeit/Datum besitzt oder insgesamt 3mal hintereinander korrekt ausgewertet wurde. Das DCF-Signal unterliegt vielen Störungen, von daher ist eine saubere Fehlerdetektion von zentraler Bedeutung. Im Zweifel sollte die Synchronisation beendet werden. Falls nach 10min. Keine Synchronisation erfolgte, bricht der Wecker diese ab, reportet dies und läuft ansonsten ungestört per RTC weiter.&lt;br /&gt;
&lt;br /&gt;
===Drehgeber===&lt;br /&gt;
Ein Standard-Drehgeber von ALPS. Er wird per externem I/O Interrupt ausgewertet, was zwar nicht die ideale, aber zumindest die sparsamste Variante ist. So kommt es schon einmal vor, dass eine dreh-Abtastung „verschluckt“ wird. Ein dauerhaftes polling führt zu einer sauberen Auswertung, aber leider auch zu höherem Stromverbrauch. &lt;br /&gt;
				&lt;br /&gt;
===Wecksignal===&lt;br /&gt;
Der Piezo-Summer Ekulit RMP-14P/HT leistet beim derzeitigem Setup im Bereich der Resonanzfrequenz etwa 70dbA in 10cm Abstand, was genügt um mich zu wecken und die Nachbarn in Ruhe lässt. &lt;br /&gt;
				&lt;br /&gt;
===Software===&lt;br /&gt;
Da der Controller im Zweifel viele ISRs bedienen muss, sind diese sehr kurz gehalten. Für die Ausführung von längeren Aufgaben dient ein Task-Handler zur seriellen Abarbeitung gesammelter Aufgaben wie z.B. Display-Updates.&lt;br /&gt;
Weiterhin ist ein Task-Scheduler implementiert, der sich um die Ausführung von seltenen Ereignissen kümmert, wie Beispielsweise die Weckfunktion, die Temperaturmessung oder die tägliche DCF77-Synchronisation.&lt;br /&gt;
&lt;br /&gt;
===Entwicklungsumgebung===&lt;br /&gt;
Zum debuggen und proggen: Der AVR Dragon sowie Atmel Studio 6&lt;br /&gt;
&lt;br /&gt;
==Ausblick==&lt;br /&gt;
Bisher bin ich sehr zufrieden. Die Software bzw. das Menü ist flott zu bedienen, der Wecker weckt zuverlässig und die Spannung des Akkupacks liegt seit Monaten sehr stabil bei ca. 3.8V. Klar, ein schönes PCB-Layout und ein optimales Gehäuse wären schon lecker, aber es würde der Bastel-Look fehlen.&lt;br /&gt;
&lt;br /&gt;
Ach ja, sollten wir mal umziehen, so darf das Schlafzimmer nicht ohne Fenster sein ;-)&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
*[[Media:AtmelStudio6AlarmClockV1.zip|Firmware Source Code]]&lt;br /&gt;
*[[Media:EagleAlarmClockV1.zip|Eagle Schematics]]&lt;br /&gt;
&lt;br /&gt;
==Todo==&lt;br /&gt;
Ein paar Links oder eine BOM müssten hier nochmal irgendwann rein.&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:EagleAlarmClockV1.zip&amp;diff=77303</id>
		<title>Datei:EagleAlarmClockV1.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:EagleAlarmClockV1.zip&amp;diff=77303"/>
		<updated>2013-06-27T20:59:21Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:AtmelStudio6AlarmClockV1.zip&amp;diff=77302</id>
		<title>Datei:AtmelStudio6AlarmClockV1.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:AtmelStudio6AlarmClockV1.zip&amp;diff=77302"/>
		<updated>2013-06-27T20:58:52Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:SW_DisplayAlarm.jpg&amp;diff=77299</id>
		<title>Datei:SW DisplayAlarm.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:SW_DisplayAlarm.jpg&amp;diff=77299"/>
		<updated>2013-06-27T20:52:14Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:SW_DisplayDatum.jpg&amp;diff=77298</id>
		<title>Datei:SW DisplayDatum.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:SW_DisplayDatum.jpg&amp;diff=77298"/>
		<updated>2013-06-27T20:52:00Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:SW_DisplayTemperature.jpg&amp;diff=77297</id>
		<title>Datei:SW DisplayTemperature.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:SW_DisplayTemperature.jpg&amp;diff=77297"/>
		<updated>2013-06-27T20:51:41Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:SW_DisplayTime.jpg&amp;diff=77296</id>
		<title>Datei:SW DisplayTime.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:SW_DisplayTime.jpg&amp;diff=77296"/>
		<updated>2013-06-27T20:51:25Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:SW_ElectricComments.jpg&amp;diff=77295</id>
		<title>Datei:SW ElectricComments.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:SW_ElectricComments.jpg&amp;diff=77295"/>
		<updated>2013-06-27T20:49:58Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:SW_Schaltplan.png&amp;diff=77294</id>
		<title>Datei:SW Schaltplan.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:SW_Schaltplan.png&amp;diff=77294"/>
		<updated>2013-06-27T20:49:21Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:SW_WeckerFull.jpg&amp;diff=77293</id>
		<title>Datei:SW WeckerFull.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:SW_WeckerFull.jpg&amp;diff=77293"/>
		<updated>2013-06-27T20:47:33Z</updated>

		<summary type="html">&lt;p&gt;Matthes77: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Matthes77</name></author>
	</entry>
</feed>