Ziel
Roboter aus einfachen, günstigen Komponenten, mit Arduino, batteriebetrieben. Modular und flexibel.
Komponenten
Batterie
Ikea hat günstige NiMH Batterien (4x 2400mAh für 7.-, 500 Ladungen), oder 4x 1000mAh für 4.- (1500 Ladungen). 6-fach AA-Batteriefach, betrieben mit 6 NiMH AA-Batterien. Spannung zwischen 6.5V und 8V, je nach Ladung und Belastung. Laut http://www.powerstream.com/AA-tests.htm sollten diese Batterien auch bei 2A noch 1.1V liefern. Der Roboter sollte kaum mehr als 1A ziehen.
Wahrscheinlich habe ich einfach zu billige Akkus… Spannung bricht auf unter 5V zusammen, Arduino stellt ab, reset etc…
Vorschlag: 4-fach AA plus Boost-Converter, wie z.B. dieser. Stark genug? Zu testen…
Sonst tut wohl dieses gute Dienste.
Spannungswandler
Mit vollen Batterien, halbwegs ok. Sonst Spannungsabfall…
DC-Motoren werden direkt ab Batterie versorgt. Arduino über Vin mit 7V. Kleine 5V und 3.3V Komponenten ab Arduino. Für grössere 5V-Komponenten (z.B. Servo), evtl. zusätzlich ein Buck-Converter, z.B. 3A, 1.2V Dropout, regelbar.
Alternative: LM298 Dual H-Bride mit 5V Output, (allerdings kein Buck-Konverter).
Variante
4x AA-Batterien, Step-Up auf 5V, Motoren direkt an Batterie.
Arduino über USB-Kabel an Wandler: Sicherung plus Trennung beim Programmieren.
Hauptschalter
Arduino
Standard oder Mega 2560 (evtl. sechs pins motoren, 8 für motor sensoren…)
Anschlüsse
Als Stecker zusammenlöten (z.B. Motorensteuerung, Decoder).
Besser: Female pins auf Bauteilen.
Port-Expander
Optional: MCP23016, bis 25mA per Pin, in beide Richtungen
Motoren und Räder
z.B. diese
Hinterrad: Hinterrad. Auch zu finden unter "furniture caster".
H-Brücke, Driver
z.B. die hier. Bis 0.8A (max 2x 0.25A = 0.5A wird benötigt). Frisst 2.5V bis 12V.). Möglichkeit via step-up Converter auf 5V zu betreiben.
Besser: ab 2V, bis 1.5A
Erste Tests mit 9110 basiertem Board ok, wird schon etwas heiss, wenn man den Motor blockiert. gleich aber günstiger.
Wird auch beim Blockieren kaum warm. Handlicher geht's kaum mehr
Sensoren
CHANGE Interrupts sind auf allen pins möglich, ein bis zwei Sensoren per Rad.
Lichtschranke als fertiges Board
Encoder Disc und noch günstiger
handliche Lichtschranke, mit Schraubenlöchern (10 Stück bestellt).
IR / US Distanz
Fix fertig oder Eigenbau
Counter-IC? Quadrature decoder?
Siehe z.B. hier.
PCBs
2x8 boards oder diese
Gestell
3mm Acrly, Eigenbau. Steckbare Halterungen für Arduino, ICs etc.
Evtl. zweistöckig.
Schrauben, Winkel etc.
1 Typ Schrauben M3 (Motoren). Lochgröse auf Platinen: 3mm passt.
Go Nuts
M3: 8mm, z.B. diese
z.B. Washers 3mm
Kabel, Drähte
Flexible Drähte (28AWG ok), Drähte für Motoren: 28AWG ginge auch noch, besser aber 24.
Dupont lines für den Rest.
Flexible kleine Drähte für Rest.
Optionale Komponenten
Software
Interrupts für Motorendecoder. Einfachste Variante, 1 Sensor, steigende Flanke: 200rp → 32 Hz mal 20 Löcher → 640 Hz maximal Luxus-Variante Quadrature Encoder: 200rpm → 32 Hz mal 20 Löcher * 4 → 2560 Hz maximal
PWM für Motoren (2 pins) (Reicht 1kHz PWM Frequenz)?
Timer-Interrupts für Motorensteuerung? Pro: kein Polling. Cons: Stört u.U. den decoder. Einfache PI-Regler (Regelgrösse s oder v).
Mathematik
- Batterie mit Spannung $U_B$ ohne Last (variabel aber messbar). Innerer Widerstand $R_B$ (variabel, muss geschätzt/angepasst werden).
- Motor mit Widerstand $R_M$ (messbar, zwischen 3 und 5 $\Omega$), Induktivität $L_M$ (wie messen?) und Konstante $K$ für “Back-EMF” (Gegenspannung $K \dot{\vartheta}$). Trägheitsmoment $J_M$ und Reibungskoeffizient $b$ (kann nur abgeschätzt werden).
- Strom $I$.
Summe der Spannungen ist Null: $$ U_B - R_B\cdot I - R_M\cdot I - L_M \cdot \frac{\mathrm{d}I}{\mathrm{d}t} + K \omega = 0 $$
Bewegungsgleichung (Drehgeschwindigkeit $\omega$) $$ K \cdot I = J_M \cdot \frac{\mathrm{d}\omega}{\mathrm{d}t} + b \omega $$