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

5

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 solo 5V.

Hasta ahora, esto es lo que he intentado:

PuedocontrolarlavelocidaddelmotorcambiandoelPWMdelpin3enelArduino.EstoabreeltransistorNPN( BUF654 ).

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

De 0% a 50% PWM en el pin 3, el motor está bloqueado.

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

Me pregunto si podría 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 consume cuando se usa solo 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? ¿Podría venir el problema de mi motor?

    
pregunta mimipc

3 respuestas

2

Su diodo está en la posición incorrecta; debe estar en el motor (¡bloqueando!) no en el 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 se apaga el transistor. Cuando el transistor se apaga, el voltaje en el colector del transistor aumentará a medida que salía del motor. Desde \ $ V_ {CE (SAT)} \ $ subirá por encima del voltaje de la fuente de alimentación y se detendrá solo cuando el transistor se averíe (o cuando comience a sonar con capacitancia parásita). Al colocar un diodo desde el colector del transistor al riel de +12 V, evita que la tensión en el transistor exceda los 12 V y permite que la corriente del motor continúe fluyendo.

La forma en que tiene el diodo en su pictórica, solo conduciría si el voltaje fuera a tierra. Eso solo podría suceder si alguien girara mecánicamente el motor muy rápido en la dirección inversa (y su diodo causaría un aumento del voltaje en el riel de 12 V).

    
respondido por el Spehro Pefhany
2

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 usa cables largos, esto es importante). Esto ayuda a suprimir los picos eléctricos generados por el motor cuando lo detiene, pero sigue girando y actúa como un generador durante una fracción de tiempo muy breve.

Estos picos pueden matar tu transistor. La otra solución, lo que has hecho, es proteger el transistor en sí.

Debe tener en cuenta que es imposible hacer que un motor de CC gire muy lentamente. Esto viene de la estructura mecánica del motor. Si está utilizando un motor sin reducción de engranajes, verá que 30% -100% pwm hace alguna diferencia, mientras que 0..30% no hace nada. Con el motor de engranajes (los engranajes tienen carga adicional), es posible que necesite ir al 50% solo para que empiece.

Puedes hacer algunas cosas:

  • use la función de mapa para asignar sus necesidades de energía del 0..100% a 50..80% de la salida PWM. Tenga en cuenta que la velocidad no siempre es lineal a la entrada pwm, por lo que es posible que necesite una tabla de linerización para solucionarlo.
  • Si su objetivo es tener un motor que pueda girar extremadamente lento, considere usar un motor paso a paso. Si necesitas un rango medio y medio lento, esto es bueno.
  • Si necesita de extremadamente lento a extremadamente rápido, será mejor que vaya con dos motores y una caja de engranajes diferencial, si es bueno en mecánica
  • Otra solución es usar un motor de CA trifásico y un controlador que 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 de hoy. El truco es que los bobinados del motor siempre están energizados, por lo tanto, tiene un par constante. Al cambiar la frecuencia de la forma de onda de activación, tiene un control muy preciso sobre la velocidad.
respondido por el Gee Bee
0

¿Podría ser fricción estática? ¿Qué sucede si tu boceto 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 CC lentamente (a menos que tenga comentarios de posición, por supuesto, o engranajes).

    
respondido por el maxy

Lea otras preguntas en las etiquetas