<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>eBlog - Elvizz Blog &#187; Projekte</title>
	<atom:link href="http://blog.elvizz.net/category/projekte/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.elvizz.net</link>
	<description>- Hier bloggt der Chef noch selbst -</description>
	<lastBuildDate>Mon, 21 Sep 2009 17:04:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Der Zeit-Brunnen</title>
		<link>http://blog.elvizz.net/2006/09/12/der-zeit-brunnen/</link>
		<comments>http://blog.elvizz.net/2006/09/12/der-zeit-brunnen/#comments</comments>
		<pubDate>Tue, 12 Sep 2006 19:11:41 +0000</pubDate>
		<dc:creator>Elvizz</dc:creator>
				<category><![CDATA[Projekte]]></category>

		<guid isPermaLink="false">http://blog.elvizz.net/?p=60</guid>
		<description><![CDATA[Ich bin gerade &#252;ber ein interessantes Projekt gestolpert: Den Zeitbrunnen. 
In einen einfachen batteriebetriebenen kleinen Springbrunnen wird fluoreszierendes Wasser gef&#252;llt und mit UV-LEDs zum Leuchten angeregt. Der Trick bei der Sache ist, dass die LEDs nicht dauernd leuchten, sondern stroboskopartig ein- und ausgeschaltet werden. &#220;ber einen &#8220;Tropfdetektor&#8221; wird erkannt, wann ein Tropfen herabf&#228;llt um den [...]]]></description>
			<content:encoded><![CDATA[<p>Ich bin gerade &#252;ber ein interessantes Projekt gestolpert: <a href="http://cre.ations.net/creation/44" target="_blank">Den Zeitbrunnen. <img alt="Zeitbrunnen" id="image59" src="http://blog.elvizz.net/wp-content/uploads/2006/09/zeitbrunnen.jpg" /></a></p>
<p>In einen einfachen batteriebetriebenen kleinen Springbrunnen wird fluoreszierendes Wasser gef&#252;llt und mit UV-LEDs zum Leuchten angeregt. Der Trick bei der Sache ist, dass die LEDs nicht dauernd leuchten, sondern stroboskopartig ein- und ausgeschaltet werden. &#220;ber einen &#8220;Tropfdetektor&#8221; wird erkannt, wann ein Tropfen herabf&#228;llt um den &#8220;Stroboskop-Timer&#8221; zur&#252;ckzusetzen. Dieser sorgt daf&#252;r, dass die Beleuchtung etwa 5 mal ein- und ausschaltet, w&#228;hrend ein Tropfen f&#228;llt. &#220;ber Taster kann die Geschwindigkeit der Pumpe beeinflusst werden und dar&#252;ber auch der Effekt auf die Tropfen &#8211; so k&#246;nnen diese etwa langsam vorw&#228;rts und sogar &#8220;r&#252;ckw&#228;rts&#8221; fallen. Auch ein Stehenbleiben der Tropfen in der Luft ist m&#246;glich&#8230; achja: Auf der Seite gibt es auch ein Video dazu &#8211; sehr nett.<br />
Ich glaube, wenn ich etwas Zeit habe, werde ich das auch mal probieren&#8230; <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elvizz.net/2006/09/12/der-zeit-brunnen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Die ersten Schritte&#8230;</title>
		<link>http://blog.elvizz.net/2006/09/05/die-ersten-schritte/</link>
		<comments>http://blog.elvizz.net/2006/09/05/die-ersten-schritte/#comments</comments>
		<pubDate>Tue, 05 Sep 2006 12:48:49 +0000</pubDate>
		<dc:creator>Elvizz</dc:creator>
				<category><![CDATA[Roboter]]></category>

		<guid isPermaLink="false">http://blog.elvizz.net/?p=57</guid>
		<description><![CDATA[Wie schon in Aller Anfang ist schwer geschrieben, beginne ich derzeit, einen eigenen kleinen Roboter zu bauen. Nachdem vor ca. einer Woche meine Reichelt-Bestellung angekommen ist, hatte ich schon mal ein paar Dinge zum Basteln.
Mit 2 CNY70 Reflexoptokopplern kann ich jetzt genau z&#228;hlen, wie viele Schwarz-Wei&#223;-Wechsel auf einer entsprechenden Encoder-Scheibe passiert sind und somit auf [...]]]></description>
			<content:encoded><![CDATA[<p>Wie schon in <a href="http://blog.elvizz.net/?p=55" title="Aller Anfang ist schwer" target="_blank" class="liinternal">Aller Anfang ist schwer</a> geschrieben, beginne ich derzeit, einen eigenen kleinen Roboter zu bauen. Nachdem vor ca. einer Woche meine Reichelt-Bestellung angekommen ist, hatte ich schon mal ein paar Dinge zum Basteln.<br />
Mit 2 CNY70 Reflexoptokopplern kann ich jetzt genau z&#228;hlen, wie viele Schwarz-Wei&#223;-Wechsel auf einer entsprechenden Encoder-Scheibe passiert sind und somit auf die vom Rad zur&#252;ckgelegte Strecke schlie&#223;en.</p>
<blockquote><p>ISR(INT0_vect){</p>
<p>if (MCUCR &#038; (1&lt;&lt;ISC00)){    // if rising edge&#8230;</p>
<p>// set to falling edge<br />
MCUCR &#038;= ~(1&lt;&lt;ISC00);<br />
// increase counter<br />
left_counter++;<br />
// start_timer(left);<br />
// turn on led<br />
PORTC |= (1&lt;&lt;PC5);</p>
<p>} else {            // if falling edge&#8230;</p>
<p>// set to rising edge<br />
MCUCR |= (1&lt;&lt;ISC00);<br />
// stop_timer(left);<br />
// turn off led<br />
PORTC &#038;= ~(1&lt;&lt;PC5);</p>
<p>}<br />
}</p>
<p>int main(void){</p>
<p>// &#8230;// enable external interrupts<br />
MCUCR = (1&lt;&lt;ISC01)|(1&lt;&lt;ISC00);    // rising edge of INT0 generates interrupt<br />
GICR |= (1&lt;&lt;INT0);        // enable external interrupt INT0</p>
<p>// &#8230;</p>
<p>}</p></blockquote>
<p>(Sorry, f&#252;r die grauselige &#220;bersichtlichkeit, aber irgendwie mag Wordpress keinen C-Code&#8230; oder ich hab noch nicht raus, wie es geht <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  )</p>
<p>In einer zus&#228;tzlichen Timerfunktion wird regelm&#228;&#223;ig der aktuelle Z&#228;hlerstand ausgelesen (, in Zukunft ausgewertet) und dann wieder auf Null gesetzt. Dar&#252;ber l&#228;sst sich dann die Zahl der Umdrehungen der R&#228;der (hier nur exemplarisch des linken) messen.<br />
Daf&#252;r bereitet mir die Abstandsmessung mittels Ultraschall noch einige Probleme: Ich kriege zwar einen Ultraschall-Impuls gesendet, allerdings klappt es mit der Detektion noch nicht so ganz, da ich im Moment keine passenden OPs habe <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>In der Theorie soll es so ablaufen, dass ich einen 3ms langen Ultraschall-Impuls aussende und dann einen Timer starte. Der Timer z&#228;hlt die Takte, die der Impuls braucht, um wieder detektiert zu werden. Sobald der Impuls erkannt wurde, wird der Timer gestoppt und die Entfernung berechnet:<br />
dist = COUNTER / 2 * ULTRASONIC_SPEED  * PRESCALER / OSCILLATOR_FREQ;</p>
<p>Sobald der Empfang dann mal funktioniert, m&#252;sste die Formel oben noch ein wenig angepasst werden, um den Fehler durch den 3ms langen Impuls herauszurechnen.<br />
Naja, es k&#246;nnte ja so leicht sein, wenn da nicht  das Problem des Empfangs w&#228;re <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elvizz.net/2006/09/05/die-ersten-schritte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aller Anfang ist schwer&#8230;</title>
		<link>http://blog.elvizz.net/2006/08/23/aller-anfang-ist-schwer/</link>
		<comments>http://blog.elvizz.net/2006/08/23/aller-anfang-ist-schwer/#comments</comments>
		<pubDate>Wed, 23 Aug 2006 18:55:53 +0000</pubDate>
		<dc:creator>Elvizz</dc:creator>
				<category><![CDATA[Roboter]]></category>

		<guid isPermaLink="false">http://blog.elvizz.net/?p=55</guid>
		<description><![CDATA[Ich habe ein neues Projekt begonnen: Einen kleinen, autonomen Roboter, der ein wenig durch die Gegend fahren kann und m&#246;glichst gegen kein Hindernis fahren soll  
Dazu habe ich zuletzt einen alten, defekten DVD-Player zerlegt und dabei drei Motoren zutage gef&#246;rdert: Einer hat die Schublade ge&#246;ffnet, der andere den Laser bewegt und der letzte die [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe ein neues Projekt begonnen: Einen kleinen, autonomen Roboter, der ein wenig durch die Gegend fahren kann und m&#246;glichst gegen kein Hindernis fahren soll <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Dazu habe ich zuletzt einen alten, defekten DVD-Player zerlegt und dabei drei Motoren zutage gef&#246;rdert: Einer hat die Schublade ge&#246;ffnet, der andere den Laser bewegt und der letzte die DVD gedreht. Zwei dieser Motoren werde ich f&#252;r den Antrieb des Roboters benutzen. F&#252;r den dritten ist mir bisher noch keine Verwendung eingefallen&#8230;</p>
<p>Bei Reichelt habe ich mir einen Ultraschallsender und -empf&#228;nger bestellt, die ich f&#252;r die Entfernungsmessung benutzen m&#246;chte&#8230; ich bin mal gespannt, ob ich das hinkriege <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Wird bestimmt ne lustige Bastelei und Rechnerei.</p>
<p>Au&#223;erdem habe ich noch 6 Reflexoptokoppler bestellt. 2 davon werde ich nutzen, um zu messen, wie weit sich die R&#228;der wirklich gedreht haben und evtl. Korrekturen an den Motordrehzahlen vornehmen zu k&#246;nnen. Und 2 der anderen m&#246;chte ich dazu benutzen, den Boden zu kontrollieren, d.h. zu sehen, ob ein Abgrund oder eine schwarze Linie in der N&#228;he ist und diese(n) zu meiden. Die letzten 2 sind Reserve, falls ich Mist baue <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Bisher bin ich soweit, dass ich &#252;ber Pulsweitenmodulation (PWM) die Geschwindigkeit, mit der die Motoren drehen, steuern kann. Auch die prinzipielle Ansteuerung und Auswertung der Optokoppler habe ich fertig. Mal sehen, was die Verwirklichung noch so alles f&#252;r Probleme aufwerfen wird.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elvizz.net/2006/08/23/aller-anfang-ist-schwer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ein paar Erkenntnisse</title>
		<link>http://blog.elvizz.net/2006/06/18/ein-paar-erkenntnisse/</link>
		<comments>http://blog.elvizz.net/2006/06/18/ein-paar-erkenntnisse/#comments</comments>
		<pubDate>Sun, 18 Jun 2006 19:48:20 +0000</pubDate>
		<dc:creator>Elvizz</dc:creator>
				<category><![CDATA[Binäruhr]]></category>

		<guid isPermaLink="false">http://blog.elvizz.net/?p=42</guid>
		<description><![CDATA[Nachdem der DCF77-Empfang nach einer erfolgreichen Synchronisation nun erstmal &#8220;ausgeschaltet&#8221; wird, habe ich etwas Interessantes entdeckt: Die Bin&#228;ruhr springt nicht mehr wild durch die Modi   Scheinbar verursacht der Interrupt oder dessen Auswertung einen Fehler. Ich bin allerdings noch nicht dahinter gekommen, wo und wie das passiert.
Ich habe jetzt zus&#228;tzlich eine &#220;berpr&#252;fung eingebaut, die [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem der DCF77-Empfang nach einer erfolgreichen Synchronisation nun erstmal &#8220;ausgeschaltet&#8221; wird, habe ich etwas Interessantes entdeckt: <span id="more-42"></span>Die Bin&#228;ruhr springt nicht mehr wild durch die Modi <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Scheinbar verursacht der Interrupt oder dessen Auswertung einen Fehler. Ich bin allerdings noch nicht dahinter gekommen, wo und wie das passiert.</p>
<p>Ich habe jetzt zus&#228;tzlich eine &#220;berpr&#252;fung eingebaut, die testet, ob der DCF77-Empfang l&#228;nger als 10 Minuten l&#228;uft und diesen dann abschaltet. Wenn nach 10 Minuten keine 2 brauchbaren Signale empfangen wurden, wird das in n&#228;chster Zeit wohl auch nix mehr. Nach 3 Stunden wird dann wieder versucht das Signal sauber zu empfangen &#8211; mit etwas Gl&#252;ck klappt es ja dann <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Demn&#228;chst werde ich die Uhr in ihr Geh&#228;use einbauen. Daf&#252;r m&#246;chte ich aber erst eine Folie entwerfen, die ich dann auf die Front aufkleben kann, so dass die verschiedenen Kn&#246;pfe und Anzeigen (Alarm 1/2, DCF77-Empfang) auch beschriftet sind. Ich bin noch auf der Suche nach einer selbstklebenden, bedruckbaren Transparenzfolie. Mal sehen, ob es sowas gibt&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elvizz.net/2006/06/18/ein-paar-erkenntnisse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>M&#246;&#246;&#246;&#246;&#246;&#246;&#246;p</title>
		<link>http://blog.elvizz.net/2006/06/13/moeoeoeoeoeoeoep/</link>
		<comments>http://blog.elvizz.net/2006/06/13/moeoeoeoeoeoeoep/#comments</comments>
		<pubDate>Tue, 13 Jun 2006 20:32:57 +0000</pubDate>
		<dc:creator>Elvizz</dc:creator>
				<category><![CDATA[Binäruhr]]></category>

		<guid isPermaLink="false">http://blog.elvizz.net/?p=39</guid>
		<description><![CDATA[So langsam n&#228;hert sich die Bin&#228;ruhr der Vollendung   Als eines der letzten gro&#223;en Features habe ich jetzt eine Weckfunktion implementiert.
Als Lautsprecher benutze ich im Moment einen alten PC-Speaker. Diesen m&#246;chte ich aber noch gegen etwas kleineres tauschen, da das Ganze so nicht in das Geh&#228;use passen wird. Um den Lautsprecher m&#246;glichst einfach tauschen [...]]]></description>
			<content:encoded><![CDATA[<p>So langsam n&#228;hert sich die Bin&#228;ruhr der Vollendung <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Als eines der letzten gro&#223;en Features habe ich jetzt eine Weckfunktion implementiert.<span id="more-39"></span></p>
<p>Als Lautsprecher benutze ich im Moment einen alten PC-Speaker. Diesen m&#246;chte ich aber noch gegen etwas kleineres tauschen, da das Ganze so nicht in das Geh&#228;use passen wird. Um den Lautsprecher m&#246;glichst einfach tauschen zu k&#246;nnen, habe ich ihn nicht fest auf die Platine gel&#246;tet. Stattdessen habe ich eine kleine zweipolige Stiftleiste benutzt, an die der Lautsprecher dann angesteckt wird. Um die Lautst&#228;rke zu begrenzen, benutze ich einen 470 Ohm Widerstand. Die resultierende Lautst&#228;rke d&#252;rfte morgens eigentlich ganz in Ordnung sein.</p>
<p>Sobald die Uhrzeit die voreingestellte Weckzeit erreicht (und der Alarm nat&#252;rlich aktiviert ist), wechselt die Uhr in einen neuen Modus (bisher gab es &#8220;Zeit anzeigen&#8221;, &#8220;Alarm 1 einstellen&#8221;, &#8220;Alarm 2 einstellen&#8221; und &#8220;Uhrzeit einstellen&#8221;), den man normalerweise nicht erreichen kann. Hier wird ganz normal die Uhrzeit angezeigt. Zus&#228;tzlich wird aber auch auf einem Ausgang ein Soundsignal erzeugt. Wird eine (beliebige) Taste gedr&#252;ckt, ist der Alarm vorbei und die Uhr wechselt zur&#252;ck in den &#8220;Zeit anzeigen&#8221; Modus. Der Wecker bleibt gestellt.</p>
<p>Um die eingestellten Weckzeiten auch &#252;ber einen Stromausfall (egal welcher Art) hinweg zu behalten, werden diese nun im EEPROM des µC gespeichert. Um den EEPROM nicht unn&#246;tig zu belasten (er ist nur f&#252;r etwa 100.000 Schreibvorg&#228;nge pro Speicherzelle ausgelegt), wird die Weckzeit nur gespeichert, falls sie auch wirklich ge&#228;ndert wurde. Sobald der µC sein Programm startet, l&#228;dt er die gespeicherten Weckzeiten aus dem EEPROM.</p>
<p>Das Problem, dass die Uhr pl&#246;tzlich (ohne Tastendruck) den Modus wechselt, habe ich mittlerweile zusammen mit ein paar anderen l&#246;sen k&#246;nnen: Ich habe den Anschluss f&#252;r das Netzteil ausgetauscht und nochmal sauber (und stabil) verl&#246;tet. Jetzt wackelt nix mehr und die Spannungsversorgung scheint wirklich stabil zu sein. Jedenfalls springt der µC (bisher) nicht mehr durch die verschiedenen Modi und auch der DCF77-Empfang funktioniert viel besser.</p>
<p>Als letztes neues Feature habe ich nun noch eingebaut, dass sich die Bin&#228;ruhr nach einem erfolgreichen DCF-Empfang erstmal nicht neu synchronisieren will, sondern dies nur alle 3 Stunden tut. Das sollte f&#252;r eine genaue Zeitanzeige auf jeden Fall genug sein und evtl. noch ein paar Ressourcen des µC f&#252;r zuk&#252;nftige Features frei halten.</p>
<p>Ok, als letztes gibt es jetzt noch den <a href="http://blog.elvizz.net/wp-content/uploads/2006/06/main.c" id="p40" class="liinternal">Sourcecode</a> und den aktualisierten Schaltplan. Achtung: Der Schaltplan ist doch etwas un&#252;bersichtlich geworden &#8211; ich hoffe, man kann noch alles erkennen. Evtl. werde ich demn&#228;chst noch eine etwas aufger&#228;umtere Version online stellen.<br />
<a class="imagelink" title="Schematic for the complete binary clock" href="http://blog.elvizz.net/wp-content/uploads/2006/06/complete.png" rel="lightbox"><img width="602" height="387" id="image41" alt="Schematic for the complete binary clock" src="http://blog.elvizz.net/wp-content/uploads/2006/06/complete.png" /><br />
[Klick f&#252;r gr&#246;&#223;ere Version]<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elvizz.net/2006/06/13/moeoeoeoeoeoeoep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wer misst, misst Mist&#8230;</title>
		<link>http://blog.elvizz.net/2006/06/01/wer-misst-misst-mist/</link>
		<comments>http://blog.elvizz.net/2006/06/01/wer-misst-misst-mist/#comments</comments>
		<pubDate>Thu, 01 Jun 2006 20:52:43 +0000</pubDate>
		<dc:creator>Elvizz</dc:creator>
				<category><![CDATA[Binäruhr]]></category>

		<guid isPermaLink="false">http://blog.elvizz.net/?p=38</guid>
		<description><![CDATA[Jaja, messen m&#252;sste man k&#246;nnen: Nachdem sich die Bin&#228;ruhr nun mittels des DCF77-Signals auf eine genaue Uhrzeit einstellen kann, ist mir aufgefallen, dass nicht etwa die Bin&#228;ruhr pro 24 Stunden eine Sekunde falsch geht, sondern meine Referenzuhr *g*&#8230; wahrscheinlich ist da eine Batterie leer. Das bedeutet nun, dass sogar ohne DCF-Synchronisation die Ganggenauigkeit der Bin&#228;ruhr [...]]]></description>
			<content:encoded><![CDATA[<p>Jaja, messen m&#252;sste man k&#246;nnen: Nachdem sich die Bin&#228;ruhr nun mittels des DCF77-Signals auf eine genaue Uhrzeit einstellen kann, ist mir aufgefallen, dass nicht etwa die Bin&#228;ruhr pro 24 Stunden eine Sekunde falsch geht, sondern meine Referenzuhr *g*&#8230; wahrscheinlich ist da eine Batterie leer. Das bedeutet nun, dass sogar ohne DCF-Synchronisation die Ganggenauigkeit der Bin&#228;ruhr schon sehr gut ist <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ich habe jetzt damit begonnen, ein paar Weckerfunktionen zu implementieren. <span id="more-38"></span>Daf&#252;r habe ich der Uhr einen Taster zum Wechsel zwischen den verschiedenen Modi und noch zwei zus&#228;tzliche (rote) LEDs spendiert, die den Alarmstatus (ja, genau: zwei LEDs = zwei Weckzeiten) anzeigen: Leuchtet die erste rote LED, ist Alarm 1 aktiviert. Blinkt diese, stellt man gerade die erste Weckzeit ein. Wenn sie langsamer blinkt, ist der Alarm aktiv. Genauso funktioniert die zweite LED. Blinken beide LEDs, kann man die Uhrzeit &#228;ndern. Daf&#252;r habe ich einen eigenen Modus gew&#228;hlt, damit im &#8220;normalen&#8221; Modus die Zeit nicht verstellt wird und die beiden anderen Taster zum Aktivieren der beiden Alarme genutzt werden k&#246;nnen.</p>
<p>Momentan verh&#228;lt sich die Uhr etwas merkw&#252;rdig: Sie springt ab und zu unmotiviert von einem Modus in den n&#228;chsten ohne dass eine Taste gedr&#252;ckt worden w&#228;re. Merkw&#252;rdig&#8230; ich muss wohl nochmal auf die Suche nach einem Kurzschluss oder Wackelkontakt gehen.</p>
<p>Au&#223;erdem habe ich einen 12 Ohm Serienwiderstand, der den Strom f&#252;r alle LEDs begrenzt hat, gegen einen Transistor getauscht. Dieser wird &#252;ber einen Fotowiderstand gesteuert, um die LEDs bei Dunkelheit etwas zu dimmen, damit bei Nacht nicht das ganze Zimmer beleuchtet wird <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Den aktualisierten Schaltplan dazu gibt es demn&#228;chst, wenn alles so klappt, wie es soll&#8230;</p>
<p>Ich habe auch mal mit der Sounderzeugung mit Hilfe des AVR experimentiert: Wieder &#252;ber einen Transistor habe ich einen Lautsprecher angeschlossen. Der Transistor wird diesmal von einem Port des AVR gesteuert, der mit einer bestimmten Frequenz ein- und ausgeschaltet wird. Im Moment benutze ich eine &#220;berlagerung von 1000 und 440Hz. Dadurch entsteht ein Ger&#228;usch, das einen bestimmt wach kriegt, aber auch nicht zu fies klingt.</p>
<p>Ich habe den Lautsprecher noch nicht an die Bin&#228;ruhr angeschlossen, da ich erst einmal das Problem der springenden Modi l&#246;sen m&#246;chte, bevor ich die n&#228;chste Baustelle anfange. Au&#223;erdem wei&#223; ich auch noch nicht genau, wie ich die Sounderzeugung sinnvoll in den Code der Uhr einf&#252;ge, aber das wird sich schon noch l&#246;sen lassen&#8230;  auf jeden Fall gibt es deswegen aber auch keinen neuen Code f&#252;r euch.<br />
Ach ja: Ich kann nur empfehlen, das DCF-Modul mit der Antenne auf einen starren Streifen Pappe zu kleben. Seitdem ich das gemacht habe, habe ich viel weniger Probleme damit. <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elvizz.net/2006/06/01/wer-misst-misst-mist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jetzt funkt&#8217;s</title>
		<link>http://blog.elvizz.net/2006/05/27/jetzt-funkts/</link>
		<comments>http://blog.elvizz.net/2006/05/27/jetzt-funkts/#comments</comments>
		<pubDate>Sat, 27 May 2006 16:20:45 +0000</pubDate>
		<dc:creator>Elvizz</dc:creator>
				<category><![CDATA[Binäruhr]]></category>

		<guid isPermaLink="false">http://blog.elvizz.net/?p=35</guid>
		<description><![CDATA[Nachdem ich die Ganggenauigkeit der Bin&#228;ruhr zuletzt mit einem Uhrenquarz erh&#246;ht habe, hatte sie nur noch einen Fehler von ca. 1 Sekunde pro 24 Stunden. Das ist im Vergleich zu vorher schon fast nichts mehr. Aber f&#252;r eine Uhr irgendwie doch zuviel&#8230; deswegen habe ich jetzt ein Funkmodul von Reichelt angeschlossen, mit dem sich der [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich die Ganggenauigkeit der Bin&#228;ruhr zuletzt mit einem Uhrenquarz erh&#246;ht habe, hatte sie nur noch einen Fehler von ca. 1 Sekunde pro 24 Stunden. Das ist im Vergleich zu vorher schon fast nichts mehr. Aber f&#252;r eine Uhr irgendwie doch zuviel&#8230; deswegen habe ich jetzt ein Funkmodul von Reichelt angeschlossen, mit dem sich der AVR &#252;ber das DCF77-Signal auf Normzeit einstellen kann. <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <span id="more-35"></span></p>
<p>Aber bis es soweit war, gab es noch einige Probleme:</p>
<ul>
<li>Die Spannung war f&#252;r das Funkmodul nicht stabil genug und musste stabilisiert werden.</li>
<li>Das d&#252;rftige &#8220;Handbuch&#8221; des Funkmoduls musste verstanden werden</li>
<li>und zu guter Letzt ist nat&#252;rlich auch noch die Antenne des Modules abgerissen, so dass ich sie auch erstmal wieder anl&#246;ten musste</li>
</ul>
<p>In dem Handbuch zum Funkmodul wird &#8211; in Worten &#8211; erkl&#228;rt, wie das Modul zu beschalten ist. Leider ist ein nicht ganz unwichtiger Punkt aber etwas schwammig formuliert: Das Modul l&#228;sst sich anscheinend in eine Art Schlafmodus versetzen. Dazu muss einer der vier Anschl&#252;sse auf hohes Potential gelegt werden. Zum Einschalten soll er auf GND liegen. Soweit die Theorie. In der Praxis hat sich jetzt gezeigt, dass dieser Anschluss wohl intern bereits auf GND liegt und eine externe Beschaltung Probleme bereitet. Jedenfalls habe ich diesen Anschluss jetzt unbeschaltet gelassen und so scheint es zu funktionieren. Die anderen Anschl&#252;sse sind +5V, GND und DCF. An DCF liegt das (invertierte) Signal an, das das Modul empf&#228;ngt.</p>
<p>Normalerweise besteht das DCF77-Signal aus einem High-Pegel, der zu Beginn jeder Sekunde auf 25% der Leistung abgesenkt wird. 100ms f&#252;r eine logische 0 und 200ms f&#252;r eine logische 1. (Weitere Details gibt es <a href="http://de.wikipedia.org/wiki/DCF77" target="_blank" rel="nofollow" class="liwikipedia">hier</a>.) Die Inversion bewirkt jetzt, dass das Signal an DCF grunds&#228;tzlich auf niedrigem Potential liegt und zu Beginn jeder Sekunde f&#252;r 100 bzw. 200ms auf +5V gezogen wird.</p>
<p>F&#252;r einen &#8220;sauberen&#8221; Betrieb des Funkmoduls wird eine Spannung zwischen 1,2 und 5V ben&#246;tigt, die im Betrieb allerdings um weniger als 0,1V schwanken darf. Bisher konnte ich meine Schaltungen einfach mit einem 5V Netzteil betreiben ohne Probleme zu kriegen. Aber f&#252;r das Modul schien das nicht mehr zu reichen, so dass ich einen 7805-Baustein zusammen mit 3 Kondensatoren (2&#215;100nF KerKo, 1&#215;10µF ELKO) einbauen musste. Dieser erzeugt nun aus 7V Eingangsspannung eine stabilisierte Spannung von 5V, die auch dem m&#228;keligen Funkmodul gen&#252;gt. <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Bei dem nun folgenden h&#228;ufigen Programmieren und damit verbundenem Bewegen der Schaltung, habe ich wohl die Antenne etwas zu viel und falsch bewegt, so dass sie sich schlie&#223;lich vom Funkmodul gel&#246;st hat. Mit etwas Arbeit lie&#223; sie sich aber wieder anl&#246;ten, was sich aber schon recht schwierig gestaltet hat, da die d&#252;nnen Anschlusskabel die W&#228;rme des L&#246;tzinns nicht richtig ableiten konnten und so der Zinn nicht abk&#252;hlen konnte um zu erstarren&#8230; naja, schlie&#223;lich und endlich hat es aber geklappt.</p>
<p>Den Code f&#252;r die Auswertung des DCF-Signals habe ich von <a href="http://www.mikrocontroller.net/articles/DCF77-Funkwecker_mit_AVR" target="_blank" class="liexternal">dieser</a> Seite teilweise &#252;bernommen und angepasst. Meinen Code gibt&#8217;s dann auch <a href="http://www-users.rwth-aachen.de/marcodanielpascal.lierfeld/wordpress/wp-admin/dcf77.c" id="p36" title="hier" rel="nofollow" class="liexternal">hier</a>. Die Funktionalit&#228;t wurde nur um die DCF77-Routinen erweitert.</p>
<p>Auch das neue Schaltbild gibt es nat&#252;rlich:<br />
<a href="http://www-users.rwth-aachen.de/marcodanielpascal.lierfeld/wordpress/wp-content/uploads/2006/05/dcf77.png" class="imagelink" title="Schaltplan f&#252;r DCF77" rel="lightbox"><img width="717" height="467" id="image37" alt="Schaltplan f&#252;r DCF77" src="http://www-users.rwth-aachen.de/marcodanielpascal.lierfeld/wordpress/wp-content/uploads/2006/05/dcf77.png" /></a><br />
Hier sind auch alle Neuerungen eingetragen. Ich musste die Anschl&#252;sse f&#252;r die Stundenanzeige ver&#228;ndern, da ich den Pin f&#252;r den externen Interrupt vorher belegt hatte.</p>
<p>F&#252;r die Zukunft steht jetzt noch ein Summer/Lautsprecher an, mit dem dann eine Weckfunktionalit&#228;t hinzukommen kann. Ich werde mal ein wenig experimentieren, was sich da so machen l&#228;sst. Ein Geh&#228;use habe ich mittlerweile auch, allerdings werde ich die Uhr vorerst da noch nicht einbauen.</p>
<p>Im Moment scheint der Anschluss des DCF-Moduls einen Wackelkontakt zu haben, denn ab und zu empf&#228;ngt die Uhr die aktuelle Zeit nicht <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Eventuell befestige ich das Modul und die Antenne noch auf einem starren St&#252;ckchen Pappe oder so um zus&#228;tzliche Bewegung und somit Belastung f&#252;r die eh schon schlechte Verbindung zu vermeiden&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elvizz.net/2006/05/27/jetzt-funkts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Was eine Sekunde ist</title>
		<link>http://blog.elvizz.net/2006/05/20/was-eine-sekunde-ist/</link>
		<comments>http://blog.elvizz.net/2006/05/20/was-eine-sekunde-ist/#comments</comments>
		<pubDate>Sat, 20 May 2006 20:33:16 +0000</pubDate>
		<dc:creator>Elvizz</dc:creator>
				<category><![CDATA[Binäruhr]]></category>

		<guid isPermaLink="false">http://blog.elvizz.net/?p=33</guid>
		<description><![CDATA[Eine Sekunde wird derzeit folgenderma&#223;en definiert:
Eine Sekunde ist definitionsgem&#228;&#223; das 9.192.631.770-fache der Periode einer Mikrowelle, die mit einem ausgew&#228;hlten Niveau&#252;bergang im Caesiumatom in Resonanz ist. Anders gesagt: das 9.192.631.770-fache der Periodendauer der dem &#220;bergang zwischen den beiden Hyperfeinstrukturniveaus des Grundzustandes von Atomen des Nuklids 133Cs entsprechenden Strahlung.
http://de.wikipedia.org/wiki/Sekunde
Von all dem wei&#223; der AVR aber nichts. Gem&#228;&#223; [...]]]></description>
			<content:encoded><![CDATA[<p>Eine Sekunde wird derzeit folgenderma&#223;en definiert:</p>
<blockquote><p>Eine Sekunde ist definitionsgem&#228;&#223; das 9.192.631.770-fache der <a href="http://de.wikipedia.org/wiki/Periode" title="Periode" rel="nofollow" class="liwikipedia">Periode</a> einer <a href="http://de.wikipedia.org/wiki/Mikrowelle" title="Mikrowelle" rel="nofollow" class="liwikipedia">Mikrowelle</a>, die mit einem ausgew&#228;hlten Niveau&#252;bergang im <a href="http://de.wikipedia.org/wiki/Caesium" title="Caesium" rel="nofollow" class="liwikipedia">Caesiumatom</a> in <a href="http://de.wikipedia.org/wiki/Resonanz" title="Resonanz" rel="nofollow" class="liwikipedia">Resonanz</a> ist. Anders gesagt: das 9.192.631.770-fache der <a href="http://de.wikipedia.org/wiki/Periodendauer" title="Periodendauer" rel="nofollow" class="liwikipedia">Periodendauer</a> der dem <a href="http://de.wikipedia.org/wiki/%C3%9Cbergang" title="&#220;bergang" rel="nofollow" class="liwikipedia">&#220;bergang</a> zwischen den beiden <a href="http://de.wikipedia.org/wiki/Hyperfeinstruktur" title="Hyperfeinstruktur" rel="nofollow" class="liwikipedia">Hyperfeinstruktur</a>niveaus des <a href="http://de.wikipedia.org/wiki/Grundzustand" title="Grundzustand" rel="nofollow" class="liwikipedia">Grundzustandes</a> von <a href="http://de.wikipedia.org/wiki/Atom" title="Atom" rel="nofollow" class="liwikipedia">Atomen</a> des <a href="http://de.wikipedia.org/wiki/Nuklid" title="Nuklid" rel="nofollow" class="liwikipedia">Nuklids</a> <sup>133</sup>Cs entsprechenden <a href="http://de.wikipedia.org/wiki/Strahlung" title="Strahlung" rel="nofollow" class="liwikipedia">Strahlung</a>.<br />
<a href="http://de.wikipedia.org/wiki/Sekunde" target="_blank" rel="nofollow" class="liwikipedia"><em>http://de.wikipedia.org/wiki/Sekunde</em></a></p></blockquote>
<p>Von all dem wei&#223; der AVR aber nichts. Gem&#228;&#223; seinem internen Takt von 1MHz besteht eine Sekunde aus einer Millionen Takte. Da der interne Takt aber recht ungenau ist, ist auch eine Sekunde f&#252;r den AVR nicht so genau definiert. M&#246;chte man den AVR aber z.B. als Uhr benutzen, ist das sehr unpraktisch. Abhilfe muss also her.</p>
<p><span id="more-33"></span>Deswegen wollte ich &#8211; schon bevor ich die falschen Fuse-Bits gesetzt habe &#8211; einen externen Quarz-Kristall mit dem AVR verbinden, um ein stabiles Taktsignal zu haben. Da ich in dem Datenblatt etwas &#252;ber einen externen 32.768kHz Kristall gelesen hatte, f&#252;r den der AVR ausgelegt sei, hatte ich diesen zuerst versehentlich f&#252;r einen Ersatz zum internen Taktgeber gehalten. Daher auch der Artikel &#8220;<a href="http://blog.elvizz.net/?p=31" target="_blank" class="liinternal">Fuse-Bits sind b&#246;se&#8230;</a>&#8220;.</p>
<p>Nachdem ich diesen Fehler wieder hingebogen habe, habe ich den externen Kristall mit den korrekten Eing&#228;ngen TOSC1 und TOSC2 verbunden. Nachdem ich dann noch den zweiten Timer so eingestellt habe, dass er den externen Resonator auch verwendet, hatte ich pl&#246;tzlich ein recht stabiles Signal von 32.768kHz zur Verf&#252;gung.</p>
<p>Auch wenn diese Zahl auf den ersten Blick recht unhandlich aussieht, f&#228;llt auf, dass sie sich prima durch z.B. 1024 teilen l&#228;sst &#8211; eine Zahl, die der AVR auch mag <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Also benutze ich einen Vorteiler von 1024 und l&#246;se alle 32768/1024 = 32 Takte einen Interrupt aus &#8211; also genau 1 Mal pro Sekunde.</p>
<p>Dieser Takt ist bedeutend genauer als der Takt des AVR. Mit diesem hatte ich innerhalb von 24 Stunden einen Fehler von mehr als 5 Minuten. Mit dem Uhrenquarz hatte ich in 12 Stunden einen Fehler kleiner als eine Sekunde. Wenn das mal kein Unterschied ist <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Hier noch einige ausgew&#228;hlte Code-Schnipsel, die das eben gesagte verdeutlichen sollen:</p>
<blockquote><p>void main(){<br />
//&#8230;<br />
ASSR |= 1< TCCR2 = (1<<<<br />
TIMSK |= 1<<br />
//...<br />
}<br />
SIGNAL (SIG_OVERFLOW2){<br />
TCNT0 = -32;    // 1s: Prescaler 1024, resonator freq. 32.768kHz<br />
// ...<br />
}</p></blockquote>
<p>Der Rest des Codes sollte eigentlich recht unver&#228;ndert geblieben sein. Ich stelle ihn trotzdem mal zum <a href="http://blog.elvizz.net/wp-admin/main.c" id="p34" title="Binary Clock with external resonator" rel="nofollow" class="liinternal">Download</a>, damit ihr einen Gesamteindruck kriegt <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Mein n&#228;chster Plan ist jetzt, den AVR noch mit einem Funkmodul auszustatten, &#252;ber das er sich die aktuelle Atomzeit besorgen kann, um auch den kleinen Gangunterschied des Quarzes zu korrigieren&#8230;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.elvizz.net/2006/05/20/was-eine-sekunde-ist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Er lebt wieder&#8230;</title>
		<link>http://blog.elvizz.net/2006/05/20/er-lebt-wieder/</link>
		<comments>http://blog.elvizz.net/2006/05/20/er-lebt-wieder/#comments</comments>
		<pubDate>Sat, 20 May 2006 19:53:10 +0000</pubDate>
		<dc:creator>Elvizz</dc:creator>
				<category><![CDATA[Mikrocontroller]]></category>

		<guid isPermaLink="false">http://blog.elvizz.net/?p=32</guid>
		<description><![CDATA[Mein kleiner ATMega32 lebt wieder   Nachdem ich sein kleines Herz zuletzt mit falschen Fuse-Bits zum Stehen gebracht hatte, konnte ich es jetzt wieder starten&#8230;
Daf&#252;r habe ich mir bei Reichelt einen 500kHz Keramik-Oszillator und zwei 22pF-Keramik-Kondensatoren bestellt. Entsprechend dem Diagramm im Datenblatt habe ich die Bauteile an den AVR angeschlossen. Dann habe ich ihn [...]]]></description>
			<content:encoded><![CDATA[<p>Mein kleiner ATMega32 lebt wieder <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Nachdem ich sein kleines Herz zuletzt mit falschen Fuse-Bits zum Stehen gebracht hatte, konnte ich es jetzt wieder starten&#8230;<span id="more-32"></span></p>
<p>Daf&#252;r habe ich mir bei Reichelt einen 500kHz Keramik-Oszillator und zwei 22pF-Keramik-Kondensatoren bestellt. Entsprechend dem Diagramm im <a href="http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf" target="_blank" class="lipdf">Datenblatt</a> habe ich die Bauteile an den AVR angeschlossen. Dann habe ich ihn &#252;ber den ISP-Port mit dem PC verbunden und die Standard-Einstellungen der Fuse-Bits wieder hergestellt.</p>
<p>Jetzt l&#228;uft er wieder mit einem MHz internem Takt und rechnet fr&#246;hlich vor sich hin <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elvizz.net/2006/05/20/er-lebt-wieder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fuse-Bits sind b&#246;se&#8230;</title>
		<link>http://blog.elvizz.net/2006/05/11/fuse-bits-sind-boese/</link>
		<comments>http://blog.elvizz.net/2006/05/11/fuse-bits-sind-boese/#comments</comments>
		<pubDate>Thu, 11 May 2006 20:20:43 +0000</pubDate>
		<dc:creator>Elvizz</dc:creator>
				<category><![CDATA[Mikrocontroller]]></category>

		<guid isPermaLink="false">http://blog.elvizz.net/?p=31</guid>
		<description><![CDATA[Seitdem ich die Bin&#228;ruhr gebaut habe, ist mir aufgefallen, wie ungenau der interne Oszillator des AVRs doch ist. Deswegen wollte ich am Wochenende einen externen Oszillator anschlie&#223;en. Ich hatte noch ein Standard-Uhrenquarz und dachte &#8211; warum auch immer &#8211; dass es nicht 32,768kHz sondern 0,32768MHz h&#228;tte. Damit w&#228;re es prima als externer Oszillator f&#252;r den [...]]]></description>
			<content:encoded><![CDATA[<p>Seitdem ich die Bin&#228;ruhr gebaut habe, ist mir aufgefallen, wie ungenau der interne Oszillator des AVRs doch ist. Deswegen wollte ich am Wochenende einen externen Oszillator anschlie&#223;en. Ich hatte noch ein Standard-Uhrenquarz und dachte &#8211; warum auch immer &#8211; dass es nicht 32,768kHz sondern 0,32768MHz h&#228;tte. Damit w&#228;re es prima als externer Oszillator f&#252;r den ATMega32 geeignet gewesen.<span id="more-31"></span></p>
<p>Um den AVR auf einen externen Oszillator einzustellen, muss man die Fuse-Bits entsprechend setzen. Sollte an sich ja nicht so schwer sein. Das Problem ist nur, wenn man die Bits falsch setzt &#8211; z.B. auf einen anderen Oszillator als man besitzt &#8211; tut der AVR danach nix mehr <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Mein Problem ist, dass ich die Fuse-Bits so gesetzt habe, dass der AVR einen externen Quarzkristall mit einer Frequenz zwischen 0,4 und 0,9MHz akzeptiert. 0,032768MHz sind da allerdings etwas zu wenig f&#252;r&#8230; und so habe ich im Moment einen toten Mikrocontroller, da auch zum &#196;ndern der Fuse-Bits ein Taktsignal ben&#246;tigt wird.</p>
<p>Aber demn&#228;chst besorge ich mir einen passenden Oszillator und dann geht es weiter <img src='http://blog.elvizz.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.elvizz.net/2006/05/11/fuse-bits-sind-boese/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
