Benutzer-Werkzeuge

Webseiten-Werkzeuge


lemming-robo

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
lemming-robo [2016/07/26 21:07]
dokuwikiadmin [Quellcode]
lemming-robo [2020/08/17 09:41] (aktuell)
karl [Anleitung]
Zeile 9: Zeile 9:
  
 ---- ----
 +
 +===== Material-Sponsoren =====
 +^ IDC-Buchsenleisten \\ 4-polig, BestNr. 661 004 151 922 \\ 8-polig, BestNr. 661 008 151 922 | [[http://www.we-online.com|{{ :wifi-sensor:we.png?nolink&200 | Würth Elektronik}}]] |
 +^ Lithium-Batterien \\ 18650, 3.7V | [[http://nordfels.com/|{{ ::logo-nordfels.png?nolink&300 |Nordfels }}]] |
 +
 ===== Videos ===== ===== Videos =====
 <html> <html>
Zeile 58: Zeile 63:
 Um die Motoren in beide Richtungen drehen lassen zu können, wird ein [[https://de.wikipedia.org/wiki/Vierquadrantensteller|Doppel-H-Brücken-Modul]] verbaut. Es wird einerseits direkt mit 5V versorgt, und andererseits hat es 4 Eingangspins, mit denen jede der 4 Halbbrücken angesteuert wird. Der Arduino steuert diese mit einer [[https://de.wikipedia.org/wiki/Pulsweitenmodulation|Pulsweitenmodulation]] mit einer Frequenz von 1kHz an. Dadurch können die Motoren nicht nur schnell nach vorne und schnell nach hinten, sondern quasi stufenlos jede Geschwindigkeit fahren. Auch hier wurde eine Entstörmaßnahme verbaut: Die Ansteuerleitungen haben je einen Reihenwiderstand von 1kOhm integriert. Die H-Brücken sind nicht gerade besonders Rückwirkungsfrei, d.h. energiereiche Störungen von der Motorseite gelangen zurück auf die Ansteuerpins.  Um die Motoren in beide Richtungen drehen lassen zu können, wird ein [[https://de.wikipedia.org/wiki/Vierquadrantensteller|Doppel-H-Brücken-Modul]] verbaut. Es wird einerseits direkt mit 5V versorgt, und andererseits hat es 4 Eingangspins, mit denen jede der 4 Halbbrücken angesteuert wird. Der Arduino steuert diese mit einer [[https://de.wikipedia.org/wiki/Pulsweitenmodulation|Pulsweitenmodulation]] mit einer Frequenz von 1kHz an. Dadurch können die Motoren nicht nur schnell nach vorne und schnell nach hinten, sondern quasi stufenlos jede Geschwindigkeit fahren. Auch hier wurde eine Entstörmaßnahme verbaut: Die Ansteuerleitungen haben je einen Reihenwiderstand von 1kOhm integriert. Die H-Brücken sind nicht gerade besonders Rückwirkungsfrei, d.h. energiereiche Störungen von der Motorseite gelangen zurück auf die Ansteuerpins. 
  
-==== Beschleunigungs- und Drehratensensor ====+==== Lagesensor ====
 {{:lemming:08-imu.jpg?direct&200x200 | }} {{:lemming:08-imu.jpg?direct&200x200 | }}
 Dieses Sensormodul hat in einem Mikrochip gesamt 6 Sensoren integriert. Es kann in je 3 Achsen die Beschleunigung (Veränderungsrate der Geschwindigkeit, F=m*a oder a=dv/dt) und die Drehgeschwindigkeit messen. Es wird benötigt, um einerseits den aktuellen Kippwinkel zu berechnen, und andererseits um den Roboter auch geradeausfahren lassen zu können. Denn lenken tut der Robo ja durch unterschiedliche Drehgeschwindigkeiten der beiden Antriebsräder. Die laufen aber von hausaus schon ungleich, was dazu führt, dass der Robo ständig leichte Kurven fährt, wenn er geradeaus fahren soll. Ein einfacher Regelalgorithmus sorgt dafür, dass dies kompensiert wird, sodass die Drehgeschwindigkeit um die Hochachse ca. Null ist. 100 mal pro Sekunde werden die Messwerte erfasst und in der Software dann so weiterverarbeitet, dass der Robo aufrecht stehen bleibt, und auf Lenkbefehle richtig reagiert.  Dieses Sensormodul hat in einem Mikrochip gesamt 6 Sensoren integriert. Es kann in je 3 Achsen die Beschleunigung (Veränderungsrate der Geschwindigkeit, F=m*a oder a=dv/dt) und die Drehgeschwindigkeit messen. Es wird benötigt, um einerseits den aktuellen Kippwinkel zu berechnen, und andererseits um den Roboter auch geradeausfahren lassen zu können. Denn lenken tut der Robo ja durch unterschiedliche Drehgeschwindigkeiten der beiden Antriebsräder. Die laufen aber von hausaus schon ungleich, was dazu führt, dass der Robo ständig leichte Kurven fährt, wenn er geradeaus fahren soll. Ein einfacher Regelalgorithmus sorgt dafür, dass dies kompensiert wird, sodass die Drehgeschwindigkeit um die Hochachse ca. Null ist. 100 mal pro Sekunde werden die Messwerte erfasst und in der Software dann so weiterverarbeitet, dass der Robo aufrecht stehen bleibt, und auf Lenkbefehle richtig reagiert. 
Zeile 68: Zeile 73:
 ==== Arduino Nano ==== ==== Arduino Nano ====
 {{:lemming:07-arduino.jpg?direct&200 |}} {{:lemming:07-arduino.jpg?direct&200 |}}
-Als Herzstück, das all die Berechnungen und Steuerungen übernimmt, wird ein Arduino Nano verwendet. Man kann sich vorstellen, dass das ein ganzer Computer in klein ist. Er hat Ein- und Ausgabefähigkeiten, eine CPU (16MHz), Arbeitsspeicher (RAM, 2kByte) und quasi eine Festplatte (Flash-Speicher, 32kByte). Programmiert wird er über die USB-Schnittstelle. Auf dem PC braucht man das Arduino-Studio, um das Programm runterspielen zu können. +Als Herzstück, das all die Berechnungen und Steuerungen übernimmt, wird ein Arduino Nano verwendet. Man kann sich vorstellen, dass das ein ganzer Computer in klein ist. Er hat Ein- und Ausgabefähigkeiten, eine CPU (16MHz), Arbeitsspeicher (RAM, 2kByte) und quasi eine Festplatte (Flash-Speicher, 32kByte). Programmiert wird er über die USB-Schnittstelle. Auf dem PC braucht man die Arduino-IDE, um das Programm runterspielen zu können. 
  
 ===== Der Zusammenbau ===== ===== Der Zusammenbau =====
 ==== Anleitung ==== ==== Anleitung ====
-[[:lemming:fotos-anleitung|Foto-Galerie für den Zusammenbau (V3.3)]]+{{ ::lemming-anleitung-2020.pdf |Bauanleitung 2020 als PDF zum Ausdrucken}} \\ 
 +{{ ::lemming-anleitung-2019.pdf |Bauanleitung 2019 als PDF zum Ausdrucken}} \\ 
 +{{ ::lemming-anleitung-2017.pdf |Bauanleitung 2018 als PDF zum Ausdrucken}} \\ 
 +[[:lemming:fotos-anleitung|Foto-Galerie für den Zusammenbau (V3.3, veraltet)]] 
 + 
 ==== Werkzeugliste ==== ==== Werkzeugliste ====
 ^ Seitenschneider | für Draht, Widerstände, Kondensatoren, Schrumpfschlauch | ^ Seitenschneider | für Draht, Widerstände, Kondensatoren, Schrumpfschlauch |
Zeile 87: Zeile 97:
 ^ Heißluft | 200°C für Schrumpfschläuche | ^ Heißluft | 200°C für Schrumpfschläuche |
 ^ Computer | mit Arduino IDE für die Programmierung | ^ Computer | mit Arduino IDE für die Programmierung |
 +^ Schraubstock | zum Verpressen der Steckverbinder |
 +^ Labornetzgerät | für die Inbetriebnahme |
 ==== Verbrauchsmaterialien ==== ==== Verbrauchsmaterialien ====
 ^ Heißklebesticks | 10mm, ca. eine viertel Stange | ^ Heißklebesticks | 10mm, ca. eine viertel Stange |
-^ Lötzinn | 1mm +^ Lötzinn | 1mm, 1m |
-^ Isolierband | evt. für die 0.1Ω-Widerstände |+
 ^ Kabelbinder | 2x 350mm, 2x 200mm | ^ Kabelbinder | 2x 350mm, 2x 200mm |
 ^ Drähte | Radox 125, Litzendraht 0.25mm² grün, 0.5mm² schwarz \\ Radox 125 ist ein recht temperaturbeständiger Draht, sodass die Isolierung nicht schmilzt beim verlöten | ^ Drähte | Radox 125, Litzendraht 0.25mm² grün, 0.5mm² schwarz \\ Radox 125 ist ein recht temperaturbeständiger Draht, sodass die Isolierung nicht schmilzt beim verlöten |
Zeile 100: Zeile 111:
 {{:lemming_robo_schaltplan_3.3.pdf|V3.3}} {{:lemming_robo_schaltplan_3.3.pdf|V3.3}}
 ==== Quellcode ==== ==== Quellcode ====
-NEU: die Firmware ist nun auf GitLab zu finden: https://gitlab.com/KarlZeilhofer/LemmingRobo \\ +Die Firmware ist nun auf GitLab zu finden: https://gitlab.com/KarlZeilhofer/LemmingRobo \\
-alt: {{:lemming:lemming-robo-firmware-v1.0.7z|Arduino Quellcode}} \\+
 Zum programmieren und konfigurieren braucht man nur noch die kostenlose Entwicklungsumgebung [[https://www.arduino.cc/en/Main/Software|Arduino IDE]] \\ Zum programmieren und konfigurieren braucht man nur noch die kostenlose Entwicklungsumgebung [[https://www.arduino.cc/en/Main/Software|Arduino IDE]] \\
  
 +===== Software aufspielen =====
 +Schritt für Schritt Anleitung, wie du deine Firmware auf dem Lemming Robo aktualisieren kannst:
 +  * Arduino IDE installieren (Linux, Windows oder Mac)
 +  * Lemmings Arduino Nano mit einem USB-Kabel am PC anstecken
 +  * evt. Treiber installieren (enfällt jedenfalls auf Linux)
 +  * Arduino IDE starten
 +  * [[https://gitlab.com/KarlZeilhofer/LemmingRobo/repository/archive.zip?ref=Firmware|akutelle Firmware herunterladen]]((ACHTUNG: seit Juni 2016 wird der Lagesensor anders montiert! Daher funktioniert ein Robo aus 2015 nicht mehr mit der aktuellen Software. Minimale Änderungen im Code sind notwendig.)) und entpacken. 
 +  * mit der Arduino-IDE die Datei lemming-firmware.ino öffnen
 +  * unter Tools-Board: **Arduino Nano** auswählen
 +  * unter Tools-Processor: **ATmega328** auswählen
 +  * unter Port: den richtigen COM-Port auswählen (evt. ausprobieren), auf Linux: /dev/ttyUSB0
 +  * auf den Pfeil "upload" klicken, und zusehen, wie alles klappt. 
 +  * Wenn du Lust hast, kannst du versuchen, den Quellcode zu verändern, und sehen, wie der Robo sich dann anders verhält. Dazu empfehle ich den Editor **Sublime-Text**, den Git-Client **GitKraken** und einen Account bei GitLab. Für Fortgeschrittene empfehle ich **Eclipse CDT mit dem Arduino-Plugin**. 
 ===== Paramterjustierung ===== ===== Paramterjustierung =====
 Der Lemming Robo speichert seine Parameter im EEPROM des Arduinos ab. \\ Der Lemming Robo speichert seine Parameter im EEPROM des Arduinos ab. \\
-Diese können über ein Terminal-Programm (Text-basierte Ein-/Ausgabe) verändert werden. \\  +Diese können über Arduino Serial Monitor (Tools -> Serial Monitor, Text-basierte Ein-/Ausgabe) verändert werden. \\ 
-Für Windows kann ich [[http://www.der-hammer.info/terminal/|hterm]] sehr empfehlen.  +
- +
-{{:lemming:hterm-screenshot.png?direct&500|}}+
  
   - Stromversorgung des Robos einstecken.    - Stromversorgung des Robos einstecken. 
   - USB-Kabel an Lemming-Robo (am Arduino, nicht am Laderegler) und PC anstecken   - USB-Kabel an Lemming-Robo (am Arduino, nicht am Laderegler) und PC anstecken
-  - hterm starten +  - Arduino IDE starten 
-  - "richtigen" COM-Port auswählen, das ist evt. eine Probiererei \\ hier muss man evt. auch auf **R** klicken, um die Leste der COM-Ports zu aktualisieren. +  - "richtigen" COM-Port auswählen, das ist evt. eine Probiererei  
 +  Tools -> Serial Monitor
   - Baudrate auf 115200 einstellen   - Baudrate auf 115200 einstellen
-  - LF (line feed) oben und unten wie im Screenshot zu sehen auswählen.  
-  - Auf "Connect" links oben klicken.  
  
 Nun können Befehle gesendet werden.   Nun können Befehle gesendet werden.  
Zeile 156: Zeile 175:
   * Passen die Parameter, müssen diese mit dem Befehl **S** gespeichert werden.    * Passen die Parameter, müssen diese mit dem Befehl **S** gespeichert werden. 
   * Nun USB-Kabel trennen, und den Robo resetten.    * Nun USB-Kabel trennen, und den Robo resetten. 
 +
 +{{tag>lemming robotik kicad segway arduino regelung video deutsch}}
  
lemming-robo.1469560067.txt.gz · Zuletzt geändert: 2016/07/26 21:07 von dokuwikiadmin