Sei sulla pagina 1di 22

INSTITUTO POLITECNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERICA MECANICA Y ELECTRICA


UNIDAD ZACATENCO

MAQUINAS ELECTRICAS

PRACTICA NO. 3
CONTROL ON/OFF DE UN MCDIP CON ARDUINO

PROF: FRANCO GUZMAN LUIS FERNANDO


GRUPO 5AM6

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.

Manejo del puerto serie (Lectura)


- Leer un carácter
El primer caso que vamos a
ver es leer un único
carácter por puerto serie. El
código es muy sencillo, ya
que únicamente
necesitamos leer un byte y
convertirlo a char. Pese a
ser sencillo puede ser útil,
por ejemplo, para aceptar
comandos que enviamos a
un robot o un vehículo.
Al carecer prácticamente de procesamiento, la velocidad es la mayor de todos los
ejemplos que vamos a ver (del orden de 4-8us). La desventaja es, lógicamente, que sólo
estamos recibiendo un único carácter.
Además al ser un proceso manual es sencillo añadir condiciones de validación. En el
ejemplo aceptamos caracteres de A a Z en mayúsculas o minúsculas pero sería sencillo,
por ejemplo, aceptar únicamente valores de la A a D porque son los cuatro comandos que
espera nuestro montaje.

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:

Para comprender el funcionamiento de los diodos, vamos


a ilustrarlo con un ejemplo. Supongamos que el motor
está girando en un sentido y se cambia el sentido de giro;
Al invertirse el signo de la señal de entrada, aparecerá un
pico de tensión, por ejemplo de A a B:
Si la tensión de pico es mayor que Vcc, los diodos D1 y D4
quedan polarizados en directa, y aparecerá una corriente
de pico que recorrerá el circuito formado por las dos
fuentes de tensión en serie, evitando que afecte a los
transistores de potencia. Si la tensión de pico tiene
sentido opuesto, conducirán D2 y D3. De esta forma,
impedimos que los transistores de potencia estén
sometidos a una tensión superior a Vcc.
Lógica del estado anterior, función TOGGLE
Siguiendo con el tema de mostrar y ocultar información, bloques o cualquier otro
elemento de una web, vamos a ver ahora algunos ejemplos prácticos para alternar la
visibilidad con jQuery.
El método .toggle() proporciona esta funcionalidad. Por ejemplo, se puede utilizar para
mostrar y ocultar contenido con animaciones o sin ellas, crear bloques que desaparecen al
pulsar sobre ellos (como los avisos de cookies), ocultar paneles de opciones, mostrar
respuestas ocultas, esconder información sólo disponible para usuarios registrados, etc.
La manera más simple de utilizar este método sería sin añadirle ningún parámetro:
De todas formas, conviene tener en cuenta que este método .toggle() usado como click
especial para alternar funciones ya no está incluido en jQuery desde la versión 1.9 (si se
usa como efecto para mostrar y ocultar elementos no hay problema), por lo que es
necesario incluir el plugin jQuery Migrate, o bien extraer este método del código fuente y
usarlo aparte.
En otras palabras, si utilizas jQuery 1.9 o superior, el método .toggle() no funcionará por sí
solo (más información aquí).

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.

La operación simultánea de ambos pulsadores dará como prioridad al RESET.

Los materiales requeridos son:

 Placa Arduino
 1 motor de 9 V
 1 pila de 9 V
 1 TIP120
 1 diodo 4004
 3 resistencias de 1kΩ
 2 pulsadores

1- Realizar el siguiente circuito con las especificaciones dadas:

Diagrama de conexión
Esquema de conexión
Algoritmo de operación

SET/RESET

Declarar Var. y Const.

ButtonSet, ButtonReset, motorPin,


setstate, resetstate.

Configurar Pines de I/O’S

Pines 2y3 INPUT Pin 9 OUTPUT

Inicializar puerto serie

Baudaje9600

Leer Pines de entrada

NO NO
El Pin de Set El Pin de
está Activo Reset está
Activo

SI SI

Prende Motor Apaga el Motor

Imprime”MotorEncedido” Imprime”MotorApagado”
Sketch

const int buttonpin1=2;


const int buttonpin2=3;
const int motorpin=9;
boolean set;
boolean reset;

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.

Ahora mediante la instrucción Serial.read(), realizar las modificaciones necesarias en el algoritmo


para que a partir de dos caracteres asignados que son ‘a’ para el arranque y ‘p’ para el paro del
motor, para poder arrancar o parar el motor el motor ya sea con los interruptores o de manera
remota desde el PC.

Los materiales requeridos son:

 Placa Arduino
 1 motor de 9 V
 1 pila de 9 V
 1 TIP120
 1 diodo 4004
 3 resistencias de 1kΩ
 2 pulsadores

Ahora realizamos el siguiente circuito:


Diagrama de conexión

Esquema de conexión
Algoritmo de operación

ARRANQUE Y PARO DESDE


MONITOR SERIE

Declarar Var. y Const.

ButtonSet, ButtonReset, motorPin,


setState, resetState, remote.

Configurar Pines de I/O’S

Pines 2y3 INPUT Pin 9 OUTPUT

Inicializar puerto serie

Baudaje9600

Leer Pines de entrada y


Monitorserie

NO
El Pin de Set Apaga el Motor
está Activo ó
Rmote==a Imprime”MotorApagado”

SI

Prende Motor

Imprime”MotorEncedido”
Sketch

const int buttonpin1=2;


const int buttonpin2=3;
const int motorpin=9;
boolean set;
boolean reset;
char remote;

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.

Parte 3 Control de un motor de CD con un solo pulsador configurado como botón


TOGGLE
El circuito de la parte 1 se modificara, eliminando los componentes del interruptor S2.

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.

Los materiales requeridos son:

 Placa Arduino
 1 motor de 9 V
 1 pila de 9 V
 1 TIP120
 1 diodo 4004
 2 resistencias de 1kΩ
 1 pulsador

Ahora realizamos el siguiente circuito:

Diagrama de conexión
Esquema de conexión
Algoritmo de operación
Sketch

const int buttonpin=2;


const int motorpin=9;
int motorstate=HIGH;
int buttonstate;
int lastbuttonstate=LOW;

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:

Input - Set – interruptor conectado a la entrada X0 (pin A0 de Arduino)

Input - Reset – interruptor conectado a la entrada X1 (pin A1 de Arduino)

Output - Q - LED conectado a la salida Y0 (pin 3 de Arduino)

Output - NotQ - LED conectado a la salida Y1 (pin 5 de Arduino)


3. Escriba el código requerido para la operación de los ejemplos de SET y RESET.

4. Describa en que consiste el efecto rebote en los pulsadores y como es generado

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.

Potrebbero piacerti anche