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

11

Actualización: Actualmente estoy cambiando algunas cosas con el proyecto. Tomé algunos de ustedes 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 nuestra primera vez usando un Arduino. Estamos usando un Arduino para tomar datos de un sensor (acelerómetro) y luego encender el motor (6V, DC).

He estado cavando un poco y parece que la energía del Arduino podría no ser suficiente para el motor y el sensor al mismo tiempo. Tal vez un retraso de algún tipo podría funcionar (¿sería esto posible?).

Estoy pensando en usar un escudo de motor . ¿Podré seguir controlando el acelerómetro junto con el motor?

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

Om23
fuente
Aún debería poder usar sus otros pines. Este escudo motor actuará como un hermano poderoso y escuchará lo que dice el pin y hará exactamente eso, por supuesto, con mucha potencia, ¡é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?
Abdullah Kahraman
Bien, actualicé la cantidad 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
@ Om23 La elección de paso a paso, servo, CC cepillada o CC sin escobillas estaría determinada por el propósito que el motor debe cumplir 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 utiliza mejor para cuál de los varios propósitos posibles que se le ocurran. No estoy seguro de que tal pregunta sea ideal para el sitio Arduino, tal vez alguien más pueda intervenir en eso.
Anindo Ghosh

Respuestas:

12

Problema 1 : conducir un motor directamente desde un Arduino

No es aconsejable conducir un motor directamente fuera de los pines Arduino por múltiples razones:

  • Corriente de carga , especialmente en condiciones de arranque y parada del motor. Como se señaló correctamente en la pregunta, los pines Arduino simplemente no pueden estar clasificados para suministrar suficiente corriente. El Arduino podría calentarse o incluso dañarse por el consumo sostenido de alta corriente.
    Si bien cada pin Arduino para Arduinos basados ​​en ATmega tiene una capacidad de 40 mA, personalmente prefiero mantener cualquier carga sostenida por debajo de 30 mA, su apetito de riesgo puede ser diferente. Sin ver la hoja de datos del motor en cuestión, es imposible suponer cuánta corriente requiere el motor
  • EMF de retorno del motor, tanto durante el apagado del motor como posiblemente durante la conmutación del motor: a medida que un motor de CC gira, los cepillos de contacto "conmutan" entre anillos partidos, al menos en los tipos tradicionales de motores de CC cepillados, generando pequeños chispas cada vez.
    El EMF posterior es básicamente un voltaje inverso generado por las bobinas del motor (o cualquier carga inductiva en el apagado), transitorios (picos) que pueden superar momentáneamente el rango de voltaje aceptable que los pines del microcontrolador pueden tolerar.
    Volver EMF sigue siendo un riesgo, aunque disminuido, incluso si un diodo rápido está conectado en polarización inversa a través de los cables del motor, una práctica muy recomendable.
  • Por lo tanto, se recomienda un aislamiento de algún tipo 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 IC de controlador de motor 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 protector del motor en su lugar, asegurando que los pines seleccionados para acceder al acelerómetro no sean realmente utilizados por el protector del motor. Todos estarían conectados al escudo, pero sin función interna o conexión dentro del escudo. La documentación para el escudo seleccionado generalmente proporcionará esta información.
    Para mayor comodidad, busque un protector del motor con encabezados apilables, es decir , con los pines del encabezado 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, se complica el uso de los pines no utilizados por el blindaje, ya que se necesitan cables para soldar a las almohadillas de encabezado relevantes en la PCB, o alguna disposición de este tipo.
    En el caso de que el protector del motor que seleccione use todos los pines GPIO, como puede ser el caso con los protectores para conducir múltiples motores, puede tener un problema. Dado que solo se debe conducir 1 motor, evite los blindajes multimotor que no dejan suficientes pines GPIO sin usar.

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

  • El problema con la disposición sugerida de 6 x AA (9 voltios nominales como máximo) es que si bien proporciona suficiente voltaje para el conector de entrada de CC disponible en muchos Arduinos (generalmente clasificado para una entrada de 7 a 12 voltios), es demasiado alto para que el motor ser expulsado directamente de él.
  • Sin embargo, hay varios blindajes de motor que aceptan una entrada de potencia directa (por ejemplo, de 7 a 25 voltios) y luego proporcionan 5 voltios bien regulados al Arduino al que están conectados. Por lo tanto, el Arduino no necesita ser alimentado por separado, y tampoco debería serlo. Este es absolutamente el único tipo de escudo 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 separado de 6 voltios 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 Arduino está clasificado para 1 amperio, el motor podría dibujar 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 retroalimentará a la placa Arduino a menos que se implemente un desacoplamiento muy rígido, no es un asunto simple. Esta retroalimentación EMI causará problemas intermitentes, difíciles de depurar, con la operación del Arduino.
Anindo Ghosh
fuente
10

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 sencillo posible, por lo que obtener un escudo es la forma más fácil de evitarlo.

Yo personalmente no acciono los motores directamente desde el tablero; en cambio, uso controladores de motor como el L293D para esto. Los pines no son realmente buenos para extraer corriente, y generalmente es mejor alimentar los sensores directamente en lugar de a través de los pines 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 de 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 conecte los pines 4,5,13,12 a su GND (terminal negativo). Ahora, conecte el pin 8 a una fuente de mayor voltaje (6V, 12V, o lo que quiera alimentar a sus motores). Tenga en cuenta que los terminales negativos de todas las fuentes de voltaje deben estar en cortocircuito 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 (ALTA o BAJA) a ambos pines, el motor se detiene. Si da ALTO de un pin y BAJO del otro, el motor irá en sentido horario o antihorario, dependiendo del pin que recibió la señal.

Si desea un motor unidireccional y desea guardar los pines, acorte uno de los pines de entrada a GND. Ahora, cuando el otro pin de entrada está BAJO, el motor estará apagado, y cuando esté 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 de la corriente extraída a través del pin 8, y generalmente es ideal para tales situaciones.

Manishearth
fuente