Воскресенье, 21 Февраль 2016 15:06

Робот-машинка на Arduino. Плата и первый запуск.

Автор
Оцените материал
(4 голосов)

Печатную плату для машинки – робота я сделал пока в предварительном варианте.  По большому счёту, можно пока обойтись и без неё, соединив всё на макетной плате.  Но на нормальной плате всё-таки удобней, так что вот она:

 

схема робота машинки

Как видите, все её функции – это разводка от Arduino до переходников (питания, на двигатели, на датчики положения колёс, УЗ дальномер и серводвигатель).  Я сразу предусмотрел, что мне может понадобиться подключить к Arduino что-то заранее не предусмотренное – поэтому сделал площадку с «пятаками», к которым можно припаять какой угодно разъём или микросхему. 4 из них уже и использовал – для разъёма на энкодеры колёс.

разъемы на плате машинки робота на Arduino

Ну, и ещё на ней размещена микросхема драйвера для двигателей – L293DNE. Функция этой микросхемы – подавать ток на двигатели с нужной полярностью. Дело в том, что невозможно подключить двигатель к Arduino напрямую: потребляемый им ток гораздо больше максимально допустимого тока через порт микроконтроллера, и Arduino быстро прикажет долго жить. Если бы двигатель должен был вращаться только в одном направлении – можно было бы обойтись в качестве драйвера обычным транзистором.  А через L293DNE можно не только включать-выключать двигатель, но и  менять направление тока через него (соответственно, направление вращения). А благодаря наличию управляющего входа ENABLE, совместимого с ШИМ (PWM) сигналом – можно быстро менять текущую мощность двигателя.

Плата односторонняя, разведена в Proteus 7.8. Дорожки, обозначенные на слое Top copper, сделаны перемычками. По углам платы просверлил отверстия 3 мм, в них закрепил стойки и прикрепил к шасси машинки.

PCB back

Плату я после всех экспериментов переделаю, и первое, что сделаю – заменю Arduino UNO на Mini Pro – она дешевле, её можно один раз впаять и оставить.

Питание робота решил сделать от двух литий-ионных аккумуляторов формата 14500, помещенных в стандартный отсек для пальчиковых батареек. Аккумуляторы соединены последовательно, что даёт 8 вольт в заряженном состоянии. Эти 8 вольт идут на плату, оттуда – на вход «Vin» Arduino, а на нём встроенный 5-вольтовый стабилизатор выдаёт 5 вольт, которые используются также для питания логики.

Ну вот, как-то так. Соединил, написал простенький скетч:

void setup(){
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode (10,INPUT);
pinMode (11,INPUT);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
Serial.begin(9600);
analogWrite(3,80); // right motor PWM
analogWrite(5,200);// left motor PWM
}

void loop(){
delay(1000);
goForward();
delay(2000);
stopTheCar();
delay(1000);
TurnLeft();
delay(1000);
goBack();
delay(2000);
stopTheCar();
delay(500);
TurnRight();
delay(1000);
stopTheCar();
}

void LeftWheelForward(){
digitalWrite(6,LOW); //rotate left wheel
digitalWrite(7,HIGH);
}
void LeftWheelBack(){
digitalWrite(6,HIGH); //rotate left wheel back
digitalWrite(7,LOW);
}
void RightWheelForward(){
digitalWrite(2,LOW); //rotate right wheel
digitalWrite(4,HIGH);
}
void RightWheelBack(){
digitalWrite(2,HIGH); //rotate right wheel back
digitalWrite(4,LOW);
}
void stopRightWheel(){
digitalWrite(2,LOW); //stop right wheel
digitalWrite(4,LOW);
}
void stopLeftWheel(){
digitalWrite(6,LOW); //stop left wheel
digitalWrite(7,LOW);
}
void goForward(){
LeftWheelForward();
RightWheelForward();
}
void goBack(){
LeftWheelBack();
RightWheelBack();
}
void TurnLeft(){
stopLeftWheel();
RightWheelForward();
}
void TurnRight(){
stopRightWheel();
LeftWheelForward();
}

void stopTheCar(){
stopRightWheel();
stopLeftWheel();
}

 

Если кому-то программирование Arduino в новинку – я снял видео, где объясняю логику работы программы:

Машинка ездит! Вперёд-назад, поворачивает… Первые шаги, конечно, далеки от совершенства: ездит криво из-за разной мощности моторов, несмотря на разную скважность ШИМ, поданного на них. Но это потому что пока нет обратной связи от датчиков оборотов колёс – чем и займусь в следующий раз. А пока – вот видео с кривым движением робота:

А скачать архив со схемой платы робота-машинки и скетчем для Arduino можно по этой ссылке.

Прочитано 2593 раз Последнее изменение Воскресенье, 21 Февраль 2016 07:20
Авторизуйтесь, чтобы получить возможность оставлять комментарии