{"id":537,"date":"2011-07-03T13:34:16","date_gmt":"2011-07-03T11:34:16","guid":{"rendered":"http:\/\/www.admindu.de\/wordpress\/?p=537"},"modified":"2011-07-03T20:55:28","modified_gmt":"2011-07-03T18:55:28","slug":"franz-joseph-1-0","status":"publish","type":"post","link":"https:\/\/www.admindu.de\/wordpress\/?p=537","title":{"rendered":"Franz Joseph 1.0"},"content":{"rendered":"<p>Ich wollte mir schon immer mal ein kleines Labor einrichten, um mit Microcontrollern zu basteln. Nach 10 Jahren habe ich es jetzt endlich geschafft, da mal einen Knopf dran zu machen. Und es ist wirklich ein gro\u00dfer Spa\u00df. Mein erstes Projekt ist &#8220;Franz Joseph&#8221;, ein kleiner &#8220;autonomer&#8221; Roboter. Im folgenden m\u00f6chte ich Franz Joseph kurz vorstellen:<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_536\" aria-describedby=\"caption-attachment-536\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-side.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-536\" title=\"franz-joseph-side\" src=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-side-300x194.jpg\" alt=\"Franz Joseph von der Seite\" width=\"300\" height=\"194\" srcset=\"https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-side-300x194.jpg 300w, https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-side-1024x664.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-536\" class=\"wp-caption-text\">Franz Joseph - Seitenansicht<\/figcaption><\/figure>\n<p style=\"text-align: center;\">&nbsp;<\/p>\n<p>Auf diesem Bild sieht man Franz Joseph von der Seite. Die &#8220;Pillendose&#8221; am linken Ende dient zur Aufnahme des Funkmoduls. Mit dessen Hilfe habe ich eine bidirektionale Telemetrie realisiert, um Kommandos an den Roboter zu senden und Daten von dort zu lesen. <!--more-->Als Funkmodul setze ich ein <a href=\"http:\/\/www.hoperf.com\/rf_fsk\/cob\/RFM12.htm\" target=\"_blank\">RFM12 von HopeRF<\/a> ein. Das bekommt man g\u00fcnstig bei <a href=\"http:\/\/www.pollin.de\/shop\/dt\/MDU5OTgxOTk-\/Bausaetze_Module\/Module\/Funkmodul_RFM12_433_Sende_Empfangsmodul.html\" target=\"_blank\">Pollin.<\/a> Das Modul kann sehr einfach per <a href=\"http:\/\/de.wikipedia.org\/wiki\/Serial_Peripheral_Interface\" target=\"_blank\">SPI<\/a> an einem <a href=\"http:\/\/www.atmel.com\/dyn\/products\/product_card.asp?part_id=4331\" target=\"_blank\">Atmega 1284<\/a> angebunden und betrieben werden. Ich habe mich daf\u00fcr entschieden, die PDIP Variante des Controllers zu verwenden um erst mal komplizierte SMD-Arbeiten zu vermeiden. Au\u00dferdem kann man die &#8220;through hole&#8221; Bauteile auf einer einfachen Rasterplatine &#8220;f\u00e4deln&#8221;, und sich somit erst mal die Investitionen und den Aufwand zur Platinenerstellung zu sparen. Die Basis des Roboters bildet ein <a href=\"http:\/\/www.conrad.de\/ce\/de\/product\/191152\/FAHRGESTELL-ROBBY-RP5-ROBOTER\/SHOP_AREA_37371&amp;promotionareaSearchDetail=005\" target=\"_blank\">Kettenfahrgestell von Conrad<\/a>.\u00a0 Es hat zwei Motoren und kann einen Akku-Pack aufnehmen. An den gro\u00dfen Zahnr\u00e4dern des Getriebes kann man eine Gabellichtschranke zur <a href=\"http:\/\/de.wikipedia.org\/wiki\/Odometrie\" target=\"_blank\">Odometrie<\/a> anbringen. Das Ritzel hat schon ein entsprechendes Loch, dass man verwenden kann. Oben habe ich ein einfaches <a href=\"http:\/\/www.reichelt.de\/Kunststoffgehaeuse-TEKO\/TEKO-10004\/index.html?;ACTION=3;LA=444;GROUP=C712;GROUPID=3354;ARTICLE=34076;START=0;SORT=artnr;OFFSET=16;SID=10ThBQJH8AAAIAACgNMCccca831d36a046dba2d2527e844fc5144\" target=\"_blank\">TEKO-Geh\u00e4use<\/a> von Reichelt aufgesetzt, um die Elektronik unter zu bringen.<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_534\" aria-describedby=\"caption-attachment-534\" style=\"width: 197px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-top.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-534\" title=\"franz-joseph-top\" src=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-top-197x300.jpg\" alt=\"Franz Joseph von Oben\" width=\"197\" height=\"300\" srcset=\"https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-top-197x300.jpg 197w, https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-top-673x1024.jpg 673w, https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-top.jpg 1350w\" sizes=\"auto, (max-width: 197px) 100vw, 197px\" \/><\/a><figcaption id=\"caption-attachment-534\" class=\"wp-caption-text\">Franz Joseph - Draufsicht<\/figcaption><\/figure>\n<p style=\"text-align: center;\">&nbsp;<\/p>\n<p>In der Draufsicht sieht man alle relevanten Komponenten. Ich habe das System in zwei Module geteilt. Oben im Bild ist das &#8220;Command- and Control Modul&#8221;. Dort ist das Funkmodul und der in der Mitte sichtbare Display angebunden. Die Anbindung ist \u00fcber Steckverbinder realisiert. Das hat beim Funkmodul den Sinn, dass das Modul mit dem Deckel abgenommen werden kann. Der Display dient dem Debugging beim Programmieren und kann im &#8220;Produktivbetrieb&#8221; entfernt werden. Den unteren Teil bildet die &#8220;Motorstufe&#8221;. Die Motorstufe hat einen eigenen <a href=\"http:\/\/www.atmel.com\/dyn\/products\/product_card.asp?part_id=2004\" target=\"_blank\">Atmega8 Controller<\/a>. Dieser k\u00fcmmert sich um das <a href=\"http:\/\/de.wikipedia.org\/wiki\/Pulsweitenmodulation\" target=\"_blank\">PWM<\/a> zur Leistungsregelung der Motoren, steuert die Relais zur Schaltung der Laufrichtung der Ketten, und wertet die Odometrie-Signale der Gabellichtschranken aus. Die Anbindung an das &#8220;Command- und Control Modul&#8221; erfolgt via <a href=\"http:\/\/de.wikipedia.org\/wiki\/I%C2%B2C\" target=\"_blank\">TWI\/I2C<\/a>. TWI ist ein sehr einfach zu handhabendes Protokoll um eine Kommunikation zwischen Microcontrollern zu realisieren. Das &#8220;Command- und Control Modul&#8221; kann also der Motorstrufe Kommandos senden bzw. Werte von Dieser lesen. Die Motorstufe kann dann selbstst\u00e4ndig agieren und z.B. die Geschwindigkeit halten. Oder \u00fcber einen Vergleich der Ketten-Laufzeiten sicherstellen, da\u00df das System gerade aus f\u00e4hrt. Geplant ist hier noch eine &#8220;Endschalter-Logik&#8221;, die der Motorstufe die Chance gibt eine Kollision zu erkennen und abzuschalten, bis weitere Kommandos des &#8220;Command- und Control Moduls&#8221; eintreffen. Auch k\u00f6nnte die Motorstufe das C&amp;C Modul via Interrupt informieren, dass ein Problem vorliegt. Ein Heartbeat stellt sicher, dass die Motorstufe nicht weiter agiert, wenn das C&amp;C Modul abgesemmelt ist. Kommt f\u00fcr eine gewisse Zeit kein &#8220;ping&#8221; vom C&amp;C Modul, schaltet die Motorstufe in Standby. Das PWM-Signal des Atmega wird \u00fcber zwei <a href=\"http:\/\/www.st.com\/stonline\/books\/pdf\/docs\/4189.pdf\" target=\"_blank\">BD235 Transistoren<\/a> verst\u00e4rkt und dann direkt auf die Motoren gef\u00fchrt. Die Signale der Gabellichtschranke werden mit einem <a href=\"http:\/\/de.wikipedia.org\/wiki\/Schmitt-Trigger\" target=\"_blank\">Schmitt-Trigger<\/a> aufbereitet und auf den Interrupt-Ports des Atmega8 gez\u00e4hlt. Der Baustein mit 4x Schmitt-Trigger ist auf der Motorstufe unten Links zu erkennen.<\/p>\n<p>Damit der Roboter auch auf seine Umwelt reagieren kann, braucht er weitere Sensorik. F\u00fcr eine grobe Erfassung von Hindernissen habe ich mich f\u00fcr <a href=\"http:\/\/de.wikipedia.org\/wiki\/Ultraschall\" target=\"_blank\">Ultraschall-Sensoren<\/a> entschieden. Zuerst habe ich versucht, auch diese Sensoren komplett selber zu bauen. Allerdings war das wesentlich komplizierter als ich dachte, und auch die Gr\u00f6\u00dfe der selbst gebauten L\u00f6sung hat mich letztlich dazu bewogen, die Sensoren zu zukaufen. Ich habe mich f\u00fcr <a href=\"http:\/\/www.shop.robotikhardware.de\/shop\/catalog\/product_info.php?products_id=168&amp;osCsid=46d93326b3da67f9ec061889cefcc841\" target=\"_blank\">SRF02-Module<\/a> entschieden. Die Sensoren haben eine TWI-Schnittstelle, mit der sie direkt an das C&amp;C Modul angebunden werden k\u00f6nnen. Au\u00dferdem sind die Module relativ g\u00fcnstig. Im folgenden Bild sieht man Franz Joseph von vorne. In der Mitte ist der Sensor angebracht. Oben rechts sieht man nochmal das Display-Modul. Das kann sehr g\u00fcnstig bei <a href=\"http:\/\/www.pollin.de\/shop\/dt\/NDU0OTc4OTk-\/Bauelemente_Bauteile\/Aktive_Bauelemente\/Displays\/LCD_Modul_HMC16223SG.html\" target=\"_blank\">Pollin<\/a> bezogen werden.<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_535\" aria-describedby=\"caption-attachment-535\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-vorne.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-535\" title=\"franz-joseph-vorne\" src=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-vorne-300x293.jpg\" alt=\"Franz Joseph von Vorne\" width=\"300\" height=\"293\" srcset=\"https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-vorne-300x293.jpg 300w, https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-vorne-1024x1003.jpg 1024w, https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/franz-joseph-vorne.jpg 1298w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-535\" class=\"wp-caption-text\">Franz Joseph - Vorderansicht<\/figcaption><\/figure>\n<p style=\"text-align: center;\">&nbsp;<\/p>\n<p>Hinten ist es identisch realisiert. Im Moment stecken die Sensoren noch in Papp-Ausschnitten. In\u00a0 der fertigen Version werden diese dann in den Alu-Frontplatten des Geh\u00e4uses eingebaut sein. Leider hat sich heraus gestellt, dass Ultraschall nicht besonders gut geeignet ist die Umgebung detailliert zu erfassen. Vor allem weil der Roboter an sich schon relativ klein ist, stellt sie schlechte Aufl\u00f6sung ein Problem dar. Eine gro\u00dfe Fl\u00e4che wie eine Wand oder eine T\u00fcre zu erkennen klappt gut. Schmalere Hindernisse wie z.B. Tisch- oder Stuhlbeine, aber auch niedrige Gegenst\u00e4nde wie ein Buch, sind ein echtes Problem.<\/p>\n<p>Um da zu einer besseren L\u00f6sung zu kommen habe ich\u00a0 ein Subprojekt mit optischen Distanzscannern gestartet. Im folgenden Bild sieht man einen Versuchsaufbau mit einem <a href=\"http:\/\/www.sharpsma.com\/webfm_send\/1487\" target=\"_blank\">Sharp GP2Y0A02YK0F<\/a>. Der Sensor ist auf einem Servo montiert, mit dem er um ca. 270 Grad gedreht werden kann. Die Steuerung des Servo und die Auswertung der analogen Distanzdaten des Sensors \u00fcbernimmt ein Atmega 8.<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_584\" aria-describedby=\"caption-attachment-584\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/optischer-sensor.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-584\" title=\"optischer-sensor\" src=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/optischer-sensor-300x147.jpg\" alt=\"Versuchsaufbau optischer Distanzsensor\" width=\"300\" height=\"147\" srcset=\"https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/optischer-sensor-300x147.jpg 300w, https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2011\/07\/optischer-sensor-1024x504.jpg 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-584\" class=\"wp-caption-text\">Versuchsaufbau optischer Distanzsensor<\/figcaption><\/figure>\n<p style=\"text-align: center;\">&nbsp;<\/p>\n<p style=\"text-align: left;\">Die Anbindung an das C&amp;C Modul soll dann wieder \u00fcber TWI\/I2C erfolgen. Im Bild sieht man, dass die Schaltung im Moment mit einem <a href=\"http:\/\/www.elv.de\/output\/controller.aspx?cid=74&amp;detail=10&amp;detail2=28776&amp;flv=1&amp;bereich=&amp;marke=\" target=\"_blank\">UART2USB Modul<\/a> direkt an den Rechner angebunden ist, um ein einfache Softwareentwicklung zu erm\u00f6glichen.<\/p>\n<p style=\"text-align: left;\">Weitere Probleme sind eine &#8220;Abgrunderkennung&#8221;, damit das Fahrzeug nicht direkt in den Tod f\u00e4hrt, wenn es sich z.B. einer Tischkante n\u00e4hert. Auch ein <a href=\"http:\/\/de.wikipedia.org\/wiki\/Beschleunigungssensor\" target=\"_blank\">Beschleunigungsensor<\/a> ist noch geplant um die Neigung des Fahrzeugs in 3 Achsen bestimmen zu k\u00f6nnen. <a href=\"http:\/\/de.wikipedia.org\/wiki\/Global_Positioning_System\" target=\"_blank\">GPS<\/a> habe ich angedacht, aber erst mal zur\u00fcck gestellt, da das Fahrzeug zu klein scheint um sinnvoll per GPS zu navigieren. Au\u00dferdem treibt es den Projektpreis deutlich in die H\u00f6he. Last but not least soll das Ding ja auch was k\u00f6nnen, sodass noch Sensoren f\u00fcr Druck, Feuchtigkeit und Temperatur ggf. ein CCD-Sensor an Bord sollen, damit ich dann unentdeckte Keller oder G\u00e4rten erforschen kann \ud83d\ude42<\/p>\n<p style=\"text-align: left;\">Vielleicht noch ein paar Worte zur Programmierung: Ich programmiere in C unter Linux. Es gibt dort <a href=\"http:\/\/gcc.gnu.org\/\" target=\"_blank\">avr-gcc<\/a> und <a href=\"http:\/\/www.nongnu.org\/avr-libc\/\" target=\"_blank\">avr-lib<\/a> als leistungsstarke Tools. Wer m\u00f6chte kann auch <a href=\"http:\/\/avr-eclipse.sourceforge.net\/wiki\/index.php\/The_AVR_Eclipse_Plugin\" target=\"_blank\">Eclipse<\/a> verwenden. Ich pers\u00f6nlich programmiere lieber ohne eine IDE, solange die Projekte noch \u00fcberschaubar sind. Zum flashen der Bausteine verwende ich <a href=\"http:\/\/www.nongnu.org\/avrdude\/\" target=\"_blank\">avrdude<\/a> \u00fcber die serielle Schnittstelle, sowie ein g\u00fcnstiges <a href=\"http:\/\/www.pollin.de\/shop\/dt\/NTI5OTgxOTk-\/Bausaetze_Module\/Bausaetze\/ATMEL_Evaluations_Board_V2_0_1_Fertigmodul.html\" target=\"_blank\">Devel-Board von Pollin<\/a>. Oder ich integriere ein ISP-Schnittstelle direkt in meine Schaltungen. Schaltpl\u00e4ne zeichne ich mit <a href=\"http:\/\/www.lis.inpg.fr\/realise_au_lis\/kicad\/\" target=\"_blank\">KiCAD<\/a>. Sollte ich sp\u00e4ter noch den Bedarf haben Platinen zu erstellen, kann das Layout auch mit KiCAD gemacht werden. Auf Debian oder Ubuntu k\u00f6nnen avr-gcc, avr-lib, avrdude und KiCAD einfach \u00fcber APT installiert werden.<\/p>\n<p style=\"text-align: left;\">Ich m\u00f6chte an dieser Stelle noch auf meinen Saleae <a href=\"http:\/\/www.saleae.com\/logic\/\" target=\"_blank\">USB-Logic-Analyzer<\/a> hinweisen. Das Ding ist wirklich eine Perle. Nicht nur, dass es super Linux-Software daf\u00fcr gibt. Es funktioniert auch prima und die Protokoll-Decoder sind bei der Fehlersuche auf TWI und SPI sehr hilfreich. Noch dazu ist das Ger\u00e4t wirklich g\u00fcnstig und die Lieferung aus England unproblematisch.<\/p>\n<p style=\"text-align: left;\">Soweit f\u00fcr Heute. Ich schreibe sicherlich noch weitere Detail-Artikel zu diesem und anderen Atmega-Projekten, wenn ich die Zeit dazu finde. Dann auch mit Source-Code und Funktionsbeweisen. Sollte mich jemand mit der Entwicklung eines neuen Mars-Rovers beauftragen wollen bitte melden \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich wollte mir schon immer mal ein kleines Labor einrichten, um mit Microcontrollern zu basteln. Nach 10 Jahren habe ich es jetzt endlich geschafft, da mal einen Knopf dran zu machen. Und es ist wirklich ein gro\u00dfer Spa\u00df. Mein erstes Projekt ist &#8220;Franz Joseph&#8221;, ein kleiner &#8220;autonomer&#8221; Roboter. Im folgenden m\u00f6chte ich Franz Joseph kurz &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.admindu.de\/wordpress\/?p=537\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Franz Joseph 1.0&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[44],"tags":[45,46,47],"class_list":["post-537","post","type-post","status-publish","format-standard","hentry","category-atmega-bastelei","tag-atmega-roboter-kettenfahrzeug","tag-avr-gcc-avrdude-avr-lib","tag-saleae-logic"],"_links":{"self":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/537","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=537"}],"version-history":[{"count":73,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/537\/revisions"}],"predecessor-version":[{"id":582,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/537\/revisions\/582"}],"wp:attachment":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}