BTS7960: подключение мощного DC-мотора к Arduino и ESP32
BTS7960 подходит для управления DC-моторами с большим током: редукторными двигателями, актуаторами, приводами и роботами. Разбираем питание, PWM, направление вращения, пины RPWM/LPWM, охлаждение и ошибки подключения.
Когда нужен BTS7960
Маленький DC-мотор можно запустить через простой транзистор или небольшой драйвер. Но если мотор тяжелее, с редуктором, высоким пусковым током или реверсом, слабые модули начинают греться и терять мощность.
BTS7960 используют для более серьезных DC-моторов: приводов колес, актуаторов, мотор-редукторов, стеклоподъемников, поворотных платформ, небольших тележек и самодельных механизмов.
Главное отличие от простого MOSFET-ключа - драйвер умеет вращать мотор в обе стороны. Это H-мост: контроллер задает направление и скорость, а силовая часть коммутирует ток мотора.
BTS7960 не нужен для маленького вентилятора или игрушечного моторчика. Его смысл появляется там, где мотор уже требует нормального питания, толстых проводов и запаса по току.
Что проверить до подключения мотора
Перед подключением важно узнать не только напряжение мотора. У DC-мотора есть рабочий ток и пусковой ток. Пусковой ток может быть намного выше, особенно если вал нагружен или мотор стартует с места.
Если мотор написан как 12 В, это еще не значит, что любой блок питания 12 В подойдет. Нужно понимать, сколько ампер мотор берет при старте и под нагрузкой.
Для проверки полезно отдельно запустить мотор от лабораторного блока питания или подходящего аккумулятора и посмотреть, как он ведет себя без драйвера: легко ли стартует, какой ток потребляет, насколько греется, нет ли заклинивания в механике.
Если механика тугая, даже хороший драйвер не решит проблему. Он будет греться, питание будет проседать, а мотор будет дергаться.
Клеммы питания и мотора
На модуле BTS7960 обычно есть силовые клеммы для питания и выхода на мотор. Названия могут отличаться, но логика одна: отдельно подключается питание драйвера и отдельно сам мотор.
Силовое питание берется от аккумулятора или блока питания. Например, 12 В или 24 В - в зависимости от мотора и допустимого диапазона модуля. Мотор подключается к выходным клеммам драйвера.
Ток мотора не должен идти через макетную плату, тонкие Dupont-провода или дорожки Arduino. Для силовой части нужны нормальные провода, винтовые клеммы и надежные соединения.
Управляющие пины RPWM, LPWM, R_EN и L_EN
У популярных модулей BTS7960 часто встречаются пины RPWM, LPWM, R_EN и L_EN.
RPWM и LPWM отвечают за управление направлением и скоростью. Обычно PWM подают только на один из них. Если активен RPWM - мотор вращается в одну сторону. Если активен LPWM - в другую.
R_EN и L_EN разрешают работу правого и левого плеча драйвера. В простом варианте их держат в HIGH.
| Пин | Назначение |
|---|---|
| RPWM | PWM для вращения в одну сторону |
| LPWM | PWM для вращения в другую сторону |
| R_EN | Разрешение правого плеча драйвера |
| L_EN | Разрешение левого плеча драйвера |
| VCC | Питание логики модуля |
| GND | Общая земля с контроллером |
Если мотор крутится не в ту сторону, не обязательно менять код. Иногда достаточно поменять местами провода мотора на выходе драйвера.
Arduino и ESP32: что отличается
С Arduino обычно проще: логика 5 В хорошо подходит многим модулям BTS7960. Пины Arduino подключают к RPWM, LPWM, R_EN и L_EN, а GND Arduino соединяют с GND драйвера.
С ESP32 нужно смотреть, принимает ли конкретный модуль HIGH от 3.3 В. Часто принимает, но не стоит считать это правилом для всех плат. Если драйвер плохо реагирует на сигнал ESP32, может понадобиться согласование уровней.
Общее правило одинаковое для Arduino и ESP32: микроконтроллер не питает мотор. Он только дает управляющие сигналы. Мотор питается от отдельного силового источника через BTS7960.
Пример управления направлением
Ниже простой пример для Arduino. Один PWM-пин отвечает за движение вперед, второй - назад. Одновременно подавать PWM на оба направления не нужно.
const int rPwmPin = 5;
const int lPwmPin = 6;
const int rEnPin = 7;
const int lEnPin = 8;
void setup() {
pinMode(rPwmPin, OUTPUT);
pinMode(lPwmPin, OUTPUT);
pinMode(rEnPin, OUTPUT);
pinMode(lEnPin, OUTPUT);
digitalWrite(rEnPin, HIGH);
digitalWrite(lEnPin, HIGH);
analogWrite(rPwmPin, 0);
analogWrite(lPwmPin, 0);
}
void loop() {
analogWrite(rPwmPin, 120);
analogWrite(lPwmPin, 0);
delay(2000);
analogWrite(rPwmPin, 0);
analogWrite(lPwmPin, 0);
delay(1000);
analogWrite(rPwmPin, 0);
analogWrite(lPwmPin, 120);
delay(2000);
analogWrite(rPwmPin, 0);
analogWrite(lPwmPin, 0);
delay(1000);
}
Для реального механизма лучше добавить плавный разгон и торможение. Резкое включение на высокий PWM может дать сильный рывок и большой пусковой ток.
PWM и плавный старт
PWM управляет средней мощностью на моторе. Чем выше значение PWM, тем быстрее вращается мотор и тем больше нагрузка на питание и драйвер.
Если сразу подать высокий PWM на тяжелый мотор, вал может резко дернуться. Для робота, актуатора, тележки или поворотного механизма это плохой режим. Лучше повышать PWM постепенно.
Плавный старт снижает удар по механике и уменьшает просадку питания. То же самое касается остановки: иногда лучше плавно снижать скорость, чем резко выключать мотор.
В простом проекте достаточно увеличивать PWM ступенями. В более серьезном механизме добавляют ограничение скорости, контроль тока, концевики и аварийную остановку.
Нагрев драйвера
BTS7960 обычно продается с радиатором, но это не означает, что модуль можно нагружать без ограничений. Нагрев зависит от тока мотора, длительности работы, охлаждения, качества модуля и условий внутри корпуса.
Если мотор работает короткими включениями, драйвер может чувствовать себя нормально. Если нагрузка длительная, температура растет. В закрытом корпусе без вентиляции это особенно заметно.
После сборки нужно проверить нагрев в реальном режиме. Не просто включить мотор на секунду, а дать ему поработать так, как он будет работать в устройстве.
Если радиатор быстро становится очень горячим, нужно уменьшить нагрузку, улучшить охлаждение, проверить механику, поставить драйвер с запасом или использовать другой класс управления мотором.
Концевики и аварийная остановка
Если BTS7960 управляет актуатором, воротами, платформой, кареткой или любым механизмом с ограниченным ходом, нужны концевики. Без них мотор может продолжать давить в край, пока не перегреется, не сорвет крепление или не сломает механику.
Концевик должен останавливать движение в опасном направлении. При этом обратное движение должно оставаться доступным, чтобы механизм можно было вывести из края.
Для мощных приводов полезна отдельная аварийная кнопка или аппаратное отключение питания мотора. Программа важна, но в силовой механике нельзя полагаться только на код.
Частые ошибки подключения
Самые частые проблемы с BTS7960 появляются не из-за сложного кода, а из-за питания, проводов и неправильного понимания пинов.
- Нет общей земли между контроллером и драйвером.
- Мотор питается от слабого блока питания.
- Силовой ток идет через тонкие перемычки.
- RPWM и LPWM активируются одновременно.
- Мотор запускается сразу на большом PWM.
- Драйвер стоит в закрытом корпусе без охлаждения.
- Нет концевиков у механизма с ограниченным ходом.
- Пусковой ток мотора не учтен.
- Провода мотора идут рядом с чувствительными сигналами.
Если мотор дергается, греется или перезагружает контроллер, сначала нужно проверить питание и соединения. Код обычно не первая причина.
Где BTS7960 подходит лучше всего
BTS7960 хорошо подходит для проектов, где нужен мощный DC-мотор с реверсом и регулировкой скорости. Это не самый маленький и не самый аккуратный драйвер, зато он понятен в подключении и удобен для DIY-механики.
Его стоит рассматривать для мотор-редукторов, приводов колес, актуаторов, поворотных узлов, простых станков и механизмов, где нужна работа вперед-назад.
Если мотор маленький, можно взять драйвер проще. Если нужна точная сервосистема, контроль позиции и обратная связь, одного BTS7960 уже мало - понадобится энкодер, концевики, датчики тока или другой контроллер привода.
Правильная связка выглядит так: подходящий мотор, нормальный блок питания, BTS7960 с охлаждением, короткая силовая проводка, общий GND с контроллером и понятная логика остановки.

Комментарии (0)