AVR и Arduino

Библиотеки Arduino. Zumo Motors.

  • Печать

Библиотека Zumo Motors предназначена для организации управления скоростью вращения ходовых электродвигателей компактного робота ZUMO при использовании платы ZUMO Shield. Найти исходные тексты для Arduino IDE можно через официальный сайт pololu.com.

Основу ZUMO Shield составляет микросхема DRV8835, выпускаемая Texas Instruments. Данный драйвер позволяет управлять двумя двигателями постоянного тока, работающими при напряжении от 2 до 11 вольт. Максимальный ток для одного мотора может достигать 1.5А. Для работы с DRV8835 в составе ZUMO Shield и используется  Zumo Motors.

В состав библиотеки входит пять функций:

  • задание скорости правого двигателя
  • задание скорости левого двигателя
  • задание скорости обеих двигателей
  • настройка направления вращения правого двигателя
  • настройка направления вращения левого двигателя

При использовании библиотеки не требуется выполнять никаких настроек. Достаточно только инициализировать соответствующий класс. Все номера выводов прописаны внутри кода под используемую плату ZUMO Shield. Упрощение структуры программы при этом оборачивается невозможностью использовать Zumo Motors в других проектах без доработок. Также следует учесть, что данная библиотека для организации ШИМ использует таймер timer1 микроконтроллера.

Управление скоростью одного двигателя.

Управление скоростью одного из двигателей осуществляется с помощью функций:

void setLeftSpeed(int speed);  /* Левый двигатель */

void setRightSpeed(int speed); /* Правый двигатель */

Параметр speed задает скорость вращения. Диапазон задания от -400 до 400. Знак минус перед числом меняет направление вращения на противоположное. Точное число оборотов зависит от модели двигателя и напряжения элементов питания. 

Управление скоростью двух двигателей.

void setSpeeds(int leftSpeed, int rightSpeed);

Параметры leftSpeed и rightSpeed имеют точно такой же смысл, что и speed в предыдущих функциях, только для левого и правого двигателя соотвтетственно.

Настройка направления вращения

При сборке робота ZUMO возможна неправильная распайка полярности двигателей. В этом случае при задании вращения вперед, мотор будет крутиться в обратном направлении и наоборот. Данная ситуация легко разрешается программно с помощью функций:

void flipLeftMotor (boolean flip);

void flipRightMotor (boolean flip);

При задании параметра flip равного true, произойдет программная смена полярности, и двигатель будет воспринимать команды правильным образом.

Пример использования библиотеки. 

#include <ZumoMotors.h>

ZumoMotors motors;  /* Инициализация класса motors */

void setup()

{

}

/* Основной цикл */

void loop()

{

  motors.setLeftSpeed(200);   /* Скорость левого двигателя 200. Поворот. */

  delay(500);

  motors.setRightSpeed(200);  /* Скорость правого двигателя  200. Левый не остановлен, поэтому движение прямо. */

  delay(500);

  motors.setSpeeds(100,100);  /* Скорость обеих двигателей  100. Замедленное движение. */

  delay(1000);

  motors.setSpeeds(-200,-200);  /* Скорость обеих двигателей  -200. Обратное движение. */

  delay(500);

  motors.setSpeeds(0,0);  /* Скорость двигателей  0. Останов. */

  delay(1500);

}