Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projekte:projektideen:selbstbalancierender_roboter [2014-02-15 06:32] root [Mögliche Probleme] |
projekte:projektideen:selbstbalancierender_roboter [2014-02-16 00:00] (aktuell) |
||
---|---|---|---|
Zeile 36: | Zeile 36: | ||
==== Temporäre Pinbelegung (mit L298N) ==== | ==== Temporäre Pinbelegung (mit L298N) ==== | ||
- | - 4x PWM für die Motoren: 3, 9, 10, 11 | + | - 4x PWM für die Motoren: 5, 6, 10, 11 |
- I2C für den 6dof Sensor: A4, A5 | - I2C für den 6dof Sensor: A4, A5 | ||
- UART für Bluetooth: 0, 1 | - UART für Bluetooth: 0, 1 | ||
- | - 4x GPIO Pin für die Drehencoder: zB 2, 4, 7, 8 | + | - 4x GPIO Pin für die Drehencoder: 2 und 3 (Interrupts), 7, 8 |
- | - bis jetzt frei: 2x PWM (5, 6), 2x GPIO (12, 13), 4x ADC (A0, A1, A2, A3) | + | - bis jetzt frei: 1x PWM (9), 3x GPIO (4, 12, 13), 4x ADC (A0, A1, A2, A3) |
Mit einem der Analogpins könnten wir noch einen Akkusensor bauen, damit sich der Roboter bei zu niedriger Spannung abschaltet. | Mit einem der Analogpins könnten wir noch einen Akkusensor bauen, damit sich der Roboter bei zu niedriger Spannung abschaltet. | ||
- | |||
- | ==== Mögliche Probleme ==== | ||
- | |||
- | Wenn die CPR Encoder über Interrupts ausgelesen werden, kann es passieren, dass sich die Interrupts | ||
- | gegenseitig in's Gehege kommen. Kurze Berechnung: | ||
- | |||
- | - Pro Umdrehung eines Rades gibt es 1856 Takte | ||
- | - 3712 Änderungen pro Umdrehung | ||
- | - Bei einer Umdrehung pro Sekunde: 4310 Takte zwischen Interrupts (pro Rad) | ||
- | - Bei einer ISR Länge von etwa 50 Takten gibt es dann eine Warscheinlichkeit von | ||
- | (50/4310)^2 = 0.013%, dass sich die Interrupts in die Quere kommen. | ||
- | - Bei 100 Takten (oder zwei Radumdrehungen pro Sekunde) dementsprechend 0.054% | ||
- | |||
- | Folgerung: Falls die Interrupt Routinen schnell genug sind, sollte es funktionieren... falls nicht, | ||
- | können wir einen separaten µC dafür hernehmen, der dann die Positionen per I2C liefert ;) | ||
~~DISCUSSION~~ | ~~DISCUSSION~~ |