Taller 3. Motores CC y Pasos

Nuestro arduino /genuino, no tiene la potencia necesaria para mover un motor, o encender una bombilla de 12 V y no digamos controlar un motor trifásico.

Ahora vamos a trabajar con motores, para ello hay muchos circuitos que se pueden hacer, pero vamos a trabajar con un driver específico que se pueden usar con motores, tanto de corriente continua, como motores de pasos.

Este driver es el L298N, que consiste en un puente H.

¿Cómo funciona un puente H?

Un puente H es un circuito electrónico, que nos permite invertir el sentido de giro de un motor.

 

Con este sistema conseguimos invertir el sentido de giro del motor.

800px-h_bridge_operating-svg

¿Como funciona un L298N?

En realidad es un doble puente H, lo que nos permite controlar dos motores, e incluso un motor de pasos.

Además el L298N permite entradas PWM, con lo que no solo podremos controlar el sentido de giro, sino también la velocidad.

El driver dispone de 4 entradas que controlan otras tantas salidas, y con ellas conseguimos cambiar el sentido y velocidad.

Funcionamiento de los motores

Los motores tienen dos componentes importantes, que nos definirán su funcionamiento.

El funcionamiento de los motores eléctricos, está basado en repulsión/atracción de campos magnéticos. Hay un imán permanente y con electroimanes se produce el giro.

  • Estator: Que es la parte fija del moto
  • Rotor: Que es la parte móvil.

Los motores de corriente continua por ejemplo tienen imanes fijos en el estator y unas bobinas en el rotor, que son alimentadas por unas escobillas.

Los motores de pasos, por ejemplo tienen una construcción que permite avanzar un número concreto de pasos, y tienen el imán en el rotor y el bobinado en el estator.

Los motores brushless por ejemplo, los imanes están en el rotor, que es la parte exterior, mientras que el bobinado está en interior.

Según el tipo de motor deberemos usar un método u otro,vamos a ver los motores de corriente continua y los de pasos, que son los que controlaremos con el el L298N.

Motor de corriente continua

montaje_motor_cc_bb

Con cada pin de entrada del L298N (IN1,IN2,IN3,IN4) controlaremos las salidas. (OUT1,OUT2,OUT3,OUT4)

 


#define IN1 5
#define IN2 6

void configurar();
void avanzar(uint8_t velocidad);
void retroceder(uint8_t velocidad);
void parar();

void setup()
{
   configurar();
   avanzar(255);
   delay(2000);
   parar();
   delay(500);
   retroceder(255);
   delay(2000);
   parar();
}

void loop()
{
// put your main code here, to run repeatedly:

}
void configurar()
{
   pinMode(IN1,OUTPUT);
   digitalWrite(IN1,LOW);
   pinMode(IN2,OUTPUT);
   digitalWrite(IN2,LOW);
}
void avanzar(uint8_t velocidad)
{
   analogWrite(IN1,velocidad);
   digitalWrite(IN2,LOW);
}
void retroceder(uint8_t velocidad)
{
   analogWrite(IN2,velocidad);
   digitalWrite(IN1,LOW);
}

void parar()
{
   digitalWrite(IN1,LOW);
   digitalWrite(IN2,LOW);
}


 

Motores de pasos.

Los motores de pasos, tienen 2 bobinados por separado, y juegan con las diferentes posibilidades de orientación.

Cuando cogemos un motor de pasos hay que identificar las bobinas.
Hay motores de pasos de 4 , 6 cables, dependiendo si tienen conexionados a mitad de la bobina.

En nuestro caso solo tenemos 4 cables, para saber cuales están emparejados, con un polímetro y medimos resistencias, y eso nos dará la resistencia del bobinado, que podremos usar para calcular las intensidades que estén circulando por ellas.

Otra opción es simplemente juntar las bornas e ir viendo si hay algún tipo de resistencia.

La teoría de funcionamiento, sería la siguiente.

Paso Terminal 1
Bobina A
Terminal 2
Bobina A
Terminal 1
Bobina B
Terminal 2
Bobina B
Imagen
Paso 1 +Vcc -Vcc Stepper motor full step1.png
(Semi-)Paso 2 +Vcc -Vcc +Vcc -Vcc stepper_motor_full_step2bis
Paso 3 +Vcc -Vcc Stepper motor full step2.png
(Semi-)Paso 4 -Vcc +Vcc +Vcc -Vcc Stepper motor full step3bis.png
Paso 5 -Vcc +Vcc Stepper motor full step3.png
(Semi-)Paso 6 -Vcc +Vcc -Vcc +Vcc Stepper motor full step4bis.png
Paso 7 -Vcc +Vcc Stepper motor full step4.png
(Semi-)Paso 8 +Vcc -Vcc -Vcc +Vcc Stepper motor full step1bis.png

Para el control de este tipo de motores, Arduino ya dispone de una librería, aunque esta librería tiene un tema, y es que frena el motor usando los 2 bobinados haciendo que el motor y el driver ser calienten mucho.

He añadido unas funciones a la librería que frenan en motor con un solo bobinado y también se ha añadido otra que deja el motor libre.


#include <Stepper.h>

#define A1 5
#define A2 6
#define B1 9
#define B2 10
#define STEPS 200

Stepper motor(STEPS,A1,A2,B1,B2);
void setup()
{
   motor.setSpeed(100);
   motor.step(200);
   motor.step(-200);
   delay(1000);
}

void loop()
{

}