Al trabajar con un sensor y un motor, ¿puedo usar ambos o debo usar un protector de motor?

Actualización: actualmente estoy cambiando algunas cosas con el proyecto. Tomé algunos de sus consejos. He cambiado de un motor paso a paso a un servo RC (controlado a través de PWM) y si tengo algún problema y no puedo resolverlo, lo preguntaré. ¡Gracias por la ayuda!

Estoy trabajando en un proyecto con un amigo y es la primera vez que usamos un Arduino. Estamos usando un Arduino para tomar datos de un sensor (acelerómetro) y luego encender el motor (6V, DC).

He estado investigando un poco y parece que la potencia del Arduino podría no ser suficiente para el motor y el sensor al mismo tiempo. Tal vez una especie de retraso podría funcionar (¿sería esto posible?).

Estoy contemplando usar un protector de motor . ¿Podré seguir controlando el acelerómetro junto con el motor?

Estoy tratando de usar una sola fuente de alimentación externa (máx.: 6 baterías AA; estoy tratando de limitar la cantidad de baterías ya que estamos tratando de mantenerlo portátil), entonces, ¿hay alguna manera de usar una fuente desde el Arduino y motor shield necesitan dos fuentes de alimentación diferentes (según tengo entendido).

Todavía deberías poder usar tus otros pines. Este protector de motor actuará como un hermano poderoso y escuchará lo que dice el pin y hará exactamente eso, por supuesto, con mucho poder, ¡él es el hermano mayor! ¿Podría editar su pregunta para que sea más específico sobre la cantidad de pilas AA que va a utilizar?
Bien, actualicé el número de baterías. ¿Crees que un motor paso a paso sería un mejor sustituto ya que he oído que funcionan muy bien con Arduinos?
@Om23 La elección de paso a paso, servo, CC con escobillas o CC sin escobillas estaría determinada por el propósito que se requiere que cumpla el motor y (por ejemplo, para motores BLDC) el hardware disponible para controlar el motor. Podría ser una nueva pregunta interesante, para determinar qué motor se usa mejor para cuál de los varios propósitos posibles que se le ocurran. No estoy seguro de que esa pregunta sea ideal para el sitio de Arduino, tal vez alguien más pueda intervenir en eso.

Respuestas (2)

Problema 1 : conducir un motor directamente desde un Arduino

No es aconsejable conducir un motor directamente desde los pines de Arduino por varias razones:

  • Corriente de carga , especialmente en condiciones de arranque y bloqueo del motor. Como se señaló correctamente en la pregunta, es posible que los pines Arduino simplemente no estén clasificados para suministrar suficiente corriente. El Arduino podría calentarse o incluso dañarse por un alto consumo de corriente sostenido.
    Si bien cada pin Arduino para Arduinos basados ​​en ATmega tiene una capacidad nominal de 40 mA, personalmente prefiero mantener cualquier carga sostenida por debajo de 30 mA, su apetito por el riesgo puede diferir. Sin ver la hoja de datos del motor en cuestión, es imposible suponer cuánta corriente requiere el motor
  • EMF inverso del motor, tanto durante el apagado del motor como posiblemente durante la conmutación del motor: a medida que gira un motor de CC, las escobillas de contacto "conmutan" entre anillos divididos, al menos en los tipos tradicionales de motores de CC con escobillas, generando chispas cada vez.
    Back EMF es básicamente voltaje inverso generado por las bobinas del motor (o cualquier carga inductiva en el apagado), transitorios (picos) que pueden exceder momentáneamente el rango de voltaje aceptable que los pines del microcontrolador pueden tolerar.
    Back EMF sigue siendo un riesgo, aunque disminuido, incluso si se conecta un diodo rápido en polarización inversa a través de los cables del motor, una práctica muy recomendada.
  • Por lo tanto, se recomienda encarecidamente algún tipo de aislamiento entre el Arduino y el motor. Por simplicidad de implementación, esto sería un escudo de motor.
    Si se siente cómodo con la electrónica básica, esto también se puede lograr conectando directamente un controlador de motor IC adecuado y diodos de retorno. ( Editar : esto se describe excelentemente en la respuesta de Manishearth )
    El controlador del motor, ya sea un escudo o un IC, debe alimentarse independientemente del Arduino, pero con las dos líneas de tierra de la fuente de alimentación conectadas entre sí. Ver más abajo.

Problema 2 : Controlar el acelerómetro y el escudo del motor simultáneamente

  • Sí, el acelerómetro se puede controlar y leer desde el Arduino con el escudo del motor en su lugar, asegurándose de que los pines seleccionados para acceder al acelerómetro no estén en uso por el escudo del motor. Todos estarían conectados al escudo, pero sin función interna o conexión dentro del escudo. La documentación del escudo seleccionado normalmente proporcionará esta información.
    Para mayor comodidad, busque un protector de motor con encabezados apilables, es decir, con los pines del encabezado de Arduino replicados en el protector del motor para conectar hardware adicional, en su caso, el acelerómetro. No todos los escudos proporcionan encabezados apilables. Por lo tanto, complica el uso de los pines no utilizados por el escudo, lo que requiere que los cables se suelden a las almohadillas de cabecera relevantes en la PCB, o alguna disposición similar.
    En caso de que el escudo del motor que seleccione use todos los pines GPIO, como puede ser el caso de los escudos para impulsar múltiples motores, es posible que tenga un problema. Dado que solo se debe accionar 1 motor, evite los protectores de múltiples motores que no dejan suficientes pines GPIO sin usar.

Problema 3 : distribución de energía entre Arduino y el protector del motor

  • El problema con la disposición sugerida de 6 x AA (máximo de 9 voltios nominales) es que si bien proporciona suficiente voltaje para el conector de entrada de CC disponible en muchos Arduinos (generalmente clasificado para entrada de 7 a 12 voltios), es demasiado alto para que el motor funcione. ser expulsado directamente de él.
  • Sin embargo, hay varios protectores de motor que aceptan una entrada de energía directa (por ejemplo, de 7 a 25 voltios) y luego proporcionan 5 voltios muy bien regulados al Arduino al que están conectados. Por lo tanto, el Arduino no necesita ser alimentado por separado en absoluto, y tampoco debería serlo. Este es absolutamente el único tipo de protector de motor que uno debe comprar .
  • Las alternativas de Kludgier incluyen tocar 4 de las 6 celdas AA para alimentar el motor y las 6 celdas para alimentar el conector de CC (PWRIN) del Arduino, o usar un regulador reductor de 6 voltios separado para la potencia del motor, mientras alimenta los 9 voltios. directamente al conector Arduino DC.
  • Intentar alimentar el Arduino con la batería y luego alimentar el motor desde el pin Vin del Arduino es una mala idea porque
    • El diodo M7 entre el conector de CC y el pin Vin en varios diseños de referencia de Arduino tiene una capacidad nominal de 1 amperio, es posible que el motor consuma más, al menos momentáneamente.
    • Todo el ruido electromagnético generado por el motor, el ruido de conmutación más los transitorios de retorno, se realimentarán a la placa Arduino a menos que se implemente un desacoplamiento muy rígido, lo cual no es un asunto sencillo. Esta retroalimentación EMI causará problemas intermitentes, difíciles de depurar, con la operación de Arduino.

La mayoría de los escudos ocupan algunos pines y dejan el resto para usted (es por eso que muchos tienen una réplica del sistema de pines Arduino encima de ellos usando encabezados apilables). Están diseñados para ser lo más sencillos posible, por lo que obtener un escudo es la forma más fácil de evitar esto.

Personalmente, no enciendo motores directamente desde la placa; en cambio, uso controladores de motor como el L293D para esto. Los pines no son realmente buenos para extraer corriente y, en general, es mejor alimentar los sensores directamente en lugar de hacerlo a través de los pines de Arduino. Recuerde, los pines tienen un límite de corriente y, si los sobrecarga, se quemarán.

Usar un L293D es fácil:

ingrese la descripción de la imagen aquí

Conecte los pines 1,9,16 a su fuente Vcc (terminal positivo de cualquier fuente de 5V con la que alimente el Arduino. Para mí, generalmente es una línea extraída de un LM7805). Ahora conecta los pines 4,5,13,12 a tu GND (terminal negativo). Ahora, conecte el pin 8 a una fuente de mayor voltaje (6 V, 12 V o lo que quiera alimentar a sus motores). Tenga en cuenta que los terminales negativos de todas las fuentes de voltaje deben cortocircuitarse a GND.

Ahora, conecte su motor a través de los dos pines de salida en un sitio (3,4 a la izquierda). Conecte los pines de entrada (2,7) a dos pines diferentes en el Arduino. Cuando da la misma señal (ALTO o BAJO) a ambos pines, el motor se detiene. Si da ALTO desde un pin y BAJO desde el otro, el motor irá en sentido horario o antihorario, dependiendo de qué pin recibió qué señal.

Si desea un motor unidireccional y desea ahorrar pines, cortocircuite uno de los pines de entrada a GND. Ahora, cuando el otro pin de entrada esté en BAJO, el motor estará apagado, y cuando esté en ALTO, el motor estará encendido.

Puede conectar otro motor utilizando el mismo procedimiento en el extremo opuesto del chip si lo desea.

El L293D extrae una pequeña cantidad de corriente del Arduino y alimenta el motor con la corriente extraída a través del pin 8 y, por lo general, es ideal para tales situaciones.