bclose

Motores de Corriente continua

Controlando pequeños motores de continua

Objetivos

 

 
    • Presentar los motores de corriente contínua.
    • Comprender las bases de funcionamiento.
    • Montar un circuito típico de uso y control de los motores CC.
    • Montar un variador de velocidad del motor

 

 

Material requerido.

 
 

Los motores de corriente continua, o motor CC

 

Es difícil moverse por nuestro mundo sin tropezarte con motores eléctricos de todos los tipos y tamaños. Desde los pequeños con los que arrancas el coche cada mañana a los muy pequeños que mueven tu reproductor de CDs o DVS, al que hace girar el microondas con el que te calientas el café al levantarte, estamos rodeados de motores eléctricos.

Podemos comprar desde grandes motores trifásicos, de corriente alterna, de gran potencia para labores industriales hasta pequeños motores de corriente continua para mover las ruedas de un pequeño coche de control remoto.

En sesiones previas, ya presentamos una introducción a como gobernar servos o pequeños motores de CC, pero ha llegado el momento de dedicarles un poco más de tiempo y detalle a ver lo que son y cómo usarlos en nuestro proyectos de Arduino.

Y como siempre es preferible empezar por el principio vamos a comenzar con los motores de corriente continua y viendo cómo podemos controlarlos.

Estoy seguro, de que todos estaréis familiarizados con el hecho de que los imanes tienen un polo positivo y otro negativo y que mientras que los polos opuestos se atraen, los iguales se repelen.

Imanes

Hay una relación muy estrecha entre la corriente eléctrica y los campos magnéticos que definen las ecuaciones de Maxwell (Ya estamos otra vez) y  resulta que cuando hacemos circular una corriente por un conductor que está inmerso en un campo magnético, este se ve sometido a una fuerza mecánica, que llamamos electromotriz y que podemos usar como principio básico de funcionamiento de un motor eléctrico

Desde un punto de vista práctico, si hacemos circular una corriente por un hilo que está entre los polos de un imán, aparecerá una fuerza mecánica que se opondrá a los cambios de esta corriente e intentara hacer girar el conductor para compensarlos.

La fuerza que aparezca será proporcional a la intensidad del campo magnético, y a el número de conductores que sean recorridos por la corriente, (por eso lo que hacemos es arrollar espiras de cobre o devanados alrededor de un núcleo, para que la fuerza aumente).

Todos los motores eléctricos disponen de dos partes básicas:

 
  • El estator o parte inmóvil que por regla general incluye o bien imanes potentes fijos o generan un campo variable mediante corriente alterna (Lo que nos llevaría a construir un motor de corriente alterna claro)
  • El rotor, en el que disponemos espiras o arrollamientos de hilos de cobre alrededor de un núcleo, para que la fuerza que se ejerce sobre el rotor se multiplique proporcionalmente a este número

 

La idea final es que podemos diseñar motores de corriente continua sencillos para que esta fuerza sea máxima.

Claro que a medida que la fuerza electromotriz hace girar una fracción de vuelta el rotor, al final nos encontraríamos que, llegaríamos a una posición de equilibrio, lo que no nos conviene en absoluto porque se pararía el giro del motor.

Por eso tenemos que complicar un poco más el asunto y asegurarnos de que disponemos de múltiples grupos de espiras en distintas posiciones, de forma que cuando un grupo alcance el equilibrio el otro tome el relevo y el motor siga girando.


Ilustra el giro del motor

Fijaros en los bloques negros marcados como + y – (Que llamamos escobillas) que se mantienen estáticos mientras alimentamos con corriente eléctrica una pareja de espiras con devanados opuestos. Cuando llegan al punto de equilibrio, desconectan ese juego de espiras y  las escobillas alimentan el siguiente juego de espiras durante una fracción de vuelta… y vuelta a empezar.

De ese modo siempre hay un juego de espiras conductoras fuera de la posición de equilibrio que se ve sometido a la fuerza electromotriz y obliga al motor a girar buscando un equilibrio (Como en el caso de los imanes) al que nunca le permitimos llegar.

Vista interior
Esquema interior

En esta imagen izquierda podéis apreciar los arrollamientos de hilo conductor, para un pequeño motor de corriente continua. En la animación de la derecha, podéis apreciar el conjunto girando, y donde Shaft, es el eje de giro. Brushes son las escobillas. Rotor coils son los devanados de hilo conductor y Magnets son imanes.

 

Controlando un motor de CC con Arduino

 

En la sesión transistores, vimos que era muy fácil hacer girar un pequeño motor mediante un transistor que regulase la intensidad de corriente que le entregamos.

En aquella sesión nos centramos casi en exclusiva en el transistor, para presentar este componente, que vamos a utilizar una y otra vez, y prácticamente usamos el motor como excusa sin entrar en el tema. Pero en esta ocasión queremos poner el foco en el motorcito y como lo controlamos y por eso vamos a volver a este ejemplo, pero complicándolo un poco más (Que le vamos a hacer), añadiendo un potenciómetro que nos permita variar la velocidad de giro el motor.

Para ello usaremos un motor de continua, de 5V, con rueda, que podéis encontrar por muy poco dinero y que nos viene de perlas para apreciar el de giro.

Como cualquier motor, por pequeño que sea consume más de lo que uno de los pines de nuestros Duinos pueden proporcionar, necesitamos usar un transistor como el 2N2222 para alimentarlo. Y usaremos uno de los pines de Arduino para gobernar este transistor.

Vamos a repetir el montaje que vimos en la sesión transistores con este motorcito. Os incluyo copia del esquema eléctrico que usamos allí y del diagrama de pines del transistor.

Transistor gobernando un motor

 

 

Detalle pines

Aquí tenéis el esquema inicial sin potenciómetro para que comprobéis las conexiones del motor y que funciona correctamente, antes de seguir.

Protoboard transistor motor

 

Para comprobar que el motor funciona, podéis cargar este pequeño programa, que simplemente varia la tensión que ponemos en el pin 9 para modificar la velocidad de giro del motor:

const int control = 9 ;

void setup()
   {    pinMode(control,  OUTPUT) ; }

void loop()
   {
        for ( int n = 0 ; n < 255 ; n++)
          {
              analogWrite (control,  n) ;
              delay(15) ;
          }
   }

Que como veréis, simplemente pone un valor analógico en el pin 9. Podemos controlar la velocidad del motor variando la intensidad de tensión que ponemos en la base del transistor, ya que esta regula la resistencia que el transistor presenta entre emisor y colector.

A 0V el transistor entra en corte (Resistencia infinita) y a 5V está en saturación, con lo que presenta resistencia nula.

 
  • No supongáis que podemos hacer que el motor gire de forma continua para todos los valores de tensión en la base. Por debajo de un cierto umbral se parará y solo girará cuando este se supere.
  • Al hacer crecer el valor de tensión que le damos al motor, la velocidad de giro, irá aumentando progresivamente.   

Aquí os pongo un pequeño video con el resultado:

Vamos a probar ahora a colocar un potenciómetro conectado a la puerta analógica A1, cuya lectura usaremos para variar la señal que ponemos en la base del transistor. Con ella variaremos la velocidad de giro.

La idea es que a medida que aumentamos o disminuimos la tensión en la base del transistor, la caída de tensión en este varia de forma acorde haciendo que el motor reciba más o menos tensión y esto se traduce en una cambo de su velocidad de giro.

Y un programa que lee el potenciómetro y varía la velocidad de giro en consonancia puede ser algo como ésto:

const int control = 9 ;

void setup()
  {    pinMode(control,  OUTPUT) ;
       Serial.begin(9600);  
  }

void loop()
  {
       int n = analogRead(A1)/ 4;     // Las lecturas analogicas van hasta 1024 y no hasta 255
       Serial.println(n);
       analogWrite (control,  n) ;
       delay(200) ;
   }

Aquí os pongo un video con el resultado:

Así pues, controlar un pequeño motor de corriente continua es bastante fácil, pero… hasta ahora el motor siempre gira en la misma dirección. ¿Cómo podemos hacer para que invierta su sentido de giro?

Esto queridos amigos será el motivo de la la próxima sesión, porque para eso necesitaremos sofisticar un poco más el circuito

 

Resumen de la sesión

 

 
    • Hemos visto los principios basicos de los motores de corriente continua.
    • Revisamos un típico circuito de alimentación y control.
    • Vimos que la velocidad de giro es proporcional a la tensión que aplicamos en bornas del motor.
    • Vimos como variar la velocidad usando esta idea.

 

 

 

 

(89) Comments

    • JOSUE

    Hola, si me pudieses ayudar seria excelente. estoy en un proyecto

    y tengo que usar máximo 2 relevadores y tengo que usar 4 motores (2 motores funcionan en un solo relevador, los dos al mismo tiempo)

    necesito saber si hay una forma para invertir el giro de motor con los relevadores?
    si alguna manera de invertirlo con transistores pero usando siempre los dos relevadores

    de verdad ojala me puedas ayudar, te lo agradecería, haces un buen trabajo

    • Hola Josue, deberías montar un circuito H-bridge o usar un l293D

    • Hola Josue.

      Debes usar reles DPDT. Con ellos puedes invertir el giro de los motores. Si buscas en Internet “control sentido motor con rele” o similar, verás cómo es el conexionado.

      Saludos.

    • Camila

    Hola, como haría para poder controlar el tiempo en que las ruedas giran? Es decir 10 segundos girando y que 10 segundo paren y así sucesivamente…

    • la forma más sencilla sería usar un delay. Le pones un delay(10000); después de encenderlos y otro después de apagarlos. Un saludo.

    • Fernando

    Hola, no tengo conocimientos de electrónica pero tengo muchas ganas de aprender y a todos los que estamos en esta situación nos ayudaría mucho el esquela del potenciometro. Excelente trabajo!

    • Hola Fernando. Solo tienes que coger un potenciómetro de 10K, por ejemplo, y de las tres patas que trae, la de la izquierda la conectas a 5V, la central al pin analógico que usas en el sketch (A1 en este caso), y la tercera pata a GND. Si el potenciómetro es de 100K tampoco pasa nada.
      Saludos.

    • Mario montaño

    hola muy buen tutorial, solo algo me intriga, a mi nunca me ha funcionado como un PPP un 2n2222. como lo lograron?

    • Hola Mario, en el tuto tienes la descripcion de todo el montaje ¿No?

    • Nicolas

    hola a todos, necesito de su ayuda estoi haciendo un proyecto contiene 6 motores en total pero necesito controlar de a 3 motores como si fuera uno solo y queria saber si puedo utilizar el shield que permite hasta 4 motores dc pero en un puerto en vez de conectar un motor conectar dos???

    • Hola Nicolas, en principio puedes conctar varios motores a un unico puerto del shiel, pero lo que te limita es la corriente que puede aceptar y a poc que consume lo superara

      La solucion es que uses mas de un controlador de motores (el https://www.prometec.net/producto/9141/ por ejemplo) que te permite montar uno encima de otro y aunque enchufes los 3 motores a distintos puertos, los manejas por sof a unison, vale?

  • Excelentes tutoriales, muy completos y detallados, pero a éste le falta mencionar dentro del MATERIAL REQUERIDO el transistor 2N2222.

    • Hola Antonio tienes toda la razón. Lo corregimos en cuanto podamos. Gracias y un saludo.

    • Eduardo

    Hola a todos,
    Necesito hacer un programa que mueva cuatro motores que se alimento con un voltaje entre 4.5 y 15V y arduino es capaz de proporcionar. Sabéis como como alimentar el sisitema?? Necesitaría una fuente de alimentación y un transistor?? Y como se conectaría?? Un saludo
    Muchas gracias por adelantado

    • Ricardo rodriguez rojo

    Hola quisiera saber como controlar motor mediante sensor de movimiento pir? Que el motor este trabajando y cuando el sensor se active el motor se detenga?

    • Es tan sencillo como mezclar los dos programas. Cuando el sensor de pir se dispare simplemente cortas la alimentaciion al motor y listo

    • SM

    Como se haría para que el motor no pare por completo?

    • Si no quieres que se pare del todo en vez tienes que hacer que la variable n que da velocidad al motor nunca llegue a 0, por ejemplo

      for ( int n = 50 ; n < 255 ; n++) { analogWrite (control, n) ; delay(15) ; }

  • Hola! gracias por atenderme. Quería hacer dos preguntas:
    * Por una parte, si queremos saturar el transistor, ¿por qué ponemos la resistencia de 330 ohmios? El pin digital nos da 0V o 5V (supongamos sólo señal de encendido y apagado). ¿Por qué no conectarlo directamente a la base?
    * Por otra parte, cuando utilizamos una fuente externa, por ejemplo de 12V, otra duda que tengo es si en el arduino, sólo debemos conectar el pin 9, o por el contrario necesitamos conectar además del pin 9, la GND a masa común (la masa de la fuente de alimentación).

    • Hola Kike, la resistencia se usa para limitar la intensidad que llega al terminal de la base, o se rompería.

      Cuando utilices varias dispositivos deberías unir siempre las tierras.

      • Gracias por lo de unir siempre las tierras, no estaba seguro.

        Sobre la otra cuestión todavía no la tengo clara. En la sesión sobre transistores (https://www.prometec.net/transistores/) se dice “un valor de 5V en la Base permite el paso de la corriente sin restricciones.”

        Si el pin digital de arduino, con un valor HIGH, tiene una tensión de 5V, si le conectamos una resistencia en serie de 330 ohmnios, se tendrá una caída de tensión, por lo que el transistor no satura ya que en la base tendremos una tensión inferior a 5. No sé si el razonamiento tiene un error de concepto… Además, 40mA que da como máximo los pines digitales, ¿puede provocar daño al transistor?

        Gracias de nuevo

        • Hola Kike.

          Manejar un transistor requiere de una serie de fórmulas que puedes encontrar en Internet como “Polarización del transistor” o títulos similares, ya que es un tema algo extenso.
          Pero con Arduino y microcontroladores lo que se suele usar es el transistor como interruptor, o dicho de otro modo, en corte y saturación. En corte, cuando no conduce, y en saturación cuando permite es paso de toda la corriente.
          Hay una fómula sencilla para determinar esa resistencia que se coloca en la base del transistor, pues su valor depende de la carga que vaya a manejar el mismo, el voltaje que entra por la base, el Vbe sat o voltaje de saturación base/emisor y la ganancia del transistor o hfe. Es así:
          Rbase = ((Vbase – Vbe sat) * hfe)/ I carga

          Vbase: Son los 5V de Arduino.
          Vbe sat: Normalmente son 0.6V (esto viene en la hoja de datos del transistor), pero puede ser otro voltaje.
          hfe: Es la ganancia, que se suele ser 100, pero se debe mirar en la hoja de datos.
          I carga: Es la corriente (en amperios) que demanda la carga conectada al transistor.

          Con esta sencilla fórmula puedes hallar la resistencia que debe llevar el transistor elegido con respecto a la carga conectada a él y su corriente.

          Saludos.

          • Gracias Jesús, me ha aclarado mucho. Salu2!

          • Por nada…!
            Puedes crear un Excell en el que puedas introducir el Vbase, el Vbe, el hfe y la corriente de la carga, y te calcula automáticamente la resistencia que debes poner.
            Recuerda que la corriente es en amperios, así que si la carga demanda 100mA debes poner 0.1
            El resultado te aparecerá en Ohmios, y si te resultara 6830, por ejemplo, pues equivale a una resistencia de 6K8. Siempre puedes colocar una un poco inferior o superior al valor que te de el resultado, ya que no es crítico.

            Saludos.

  • Hola, existe alguna manera de hacer este programa de variación de velocidad pero en lugar de un potenciometro, ocupar 2 botones. Al presionar uno, suba su velocidad y al presionar el otro la disminuya? Esto haciéndolo gradualmente con cada botón.

    • Buenos dias Raul,

      Nada mas facil. Define una variable global llamada velocidad por ejemplo. Haz un programa en que cada vez que pulses el bont de subir aumente el valor y cuando pulses ol otro boton haz disminui speed y despues haz que el valor de speed corresponda a la señal PWM con que manejas la velocidad del motor

  • hola cual es el código para cambiar la polaridad del motor?

    • Hola Lunix, para cambiar la polaridad del motor tendrías que dar la vuelta a los cables del mismo. Un saludo.

    • Daniel

    Una duda,¿ no habría que alimentar el transistor con una batería externa en lugar de con el Arduino?

    ¿Cuánto es capaz de suministrar el Arduino por la salida de 5V?

    • Hola Daniel, me parece que son 500mA, por supuesto podrías usar una batería o una fuente de alimentación externa para alimentar el transistor, siempre que este lo aguante. Un saludo.

  • Se podria hacer con cualquier transistor? O solo con este?

    • en principio valdria cualquier transistor

    • Nano

    Hola, sería muy útil si pudieras poner la imágen de como se arma cuando tiene el potenciometro, en el vídeo no se aprecia bien y para los principiantes es muy difícil ello, vengo horas intentando 🙁

  • ¿podrías mandarnos los códigos de arduino para realizar lo de regular la potencia del motor? gracias

    • Hola anonimo, sera un placer pero los tienes en la sesion y en sus continuacions. No tienes mas que copiarlos o escargarlos

    • Jose

    Quisiera iniciarme sin gastar mucho, así que estoy reciclando algunos componentes.

    Extraje los motores de vibración de un mando de Playstation, ¿cómo puedo saber el voltaje máximo que le puedo suministrar? ¿Será suficiente para un proyecto como este? Le puse una pila de 9V directamente y no tiene mucha fuerza (monte una estructura de coche y apenas la mueve)

    • Hola Jose,

      Para saber el voltaje de esos motores mira la beteria que usa o el numero de pilas que usa. SI por ejempo usa 4 pilas de 1,5 entonces sabes que como maximo sera 4×1,5 = 6V o sea 5V, pero ten en cuenta que esos motores de vibracion no son demasiado potentes

  • Hola como podria controlar un motor mediante un sensor de movimiento de eje x y y

    • Hola Edgardo ¿De que sensor nos estas hablando?

    • Henry Silva

    Que necesitaria de extra si quiero hacer eso pero con un motor de 12v

    • pues usar un transistor por ejemplo que soporte la corriente que pase

Give a Reply

WordPress Anti-Spam by WP-SpamShield

¡Ofertón!

Robot Rover 4×4

Ahora por sólo

50€ + IVA

¡Lo quiero!