Amateur Radio Station R9AL

      Драйвер - в общем случае, это устройство, которое преобразует какой-либо сигнал до определённых параметров. В данном случае, под драйвером мы будем понимать некое устройство, которое может манипулировать большими токами или напряжениями, управлять которым можно малым напряжением или током. Такой драйвер применяется для управления мощной нагрузкой, электромотором (драйвер мотора), крупной светодиодной сборкой (драйвер светодиода) и т.д.

В самом простом случае роль драйвера может выполнить обычный транзистор (см. Транзистор). Мы уже рассматривали, как включать или выключать двигатель. Но для полноценного управления хорошо бы не просто включить двигатель, но еще и управлять направлением его вращения.

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

Рассмотрим схему:


      Левый вывод мотор может быть подключен к плюсу источника питания, если открыт транзистор VT1 или к минусу источника питания (общему проводу), если открыт транзистор VT2. Правый вывод мотор может быть подключен к плюсу источника питания, если открыт транзистор VT3 или к минусу источника питания (общему проводу), если открыт транзистор VT4. Если все транзисторы закрыты - мотор не крутится, оба его вывода отключены от источника питания. Диоды в схеме служат для защиты транзисторов от индукционных токов, возникающих в двигателе. Транзисторы соединены так, что в зависимости от подаваемого сигнала на входы IN1 и IN2, они открываются и закрываются попарно. Если на вход IN1 подать напряжение высокого уровня - откроются транзисторы VT1 и VT4, а это значит, что левый вывод мотора окажется подключен к плюсу источника питания, а правый - к минусу, двигатель будет вращаться. Если подать на вход IN1 низкий уровень - транзисторы VT1 и VT4 закроются, отключив мотор от источника питания. Аналогично, если подать на вход IN2 напряжение высокого уровня, то откроются транзисторы VT2 и VT3, и тогда левый вывод двигателя окажется подключен к минусу питания, а правый - к плюсу, двигатель будет вращаться в обратную сторону. Ситуация, когда на оба входа будет подано напряжение высокого уровня в данной схеме не должна возникать, так как это приведет к выходу из строя транзисторов.

Схему можно собрать в Tinkercad и посмотреть как она работает:



Напряжения высокого и низкого уровня формируются с помощью переключателей. Эта схема получила название H-мост и очень часто используется в робототехнике. Название "H-мост" потому что изначально, такая схема собранная на выключателях напоминает букву "Н":



Схема на выключателях (каждый выключатель фактически заменяет собой транзистор из схемы на транзисторах) очень наглядна и более понятна. Очевидно, что состояние, когда замкнуты все выключатели (или открыты все транзисторы в схеме на транзисторах) приведет к короткому замыканию, поэтому такой комбинации необходимо избегать.

Микросхема L293D

Микросхема L293D - это два независимых H-моста в одном корпусе, причем в ней уже есть защитные диоды. Если собрать следующую схему:



Она полностью аналогична схеме на транзисторах, и даже лучше, у нее нет "невозможной" комбинации входных сигналов. Проверить работу схемы можно, собрав её в Tinkercad:



Аналогично можно подключить и второй двигатель:



Соберем её в собрав её в Tinkercad и сразу подключим входы драйвера к выводам Arduino, IN1 к D9, IN2 к D6, IN3 к D10, IN4 к D11:



Напишем программу, которая будет включать оба двигателя с вращением в одну сторону на 5, а затем в обратную сторону тоже на 5 секунд.
void setup()
{
  pinMode(6, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
}

void loop()
{
  digitalWrite(6, HIGH);
  digitalWrite(9, LOW);
  digitalWrite(10, HIGH);
  digitalWrite(11, LOW);
  
  delay(5000); // Wait for 5000 millisecond(s)
 
  digitalWrite(6, LOW);
  digitalWrite(9, HIGH);
  digitalWrite(10, LOW);
  digitalWrite(11, HIGH);
  
  delay(5000); // Wait for 5000 millisecond(s)
}


В качестве практического задания:

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







Copyright © R9AL 2021 Все права защищены

Рейтинг@Mail.ru Яндекс цитирования