Control de un motor DC sin núcleo usando un PWM y un mosfet

Estoy usando 4 mosfets de nivel lógico Si2302 para impulsar 4 motores de CC sin núcleo. La velocidad de los motores es controlada por la señal PWM de un Arduino Pro Mini. La fuente de alimentación para las placas es una Lipo de 500 mAh 50 C de 3,7 V (4,2 V cuando está completamente cargada).

El circuito se configura de la siguiente manera:

  • fuente a tierra
  • Puerta a pin PWM con una resistencia de 10KΩ a tierra.
  • Drenaje al motor terminal 1
  • Motor terminal 2 a Vcc
  • Diodo colocado a través de los terminales del motor.

esquemático

simular este circuito : esquema creado con CircuitLab

El motor obtiene su valor de RPM a través de un joystick que está conectado a una entrada analógica en el Arduiuno. Esto luego se convierte a un valor 0-255 y se emite en la salida PWM.

Estoy enfrentando los siguientes problemas con el circuito:

  1. Tan pronto como suministro energía al circuito, los motores funcionan a RPM completas hasta que Arduino comienza a tomar datos del joystick. Luego se establece en las RPM correspondientes a la posición del joystick. ¿Hay alguna forma de contrarrestar esto para que los motores permanezcan apagados hasta que Arduino comience a recibir valores del joystick? (Tenía entendido que la resistencia de 10KΩ Rgs se encargaría de esto).

  2. El segundo problema es que el mosfet nunca se apaga por completo. Esto sucede incluso cuando el joystick está en la posición 0. También intenté cambiar los pines ALTO y BAJO, sin embargo, todavía hay movimiento en el motor. ¿Hay algún remedio para este problema?

  3. Cuando mido la resistencia entre la puerta y la fuente, el mosfet muestra alrededor de 6K ohmios. ¿No debería ser alrededor de 10KΩ ya que la resistencia Rgs es de 10KΩ? ¿Es esto una señal de que el mosfet está dañado?

Respuestas (3)

Reduzca la resistencia de 10K a 3,3K o incluso a 1K.

El dispositivo Si2302 que está utilizando tiene un voltaje de umbral de alrededor de 0,65 V, esto es mucho más bajo que muchos MOSFET que generalmente tienen un umbral de 2v - 4,5 V.

Todos los efectos que está viendo probablemente se deban a la resistencia pullup en el Arduino (suponiendo que use un procesador AVR). Esto puede estar en cualquier lugar entre 20K y 100K y estará sacando suficiente corriente del procesador para crear un voltaje de polarización que enciende el MOSFET ligeramente.

Cuando midió la resistencia de la puerta, ¿todavía estaba conectado al Arduino?

El pull-up se puede desactivar mediante programación, pero, por supuesto, no hasta que el software se esté ejecutando.

kevin

Retiré la resistencia de 10K y soldé una resistencia de 3,3K, pero el motor sigue encendido incluso cuando el PWM es 0. Incluso conecté la puerta directamente a tierra (para simular que el pin de Arduino está BAJO) y todavía hay una caída de voltaje de 0,5V a través de los terminales del motor. Intenté esto con uno de los Fets en funcionamiento y apagué con éxito el motor. Solo 1 de los 4 mosfets muestra este comportamiento extraño. Ahora estoy bastante convencido de que este mosfet está defectuoso y lo cambiaré y probaré el circuito nuevamente. Gracias por su respuesta.
Los pullups no están activos en el arranque; solo una vez habilitado por software.

En el Arduino Pro Mini, todos los pines digitales (excepto el pin 13, indicador LED) están flotando hasta que se programen de otra manera, por lo que, a menos que esté activando deliberadamente el pull-up interno, su resistencia pull-down debería evitar que el FET se encienda al inicio.

Cuando mido la resistencia entre la puerta y la fuente, el mosfet muestra alrededor de 6K ohmios.

Una lectura de solo 6k es sospechosa. Sin embargo, para eliminar el efecto de otros componentes, debe sacar el FET del circuito y luego medir las resistencias Gate-Drain y Gate-Source con un multímetro digital. Finalmente, cortocircuite la compuerta a la fuente y mida desde el drenaje (conducción de cinco metros) a la fuente (conducción de -ve metros). Todas las lecturas deben estar muy por encima de un megaohmio. Si la unión Gate-Drain o Source-Drain se rompe, el FET puede permanecer parcialmente encendido incluso con 0 PWM.

Esa lectura de 6K también me pareció extraña. Mi primera suposición fue que el mosfet estaba defectuoso, pero los otros 3 mosfet funcionaron correctamente. Voy a cambiar este mosfet por uno nuevo ahora. ¿Hay alguna solución para mantener los motores apagados al arrancar? ¿No debería la resistencia desplegable de 10K mantenerlos APAGADOS hasta que Arduino comience a dar valores PWM? Gracias por su respuesta.
10k debería ser suficiente. Supervise los pines en el arranque para asegurarse de que no se estén elevando (si es así, puede haber un problema en su código de configuración).

Su primer problema ocurre después de encender su sistema, sin mover el joystick, ¿verdad? Tal vez tonto, pero ¿has intentado hacer lo siguiente :):

int motorSpeed1 = 0;
int motorSpeed2 = 0;
int motorSpeed3 = 0;
int motorSpeed4 = 0;

Buena suerte, Saludos,