Перейти к содержимому


Фотография

Урок №7. Arduino и драйвер электромотора

Драйвер

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 admin

admin

    Администратор

  • Администраторы
  • 32 сообщений

Отправлено 22 Ноябрь 2014 - 09:17

  А как нам быть, если мы хотим управлять не только скоростью вращения мотора, но еще и направлением вращения? А если мотор не один, а два или же целых четыре?  Вот тут нам на помощь приходят так называемые «драйверы» двигателей (драйверы электромоторов) . Это небольшие платы со специальными микросхемами. Вот один из примеров:

 

Прикрепленный файл  6.jpg   94,58К   4 скачиваний

 

  Зеленый разъем с надписями «motor A»для подключения первого двигателя, с надписью «motor B»- для подключения второго двигателя. Желтый разъем «GND»-подключение минусового провода от источника питания для мотора, «VCC»- подключение плюсового провода от источника питания для мотора. Рабочее напряжение драйвера от 4 до 12 Вольт, поэтому более высоким напряжением его можно вывести из строя. Первый эксперимент- подключите мотор к разъему «motor A», питание от блока батарей к разъемам «VCC»и «GND»,вы увидите, что загорелся красный индикаторный светодиод, который говорит о том, что вы не перепутали полярность и драйвер готов к работе. Теперь аккуратно соедините перемычкой разъем  «GND» с разъемом «A-IA» и увидите, что мотор начал вращаться , допустим влево.  А если соединить перемычкой разъем  «GND» с разъемом «A-IB» , то  увидите, что мотор начал вращаться уже а противоположную сторону- вправо.   Но это только половина работу драйвера. Ведь он может управлять сразу двумя моторами.  Переключите мотор в разъем  «motor В» и поэкспериментируйте с контактами «B-IA, B-IB».

 

Прикрепленный файл  PHT_6473.JPG   65,57К   3 скачиваний

  Теперь  проведем эксперимент, в котором будем управлять двигателем  от  инфракрасного датчика. Закрепите инфракрасный датчик так, чтобы они был направлены в  противоположную сторону от мотора.

 

Прикрепленный файл  PHT_6475.JPG   53,41К   3 скачиваний

 

 

  Схема подключения проводов очень простая. Разъемы «VCC» с драйвера и инфракрасного датчика соединяются вместе на монтажной плате и к ним подключается плюсовой провод от батарейного блока. Разъемы «GND» с драйвера и двух инфракрасных датчиков также соединяются вместе на монтажной плате и к ним подключается минусовой провод от батарейного блока.

 

Прикрепленный файл  PHT_6476.JPG   76,91К   3 скачиваний

 

  Таким образом мы подадим питающее напряжения на все платы. И на всех платах должен загореться красный светодиод, который означает, что ошибок подключения нет и все платы готовы к работе. Допустим, мы будем использовать канал «В» драйвера. Поэтому подключите мотор к разъему «motor В», вывод «OUT» от инфракрасного датчика подключите к контактам "B-IA" или "B-IB". Теперь нужно настроить чувствительность инфракрасного датчика. Установите наименьшую чувствительность, повернув отверткой регулятор чувствительности до упора против часовой стрелки. Затем сделайте пол-оборота по часовой стрелке. Таким образом , вы установите среднюю чувствительность  датчика и получите интересный результат. При приближении руки к левому датчику- двигатель будет вращаться влево. Куда можно применить такую конструкцию? Например, датчики зрения для самоходного робота. Если установить два таких датчика, то во время движения робота датчик обнаружит препятствие слева, то робот повернет направо. Если датчик обнаружит препятствие справа- робот повернет налево. Если датчик обнаружит препятствие сразу с двух сторон, например- стену, то робот остановится.
  Плата Arduino в этом эксперименте не участвовала. Теперь проведем эксперимент по  управлению двигателем через плату драйвера с помощью команд от Arduino . Алгоритм будет простой.
- мотор вращается влево, 2 секунды.
- Пауза, 0.5 секунд.
- мотор вращается вправо, 2 секунды.
- Пауза, 0.5 секунд.
Вот текст программы:

int LEFT = 2; // 2-ой вывод для вращения двигателя влево
int RIGHT = 3; // 3-ий вывод для вращения двигателя вправо
void setup()
{
  pinMode(LEFT, OUTPUT);  // настройка вывода 2 на "выход"
  pinMode(RIGHT, OUTPUT); // настройка вывода 3 на "выход"
}
void loop() // бесконечное выполнение программы
{
  digitalWrite(LEFT,LOW);  // Двигатель влево
  delay(2000); // крутим 2 секунды
  digitalWrite(LEFT,HIGH); // останавливаем двигатель
  delay(500); // пауза
  digitalWrite(RIGHT,LOW);  // Двигатель вправо
  delay(2000);  // крутим 2 секунды
  digitalWrite(RIGHT,HIGH); // останавливаем двигатель
  delay(500);  // пауза
}

  Как видно из текста программы- управляющие вывода драйвера подключены к управляющим портам Arduino. Выводы «B-IA, B-IB» к выводам 2 и 3 Arduino. Драйвер питается от батарейного блока , Arduino- от порта usb компьютера. Нужно не забыть соединить вывод «GND» Arduino соединить с выводом  «GND».
  В качестве домашнего задания выполните изменение программы для управления сразу двумя двигателями.



#2 max_c

max_c

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 10 Июль 2015 - 19:31

Подскажите, пожалуйста. Вместо батарейного блока хочу использовать блок питания на 6в\350ма. Управлять драйвером хочу сигналом от Arduino. Как я понял, для этого нужно соединить GND от Arduino и минус от блока питания. Является ли это безопасным? Не сгорит ли при этом Arduino или USB порт компьютера?

 

Спасибо!



#3 max_c

max_c

    Новичок

  • Пользователи
  • Pip
  • 4 сообщений

Отправлено 11 Июль 2015 - 08:42

И еще вопрос про диод, который был использован в уроке №6 для защиты от обратного тока с электромотора. При управлении электродвигателем через драйвер его применять уже не нужно? Он встроен в драйвер?

 

Спасибо!



#4 Smham

Smham

    Пользователь

  • Пользователи
  • PipPip
  • 12 сообщений

Отправлено 11 Июль 2015 - 12:17

Достаточно подключить блок питания в разъем внешнего питания платы Arduino. На фото выше это круглый черный разъем.

Диод подключать к драйверу не нужно и даже вредно.



#5 pasha_shah

pasha_shah

    Новичок

  • Пользователи
  • Pip
  • 6 сообщений

Отправлено 23 Февраль 2017 - 08:25

почему в уроке говориться о двух датчиках, а в наборе только один?!






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных