Control de motores con un Arduino Uno... ¿Es posible (y seguro)?

Tengo un Arduino Uno y un jeep RC económico con un motor de CC funcional y un servo de giro en la rueda delantera, pero no tengo un escudo Ardumoto para controlarlo (todavía).

Realmente me gustaría saber si es posible y seguro que mi Arduino Uno (de back-EMF ) construya un circuito para controlarlo con Arduino Uno, usando algún mecanismo de conmutación para alimentar el motor por separado de los 5 V de Arduino Uno.

Descubrí que el motor toma (creo) un máximo de 6.8 V conectándolo a una batería de 9 V (su etiqueta dice que toma 9.6 V para todo el vehículo, incluido el servo de la rueda delantera y algunos LED). Conecté la batería a través de mi protoboard con un mini interruptor SPST y leí el voltaje con mi medidor. El motor tiene 8 ohmios de resistencia, así que calculo que tira 0,85 A / 5,78 W.

Tengo algunos amplificadores operacionales 741 y LM324, algunos diodos 1N4001 y Zener, una variedad de transistores NPN y PNP, incluidos algunos transistores TIP120 Darlington y varios condensadores.

¿Podría usar alguna combinación de ellos para alimentar el motor y el servo mientras protejo el Arduino Uno de la EMF trasera? Si no, ordenaré el Ardumoto.

Si ayuda, las imágenes del jeep con primeros planos etiquetados del motor / servocontrolador estándar están aquí:

http://www.flickr.com/photos/tommytwoeyes/sets/72157627827980121/

Busqué esto en Google extensamente y también pregunté al respecto en Reddit . Sin faltarle el respeto a esos muchachos, porque sus respuestas fueron increíbles. Pero había tanta información entre varios sitios y diferentes publicaciones en el subreddit, que era un poco abrumador y ocasionalmente conflictivo. Solo estoy tratando de aprender e identificar la mejor solución.

Sé que algunos de los Reddit tienen mucho conocimiento, pero he visto consejos muy malos votados allí. Es un problema que espero se resuelva con el tiempo, sobre todo veo consejos profesionales.

Respuestas (2)

Dado que puede reemplazar el arduino por menos de $ 30 (o por alrededor de $ 5-6 si el chip atmega está enchufado, o solo $ 3.50 por un atmega en blanco que puede inicializar en una placa usando el boceto arduinoISP antes de freír el actual ) , si está más interesado en aprender cosas, le diría que siga adelante y construya algunos circuitos de conducción. Por otro lado, si solo quiere "hacer que funcione", compre el protector de controlador de alguien o el módulo de controlador controlado en serie.

Aparte, las baterías de "9v" tienen muy poca capacidad de corriente y no están diseñadas para motores; usar una con un motor hará que su voltaje baje severamente y se agotará rápidamente. La mayoría de los componentes de su juguete están conectados en paralelo: la batería de 9,6 V (probablemente compuesta por 8 celdas de NiCd o NiMH de tamaño AA) probablemente alimenta el motor de accionamiento directamente, y el servo y quizás la electrónica a través de un regulador de voltaje de aproximadamente 5 voltios. (al menos si son piezas estándar). Probablemente deberías mantener ese esquema.

Hay algunas cosas que puede hacer para "proteger" el arduino, como usar optoaisladores (esencialmente, un LED y un fototransistor moldeados en un paquete similar a un IC; puede hacer el suyo con piezas discretas y tubos termorretráctiles) para transferir señales entre el arduino (o receptor de radio) y el servo y el motor de accionamiento sin que exista ninguna conexión eléctrica entre los dos, cada uno en ese caso requiere su propia batería. Sin embargo, la mayoría de los equipos económicos simplemente se basan en un diseño y filtros cuidadosos para suprimir los picos, el ruido de suministro y la RFI. Entre las cosas que verá en los vehículos R/C:

  • pequeños condensadores entre los terminales de los motores y/o entre cada terminal y la carcasa del motor

  • si el motor es unidireccional, un diodo invertido entre los terminales, si es bidireccional, cuatro diodos invertidos entre los dos terminales del motor y los dos terminales de la batería.

Lo más probable es que pueda encontrar una solución que funcione con la misma batería si enciende el motor directamente, ejecuta el servo con su propio regulador de 5v y ejecuta el arduino con su regulador de 5v integrado. Alternativamente, puede darle al arduino su propia batería (quizás 3 AAA si pasa por alto el regulador) y establecer una conexión a tierra común entre eso y la batería del motor / servo.

En términos de circuitos impulsores para el motor principal, la gran pregunta es si está de acuerdo con solo avanzar o si necesita avanzar y retroceder. Las preguntas relacionadas son el control de velocidad del ciclo de trabajo PWM, el frenado electrónico y la eficiencia.

Para un juguete pequeño con solo avance, simplemente puede usar un transistor NPN de tamaño mediano como un interruptor en el cable negativo (emisor a batería, colector a motor), con la base conectada a través de una resistencia a un pin arduino. Un enfoque pragmático sería comenzar con una resistencia grande como 10K ohmios y reducir la resistencia justo hasta que la caída de voltaje en el transistor se reduzca a aproximadamente 0,6 V, lo que implica que está completamente "encendido" y la mayor parte del voltaje de la batería está disponible para el motor.

Hacer el control de avance-retroceso es más complicado, generalmente se logra con un "controlador de puente H" en el que cada pata del motor se puede conectar al terminal negativo de la batería a través de un transistor NPN o al terminal positivo a través de un PNP. Se requieren dos pines de control: 01 es una dirección de rotación, 10 la otra, mientras que 00 y 11 detienen el motor. Construir puentes H es un poco complicado: debe asegurarse de que la polarización sea tal que el transistor NPN y PNP en un lado no puedan estar encendidos a la vez y provocar un cortocircuito en la fuente de alimentación, pero existen soluciones empaquetadas como el L293 y L298 (que maneja dos motores).

Los transistores bipolares tienen una pérdida sustancial a voltajes bajos, por lo que los vehículos de mayor rendimiento suelen usar MOSFET, pero es más complicado trabajar con ellos (especialmente en una configuración de puente H) y manejarlos (están sujetos a daños por estática o sobrevoltaje).

Vaya, gracias Cris. Esa es una tonelada de buena información. Quiero que conserve su funcionalidad de avance y retroceso, por lo que parece que necesitaré un circuito de puente H o usar MOSFETS. Basado en eso, estoy empezando a pensar que sería mejor aprender a gatear antes de intentar caminar. Es más importante para mí entender todo lo que estoy construyendo/trabajando en el camino que hacer que el motor funcione con componentes que aún no entiendo completamente. Mi nuevo Ardumoto debería estar aquí el sábado, así que creo que esperaré para usarlo.

Será seguro hacer lo que quiera para una amplia gama de valores de seguridad :-).
es decir, controlar un motor utilizando un controlador de fabricación propia y un Arduino básico no es técnicamente difícil, pero hay un aprendizaje en el camino que tendrá que estar dispuesto a hacer. Comprar una pieza de hardware que ya funciona facilitará su tarea. Te pondrás en marcha más rápido (probablemente) pero aprenderás menos o mucho menos. La decisión es tuya.

Varios de sus conceptos e ideas básicos "necesitan mejorar", y las personas aquí estarán dispuestas y serán capaces de ayudar en esta área. No entraré en un tutorial sobre las áreas en las que aún parece necesaria más información; veamos a cuál quieres ir primero.

Como se muestra a continuación, si el Ardumoto hace lo que usted quiere, puede hacerlo usted mismo con relativa facilidad. Si esto vale la pena es TBD. Esto NO utiliza la retroalimentación del motor de fuerza contraelectromotriz para permitir que el procesador controle la velocidad. Esto es factible. Si desea hacerlo se puede determinar "en el camino".

Es "bastante fácil" controlar motores como mencionas sin volar tu Arduino, y también lo suficientemente fácil como para volar cosas si insistes en no tener suficiente cuidado :-).

Tenga en cuenta que el L298 puede controlar motores de hasta aproximadamente 4A. La corriente que realmente toma su motor aún está por determinarse; ese es uno de los malentendidos que deben resolverse.

El L298 en un paquete de orificio pasante cuesta $ 4.67 en 1 en Digikey. ¿Cuánto cuesta un Ardumoto o equivalente?

El Ardumoto se ve como se muestra a continuación y se basa en la
hoja de datos del controlador de motor de puente completo ST L298 aquí

ingrese la descripción de la imagen aquí

Un circuito de control de motor completo puede ser tan simple como se muestra a continuación y, a juzgar por la imagen de arriba, probablemente sea así de simple en este caso:

ingrese la descripción de la imagen aquí

Eso debería servir por ahora. ¿Comentarios?


El control del motor utilizando una placa controladora TB661FNG disponible aquí de Sparkfun está muy bien cubierto en la hoja de experimentos de laboratorio a la que hace referencia tommutwoeyes en respuesta a su propia pregunta. Está todo ahí. Ahora es cuestión de revisarlo todo punto por punto y hacer lo que dice.

Como guía, que realmente no debería ser necesaria, ya que todas las conexiones ya están nombradas, el siguiente diagrama, tomado de la hoja de laboratorio, proporciona pautas de conexión.

Tenga en cuenta que están usando 7,5 V para el motor y 5 V para el IC. Se puede hacer funcionar un motor adecuado con 5 V CC PERO usando un suministro separado del suministro IC, pero con las conexiones a tierra unidas. significa que es más fácil mantener el ruido del motor fuera del IC.

ingrese la descripción de la imagen aquí

Gracias, sí, eso es muy útil. Pedí un Ardumoto (cuesta alrededor de $25) y me di cuenta de que incluso si no lo uso en este proyecto, tendré muchos más proyectos con los que usarlo. Para este, sin embargo, estoy más interesado en aprender que en hacer que funcione de la manera más fácil. Si mi cálculo de amperaje está mal, ¿cómo puedo obtener una medición más precisa?
@tommytwoeyes - (1) Multimeter en rango de 10A o 20A (baja resistencia interna) en serie con motor. Tal vez una tapa electrolítica a través de los cables del medidor para reducir el ruido. O (2) Coloque una pequeña resistencia en serie con el motor, conecte la tapa electrolítica a través de la resistencia +ve hacia la alimentación +. Mida la caída de voltaje a través de la resistencia. Pequeño = 1 ohm, o 0,1 ohm o ... . | Con 1 ohm, la caída es de 1 voltio a 1 amperio. Con una caída de 0,1 ohmios es de 100 mV por amperio. Por ejemplo, el rango del medidor de 2 V y la resistencia de 0,1 ohmios dan un rango de 0-20 A = una resolución de 10 mA para un rango de lectura de 0000 a 1999. El uso de un rango de 200 mV y 0.1R da una resolución máxima de 2A y 1 mA.
Hola chicos, pedí un TB6612FNG para impulsar el motor único en el jeep RC, y llegó hace un par de días. Miré la hoja de datos [PDF] y algunos ejemplos que demuestran las conexiones con el controlador aquí y aquí [PDF] , pero, siendo un n00b total con estas cosas, todavía no tengo claro exactamente cómo conectar esta placa de controlador a la alimentación y a mi Arduino. ¿Alguien sabe de videos, imágenes u otros documentos que muestren cómo conectar todos estos pines?
@tommytwoeyes: TODA la información que necesita está en la hoja de laboratorio. Vea la adición al final de mi respuesta.