цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Робот на основе Arduino. Часть III – подключение, программирование и пробный пуск

Робот на основе Arduino. Часть III – подключение, программирование и пробный пуск

Автор: Mike(admin) от 1-05-2014, 07:13

Сделать робота стоимостью $50 очень просто. Мы уже поговорили про управление моторами робота и про его механические части. Теперь нужно связать всё воедино и запрограммировать электронику.


Робот на основе Arduino

Соединения


Для правильного соединения Arduino, драйвера TB6612FNG, двигателей и держателей батареек желательно использовать приведенную ниже таблицу.


Таблица соединений для робота на основе Arduino

Код


Теперь мы можем проверить базовую функциональность нашего робота, поэтому для начала напишем небольшой фрагмент кода. Чтобы сохранить функцию main практически нетронутой, создадим для каждого базового движения свою функцию. Для понимания принципа работы приведем таблицу логики управления из документации на драйвер TB6612FNG.


Таблица принципа работы драйвера TB6612FNG


/* Определить разводку выводов Arduino в соответствии с физическими соединениями */
#define PWMA 3
#define AIN1 0
#define AIN2 1
#define PWMB 5
#define BIN1 2
#define BIN2 4
#define STBY 6
 
void setup() {
 
/* Настроить все 7 выводов на выходы, идущие к драйверу TB6612FNG */
pinMode(PWMA,OUTPUT);
pinMode(AIN1,OUTPUT);
pinMode(AIN2,OUTPUT);
pinMode(PWMB,OUTPUT);
pinMode(BIN1,OUTPUT);
pinMode(BIN2,OUTPUT);
pinMode(STBY,OUTPUT);
 
}
 
void loop() {
   
  startUp();
  goForward();
  delay(5500);
  turnAround();
  goForward();
  delay(5500);
  turnAround();
  goBackward();
  delay(5500);
  rotateLeft();
  delay(560);
  rotateRight();
  delay(560);
  goForward();
  delay(3000);
  applyBrakes();
  delay(2000);
  }
 
/* Определение функций */
/* Опытным путем было выяснено, что при коэффициенте ШИМ равном 233 */
/* для левого двигателя и 255 для правого позволяют роботу */
/* двигаться по прямой на полной скорости. Тесты показали, что робот */
/* совершает 27 оборотов вокруг своей оси в минуту при вращении двигателей */
/* в противоположные стороны при полном заполнении ШИМ. Эта величина  */
/* была использована для определения времени, */
/* за которое робот повернется на 90, 180 и 360 градусов. */
 
void goForward ()
{
  digitalWrite (AIN1,HIGH);
  digitalWrite (AIN2,LOW);
  analogWrite(PWMA,234);
  digitalWrite (BIN1,HIGH);
  digitalWrite (BIN2,LOW);
  analogWrite(PWMB,255); 
}
 
void goBackward ()
{
  digitalWrite (AIN1,LOW);
  digitalWrite (AIN2,HIGH);
  analogWrite(PWMA,233);
  digitalWrite (BIN1,LOW);
  digitalWrite (BIN2,HIGH);
  analogWrite(PWMB,255); 
}
 
void rotateRight ()
{
  digitalWrite (AIN1,HIGH);
  digitalWrite (AIN2,LOW);
  analogWrite(PWMA,255);
  digitalWrite (BIN1,LOW);
  digitalWrite (BIN2,HIGH);
  analogWrite(PWMB,255); 
}
 
void rotateLeft ()
{
  digitalWrite (AIN1,LOW);
  digitalWrite (AIN2,HIGH);
  analogWrite(PWMA,255);
  digitalWrite (BIN1,HIGH);
  digitalWrite (BIN2,LOW);
  analogWrite(PWMB,255); 
}
 
void veerLeft ()
{
  digitalWrite (AIN1,HIGH);
  digitalWrite (AIN2,LOW);
  analogWrite(PWMA,190);
  digitalWrite (BIN1,HIGH);
  digitalWrite (BIN2,LOW);
  analogWrite(PWMB,255); 
}
 
void veerRight ()
{
  digitalWrite (AIN1,HIGH);
  digitalWrite (AIN2,LOW);
  analogWrite(PWMA,255);
  digitalWrite (BIN1,HIGH);
  digitalWrite (BIN2,LOW);
  analogWrite(PWMB,190); 
}
 
void applyBrakes ()
{
  digitalWrite (AIN1,HIGH);
  digitalWrite (AIN2,HIGH);
  analogWrite(PWMA,255);
  digitalWrite (BIN1,HIGH);
  digitalWrite (BIN2,HIGH);
  analogWrite(PWMB,255); 
}
 
void startUp ()
{
  digitalWrite(STBY,HIGH);
}
 
void turnAround()
{
  rotateLeft();
  delay(1370);
}
 
void shutDown ()
{
  digitalWrite(STBY,LOW);
}

Пробный пуск


Хотя робот еще слеп и глух, но он может уже совершать определенные движения. Вот как это выглядит:



В следующий раз мы добавим роботу ультразвуковой датчик, чтобы он мог ориентироваться в пространстве.




Робот на основе Arduino. Часть I – управление двигателями


Робот на основе Arduino. Часть II – шасси, средства передвижения и питание


Робот на основе Arduino. Часть IV – ультразвуковой датчик HC-SR04




Перевод © digitrode.ru


<Источник>


Теги: Arduino, робот, HC-SR04




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий