Roboter mit dem 2-Rad Chassis.
Bilder und Videos - Komponentenliste/Elektronik - Software - STL Modelle - Kommentare
Kurzbeschreibung und Eigenschaften - Abstract and features
Um im Haushalt diverse Steuerungs- und Regelungsaufgaben erfüllen zu können, kommt man zwangsläufig nicht um einen fahrbaren Roboter herum.
Ein beliebter Bausatz ist dabei das 2-Rad Chassis, dass mit zwei DC-Motoren, zwei Rädern und einem Stützrad und Batteriehalter (4 x Mignon) als DIY Bausatz bestellt werden kann.
Nimmt man diesen Bausatz als Basis und addiert noch zusätzlichen Sensoren kann schnell ein sich selbst steuernder "Roboter" aufgebaut werden.
Als Elektronik kann dabei das Arduino UNO und Adafruit Motor Shield verwendet werden.
Das Adafruit Shield basiert auf dem H-Brücken Treiber L293D und kann bis zu vier DC Motoren oder zwei Schrittmotoren und zusätzlich zwei Servos ansteuern. 6 Analogeingänge als Pinnreihe auf dem Shield sorgen für notwendigen
Sensorschnittstellen.
Das Projekt wird in drei Aufbauschritte geteilt:
- 1. Schritt: Aufbau des Chassis mit UNO und Shield plus Ultraschall-Sensor für eine Distanzmessung. Mit Bluetooth Anbindung an das Smartphone. Fertig!
- 2. Schritt: Erweiterung mit optischen Encodern der Motoren, um eine Positionsmessung und genaue Drehung möglich zu machen. Fertig, Firmware folgt!
- 3. Schritt: Weitere Erweiterung mit Aktuatorik um Aufgaben umsetzen zu können. (z.B. Elektromagneten oder Servos)
- Gesamtkosten: < 40 Euro.
Aufbau Schritt 1:
Bilder und Videos - Figures and videos
Aufbau und erster Test: Schritt 1. |
Schritt 2: Encoder und die Geschwindigkeitsregelung mit PI-Regler.
Mit dem optischen Encoder ist nun eine Geschwindigkeits, Strecken und Drehwinkelregelung möglich. Über Interrupts an den Analogen Eingängen des UNOs können dabei Signal-Flanken erkannt und in eine aktuelle Geschwindigkeits oder
zurückgelegte Strecke umgerechnet werden. Vorteil ist, dass nun ein Geradeauslauf über eine PI Geschwindigkeits-Regelung umgesetzt werden kann. Des Weiteren kann erkannt werden, ob der Bot feststeckt, wenn der Ultraschallsensor ein
Hindernis nicht zuverlässig erkannt hat. Folglich kann dann eine Losreißfunktion umgesetzt werden.
Der PI-Regler wurde mit dem Faustformel-Verfahren nach Ziegler und Nichols parametrisiert (Kp und Ki Faktor):
- 1. Schritt: Ki = 0 setzen und Kp soweit erhöhen bis ein Schwingen mit Faktor Kp_krit im Regelkreis auftritt. Kp = 0,45 * Kp_krit
- 2. Schritt: Regelgröße (Geschwindigkeit) plotten und Schwingperiode T_krit ermitteln. Tn = 0,85 * T_krit. Das Plotten kann schnell über das Bluetooth modul und die kostenlose Andriod App Bluetooth Graphics durchgeführt werden.
- 3. Schritt: Ki = Kp/Tn
Und so sieht die Funktion aus:
error_R = targetValue - currentValue; //Regelabweichung berechnen
unsigned long now = millis(); //Aktuellen Zeitwert in ms ermitteln
double timeChange = (double)(now - lastTime_R); //Aktuellen Loopzeit fuer I-Anteil
errSum_R += (error_R*(float)timeChange)/1000.00; //I Anteil
errSum_R = constrain(errSum_R, -40.0, 60.0); //I Anteil limitiert, Anti Wind-up
/*Compute PID Output*/
PID_PWM_R = Kp * error_R + Ki * errSum_R + (float)Vorsteuerung;
lastTime_R = now;
return constrain(int(PID_PWM_R), 0, 255);
Komponentenliste und STL/OBJ Dateien - Bill of Material and STL/OBJ-files
3D-Modelle als STL-Datei
Bauteil/Item | Stk./Pcs | Hinweis/Hint |
---|---|---|
Halter für Ultraschall-Sensor | 8 | Ohne Neigungswinkel |
Halter für Ultraschall-Sensor | 8 | Mit Neigungswinkel 15° |
Komponentenliste
Bauteil/Item | Stk./Pcs | Hinweis/Hint | Link zum Händler/Dealer |
---|---|---|---|
Arduino UNO Klon | 1 | Ein Arduino Klon ist günstiger und tut's auch. Link zu den Win7/8 Treibern mit CH430 Treibern. |
|
USB Kabel für das UNO Board | 1 | ||
Adafruit Motor Shield Klon | 1 | Das China Klon ist wesentlich günstiger | |
2-Rad Chassis | 1 | Inkl. Räder, Motoren und Bateriehalter | |
Bluetooth Modul "CZ-HC-05" | 1 | Klasse 2, 10m Reichweite | |
An/Aus Schalter | 1 | ||
Mignon Batterie | 4 | Oder NiMH Akkus | |
Ultraschall Modul | 1 | HC-SR04 | |
Optische Encoder | 2 | mit Encoder Scheibe, für Schritt 2 |
Software/Toolkette - Toolchain
Firmware für Schritt 1:
Für den ersten Schritt benötigt mal neben der Firmware die folgenden Arduino IDE Libraries:
- Aktuelle Firmware Schritt 1 - für das Arduino UNO und Adafruit Motor Shield.
- Notwendige Bibliothek AFMotor - Zur Ansteuerung der DC Motoren.
- Notwendige Bibliothek NewPing - Zur Ansteuerung des Ultraschall Sensors.
Firmware für Schritt 2: Mit G-Code Befehlen und PI Reglung.
Für den nächsten Schritt habe ich G-Code ähnliche Befehle integriert, die über Bluetooth übermittelt werden können und helfen, den Bot sinnvoll zu steuern.
- G1Lyyy - Drehung Links mit Winkel yyy
- G1Ryyy - Drehung Rechts mit Winkel yyy
- G0xx - Bewegung nach vorne mit xx cm/sek
- M01 - Demo Modus: Der Bot bewegt dauerhaft mit 20 cm/sek und dreht im 90° Winkel per Zufallsprinzip in eine Richtung bei einem Hinderniss. Steckt der Bot fest, so wird zurück gesetzt und gedreht.
- Alle anderen Eingaben: Bot schaltet ab.