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

 


ESP32 и драйвер L293D для управления электродвигателями

Автор: Mike(admin) от 15-12-2021, 03:55

В данном проекте мы рассмотрим, как можно подключить микросхему управления двигателем L293D к плате ESP32 с целью управления двигателем постоянного тока. А также вы узнаете, как увеличить ток питания L293D с помощью простого трюка.


ESP32 и драйвер L293D для управления электродвигателями

L293D представляет собой четырехполупериодный драйвер, который обеспечивает двунаправленный ток возбуждения до 600 мА при напряжении от 4,5 В до 36 В. Его можно использовать для управления индуктивными нагрузками, такими как реле, соленоиды, двигатели постоянного тока и биполярные шаговые двигатели, но они в основном используются для управления двигателями постоянного тока, поскольку они дешевы и легко доступны.


Одним из недостатков использования микросхем L293D является их неспособность обеспечивать высокий ток. Такой драйвер может обеспечить не более 1 А для двигателя постоянного тока 12 В, чего недостаточно для его правильного управления, в результате люди обычно отказываются от его использования и выбирают драйвер двигателя L238N, который может обеспечивать ток до 2 А.


L298N представляет собой отличный драйвер двигателя, но он не так легко доступен, как L293D, поэтому об использовании его на макетной плате не может быть и речи, если вы не используете для покупки этих «голых» микросхем aliexpress или banggood. Но для повышения тока L293D есть одна маленькая схемотехническая хитрость.


драйвер L293D

Просто соедините два L293D параллельно друг другу. При этом ток L293D увеличится вдвое. Далее мы приведем распиновку L293D. Подробнее о L293D лучше прочитать в технической документации на данный драйвер.


драйвер L293D

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


мотор-редуктор

Такие моторы маленькие и мощные, поэтому их можно использовать в небольшом проекте робототехники. Например, на их основе можно собрать 4-колесного робота с ESP32 в качестве основного контроллера и L293D в качестве драйвера двигателя. Использование ESP32 вместо Arduino значительно расширяет функциональные возможности разрабатываемых устройств, позволяя связываться с ними по Wi-Fi или Bluetooth.


Схема подключения ESP32 к L293D и двигателю постоянного тока представлена далее.


ESP32 и драйвер L293D для управления электродвигателями

Здесь линии Enable 1 и 2 подключены к GPIO14. 1А – GPIO27. 2A – GPIO26. Не забудьте подключить соответствующим образом линии питания и заземления. Код программы для ESP32 в среде Arduino IDE приведен далее.



int motor1Pin1 = 27; 
int motor1Pin2 = 26; 
int enable1Pin = 14; 
 
// Настройка свойств ШИМ 
const int freq = 30000;
const int pwmChannel = 0;
const int resolution = 8;
int dutyCycle = 200;
 
void setup() {
  // устанавливает контакты как выходы: 
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(enable1Pin, OUTPUT);
  
  // настроить функции ШИМ светодиода 
  ledcSetup(pwmChannel, freq, resolution);
  
  // подключим канал к GPIO для управления
  ledcAttachPin(enable1Pin, pwmChannel);
 
  Serial.begin(115200);
 
  // проверка
  Serial.print("Testing DC Motor...");
}
 
void loop() {
  // Включим двигатель постоянного тока на вращение вперед на максимальной скорости
  Serial.println("Moving Forward");
  digitalWrite(motor1Pin1, LOW);
  digitalWrite(motor1Pin2, HIGH); 
  delay(2000);
 
  // Остановим двигатель
  Serial.println("Motor stopped");
  digitalWrite(motor1Pin1, LOW);
  digitalWrite(motor1Pin2, LOW);
  delay(1000);
 
  // Включим двигатель постоянного тока на вращение назад на максимальной скорости
  Serial.println("Moving Backwards");
  digitalWrite(motor1Pin1, HIGH);
  digitalWrite(motor1Pin2, LOW); 
  delay(2000);
 
  // Остановим двигатель
  Serial.println("Motor stopped");
  digitalWrite(motor1Pin1, LOW);
  digitalWrite(motor1Pin2, LOW);
  delay(1000);
 
  // Включим двигатель постоянного тока на вращение вперед с увеличивающейся скоростью
  digitalWrite(motor1Pin1, HIGH);
  digitalWrite(motor1Pin2, LOW);
  while (dutyCycle <= 255){
    ledcWrite(pwmChannel, dutyCycle);   
    Serial.print("Forward with duty cycle: ");
    Serial.println(dutyCycle);
    dutyCycle = dutyCycle + 5;
    delay(500);
  }
  dutyCycle = 200;
}

Тестовый код будет вращать двигатель в одном направлении в течение двух секунд, затем остановит его на 1 секунду, а затем изменит направление и будет вращать мотор в течение 2 секунд, и потом этот цикл повторится.




© digitrode.ru


Теги: ESP32, электропривод




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

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

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