5 votos

¿Cómo controlar la velocidad de un motor de 12V DC con un Arduino?

Estoy tratando de averiguar cómo controlar la velocidad de un motor de 12V DC con un arduino y una batería de 12V.

Quiero dividir las partes de "alimentación" y "control" del circuito para que el Arduino y los sensores reciban sólo 5V.

Hasta ahora, esto es lo que he probado :

enter image description here

Puedo controlar la velocidad del motor cambiando el PWM del pin 3 en el Arduino. Esto abre el transistor NPN ( BUF654 ).

El problema es que la velocidad del motor no cambia lo suficiente.

Del 0% al 50% de PWM en el pin 3, el motor está parado.

Por encima del 50%, el motor casi alcanza su velocidad máxima.

Me pregunto si sería capaz de tener una variación lineal :

0% - 10% : very slow
10% - 20% : slow
20% - 50% : normal speed
50% - 80% : fast
80% - 100% : RELEASE THE KRAKEN!

Aquí están el voltaje y la corriente que el motor dibuja cuando se utiliza sólo una batería, o el circuito anterior :

+----------------------------+---------+--------+
| Directly on 12V battery    | 12.7 V  | 61 mA  |
+----------------------------+---------+--------+
| Arduino circuit (100% PWM) | 12.47 V | 60 mA  |
+----------------------------+---------+--------+
| Directly on 9V battery     | 9 V     | 54 mA  |
+----------------------------+---------+--------+
| Arduino circuit (60% PWM)  | 9 V     | 52 mA  |
+----------------------------+---------+--------+

¿Qué he hecho mal? ¿El problema podría venir de mi motor?

0 votos

¿El diodo está conectado a través del transistor?

0 votos

Sí, lo es. Evita que se dañen los componentes cuando el motor se detiene (se invierte la corriente).

0 votos

¿Hay alguna ventaja específica para utilizar este transistor en lugar del clásico L293D?

2voto

Spehro Pefhany Puntos 90994

Tu diodo está en la posición incorrecta - debería estar a través del motor (¡bloqueando!) no a través del transistor.

El propósito del diodo es permitir que la corriente que fluye en la bobina del motor continúe fluyendo en la misma dirección cuando el transistor se apaga. Cuando el transistor se apaga, la tensión en el colector del transistor subir mientras salía del motor. Desde \$V_{CE(SAT)}\$ se elevará por encima de la tensión de alimentación y se detendrá sólo cuando el transistor se rompa (o cuando empiece a sonar con la capacitancia parásita). Poniendo un diodo desde el colector del transistor hasta el carril de +12V, evitas que la tensión a través del transistor supere los 12V y y permites que la corriente del motor siga fluyendo.

La forma en que tienes el diodo en tu imagen, sólo conduciría si el voltaje fuera inferior a la tierra. Eso sólo podría ocurrir si alguien hace girar mecánicamente el motor muy rápido en la dirección inversa (y su diodo causaría el voltaje en el carril de 12V para aumentar como resultado).

0 votos

No veo por qué debería ser a través del motor, ya que se supone que gira en ambas direcciones (utilizando un interruptor DPDT después del transistor). Muchos de los tutoriales que he leído utilizan el diodo acress el transistor para evitar daños en los componentes. Si me he perdido algo, ¿puedes explicarlo por favor?

1 votos

Bien, debería estar al otro lado de donde está el motor AHORA. No tenemos forma de saber lo que tienes en mente. Si añades un interruptor DPDT estaría a través de los terminales comunes del interruptor (o, más sencillamente, del colector del transistor a la banda +12).

0 votos

Entiendo tu punto de vista, pero no entiendo por qué cambiaría algo. La única diferencia en este caso es que evita que la corriente fluya a través del transistor cuando se invierte. Si pongo el diodo a través del motor (o del interruptor DPDT en mi caso), ¿podría eso romper el transistor si fluye demasiada corriente hacia atrás?

2voto

cleary Puntos 121

Aunque el diodo está en una posición inusual, el circuito funciona bien. Por lo general, el diodo se coloca a través de la carga inductiva -es decir, a través de las clavijas del motor- muy cerca del motor (si se utilizan cables largos, esto es importante). Esto ayuda a suprimir los picos eléctricos generados por el motor cuando lo paras, pero éste sigue girando y actúa como generador durante una fracción de tiempo muy corta.

Estos picos pueden matar su transistor. La otra solución - lo que has hecho - es proteger el propio transistor.

Deberá tener en cuenta que es imposible hacer que un motor de corriente continua gire muy lentamente. Esto se debe a la estructura mecánica del motor. Si usas un motor sin reducción de engranajes, verás que el 30%-100% de pwm hace alguna diferencia, mientras que el 0..30% no hace nada. Con un motor con engranajes (los engranajes son una carga extra), es posible que necesites llegar al 50% sólo para que arranque.

Puedes hacer algunas cosas:

  • utilice la función de mapa para asignar sus necesidades de potencia del 0..100% al 50..80% de la salida PWM. Tenga en cuenta que la velocidad no siempre es lineal a la entrada pwm, por lo que puede necesitar una tabla de linerización para arreglar eso.
  • si tu objetivo es tener un motor que pueda girar extremadamente lento, considera usar un motor paso a paso. Si necesitas un motor extremadamente lento y de gama media, éste es bueno.
  • Si necesitas ir de extremadamente lento a extremadamente rápido, será mejor que vayas con dos motores, y una caja de cambios diferencial, si eres bueno en mecánica
  • Otra solución es utilizar un motor trifásico de corriente alterna y accionarlo con el microcontrolador. Esta solución no es un tema para principiantes, pero es la solución de facto para los vehículos eléctricos actuales. El truco es que los devanados del motor están siempre energizados, por lo tanto tienes un par constante. Mientras se cambia la frecuencia de la forma de onda de conducción, se tiene un control muy preciso sobre la velocidad.

0voto

tgoossens Puntos 113

¿Podría ser la fricción estática? ¿Qué pasa si tu sketch de arduino arranca primero el motor (PWM máximo) y luego disminuye lentamente durante varios segundos?

Mi experiencia es que es muy difícil hacer funcionar un motor de corriente continua lentamente (a menos que tengas retroalimentación de posición, por supuesto, o engranajes).

0 votos

Lo siento, mi primera pregunta no fue lo suficientemente clara. Estoy usando engranajes y el movimiento muy lento que quiero es fuera de la caja de cambios.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X