Вы находитесь на странице: 1из 15

Profesor: Carlos Pocasangre Diseada por: Br.

Manfred Gonzlez

Gua 2 Control de Motores, transistores y rels con Arduino

MARCO TERICO. Rels.


El rel o relevador es un dispositivo electromecnico. Funciona como un interruptor controlado por un circuito elctrico en el que, por medio de una bobina y un electroimn, se acciona un juego de uno o varios contactos que permiten abrir o cerrar otros circuitos elctricos independientes. Dado que el rel es capaz de controlar un circuito de salida de mayor potencia que el de entrada, puede considerarse, en un amplio sentido, como un amplificador elctrico.

Existen multitud de tipos distintos de rels, dependiendo del nmero de contactos, de su intensidad admisible, del tipo de corriente de accionamiento, del tiempo de activacin y desactivacin, etc. Cuando controlan grandes potencias se les llama contactores en lugar de rels. Etapas de potencia (Drivers). Representan el enlace entre las seales lgicas de control y las seales de potencia, corriente que circula por los bobinados. stas tienen que responder con rapidez a las excitaciones, as como proporcionar la corriente necesaria a la tensin de trabajo requerida para la alimentacin. Representan los interruptores de potencia que conmutan segn el control, formados por transistores bipolares. El bobinado de los motores paso a paso es inductivo y aparece en combinacin de una inductancia y una resistencia en serie. Cuando el motor gira nos encontramos con una fuerza electro motriz producida en el bobinado. Las etapas de potencia que controlan los bobinados se ven sometidas a los efectos de las pendientes en la corriente y las sobretensiones que produce la carga inductiva, por lo que se hace necesario la utilizacin de supresores para evitar daos en los elementos de potencia.

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez Circuitos supresores

Gua 2 Control de Motores, transistores y rels con Arduino

Cuando el transistor es desactivado, se induce un alto voltaje en el bobinado en funcin de L(di/dt). Este voltaje queda aplicado sobre el transistor, pudiendo llegar a daarlo. Existen diversos mtodos para suprimir el pico de tensin y proteger el transistor, el ms usado es Si un diodo es situado en paralelo con el bobinado. Con la polaridad tal como muestra la figura (a), la circulacin de la corriente fluye por ste cuando el transistor es desactivado, y la corriente decae en este momento.

Motores Paso a Paso.

Los motores unipolares se llaman as porque la corriente que circula por los diferentes bobinados siempre circula en el mismo sentido. En los motores bipolares para que el motor funcione la corriente que circula por los bobinados cambia de sentido en funcin de la tensin que se aplica. Por lo que un mismo bobinado puede tener en uno de sus extremos distinta polaridad (bipolar). Es importante conocer el tipo de motor que es, la potencia, grados por pasos, el par de fuerza, la tensin de alimentacin y la corriente que demanda este. Bipolar: Estos tiene generalmente cuatro cables de salida. Necesitan ciertos trucos para ser controlados, debido a que requieren del cambio de direccin del flujo de corriente a travs de las bobinas en la secuencia apropiada para realizar un movimiento. El control de estos motores se realiza mediante el uso de un puente en H (H-Bridge), ser necesario un H-Bridge por cada bobina del motor, es decir que para controlar un motor Paso a Paso de 4 cables (dos bobinas),

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez

Gua 2 Control de Motores, transistores y rels con Arduino

necesitaremos usar dos H-Bridges. El circuito de la figura es a modo ilustrativo y no corresponde con exactitud a un H-Bridge. En general es recomendable el uso de H-Bridge integrados como son los casos del L293.

Ejemplo ilustrativo de un puente H.

Circuito de uso de puentes H integrados en el L293.

Los motores paso a paso, difieren de los motores de CC, en la relacin entre velocidad y torque o "par motor". Su mayor capacidad de torque se produce a baja velocidad. Cuando se requieren mayores potencias, se deben agregar algunos componentes, como transistores y diodos para las contracorrientes, aunque esto no es del todo necesario en los pequeos motores. Unipolar: Estos motores suelen tener 6 o 5 cables de salida, dependiendo de su conexionado interno. Este tipo se caracteriza por ser ms simple de controlar. En la figura se muestra un ejemplo de conexionado para controlar un motor paso a paso unipolar mediante el uso de un ULN2803, el cual es una array de 8 transistores tipo Darlington capaces de manejar cargas de hasta 500mA. Las entradas de activacin (Activa A, B, C y D) pueden ser directamente activadas por un microcontrolador.

En general para los motores bipolares y unipolares puedes invertir las polarizaciones y al final te sorprender que el motor siga girando en la misma direccin. Lo nico que har que cambie de direccin es que reciba la secuencia de pasos en orden invertido; es decir repetir la secuencia que lo hace girar en una direccin al revs.

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez

Gua 2 Control de Motores, transistores y rels con Arduino

EJEMPLO 1: Control de rel mediante transistor.

//Ejemplo para activar un rel de 12V mediante un transistor. int boton_on = 12, boton_off = 11, salida = 13; int estado = 0; void setup(){ pinMode(boton_on, INPUT); pinMode(boton_off, INPUT); pinMode(salida, OUTPUT); } void loop(){ if(digitalRead(boton_on) == HIGH) estado = 1; if(digitalRead(boton_off) == HIGH) estado = 0; digitalWrite(salida, estado); }

EJEMPLO 2: Control de un motor DC.


Para el siguiente circuito se realiza el control de un motor DC y la inversin de giro de este mediante la utilizacin del integrado L293.

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez

Gua 2 Control de Motores, transistores y rels con Arduino

int a = 13, b = 12; int boton_derecha = 11, boton_izquierda = 10; void setup(){ pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(boton_derecha, INPUT); pinMode(boton_izquierda, INPUT); } void loop(){ if(digitalRead(boton_derecha) == HIGH && digitalRead(boton_izquierda) == LOW){ digitalWrite(a, HIGH); digitalWrite(b, LOW); } else if(digitalRead(boton_izquierda) == HIGH && digitalRead(boton_derecha) == LOW){ digitalWrite(a, LOW); digitalWrite(b, HIGH); } else{ digitalWrite(a, LOW); digitalWrite(b, LOW); } }

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez

Gua 2 Control de Motores, transistores y rels con Arduino

EJEMPLO 3: Control de motor paso unipolar (secuencia normal).


Esta es la secuencia ms usada y la que generalmente recomienda el fabricante. Con esta secuencia el motor avanza un paso por vez y debido a que siempre hay al menos dos bobinas activadas, se obtiene un alto torque de paso y de retencin.

Paso A B C D 1 1 0 0 0 2 0 1 0 0 3 0 0 1 0 4 0 0 0 1 1 0 0 0 1 2 0 0 1 0 3 0 1 0 0 4 1 0 0 0

Giro normal.

Giro sentido inverso.

Armar en Proteus el siguiente circuito. El puente H utilizado es el L293, el motor paso unipolar se puede encontrar como MOTOR-STEPPER.

int a = 13, b = 12, c = 11, d = 10, retardo = 100; int boton_derecha = 9, boton_izquierda = 8; void setup(){ pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT);

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez

Gua 2 Control de Motores, transistores y rels con Arduino

pinMode(d, OUTPUT); pinMode(boton_derecha, INPUT); pinMode(boton_izquierda, INPUT); } void loop(){ if(digitalRead(boton_derecha) == HIGH && digitalRead(boton_izquierda) == LOW) giroDerecha(); else if(digitalRead(boton_izquierda) == HIGH && digitalRead(boton_derecha) == LOW) giroIzquierda(); else{ digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); } } //Secuencia para girar a la derecha void giroDerecha(){ digitalWrite(a,1); digitalWrite(b,0); digitalWrite(c,0); digitalWrite(d,0); delay(retardo); digitalWrite(a,0); digitalWrite(b,1); digitalWrite(c,0); digitalWrite(d,0); delay(retardo); digitalWrite(a,0); digitalWrite(b,0); digitalWrite(c,1); digitalWrite(d,0); delay(retardo); digitalWrite(a,0); digitalWrite(b,0); digitalWrite(c,0); digitalWrite(d,1); delay(retardo); } //Secuencia para girar a la izquierda void giroIzquierda(){ digitalWrite(a,0); digitalWrite(b,0); digitalWrite(c,0); digitalWrite(d,1); delay(retardo); digitalWrite(a,0);

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez digitalWrite(b,0); digitalWrite(c,1); digitalWrite(d,0); delay(retardo); digitalWrite(a,0); digitalWrite(b,1); digitalWrite(c,0); digitalWrite(d,0); delay(retardo); digitalWrite(a,1); digitalWrite(b,0); digitalWrite(c,0); digitalWrite(d,0); delay(retardo); }

Gua 2 Control de Motores, transistores y rels con Arduino

EJEMPLO 4: Control de motor paso unipolar (Secuencia del tipo wave drive).
En esta secuencia se activa solo una bobina a la vez. En algunos motores esto brinda un funcionamiento ms suave. La contrapartida es que al estar solo una bobina activada, el torque de paso y retencin es menor. Para este ejemplo se usara el mismo circuito del ejemplo 2. La secuencia se detalla a continuacin: Paso A B C D 1 1 1 0 0 2 0 1 1 0 3 0 0 1 1 4 1 0 0 1 1 1 0 0 1 2 0 0 1 1 3 0 1 1 0 4 1 1 0 0

Giro normal.

Giro sentido inverso.

int a = 13, b = 12, c = 11, d = 10, retardo = 100; int boton_derecha = 9, boton_izquierda = 8; void setup(){ pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(boton_derecha, INPUT); pinMode(boton_izquierda, INPUT);

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez }

Gua 2 Control de Motores, transistores y rels con Arduino

void loop(){ if(digitalRead(boton_derecha) == HIGH && digitalRead(boton_izquierda) == LOW) giroDerecha(); else if(digitalRead(boton_izquierda) == HIGH && digitalRead(boton_derecha) == LOW) giroIzquierda(); else{ digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); } } //Secuencia para girar a la derecha void giroDerecha(){ digitalWrite(a,1); digitalWrite(b,1); digitalWrite(c,0); digitalWrite(d,0); delay(retardo); digitalWrite(a,0); digitalWrite(b,1); digitalWrite(c,1); digitalWrite(d,0); delay(retardo); digitalWrite(a,0); digitalWrite(b,0); digitalWrite(c,1); digitalWrite(d,1); delay(retardo); digitalWrite(a,1); digitalWrite(b,0); digitalWrite(c,0); digitalWrite(d,1); delay(retardo); } //Secuencia para girar a la izquierda void giroIzquierda(){ digitalWrite(a,1); digitalWrite(b,0); digitalWrite(c,0); digitalWrite(d,1); delay(retardo); digitalWrite(a,0); digitalWrite(b,0); digitalWrite(c,1); digitalWrite(d,1);

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez delay(retardo); digitalWrite(a,0); digitalWrite(b,1); digitalWrite(c,1); digitalWrite(d,0); delay(retardo); digitalWrite(a,1); digitalWrite(b,1); digitalWrite(c,0); digitalWrite(d,0); delay(retardo); }

Gua 2 Control de Motores, transistores y rels con Arduino

10

EJEMPLO 5: Control de motor paso bipolar.


Paso A B C D 1 1 0 1 0 2 1 0 0 1 3 0 1 0 1 4 0 1 1 0 1 0 1 1 0 2 0 1 0 1 3 1 0 0 1 4 1 0 1 0

Giro normal.

Giro sentido inverso.

Armar en Proteus el siguiente circuito. El puente H utilizado es el L293, el motor paso bipolar se puede encontrar como MOTOR-BISTEPPER.

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez

Gua 2 Control de Motores, transistores y rels con Arduino

11

int a = 13, b = 12, c = 11, d = 10, retardo = 100; int boton_derecha = 9, boton_izquierda = 8; void setup(){ pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(boton_derecha, INPUT); pinMode(boton_izquierda, INPUT); } void loop(){ if(digitalRead(boton_derecha) == HIGH && digitalRead(boton_izquierda) == LOW) giroDerecha(); else if(digitalRead(boton_izquierda) == HIGH && digitalRead(boton_derecha) == LOW) giroIzquierda(); else{ digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); } } //Secuencia para girar a la derecha void giroDerecha(){ digitalWrite(a,1); digitalWrite(b,0); digitalWrite(c,1); digitalWrite(d,0);

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez delay(retardo); digitalWrite(a,1); digitalWrite(b,0); digitalWrite(c,0); digitalWrite(d,1); delay(retardo); digitalWrite(a,0); digitalWrite(b,1); digitalWrite(c,0); digitalWrite(d,1); delay(retardo); digitalWrite(a,0); digitalWrite(b,1); digitalWrite(c,1); digitalWrite(d,0); delay(retardo);

Gua 2 Control de Motores, transistores y rels con Arduino

12

} //Secuencia para girar a la izquierda void giroIzquierda(){ digitalWrite(a,0); digitalWrite(b,1); digitalWrite(c,1); digitalWrite(d,0); delay(retardo); digitalWrite(a,0); digitalWrite(b,1); digitalWrite(c,0); digitalWrite(d,1); delay(retardo); digitalWrite(a,1); digitalWrite(b,0); digitalWrite(c,0); digitalWrite(d,1); delay(retardo); digitalWrite(a,1); digitalWrite(b,0); digitalWrite(c,1); digitalWrite(d,0); delay(retardo); }

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez

Gua 2 Control de Motores, transistores y rels con Arduino

13

EJEMPLO 6: Control de motor paso bipolar con 2 salidas.


Paso A B C D 1 1 0 1 0 2 1 0 0 1 3 0 1 0 1 4 0 1 1 0 1 0 1 1 0 2 0 1 0 1 3 1 0 0 1 4 1 0 1 0

Giro normal.

Giro sentido inverso.

Dependiendo de la aplicacin que deseamos implementar es necesario poder controlar un motor paso con solo dos salidas en lugar de 4. Esto se puede lograr ya que si nos fijamos en la secuencia de pasos, se puede notar algo interesante. Entre las entradas A y B de la tabla anterior, nunca son iguales, siempre estn en contraposicin. Es decir lo que ocurre en la entrada B es lo opuesto a la entrada A. Lo mismo ocurre con el par C y D. De modo que, si utilizamos dos salidas de Arduino como entradas A y C del L293 y conectamos dos inversores para las entradas B y D, dispondremos de las cuatro entradas necesarias para el L293, podemos eliminar pasos innecesarios de la secuencia, y una entrada a cada lado. Para esto se puede utilizar compuertas NOT (74LS04) o podemos realizar la inversin mediante dos transistores NPN (para este caso el B547) para realizar la inversin. Si usted le da un 1, le entregar un 0 y si le da un 0, se obtendr un 1, siempre la inversa. Armar en Proteus el siguiente circuito. El puente H utilizado es el L293, el motor paso unipolar se puede encontrar como MOTOR-STEPPER y los transistores usados son el BC547.

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez

Gua 2 Control de Motores, transistores y rels con Arduino

14

int a = 13, c = 12, retardo = 100; int boton_derecha = 11, boton_izquierda = 10; void setup(){ pinMode(a, OUTPUT); pinMode(c, OUTPUT); pinMode(boton_derecha, INPUT); pinMode(boton_izquierda, INPUT); } void loop(){ if(digitalRead(boton_derecha) == HIGH && digitalRead(boton_izquierda) == LOW) giroDerecha(); else if(digitalRead(boton_izquierda) == HIGH && digitalRead(boton_derecha) == LOW) giroIzquierda(); else{ digitalWrite(a, LOW); digitalWrite(c, LOW); } } //############################################################ //Secuencia para girar a la derecha void giroDerecha(){ digitalWrite(a,1); digitalWrite(c,1); delay(retardo);

Profesor: Carlos Pocasangre Diseada por: Br. Manfred Gonzlez digitalWrite(a,1); digitalWrite(c,0); delay(retardo); digitalWrite(a,0); digitalWrite(c,0); delay(retardo); digitalWrite(a,0); digitalWrite(c,1); delay(retardo);

Gua 2 Control de Motores, transistores y rels con Arduino

15

} //Secuencia para girar a la izquierda void giroIzquierda(){ digitalWrite(a,0); digitalWrite(c,1); delay(retardo); digitalWrite(a,0); digitalWrite(c,0); delay(retardo); digitalWrite(a,1); digitalWrite(c,0); delay(retardo); digitalWrite(a,1); digitalWrite(c,1); delay(retardo); }

ASIGNACIN.
1. Nmero de pasos por vuelta: Es la cantidad de pasos que ha de efectuar el rotor para donde NP es el nmero de realizar una revolucin completa; y esta es: pasos y el ngulo de paso del motor. Haga un programa que haga que un motor paso bipolar o unipolar realice 3 vueltas completas. 2.