¿Cómo obtener la salida de voltaje correcta con Bts7960b H-Bridge?

Estoy usando un NodeMCU para controlar un controlador de motor BTS7960b . (hoja de datos del BTS7960) Este controlador controla un motor de CC de 12 V. Esta imagen muestra mi cableado (sin la pantalla y los botones y con un NodeMCU en lugar del Arduino nano).

Mi problema es que cuando el controlador está configurado a la velocidad máxima (los pines L_EN y R_EN configurados en alto, así como LPWM o RPWN en 255 [nombre de pin visible en esta página] ) el voltaje de salida al motor es consistentemente solo 3v en lugar de 12v . Debido a eso, mi motor de par alto de 180 RPM solo funciona con alrededor de ~42 RPM. Disminuir la velocidad también disminuye el voltaje de salida. Por ejemplo, establecer la velocidad en 150 disminuye el voltaje a ~1.8v. No importa en qué dirección gira el motor.

El motor, NodeMCU y el controlador funcionan con la misma fuente de alimentación con un convertidor reductor. Obtengo el mismo comportamiento con 3.3v y 5v en NodeMCU y el controlador. ¿Qué estoy haciendo mal?

¡Gracias por la ayuda! :)

¿Es solo un problema cuando intenta hacer que el motor funcione a toda velocidad? ¿Puedes hacer que el motor funcione a la mitad de su velocidad? ¿Puede correr en ambas direcciones?
@PeterKarlsen Cuando bajo la velocidad, el voltaje de salida también disminuye. Por ejemplo, al establecer la velocidad en 150, el voltaje es ~1.8v y funciona con ~20 RPM. Puedo dejar que gire en ambas direcciones configurando el pin LPWN o RPWN en un valor entre 1 y 255. Actualicé la pregunta original en consecuencia.
Necesitas aislar la fuente del problema. ¿Es un problema de fuente de alimentación, software o algo más? Intente cambiar los pines LPWM y RPWM a GPIO normales. Establezca uno en alto y el otro en bajo. Eso debería hacer que su motor funcione a toda velocidad. Si funciona, el problema probablemente esté en sus señales PWM. ¿Los has medido con un osciloscopio?
Gracias por los consejos @PeterKarlsen. Me lo imaginé. (Ver mi respuesta)

Respuestas (1)

Gracias a los consejos de @Peter Karlsen lo descubrí:

Estaba acostumbrado a la resolución de 8 bits para PMW de las placas Arduino. Pero dado que mi NodeMCU usa un chip ESP8266, la resolución de PMW es de 10 bits [ referencia ]. Entonces, el valor máximo no es 255 sino 1023.

Cambiar los valores en mi código resolvió el problema.