Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MAQUINAS ELECTRICAS
PRACTICA NO. 3
CONTROL ON/OFF DE UN MCDIP CON ARDUINO
EQUIPO No.4
INTEGRANTES:
ANGELES SANCHEZ PABLO ALAN
CORTES PEREZ FRANCO
OBJETIVOS GENERALES
Revisar e implementas las técnicas control ON/OFF comúnmente empleadas en
microcontroladores para la operación de motores de corriente directa de imanes
permanentes, mediante el uso de una interfaz de potencia desarrollando con un transistor
tipo NPN
Objetivo de Aprendizaje
- Diseño de una interfaz de potencia para un motor de MCDIP.
- Control de un motor de CD mediantes dos botones pulsadores (SET/RESET), con
prioridad al RESET.
- Control de un motor de CD a través de dos botones pulsadores (SET/RESET), con
prioridad al SET.
- Control de un motor de CD mediante el botón pulsador con función TOGGLE
(ON/OFF), y eliminación de ruido (DEBOUNCE).
- Control de un motor de CD a través del monitor serie con ayuda de teclado de la
computadora.
MARCO TEORICO
Memoria SET/RESET
El principio de funcionamiento de una memoria denominada SET/RESET consiste:
Con la presencia de una señal discreta por el lado SET de la función, se produce una
memorización de la salida; esto significa que dicha salida queda activa permanentemente
aun cuando esta señal desaparezca después, siempre y cuando por el lado del reset no se
active la señal que lo afecta.
Cuando se desea borrar la memorización de la salida, es decir desactivarlo, será necesario
aplicarle por el lado del reset de la función la condición lógica 1 a través de la entrada que
lo afecta. Solamente es necesario, al igual que para set aplicar un pulso.
Finalmente, si existiera la simultaneidad de señales tanto por el lado set como reset, la
activación de la salida se producirá o no, conforme estén ordenadas las instrucciones se
set y reset en la función; esto significa, que si el set esta primero que le reset, la salida no
se activa, y si la orden de reset esta primera que la del set la salida se activa.
Etapa de Potencia
Cuando es necesario controlar el sentido de giro
de un motor de corriente continua de baja
potencia, se suelen utilizar transistores de
potencia en configuración “Puente en H”, tal
como se muestra en la figura:
En la configuración H el funcionamiento de los
transistores es tal que siempre están
conduciendo o bloqueados por parejas. Así, si
T1 y T4 conducen, T2 y T3 están bloqueados y
viceversa. Regulando el tiempo que conducen o
están bloqueados se varía la velocidad (ver
apartado anterior) y regulando la pareja que conduce, el sentido de giro.
Para evitar que los picos de tensión que aparecen
en la bobina dañen a los transistores (ver apartado
6 del capítulo “Estudio del motor de cd para
aplicaciones de tracción en robots con ruedas”), se
añaden a la configuración anterior cuatro diodos
supresores de pico, como se muestra en la figura:
MATERIALES
Cantidad Descripción
1 pza. Placa Arduino UNO Rev3 con chip
ATmega328P DIP28 (28pines)
1 pza. Fuentes de alimentación de 9 v CD
1 pza. Tabla de experimentación
(Protoboard)
1 jgo. Cables dupont (jumpers) macho-
macho preferente
1 pza. Cables dupont (jumpers) macho-
hembra preferente
1 pza. Motor de CD de imanes permanentes
1 pza. Resistencia de 220 ohm ¼ whatts
2 pzas. Resistencia de 10k ohm ¼ whatts
1 pza. Resistencia de 1k ohm ¼ whatts
2 pzas. Push-button NA de 2 o 4 pines
1 pza. Diodo rectificador 1N4001
DESARROLLO
Parte 1 Control de un motor de CD mediante SET/RESET
Se requiere primero construir el circuito que se mostrara en el diagrama de conexión.
Posteriormente se deberá programar el algoritmo en donde con una función SET que es cuando
exista un pulso positivo en S1, el motor deberá arrancar, mientras que con una función RESET que
es con la activación del interruptor S2 se deberá detener el motor.
Placa Arduino
1 motor de 9 V
1 pila de 9 V
1 TIP120
1 diodo 4004
3 resistencias de 1kΩ
2 pulsadores
Diagrama de conexión
Esquema de conexión
Algoritmo de operación
SET/RESET
Baudaje9600
NO NO
El Pin de Set El Pin de
está Activo Reset está
Activo
SI SI
Imprime”MotorEncedido” Imprime”MotorApagado”
Sketch
void setup(){
pinMode(buttonpin1,INPUT);
pinMode(buttonpin2,INPUT);
pinMode(motorpin,OUTPUT);
Serial.begin(9600);
}
void loop(){
set=digitalRead(buttonpin1):
reset=digitalRead(buttonpin2):
if(set){
digitalWrite(motorpin,HIGH):
Serial.println(‘ON’);
}
if(reset){
digitalWrite(motorpin,LOW):
Serial.println(‘OFF’);
}
}
Evidencia fotográfica
Comentarios y conclusiones: En esta parte pudimos ver el funcionamiento de las funciones SET y
RESET y como con estas podemos controlar el arranque y paro de un motor, tuvimos que
programar el código y mediante los pulsadores asignarlos como SET y RESET.
Parte 2 Control de un motor de CD con mando local y/o remoto mediante comunicación
serial
En este ejercicio se utiliza el circuito de la parte anterior asi como parte del sketch.
Placa Arduino
1 motor de 9 V
1 pila de 9 V
1 TIP120
1 diodo 4004
3 resistencias de 1kΩ
2 pulsadores
Esquema de conexión
Algoritmo de operación
Baudaje9600
NO
El Pin de Set Apaga el Motor
está Activo ó
Rmote==a Imprime”MotorApagado”
SI
Prende Motor
Imprime”MotorEncedido”
Sketch
void setup(){
pinMode(buttonpin1,INPUT);
pinMode(buttonpin2,INPUT);
pinMode(motorpin,OUTPUT);
Serial.begin(9600);
}
void loop(){
set=digitalRead(buttonpin1):
reset=digitalRead(buttonpin2):
remote=Serial.read();
if(set||remote==’a’){
digitalWrite(motorpin,HIGH):
Serial.println(‘ON’);
}
if(reset||remote==’p’){
digitalWrite(motorpin,LOW):
Serial.println(‘OFF’);
}
}
Evidencia fotográfica
Comentarios y conclusiones: Con esta parte pudimos ver cómo controlar el arranque y paro del
motor pero haciendo uso de nuestro PC configurando las letras a y p como arranque y paro
haciendo uso de la función Serial.
Mediante la lógica del estado anterior, a partir de un solo interruptor controle el accionamiento de
un motor, es decir que con el primer pulso encienda y con el segundo apague.
Corrija el efecto de rebote del pulsador mediante software, para ello, con ayuda de la función
millis(), filtre la señal de rebote 50 ms a partir de la detección del primer flanco positivo de la
señal.
Placa Arduino
1 motor de 9 V
1 pila de 9 V
1 TIP120
1 diodo 4004
2 resistencias de 1kΩ
1 pulsador
Diagrama de conexión
Esquema de conexión
Algoritmo de operación
Sketch
unsigned lastdebouncetime=0;
unsigned debouncedelay=50;
void setup(){
pinMode(buttonpin,INPUT);
pinMode(motorpin,OUTPUT);
digitalWrite(motorpin,motorstate);
Serial.begin(9600);
void loop(){
int Reading=digitalRead(buttonpin):
if(reading ¡=lastbuttonstate){
lastdeboucetime=millis();
}
if((millis()-lastdebouncetime)>debounce delay){
if(Reading!=buttonstate){
buttonstate=reading;
if(buttonsteta==HIGH){
motorstate=!motorstate;
}
}
}
digitalWrite(motorpin,motorstate);
lastbuttonstate=Reading;
}
Evidencia fotográfica
Comentarios y conclusiones: Con esta parte pudimos ver como eliminar o minimizar el efecto de
rebote en los pulsadores mediante software, tuvimos que agregar nuevas variables para guardar
los nuevos valores y asi poder lograr el objetivo que era eliminar el efecto de rebote.
CUESTIONARIO
1. Descargue e investigue el funcionamiento de la librería plcLib de Arduino. ¿Qué similitudes
hay entre la función SET y RESET que usted programó y la función SET y RESET de la
librería?
Esta librería permite darle funciones de PLC a nuestro Arduino. Las diferencias en las funciones es
que en la librería ya estan declaradas las palabras set y reset y en estos basta con introducir la
variable que deseamos aplicar el set o reset dentro de la sintaxis. A continuacion mostramos una
imagen para ejemplificar el funcionamiento de estas funciones.
2. Según el ejemplo propuesto para los comandos SET y RESET dentro de la carpeta LATCH,
cuales son los pines de entrada asignados dentro de la librería y cuáles son los pines de
salida asignados para Q y notQ?
La configuración es la siguiente:
Los botones, pulsadores e interruptores son elementos mecánicos. Esta circunstancia produce un
efecto llamado rebote. La conexión o interrupción del contacto eléctrico generada por estos
depende mecánicamente de un muelle o fleje que hace que el contacto permanezca estable, sin
embargo el proceso de cierre o apertura de dicho contacto no se produce de una sola vez y para
siempre, sino que por el contrario hay una secuencia mas o menos larga de conexiones y
desconexiones, dependiendo de la potencia del muelle o fleje, que hace que en vez de tener un
paso claro de ON a OFF, o viceversa, lo que tenemos es todo un tren de pulsos, cada vez mas
cortos, hasta que se estabiliza en uno u otro estado.
5. Explique los métodos de corrección de rebote (Debounce) por software y por hardware.
Proponga un circuito de corrección de hardware y describa su funcionamiento
SOFTWARE
Una de las formas de resolver el problema por software es con una técnica de “cambio de estado
demorado”. Esta técnica consiste en cambiar el estado de la entrada conectada a la llave un cierto
tiempo después que se haya detectado el primer cambio e ignorando todo cambio intermedio que
haya. Ese tiempo debe ser superior al de establecimiento de la llave.
HARDWARE
La forma más sencilla de minimizar el problema por hardware es mediante el uso de un circuito
RC.
El circuito RC si bien no evita el rebote, logra que no haya una oscilación entre cerrado y abierto.
Esto se logra porque el condensador debe perder (ó ganar) su carga (a través de la resistencia) lo
que demora un cierto tiempo. Esto “suaviza” la evolución en el tiempo del nivel de la entrada de la
compuerta y permite que su salida no siga los vaivenes de la apertura y cierre de la llave.
CONCLUSIONES GENERALES
Con la practica pudimos analizar nuevas formas de utilizar la placa Arduino, en este caso mediante
los algoritmos correspondientes pudimos controlar el arranque y para de un motor de diferentes
formas, primero haciendo uso de las funciones SET y RESET mediante dos pulsadores que
mandaban la señal al Arduino y mediante la programación el motor arrancaba o paraba. También
pudimos controlar el arranque y paro mediante la PC haciendo uso del Serial. Posteriormente
analizamos como el efecto rebote afecta severamente la lectura del estado de un pulsador ya que
se genera un ruido que puede ser fácilmente confundido por el Arduino dando resultados que no
se desean, para esto utilizamos una corrección mediante un debounce y milis para minimizar este
efecto.