Как получить правильное выходное напряжение с H-Bridge Bts7960b?

Я использую NodeMCU для управления драйвером двигателя BTS7960b . (техническое описание BTS7960) Этот драйвер управляет двигателем постоянного тока 12 В. На этом изображении показана моя проводка (без дисплея и кнопок и с NodeMCU вместо Arduino nano).

Моя проблема заключается в том, что когда драйвер настроен на максимальную скорость (на выводах L_EN и R_EN установлен высокий уровень, а также у LPWM или RPWN на 255 [обозначения выводов видны на этой странице ]), выходное напряжение двигателя постоянно составляет всего 3 В. вместо 12В . Из-за этого мой двигатель с высоким крутящим моментом на 180 об / мин работает только со скоростью около ~ 42 об / мин. Уменьшение скорости также снижает выходное напряжение. Например, установка скорости на 150 уменьшает напряжение до ~ 1,8 В. Неважно, в каком направлении вращается двигатель.

Двигатель, NodeMCU и драйвер питаются от одного источника питания с понижающим преобразователем. Я получаю такое же поведение с 3,3 В и 5 В на NodeMCU и драйвере. Что я делаю не так?

Спасибо за помощь! :)

Это только проблема, когда вы пытаетесь заставить двигатель работать на полной скорости? Можно ли заставить двигатель работать на 1/2 скорости? Может ли он работать в обоих направлениях?
@PeterKarlsen Когда я снижаю скорость, выходное напряжение тоже уменьшается. Например, при установке скорости на 150 напряжение составляет ~ 1,8 В, и он работает со скоростью ~ 20 об/мин. Я могу позволить ему вращаться в обоих направлениях, установив для вывода LPWN или RPWN значение от 1 до 255. Я соответствующим образом обновил исходный вопрос.
Вам нужно изолировать источник проблемы. Проблема в блоке питания, программном обеспечении или еще в чем-то. Попробуйте заменить выводы LPWM и RPWM на обычные GPIO. Установите один на высокий, а другой низкий. Это должно заставить ваш двигатель работать на полной скорости. Если это работает, проблема, вероятно, в ваших сигналах PWM. Вы измеряли их осциллографом?
Спасибо за подсказки @PeterKarlsen. Я понял. (Смотрите мой ответ)

Ответы (1)

Благодаря подсказкам @Peter Karlsen я понял это:

Я привык к 8-битному разрешению для PMW плат Arduino. Но поскольку мой NodeMCU использует чип ESP8266, разрешение PMW составляет 10 бит [ ссылка ]. Таким образом, максимальное значение не 255, а 1023.

Изменение значений в моем коде решило проблему.