Tema 9 - Control de Potencia y Motores
Tema 9 - Control de Potencia y Motores
Tema 9 - Control de Potencia y Motores
Controlando la potencia
Cuando necesitemos trabajar con potencia, necesitaremos usar electrónica externa. Usaremos
circuitos capaces de soportar esa potencia y que utilicen la salida de arduino como disparador.
Cómo hemos visto en la parte de electrónica podremos hacer esto con un transistor o con relé.
Usaremos el relé cuando el control que necesitamos es de tipo digital todo/nada o cuando
trabajemos con corriente alterna.
El transistor nos va a permitir controlar la cantidad de potencia, pero sólo para corriente
continua.
El montaje típico para un transistor es el siguiente
MontajeTransistor
1
Asociación Darwin Eventur
En primer lugar, vamos a ver como lo haríamos con un transistor, vemos como conectamos el
pin de Arduino a la base del transistor. Para un led no es necesarios en absoluto, pero este
circuito nos va a servir para activar un relé, sustituyendo la resistencia y el led por la bobina de
activación del relé.
Podemos ver cómo conectarlo en una breadboard.
ReleArduino
Veamos ahora cómo sería el esquema de un circuito con relé y dado que queremos poder usarlo
con relés de potencia, necesitaremos un transistor para activar la entrada del relé. En el circuito
aparece también un diodo que actúa como protección de nuestra placa arduino.
Vamos a ver ahora este circuito en la práctica. Hemos utilizado un transistor para activar un relé,
tal y como vimos en la explicación del transistor. Hemos sustituido el led por un relé. El transistor
sí que es capaz de entregar suficiente potencia para activar el relé. Veamos ahora cómo sería el
esquema de un circuito con relé y dado que queremos poder usarlo con relés de potencia,
necesitaremos un transistor para activar la entrada del relé. En el circuito aparece también un
diodo que actúa como protección de nuestra placa arduino.
Vamos a ver ahora este circuito en la práctica. Hemos utilizado un transistor para activar un relé,
tal y como vimos en la explicación del transistor.
Hemos sustituido el led por un relé. El transistor sí que es capaz de entregar suficiente potencia
para activar el relé.
El relé
Como hemos dicho un relé puede activar circuitos de corriente alterna o continua
Vamos a ver cómo usar un relé en corriente alterna como interruptor electrónico
2
Asociación Darwin Eventur
Relé domótica
Para activarlo basta con usar la instrucción
digitalWrite
Relé riego
3
Asociación Darwin Eventur
Con su correspondiente código
#define SERIAL_BAUD 9600 // Configuración de conexión serie
#define PIN_HUMEDAD_SUELO A1
#define PIN_POTENCIOMETRO A0
#define PIN_RELE 10
void setup() {
Serial.begin(SERIAL_BAUD);
pinMode(PIN_RELE,OUTPUT);
}
void loop() {
int iHumedad=1023-analogRead(PIN_HUMEDAD_SUELO);
int iPotenciometro=analogRead(PIN_POTENCIOMETRO);
Serial.print("Potenciometro:");
Serial.print(iPotenciometro);
Serial.print(" Humedad:");
Serial.println(iHumedad);
if(iPotenciometro>iHumedad){
enciendeRiego();
}else{
apagaRiego();
}
delay(ESPERA);
}
void enciendeRiego(){
digitalWrite(PIN_RELE,HIGH);
Serial.println("Riego encendido");
}
void apagaRiego(){
digitalWrite(PIN_RELE,LOW);
Serial.println("Riego apagado");
}
Motores
Existen diferentes tipos de motores según queramos velocidad o precisión de movimiento. Cada
uno de estos tipos tiene sus características y se controla de diferente manera.
En este vídeo vamos a ver también un resumen de los diferentes tipos de motores disponibles
4
Asociación Darwin Eventur
Para controlarlos se suelen usar módulos o shields. Veamos algunos de ellos y cómo usarlos en
este vídeo
Motor_L298_bb
Para controlarlo usaremos los pines IN3 y IN4 con los controlaremos la dirección de giro del
motor y el EnB que nos permitirá controlar la velocidad.
Este sería el código
// Variables globales
void setup() {
pinMode(In3,OUTPUT); // Establecemos los pines In3 e In4 como salida
pinMode(In4,OUTPUT);
}
// Establece la velocidad con el valor del PWM del pin EnB
void setSpeed(int speed){
analogWrite(EnB,speed);
}
// Paramos el motor
void stop(){
analogWrite(EnB,Min_Speed);
}
void loop() {
clockWise();
// Vamos aumentando la velocidad
for(int i=0;i<=255;i+=5){
setSpeed(i);
delay(200);
}
stop();
delay(1000);
antiClockWise();
// Vamos aumentando la velocidad
for(int i=0;i<=255;i+=5){
setSpeed(i);
delay(200);
}
stop();
delay(1000);
}
6
Asociación Darwin Eventur
Motores paso a paso (steppers)
En este vídeo hablamos de los motores paso a paso o Steppers
Son muchas las librerías que existen para ayudarnos a manejar los motores paso a paso Enlaces
a librerías * Stepper * AFMotor * AccellStepper , con unas característica como que permite
acelerar (ahorrando consumo) y funcionamiento asíncrono
Un problema que nos encontramos a veces es que no conocemos la estructura interna y el
cableado de un motor paso a paso. Veamos un vídeo sobre cómo averiguar la estructura interna
de un motor paso a paso
Veamos un ejemplo de control de un stepper
stepper
Para hacerlo girar podríamos usar una secuencia adecuada de digitalWrites (como hacen en este
ejemplo)
O podemos usar la librería Stepper
#include <Stepper.h>
Serial.begin(9600);
motor.setSpeed(20);
}
void loop()
{
if(Serial.available())
{
int steps =Serial.parseInt();
motor.step(steps);
}
}
int Pval = 0;
int potVal = 0;
void setup() {
Serial.begin(9600);
stepper.setSpeed(200);
}
void loop() {
potVal = map(analogRead(A0),0,1024,0,500);
if (potVal>Pval)
stepper.step(5);
if (potVal<Pval)
stepper.step(-5);
Pval = potVal;
Referencia
En este enlace se habla sobre motores paso a paso o steppers.
Control de un stepper barato
Sobre motores
8
Asociación Darwin Eventur