Controlador de motores

Descrición:

Para inverter o sentido de xiro dun motor o que debemos facer é cambiar a polaridade nos seus terminais. Segundo sexa esta conexión o motor xirará en sentido horario ou antihorario. Tamén, segundo sexa a voltaxe que chegue aos terminais, o motor xirará a máis ou menos velocidade.

Para realizar estas funcións cun único compoñente e de forma automática utilizamos os chamados controladores de motores o drivers, cuxa función é controlar o movemento dos motores, tanto en velocidade como en sentido de xiro, a través dos sinais nos seus terminais ou pins.

Hai moitos modelos de drivers no mercado. Irei poñendo aquí as conexións dos que dispoñamos no taller.

L293D L298N

TB6612FNG

L9110

Montaxe:

L293D

Driver L293D

l293d
[tecnoloxia.org, CC By-SA]
Alimentación:

  • Vlox: alimentación do circuíto (5V)
  • Vmot: Alimentación dos motores (5-12V)
  • GND: 0V (se usas diferente alimentación para placa e motores, poñer GND común)

Conexión dun motor:

  • Os pins 3 e 6 (Output1 e Output2) son as saídas ás que se conecta o motor M1.

Control dos motores:

  • Os pins Input1 e Input2 son os pins de control do motor M1, que irán conectados á placa Arduíno para controlar o sentido de xiro do motor.
  • O pin 1, Enable1, activa o uso do motor M1.
  • Cando o pin Enable1 toma un valor HIGH o motor M1 pode xirar dependendo dos valores I1 e I2. Se toma un valor LOW o motor párase, independentemente dos valores que tomen I1 e I2.
  • Asignando un valor entre 0 e 255 ao Enable desde un pin pwm regulamos a velocidade do motor.
Enable1 Input1 Input2 Motor
LOW X X Para
HIGH LOW LOW Para
HIGH LOW HIGH Sentido horario
HIGH HIGH LOW Sentido antihorario
HIGH HIGH HIGH Para

Exemplo controlando a velocidade:

analogWrite(Enable1, 150);
digitalWrite(In1, HIGH);
digitalWrite(In2, LOW);

L298N

Driver L298N

É un driver de motores que nos permite controlar o xiro e velocidade de dous motores de corrente continua.

Alimentación:

O driver inclúe un regulador de tensión que nos permite tanto alimentar os motores como obter unha saída de tensión de 5V pola saída Vlogico. Debemos alimentar o módulo cunha tensión máxima de 12V. Podemos usar esa saída para alimentar a placa arduino.

  • Jumper cerrado: alimentamos con 12V Vm e GND. Podemos alimentar a placa arduino conectando Vlogico por Vin. Non conectar tensión por Vlogico, é unha saída.
  • Jumper aberto: Habería que alimentar os motores a través de Vm e o módulo controlador con 5V a través de Vlogico, unindo GND.

Control dos motores:

  • IN1 e IN2 controlan o sentido de xiro do motor A. IN3 e IN4 do motor B.
  • ENA activa e controla a velocidade de xiro do motor A. ENB do motor B, utilizando sinais PWM (de 0 a 255)
  • Se hai conectados jumpers nos pins Enable os motores se moverán á velocidade máxima e non poderemos controlar a súa velocidade.
ENA IN1 IN2 Motor
LOW X X Para
HIGH LOW LOW Para
HIGH LOW HIGH Sentido horario
HIGH HIGH LOW Sentido antihorario
HIGH HIGH HIGH Para

Exemplo controlando a velocidade:

analogWrite(ENA, 150);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);

TB6612FNG

Driver TB6612FNG:

Por exemplo, para o motor A, o pin PWMA controla a velocidade de xiro (valores de 0 a 255), e os pins AIN1 e AIN2 o sentido de xiro.

AIN1 AIN2 Motor
0 1 Sentido horario
1 0 Sentido antihorario

Exemplo controlando a velocidade:

analogWrite(PWMA, 150);
digitalWrite(AIN1, HIGH);
digitalWrite(AIN2, LOW);

L9110

Driver L9110

Este driver só é útil para pequenos motores de baixo consumo (máximo 1A) e cun par relativamente baixo. Son moitos os proxectos que usan este tipo de motores e con este driver simplificamos as conexión e programación.

Aliméntase cunha tensión entre 2,5 e 12V. Podemos alimentalo a través da saída de 5V de arduino.

Os pins de control deben ser PWM para poder controlar a velocidade do motor.

Por exemplo para un motor A1, mediante a escritura dixital:
digitalWrite(A1A, HIGH);
digitalWrite(A1B, LOW);

A1A A1B Motor
0 0 parado
0 1 Sentido horario
1 0 Sentido antihorario

Se no canto de usar valores dixitais usamos valores PWM (de 0 a 255) controlamos a velocidade do motor.

analogWrite(A1A, 150);
analogWrite(A1B, 0);

Programa:

Neste exemplo imos controlar un motor cun L293D conectando Enable1 ao pin 10, Input1 ao pin 9 e Input2 ao pin 6, pero podes adaptar o código a calquera outro driver de motores.

Faremos que o motor execute o seguinte de maneira cíclica:

  • arranca nun sentido e xira durante 3 segundos,
  • para durante un segundo
  • xira durante 3 segundos en sentido contrario
  • volve parar durante un segundo.
// Declaración de variables:

const int E1 = 10;   // Enable pin
const int I1 = 9;    // Control pin 1
const int I2 = 6;    // Control pin 2

// Configuración:

void setup(){
  pinMode( 6, OUTPUT);        // Configuramos os pins
  pinMode( 9, OUTPUT);
  pinMode( 10, OUTPUT);
}
 
// Programa:

void loop() {
  digitalWrite(E1, HIGH);     // Activamos Motor
  digitalWrite(I1, HIGH);     // Arrancamos nun sentido
  digitalWrite(I2, LOW);        
  delay(3000);
  digitalWrite(E1, LOW);      // Paramos Motor
  delay(1000);
  digitalWrite(E1, HIGH);     // Activamos Motor
  digitalWrite(I1, LOW);      // Arrancamos con cambio de sentido
  digitalWrite(I2, HIGH);
  delay(3000);
  digitalWrite(E1, LOW);      // Paramos Motor 
  delay(1000);
}

Propostas:

  1. Velocidade: Utiliza a función analogWrite(pin, PWM); para o control da velocidade do motor. Lembra que os sinais PWM van de 0 a 255.
  2. Funcións I. Crea unhas función chamadas “esquerda”, “dereita” e “paro” que almacenen as instrucións do movemento do motor. Utilízaas para facer o mesmo programa anterior.
  3. Funcións II. Engade a esas funcións un parámetro para indicar a velocidade de xiro.
  4. Pulsadores. Conecta dous pulsadores. Cando prememos no primeiro o motor xira en sentido horario, cando prememos no segundo xira en sentido antihorario, e cando non prememos ningún para.
  5. Finais de carreira. Fai que ao premer nun pulsador o motor xire nun sentido, e cando toca un microinterruptor final de carreira, pare. Ao premer noutro pulsador o motor xira en sentido contrario, e cando acciona outro microinterruptor final de carreira, para.
  6. Potenciómetro. Conecta un potenciómetro á entrada analóxica A0. Fai que o pin Enable1 tome un valor entre 0 e 255 en función da entrada do potenciómetro (entre 0 e 1023) e observa o cambio de velocidade. Para enviar un valor PWM ao pin Enable1 lémbrate de que ten que estar conectado a un pin PWM do Arduíno. Utiliza a expresión: analogWrite(Enable1, pwm);

 


Deixa un comentario