Двухколесный балансирующий робот на Arduino
Шон Крэмтон (Shaun Crampton) продемострировал свой прототип двухколлесного балансирующего робота ArduRoller.
- Шасси - 2.7мм бамбуковая фанера
- Arduino Uno
- Драйвер мотора Sparkfun Ardumoto
- Два моторчика с редукторм 24:1
- Колеса 70mm
- Модуль гироскопа ADXRS613 Sparkfun, закреплен на оси вращения колес
- Акселерометр ADXL203CE, также закреплен на оси вращения колес
- Две батареи 3.7V Li-poly 850MAh
Видео можно посмотреть здесь, код и чертеж шасси на GitHub.
Автор писал код для Arduino не в Arduino среде, а в Eclipse, но код может быть скоприрован в обычный скетч Arduino. Сам код находится в файле main.cpp.
Код состоит из трех частей:
* setup()
* loop() the standard Arduino loop function, does nothing by default.
* ISR(TIMER1_OVF_vect) основная рабочая функция, вызываемая по прерыванию несколько сот раз в секунду.
Шон указал в пояснениях к исходника, что весь код потребовал долгой подборки "магических" значений переменных и констант. Некоторые из которых даже зависят от температуры окружающей, так как значения отдаваемые гироскопом могут "плавать".