¿Cómo detener el reinicio de ESP32 cuando arranca el motor?

Esta es mi primera publicación aquí y soy nuevo en electrónica. Estoy tratando de controlar un motor usando una cámara ESP32. Vea la imagen adjunta para un esquema bastante crudo. La fuente de alimentación está clasificada para 2.4A. Estoy usando un motor de engranaje helicoidal de 12 V CC y 5 rpm como este Motor de engranaje helicoidal de 12 V CC .

Cuando el motor arranca, el ESP32 se reinicia (lo descubrí haciendo que el ESP parpadeara al arrancar). Mientras tanto, el motor continúa girando sin interrupción (tengo ESPHome en el ESP32 y trato 2 pines GPIO como interruptores entrelazados [solo uno puede estar encendido a la vez]).

Al leer en línea, parece que el aumento en el arranque del motor puede estar causando una caída de voltaje en el ESP32 (potencialmente llamado "apagón") que provoca un reinicio. ¿Cómo puedo prevenir esto de una manera simple?

Descubrí que si pongo el motor en una fuente de alimentación diferente, el problema se soluciona, pero prefiero no usar dos fuentes de alimentación.

Referencias de problemas similares:

Soluciones posibles

  1. Fuente de alimentación diferente para el motor. Probé esto y funciona, pero prefiero no tener que usar una segunda fuente de alimentación. Creo que el ESP32 consume ~250mA y el motor ~100mA, así que creo que estoy dentro de las especificaciones de la fuente de alimentación de 2.4A.
  2. Diodo Schottky: no tengo uno de estos y no quiero esperar un pedido
  3. "Condensadores de desacoplamiento". Tengo una bolsa de condensadores electrolíticos surtidos. ¿Cuáles debo usar y dónde los pongo?
  4. PWM: aplique gradualmente pwm para acelerar el motor. ¿Funcionaría esto con mi circuito, con pwm antes del convertidor elevador? ¿El convertidor elevador simplemente lo impulsará a 12v de todos modos, ya sea usando condensadores o usando PWM?

Nota

  • El DRV8833 está clasificado para 10v, por lo que configuré el convertidor de refuerzo en 10v y no en 12v. El motor todavía parece funcionar bien con 10v.

esquemático imagen del circuito

Editar

Muchas gracias a las personas que publicaron aquí, @winny, @vir, @bobflux y @thebusybee. Implementé el método de aceleración PWM, que funciona. Hay un fuerte silbido de tono alto, en los valores de PWM de rango medio que desaparece una vez que el motor alcanza la velocidad. Audio disponible aquí: https://streamable.com/3xgxy0

¿Desacoplamiento adecuado, un diodo de rueda libre adecuado en el motor, un condensador a granel y un buen diseño? Muestre su esquema y diseño. 2. Casi cualquier diodo servirá. 3. Sin electrolíticos, solo servirá una película de cerámica o plástico.
@winny - gracias por la respuesta. Dibujé aproximadamente mi esquema y lo adjunté. ¿Puedes ver la imagen? Tengo un condensador electrolítico de 470uF. ¿Simplemente agrego eso después de la fuente de alimentación con la pata positiva del capacitor a +5v y la pata negativa a tierra?
Tal vez, pero con la corriente de "irrupción" en el motor, sus 5 V probablemente estén cayendo demasiado y necesitaría un diodo en serie para evitar que el motor robe toda la carga de la MCU. 470 uF = capacitancia a granel. ¿Qué tienes directamente conectado al pin MCU Vcc? ¿Alguna cerámica de 100 nF?
No tengo condensadores cerámicos ni diodos, pero ordenaré una variedad para proyectos futuros. Pregunta tonta: tengo LED "diodo emisor de luz". ¿Puedo usar un LED en lugar de un diodo? El pin Vcc solo está conectado directamente a + 5v de usb
Depende, ¿su MCU se ejecuta a través de un LDO de 3.3 V? Si tiene una caída súper baja en su LDO, puede salirse con la suya usando un LED rojo (Vf más bajo), pero Schottky sería ideal. Si tiene un LDO de 3.3 V, también puede obtener solo un capacitor muy grande directamente en Vcc. Si puede PWM el motor y aumentar el ciclo de trabajo muy lentamente y a una frecuencia razonablemente alta, eso podría mitigar el problema.
Ah, el motor que vinculaste tiene una corriente estancada de 1.8A, compara esto con la corriente de 60mA sin carga... Esta es la corriente que toma en el arranque, y aún más en la inversión instantánea.
@winny: probé el condensador más grande que tengo (electrolítico de 470uF), pero aún obtuve los reinicios. Creo que el ESP32 se puede apagar con 5v o 3.3v. Lo estoy apagando 5v. Tengo un módulo AMS1117, por lo que podría usar 5v aplicados a eso y apagar la MCU 3.3v
@thebusybee: aquí está el motor exacto que estoy usando (modelo de 5 rpm). Las especificaciones no están en la página de Amazon, pero se parece a la que vinculé en mi publicación. amazon.ca/gp/product/B08GCM7FY7 . Ah, 1.8A es mucho. Esperaba usar un cargador de teléfono 1A en lugar de mi suministro de 2.4A
¿Dónde colocaste el capacitor de 470 uF, antes o después del LDO?
No estoy usando un LDO. Creo que hay uno a bordo del ESP32. Coloqué la pata positiva del capacitor a +5v y la pata negativa a tierra
Colóquelo después del LDO integrado, directamente en la línea MCU Vcc.
@winny, los LED suelen tener un máximo muy bajo. Voltaje inverso, como 2 V más o menos. Por lo tanto, no sobreviviría mucho tiempo como un diodo de abrazadera.
@TonyM Sin abrazadera, serie para bloquear la corriente inversa. Pero su punto no es menos válido, un LED es una muy mala elección.
@winny, ah, mira lo que quieres decir :-)
@winny: el LDO integrado es inaccesible, así que probé usando mi propio módulo AMS1117 (igual que el LDO integrado) y encendiendo el ESP32 desde 3.3v de AMS1117. Adjunté el capacitor + a AMS1117 3.3v out y - a GND. Todavía recibo el reinicio
No veo cómo es inaccesible, pero fue solo una curita, su motor aún puede arrastrar el riel de 5 V a casi cero. ¿Puedes arrancarlo suavemente, aumentar el PWM?
Tomará algún tiempo descubrir cómo usar ESPHome para aplicar la señal pwm y para interbloquear IN1 e IN2 de DRV8833 para que solo uno esté alto a la vez. Informaré cuando lo averigüe. (LDO es técnicamente accesible, pero en el lado de la MCU que mira hacia la placa de prueba, es muy difícil acceder durante la placa de pruebas. También tendría que soldarlo directamente. Dado que también es exactamente el mismo LDO que tengo [AMS1117], yo pensé que es equivalente a usar mi propio LDO y alimentarlo en 3.3v. Entonces podría seguir usando la placa de prueba)
¡Acabo de probar por primera vez el funcionamiento de la aceleración PWM! Suena terrible (escucha el audio, he subido un video aquí - streamable.com/3xgxy0 ). ¿Está bien ese ruido? Y hasta que consiga un diodo, ¿cuánto peligro hay? Dado que el DRV8833 está más cerca del motor, ¿es eso lo que corre el riesgo de la corriente de flujo inverso?

Respuestas (2)

Estas placas de prueba sin soldadura tienen una resistencia de contacto bastante alta, por lo que si pasa una corriente importante a través de eso, el voltaje caerá.

Por lo tanto, realmente debería usar cables para su fuente de alimentación de alta corriente y soldarlos a las placas. Para el ESP32 no importa, pero para el motor sí.

Fuente de alimentación diferente para el motor.

Usar impulso para un motor es buscar problemas. Sería más lógico tener un suministro de 10 V para las cosas de alta corriente y un convertidor reductor para alimentar el Pi desde eso. Además, si su 10V cae unos pocos voltios bajo carga, comenzó desde 10V, por lo que todavía hay suficiente para hacer funcionar el Pi. Con 5V, menos margen.

Creo que el ESP32 consume ~250mA y el motor ~100mA

El motor consumirá 10 veces eso al arrancar, y se multiplicará por 2 ya que está aumentando desde 5V. Si el impulso genera 10V 1A, consumirá 2A de 5V. La potencia de salida proviene de la potencia de entrada y potencia = VxI, por lo que si desea 2 veces más voltios en la salida, obtiene 2 veces más amperios en la entrada. Por un dólar, se aplica la misma regla, la potencia de salida proviene de la potencia de entrada, pero el voltaje de salida es el más bajo, lo que significa que la corriente de entrada es menor que la corriente de entrada.

"Condensadores de desacoplamiento". Tengo una bolsa de condensadores electrolíticos surtidos. ¿Cuáles debo usar y dónde los pongo?

Hay muchas tapas de desacoplamiento pequeñas en su placa, pero puede colocar un electrolítico grande en la fuente de alimentación.

PWM: aplique gradualmente pwm para acelerar el motor.

Sí.

¿Funcionaría esto con mi circuito, con pwm antes del convertidor elevador?

No

El impulso debe estar siempre encendido, alimentando la placa DRV8833 que controla el motor.

DRV8833 tiene una entrada PWM, esta es la que debe usar para arrancar suavemente su motor.

Muchas gracias por la explicación aquí. Es interesante que la resistencia de contacto sea un problema. Mi esperanza era hacer un prototipo antes de soldarlo, pero claramente hay un problema con eso. Para el condensador electrolítico, ¿puedo simplemente poner un 470uF con la pata positiva a +5v y la pata negativa a tierra, justo al lado de la placa de conexión microusb? (Tengo una bolsa mixta de condensadores, con otros valores también). Veré ahora cómo aplicar PWM desde el software ESPHome
@maurera Mide, mide, mide. Si no tiene un buen osciloscopio, experimente con diferentes capacitores y finalmente use algún múltiplo del valor más pequeño que funcionó.
¡Trabajando ahora! Acabo de publicar la edición al final de mi publicación original. ¡Gracias por la ayuda!
Si el sonido le molesta, cambie la frecuencia PWM a algo inaudible como 25kHz (verifique que DRV lo admita)
@bobflux, usar frecuencias PWM supersónicas (más o menos por encima de 20 kHz) para silenciar automáticamente este motor es un mito técnico (ver electronics.stackexchange.com/a/243336/115257 )
bobflux y @TonyM: ¡esto funcionó! La frecuencia PWM predeterminada en el software era 1000 Hz. Cambié a 25000Hz y ahora el lloriqueo agudo se ha ido.
Una gran noticia. Como antes, es un mito que funcione automáticamente para PWM, lejos de ser cierto. Pero me alegro de que te haya funcionado aquí.
No creo que funcione automáticamente, pero es algo barato de probar primero en caso de que lo haga...

Sugiero el PWM ya que tienes un micro ejecutándolo de todos modos. Aún necesitará un condensador, pero no uno de tamaño ridículo. Si está tratando de ejecutarlo con un convertidor USB con un cable USB probablemente de 28 AWG, su sobretensión inicial lo inundará si intenta iniciar a toda velocidad.

Gracias por la respuesta. Tendré que mirar el software ESPHome para ver cómo aplicar pwm para un comienzo suave. ¿Por qué el calibre del cable afecta la oleada de arranque? ¿Hay un término para esto que pueda buscar en Google?
Cuando implementé un PWM acelerado rápido y sucio en un Arduino para un actuador lineal, solo usé bucles for anidados que dividieron todo el período PWM en tiempo de encendido y apagado y aumentaron linealmente uno a expensas del otro. Estoy seguro de que hay una forma más elegante de hacerlo, pero ese es el resultado que deberías buscar. El calibre del cable afecta la caída de voltaje que se ve al arrancar el motor, ya que el voltaje cuando llega a la placa se reduce en I*R. Con el aumento de 2A que estimó bobflux, verá 2*2A*0,212 ohmios (1 m, cable de 28 AWG) que es 0,848 V.
Puede verificar la resistencia de contacto en la placa de prueba sin soldadura, apuesto a un mínimo de 0.2 ohmios
Acabo de medir y obtuve exactamente 0,2 ohmios (las sondas de mi multímetro son demasiado gruesas para caber en los orificios de la placa de prueba, por lo que son 2 puentes de 10 cm en los orificios vecinos)
¡Trabajando ahora! Acabo de publicar la edición al final de mi publicación original. ¡Gracias por la ayuda!