Trabajando con un sensor y un motor, ¿puedo usar ambos o debo usar un protector del 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 utilizando 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 demora de algún tipo podría funcionar (¿sería esto posible?).

Estoy pensando en utilizar un motor shield . ¿Podré seguir controlando el acelerómetro junto con el motor?

Estoy tratando de usar una única fuente de energía externa (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 una manera de usar una fuente, ya que el Arduino y el escudo del motor necesitan dos fuentes de alimentación diferentes (según entiendo).

    
pregunta Om23

2 respuestas

12

Problema 1 : conducir un motor directamente desde un Arduino

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

  • Carga de corriente , especialmente en condiciones de arranque y parada del motor. Como se señala correctamente en la pregunta, es posible que los pines Arduino simplemente no estén calificados para suministrar suficiente corriente. El Arduino puede calentarse o incluso dañarse por un consumo de alta corriente sostenido.
    Si bien cada pin Arduino para Arduinos basado en ATmega tiene una clasificación de 40 mA, personalmente prefiero mantener cualquier carga sostenida por debajo de 30 mA, su apetito por el riesgo puede variar. Sin ver la hoja de datos del motor en cuestión, es imposible suponer cuánta corriente requiere el motor
  • Back-EMF del motor, tanto durante el apagado del motor como, posiblemente, durante la conmutación del motor: como un motor de CC gira, los cepillos de contacto se "conmutan" entre los anillos partidos, al menos en los tipos tradicionales de Motores de corriente continua cepillados, generando pequeñas chispas cada vez.
    Back EMF es básicamente el 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 pueden tolerar los pines del microcontrolador. Volver EMF sigue siendo un riesgo, aunque reducido, 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, es muy recomendable un aislamiento de algún tipo entre el Arduino y el motor. Por simplicidad de implementación, esto sería un escudo 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 y diodos de retorno adecuados. ( Editar : Esto se describe de manera excelente 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 : control simultáneo del acelerómetro y la protección del motor

  • Sí, el acelerómetro se puede controlar y leer desde el Arduino con el protector del motor en su lugar, asegurándose de que los pines seleccionados para acceder al acelerómetro no estén siendo utilizados por el protector del motor. Todos estarían conectados al protector, pero sin una función interna o conexión dentro del protector. La documentación para el escudo seleccionado normalmente proporcionará esta información.
    Para mayor comodidad, busque un protector del motor con encabezados apilables, es decir, con los pines del cabezal Arduino replicados en el protector del motor para conectar hardware adicional, en su caso, el acelerómetro. No todos los escudos proporcionan encabezados apilables. De este modo, se complica el uso de los pines no utilizados por el protector, ya que es necesario soldar los cables a las almohadillas de cabecera correspondientes en la PCB, o alguna disposición similar.
    Si tiene la posibilidad de que el protector del motor que seleccione utilice todos los pines GPIO, como puede ser el caso de los protectores para manejar varios motores, puede tener un problema. Dado que solo se debe conducir 1 motor, evite los protectores 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 6 x AA sugerida (máximo nominal de 9 voltios) es que, si bien proporciona suficiente voltaje para la toma de entrada de CC disponible en muchos Arduinos (generalmente con una entrada de 7 a 12 voltios), es demasiado alto para el motor debe ser impulsado directamente fuera de él.
  • Sin embargo, hay varios escudos del motor que aceptan una entrada de alimentación directa (por ejemplo, de 7 a 25 voltios) y luego proporcionan 5 voltios bien regulados al Arduino al que están conectados. Así que el Arduino no necesita ser alimentado por separado en absoluto, y tampoco debe serlo. Este es absolutamente el único tipo de protección del motor que se debe comprar .
  • Las alternativas de Kludgier incluyen hacer tapping en 4 de las 6 celdas AA para alimentar el motor, y las 6 celdas para alimentar la toma de CC (PWRIN) del Arduino, o usar un regulador de buck de 6 voltios separado para la alimentación del motor, mientras se alimenta Los 9 voltios directamente a la toma de Arduino DC.
  • Intentar alimentar el Arduino con la batería y luego encender 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, 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 alimentarán de nuevo a la placa Arduino a menos que se implemente un desacoplamiento muy rígido, no es un asunto simple. Esta retroalimentación de EMI causará problemas intermitentes y difíciles de depurar con la operación de Arduino.
respondido por el Anindo Ghosh
10

La mayoría de los escudos toman unos pocos pines y dejan el resto para ti (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 libres de problemas posibles, por lo que obtener un escudo es la forma más fácil de solucionar esto.

Yo personalmente no hago funcionar motores desde la placa directamente; En su lugar utilizo controladores de motor como el L293D para esto. Los pines no son realmente buenos para extraer la 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 una L293D es fácil:

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 conecte los pines 4,5,13,12 a su GND (terminal negativo). Ahora, conecte el pin 8 a una fuente de voltaje más alto (6V, 12V, o lo que quiera que alimente 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 emite la misma señal (ALTA o BAJA) a ambas clavijas, el motor se detiene. Si le asigna HIGH desde un pin y LOW desde el otro, el motor irá en el sentido de las agujas del reloj o en sentido contrario a las agujas del reloj, según el pin que reciba 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é en ALTO, el motor estará encendido.

Si lo desea, puede conectar otro motor utilizando el mismo procedimiento en el extremo opuesto del chip.

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

    
respondido por el Manishearth

Lea otras preguntas en las etiquetas