<?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; Roboter</title>
	<atom:link href="http://blog.elvizz.net/category/projekte/roboter/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.elvizz.net</link>
	<description>- Hier bloggt der Chef noch selbst -</description>
	<lastBuildDate>Tue, 28 Sep 2010 06:53:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<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 [...]]]></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 DVD [...]]]></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>
	</channel>
</rss>

