VTMotor - альтернативная прошивка для платы Seeedstudio Grove - I2C Motor Driver

Обновлено 13.02.2013

English version of the article

seeedstudio Grove i2c motor driver

Прошивка платы

Мне досталась более старая версия платы v1.1. В ней перепутаны подписи к выводам SCK и MOSI. Eсли ваш программатор не находит плату, то попробуйте поменять их местами
Позже постараюсь выложить картинку.

Добавление задержек - плохое решение проблемы

Плату я подключаю к роботу. Работает он под Linux. Шина i2c там реализована посредством драйвера i2c-gpio. Для тестирование использую утилиту i2cdetect, которая пробегает по всем адресам и показывает список присутствующих устройств.

Так вот, после первого обращение к плате управления двигателями, шина i2c умирает, и уже невозможно связаться с другими устройствами.
Обновление прошивки тоже мало что меняет. Устройство начинает отзываться на другой адрес, но работает ещё хуже: то совсем не отзывается, то вешает шину.

В документации написано, что в arduino-0019 плата работает, а начиная с версии arduino-0022 нужно добавить задержку в конце Wire.endTransmission().
Но копаться в коде утилиты i2cdetect и вставлять там задержку - не самое лучшее решение.
Поэтому я и решил написать свою альтернативную прошивку.

Альтернативная прошивка VTMotor

Прошивка написана с использованием библиотеки AVR Libc (для Linux). Под Windows должно работать с WinAVR, но сам я её не использовал.

Прошивка позволяет управлять двумя двигателями с использование программного ШИМ. Частота ШИМ составляет 200 Гц. Выбор частоты ШИМа пока не поддерживается.

Сотрудничество

Рад буду услышать ваши отзывы об использовании. Также, если у вас есть желание как-то улучшить данную прошивку - с радостью готов с вами сотрудничать. Пишите на Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript..

Система комманд

Адрес I2C устройства на шине 0x28.

Устройство работает в коммандном режиме (возможно когда-то появится и регистровый режим). За одну посылку передаётся комманда и её аргументы.

Комманда Код комманды Аргумент 1 Аргумент 2 Пояснение
DRV_WHO_AM_I 0x10 - - Проверка существование устройство. Устройство должно вернуть код 0x47
DRV_DRV_ENABLE 0x11 - - Включить драйвер
DRV_DRV_DISABLE 0x12 - - Выключить драйвер (По умолчанию).
DRV_SET_SPEED 0x13 byte. Скорость левого двигателя byte. Скорость правого двигателя значения от 0 до 100. (по умолчанию: 0)
DRV_SET_DIRECTION 0x14 byte. Направление левого двигателя byte. Направление правого двигателя 0x0 - вперёд; 0x1 - назад (по умолчанию: вперёд)

Загрузить прошивку

Изменения:

* v1.1. Добавлена поддержка платы v1.2, которая имеет другую распиновку.

Последняя стабильная версия (бинарная прошивка + исходники):

VTMotor v1.1 13.02.2012 

Репозиторий для разработки:

https://github.com/vitperov/VTMotor

Участники проекта

Vitaly Perov

Denis Morin

Добавить комментарий