В этой статье я расскажу об электронике установленной на мою новую платформу. Также здесь приведен простой тестовый скетч.
Фотография робота
Сейчас управление роботом возложено на Arduino UNO
Для более комфортной работы с ардуино, используется Arduino Sensor Shield v5.0
Драйвер двигателей на L298N
Закреплено всё на нейлоновых стойках
Источником энергии служит аккумулятор LiPo 3S 1600mAh
Компактные, легкие, ёмкие. Но пожароопасные и взрывоопасные.
Хранить и заряжать их следует в специальных защитных пакетах.
Литий полимерные аккумуляторы настоятельно не рекомендуется эксплуатировать без специальных устройств контроля напряжения
Литий полимерные аккумуляторы, зарядные устройства для них и прочее связанное с литиевыми аккумуляторами лучше покупать на https://hobbyking.com/
Последствия неправильного обращения с литиевыми аккумуляторами можно увидеть на http://youtube.com/ Ищите по ключевым словам lipo и fire.
Подключается всё в соответствии с изложенными ниже инструкциями.
arduino uno --- motor driver
D9 --- IN4
D10 --- IN3
D11 --- IN2
D12 --- IN1
motor driver --- left motor
OUT3 --- M1 (зеленый провод)
OUT4 --- M2 (черный провод)
motor driver --- right motor
OUT2 --- M1 (зеленый провод)
OUT1 --- M2 (черный провод)
motor driver --- battery (12V)
GND --- минус батареи (черный провод)
+12V --- плюс батареи (красный провод)
На батарее используется разъем XT60
Мне паять было лень и я подключил батарею через маленькие крокодильчики. Ток небольшой. Всё работает. Но нужна осторожность. Если устроить короткое замыкание литиевой батарее, то мало не покажется.
К ардуино батарея подключается через Power Plug Connector Adapter 2.1*5.5 mm
Точных измерений я не проводил. Однако некоторые приблизительные расчеты думаю следует привести.
При потреблении 350 миллиампер одним двигателем, получится 1400 миллиампер для четырех моторов. Если остальной электронике отвести 200 миллиампер, в сумме будет 1600 миллиампер. С аккумулятором на 1600mAh робот сможет непрерывно передвигаться около часа.
Аккумулятор способный отдать большой ток, вроде использованного мной, не нужен. Если бы я покупал аккумулятор специально для этой платформы, то взял бы Zippy LiFePo4 3s 9.9v 1800mAh 5c. Эти аккумуляторы более безопасны.
Скетч
Выполняется программа следующим образом. После подачи питания робот стоит на месте четыре секунды. Затем робот едет вперед две секунды. Останавливается и стоит одну секунду. Затем едет назад две секунды. Останавливается и снова стоит одну секунду. Дальше робот поворачивает направо в течении двух секунд. Затем стоит одну секунду. Потом поворачивает налево в течении двух секунд. Опять останавливается на одну секунду. И всё повторяется начиная с движения вперед.
Этот скетч дает возможность визуально оценить скорость движения, скорость поворота.
Платформа получилась более быстрой, чем хотелось. Нужно будет её немного замедлить.
И таки да. Это уже настоящий мобильный робот.
Фотография робота
Сейчас управление роботом возложено на Arduino UNO
Для более комфортной работы с ардуино, используется Arduino Sensor Shield v5.0
Драйвер двигателей на L298N
Закреплено всё на нейлоновых стойках
Источником энергии служит аккумулятор LiPo 3S 1600mAh
Компактные, легкие, ёмкие. Но пожароопасные и взрывоопасные.
Хранить и заряжать их следует в специальных защитных пакетах.
Литий полимерные аккумуляторы настоятельно не рекомендуется эксплуатировать без специальных устройств контроля напряжения
Литий полимерные аккумуляторы, зарядные устройства для них и прочее связанное с литиевыми аккумуляторами лучше покупать на https://hobbyking.com/
Последствия неправильного обращения с литиевыми аккумуляторами можно увидеть на http://youtube.com/ Ищите по ключевым словам lipo и fire.
Подключается всё в соответствии с изложенными ниже инструкциями.
arduino uno --- motor driver
D9 --- IN4
D10 --- IN3
D11 --- IN2
D12 --- IN1
motor driver --- left motor
OUT3 --- M1 (зеленый провод)
OUT4 --- M2 (черный провод)
motor driver --- right motor
OUT2 --- M1 (зеленый провод)
OUT1 --- M2 (черный провод)
motor driver --- battery (12V)
GND --- минус батареи (черный провод)
+12V --- плюс батареи (красный провод)
На батарее используется разъем XT60
Мне паять было лень и я подключил батарею через маленькие крокодильчики. Ток небольшой. Всё работает. Но нужна осторожность. Если устроить короткое замыкание литиевой батарее, то мало не покажется.
К ардуино батарея подключается через Power Plug Connector Adapter 2.1*5.5 mm
Точных измерений я не проводил. Однако некоторые приблизительные расчеты думаю следует привести.
При потреблении 350 миллиампер одним двигателем, получится 1400 миллиампер для четырех моторов. Если остальной электронике отвести 200 миллиампер, в сумме будет 1600 миллиампер. С аккумулятором на 1600mAh робот сможет непрерывно передвигаться около часа.
Аккумулятор способный отдать большой ток, вроде использованного мной, не нужен. Если бы я покупал аккумулятор специально для этой платформы, то взял бы Zippy LiFePo4 3s 9.9v 1800mAh 5c. Эти аккумуляторы более безопасны.
Скетч
//////////////////////// // // Arduino UNO // //////////////////////// // // Sketch: Robot // #include <util/delay.h> const unsigned char IN1 = 12; const unsigned char IN2 = 11; const unsigned char IN3 = 10; const unsigned char IN4 = 9; void motors_init(); void stop(); void forward(); void backward(); void right(); void left(); void setup() { motors_init(); stop(); _delay_ms(4000); } void loop() { forward(); _delay_ms(2000); stop(); _delay_ms(1000); backward(); _delay_ms(2000); stop(); _delay_ms(1000); right(); _delay_ms(2000); stop(); _delay_ms(1000); left(); _delay_ms(2000); stop(); _delay_ms(1000); } void motors_init() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); } void stop() { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); } void forward() { digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); } void backward() { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); } void right() { digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); } void left() { digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); } // // End // ////////////////////////
Выполняется программа следующим образом. После подачи питания робот стоит на месте четыре секунды. Затем робот едет вперед две секунды. Останавливается и стоит одну секунду. Затем едет назад две секунды. Останавливается и снова стоит одну секунду. Дальше робот поворачивает направо в течении двух секунд. Затем стоит одну секунду. Потом поворачивает налево в течении двух секунд. Опять останавливается на одну секунду. И всё повторяется начиная с движения вперед.
Этот скетч дает возможность визуально оценить скорость движения, скорость поворота.
Платформа получилась более быстрой, чем хотелось. Нужно будет её немного замедлить.
И таки да. Это уже настоящий мобильный робот.
Комментариев нет:
Отправить комментарий