Невозможно управлять двигателем с помощью ESP32 с помощью переключателя логического уровня.
Я использую ESP32, микрошаговый двигатель TB6600 и шаговый двигатель Nema 23. Я пытаюсь управлять двигателем с помощью esp32, но TB6600 требует сигнала 5 В. Я попытался исправить это с помощью преобразователя логических уровней ( в частности, это), но когда я пытаюсь управлять двигателем, я слышу очень легкий гул от двигателя и никакого движения.
Контроллер двигателя и двигатель работают, как я тестировал с помощью Arduino Uno.
void setup() {
pinMode(15, OUTPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
digitalWrite(16, HIGH);
}
void loop() {
digitalWrite(15,LOW);
digitalWrite(15,HIGH);
digitalWrite(17, HIGH);
delay(200);
}
Изображение схемы
Принципиальная схема
@warherolion, 👍0
Обсуждение2 ответа
Лучший ответ:
Я понял проблему: переключатель логического уровня, который я использовал, предназначен для датчиков I2C и, следовательно, способен преобразовывать только сигналы с открытым стоком и не может выполнять преобразование уровня push/pull, то есть он не может предоставить данные сигнал на микрошаговый двигатель. Я заменил переключатель на переключатель, способный выполнять push/pull перевод, в частности Это
Я не использовал такую систему, поэтому просто предполагаю. Но в Руководстве написано:
Когда «EN» находится в действительном состоянии, двигатель находится в свободном состоянии (автономный режим). режим). В этом режиме вы можете регулировать положение вала двигателя вручную. Когда «EN» в недействительном состоянии двигатель будет находиться в режиме автоматического управления. (Источник).
Не совсем понятно, что имеется в виду под «вручную». Но вы установите вывод 17 на ВЫСОКИЙ уровень, и результат будет соответствовать описанию. Может быть, установить 17 на НИЗКИЙ?
С другой стороны: между digitalWrite(15,LOW);
и digitalWrite(15,HIGH);
нет задержки/времени. Это создаст очень короткий импульс, который может быть слишком коротким для перевода электроники переключения уровня. Может помочь некоторая задержка() или эквивалентный неблокирующий код между двумя операциями записи.
В этом контексте «ручной» означает физическое манипулирование валом, а не с помощью контроллера двигателя. Когда шаговые двигатели отключены, они могут свободно вращаться. Когда на них подается постоянный сигнал или они закорочены, они будут удерживать положение и сопротивляться внешним силам, которые в противном случае заставили бы их свободно вращаться., @user10489
- AccelStepper.h — Как быстро увеличить скорость двигателя NEMA 17?
- Как рассчитать требуемую силу тока нескольких двигателей?
- Как FireBeetle ESP32 регулируется до 3,3 В? (приведена схема)
- Не могу управлять 4 шаговыми двигателями одновременно
- Есть ли схема 3,3 В и 12 В 18650?
- Разность потенциалов на одном и том же проводе
- ESP32 + шаговый двигатель 17HS3401S + драйвер A4988. Шаговый двигатель не может двигаться по часовой стрелке.
- NodeMCU - Vin контакт как выход 5V?
Судя по всему, входы ENA, DIR и PUL являются светодиодами оптопар: https://www.dfrobot.com/product-1547.html. Я думаю, вам не нужен этот переключатель логического уровня, который в любом случае предназначен только для очень малых токов. Странно, однако, что указано 5в. Проводка в приведенной мной ссылке подразумевает, что НИЗКИЙ включен, а ВЫСОКИЙ выключен. Убедитесь, что любой пример кода, который вы используете, соответствует вашей проводке., @6v6gt
Какой ток необходим TB6600 на входах? Двунаправленные переключатели уровня не могут обеспечить большой ток на стороне высокого напряжения, поскольку они в основном закорачивают НИЗКИЙ уровень через МОП-транзисторы (ВЫСОКИЙ уровень подтягивается резисторами в несколько килоом к ВН)., @KIIV
Когда вы подключаете цепь, замечаете ли вы, что ваш двигатель нагревается? Кроме того, почему вы устанавливаете контакт 17 на высокий уровень в своем контуре?, @jonathan
Не похоже, что контроллер двигателя имеет общую массу с вашим ESP32. Попробуйте соединить заземления и посмотрите, поможет ли это., @Delta_G