Está en la página 1de 8

Laboratorio-05 Codificador

Laboratory-05 Encoder

Castañeda Bello Cristian Steven y Ortega Castellanos Sergio Andres

carried out by means of a simulation environment,


Universidad Militar Nueva Granada such as Tinkercad, which allows by means of a
proximity sensor and a microcontroller such as
Km 2 vía Cajicá - Zipaquirá, Cajicá, Cundinamarca Arduino, to determine the proximity of an object
through a program that generates the results, finally
Sede Campus, Cajicá it is sought to obtain through the programming of a
microcontroller (arduino) the speeds of the motor
RESUMEN that passes through a horseshoe-type optical sensor,
these speeds will be evidenced by an LCD screen.
El presente informe tiene como objetivo realizar These assemblies are carried out first of all, in the
una señal PWM que permite activar un motor DC, tinkercad simulation environment, with the aim of
el cual variará su velocidad por medio de un correctly developing the simulation that will later
potenciómetro, así mismo se realiza un montaje por be implemented in physics, as in the case of the
medio de un entorno de simulación, como encoder assembly, which determines the speeds of
Tinkercad, que permita mediante un sensor de a DC engine. With the simulation and
proximidad y un microcontrolador como arduino, implementation of the proposed circuits, the results
determinar la cercanía de un objeto mediante un are established, which will allow to conclude
programa que genere los resultados, por último se regarding the behavior of a microcontroller, the
busca obtener mediante la programación de un behavior at the speeds of a DC motor, behavior of
microcontrolador (arduino) las velocidades del an LCD screen, the waves generated, and finally,
motor que pasa por un sensor óptico tipo herradura, the results obtained in this experimental event are
estas velocidades se evidenciará mediante un discussed.
pantalla LCD. Estos montajes se realizan en primer
lugar, en el entorno de simulación de tinkercad, con PALABRAS CLAVE
el objetivo de tener desarrollada correctamente la
simulación que posteriormente serán Encoder, sensor óptico, codificador,
implementados en físico, como el caso del montaje microcontrolador, entradas y salidas digitales,
de encoder, el cual determina las velocidades de un rebote de señal.
motor DC. Con la simulación e implementación de
los circuitos planteados se establecen los KEYWORDS
resultados, los cuales permitirán concluir respecto
al comportamiento de un microcontrolador, el Encoder, optical sensor, encoder, microcontroller,
comportamiento en las velocidades de un motor dc, digital inputs and outputs, signal rebound.
comportamiento de una pantalla LCD, las ondas
generadas, y por último, se discuten los resultados Objetivo:
obtenidos en este evento experimental.
Diseñar un sistema digital que permita medir las
revoluciones por minuto de un motor DC, para ser
ABSTRACT
visualizadas en un display, por medio de lógica
secuencial y combinacional.
This report aims to make a PWM signal that allows
activating a DC motor, which will vary its speed by
means of a potentiometer, likewise an assembly is

1
1. INTRODUCCIÓN conectar de dos formas en pull-up (envia un 0) o
pull down (envia 1).[2]
CODIFICADORES ÓPTICOS:
Los codificadores rotatorios (conocidos
Un circuito antirrebote elimina la serie de pulsos
genéricamente como encoders) son mecanismos
debida al rebote del contacto y produce una sola
utilizados para entregar la posición, velocidad y
transición uniforme de la señal binaria, de 0 a 1 o
aceleración del rotor de un motor. Sus principales
de 1 a 0. En los elementos de contacto en general
aplicaciones incluyen aplicaciones en robótica,
(pulsadores, accionamientos de relés, etc.), al ser
lentes fotográficas, aplicaciones industriales que
elementos de acción mecánica, los cambios de
requieren medición angular, militares, etc. Un
nivel lógico se producen con lo que se denomina
codificador rotatorio es un dispositivo
los rebotes. Estos impulsos transitorios, de corta
electromecánico que convierte la posición angular
duración, que se producen en el accionamiento del
de un eje, directamente a un código digital. Los
contacto, como se muestra en la siguiente
tipos más comunes de encoders se clasifican en:
absolutos y relativos (conocidos también como
incrementales). Los encoders absolutos pueden
venir codificados en binario o gray. Dentro de los
encoders incrementales, se encuentran los encoders
en cuadratura, ampliamente utilizados en motores
de alta velocidad y en aplicaciones en las que
interesa conocer la dirección del movimiento del
eje. El tipo común de encoder incremental consiste
Ilustración-03: tomado de circuitos-antirrebotes-tipo-t
de un disco solidario al eje del motor que contiene
El esquema que se va a usar para proteger un
un patrón de marcas o ranuras que son codificados
pulsador del efecto rebote o sea, el circuito
por un interruptor óptico (par led/fotodiodo o
antirrebote, un circuito en la que utiliza un
led/fototransistor) generando pulsos eléctricos cada
interruptor I, una puerta lógica G (Trigger-Schmitt,
vez que el patrón del disco interrumpe y luego
74LS13, CD40903), junto con un condensador
permite el paso de luz hacia el interruptor óptico a
electrolítico C cuyo valor se puede aumentar o
medida que el disco gira.[1]
reducir (1uF/63V) y un par de resistencias R de 1k
ohm [2].

Ilustración-01: tomado de repositorio.uptc.edu.co

Ilustración-04: tomado de circuitos-antirrebotes-tipo-t


En los microcontroladores no se requiere un
circuito anti rebote dependiendo en tipo de
microcontrolador que utilicemos se agrega un
algoritmo por ejemplo:
Ilustración-02: tomado de repositorio.uptc.edu.co
PIC: el programa espera a que se pulse una tecla,
ANTI-REBOTE: cuando detecta la pulsación guarda el número de
Para entrar en este tema primero se el contexto del tecla pulsada en una variable, luego comprueba que
término en los pulsadores o interruptores los cuales sea la primera vez que se pulsó, si es así actúa en
constan de dos contactos metálicos separados que consecuencia y si es que está pulsada desde antes,
cuando se unen al ser presionado el botón, comprueba que haya pasado un tiempo
permiten el paso de corriente, estos se deben determinado para volver a tenerla en cuenta. De

2
este modo se puede hacer, por ejemplo un reloj que verdad, las referencias comerciales comúnmente
cuando se incremente alguno de sus parámetros, son 74154 (4 a 16), 7447 o 7446 (4 a 7) es el más
por ejemplo los minutos, y la tecla correspondiente común al momento de conectar un display 7
se mantenga pulsada, luego del primer incremento segmentos o un multiplexor [1].
comience a avanzar más rápido, con base en lo
anterior necesitaremos las siguientes librerías:

#include <16f88.h>
#use delay(clock=8MHz)
#use fast_io(all)
#fuses
MCLR,NOPUT,INTRC_IO,NOWDT,NOBROWN
OUT

Luego empezamos a diseñar el código el cual en


Ilustración-05: tomado de [3]
este microcontrolador es considerablemente
En los microcontroladores esto cambia un poco
extenso.[2]
porque ya cuentan con estos decodificadores en
ARDUINO: Simplifica mucha más el proceso ya función de contadores por lo tanto solo se necesita
que solo se debe agregar el siguiente código: agregar un algoritmo el cual depende de las
entradas digitales ya que cado una va ha recibir un
if (digitalRead(pulsador) == LOW) //Pregunta si binario por o tanto en el caso de arduino se aplica
el pulsador está presionado el siguiente código:

{ byte valor = digitalRead(pin3) + digitalRead(pin2)


<< 1 + digitalRead(pin1) <<2;
presionado = 1; //La variable cambia de
valor En caso que se requiera imprimir un número un
display debemos definir cada salida del arduino en
} relación con los pines de cada sección del display
como se muestra en el siguiente ejemplo:
if (digitalRead(pulsador) == HIGH &&
presionado == 1) int mensaje=0;
{ void setup(){ Serial.begin(9600);
//Realiza la acción deseada pinMode(2, OUTPUT);
presionado = 0; //La variable vuelve a su pinMode(3, OUTPUT);
valor original
pinMode(4, OUTPUT);
}
En el cual la variable pulsador puede ser el pin pinMode(5, OUTPUT);
digital al cual se conecta la señal del pulsador [2].
pinMode(6, OUTPUT);
CONVERSIÓN BINARIO-DECIMAL:
pinMode(7, OUTPUT);
Por lo general se utiliza Un decodificador es un
circuito combinacional, cuya función es inversa a pinMode(8, OUTPUT);}
la del codificador, es decir, convierte un código
binario (natural, BCD, etc.) de N bits de entrada y void display (int a, int b, int c, int d, int e, int f, int
M líneas de salida (N puede ser cualquier entero y g)// Función del display
M es un entero menor o igual a 2N), el cual
funciona con base en compuertas lógicas y se { digitalWrite (2,a);
modeló a través del álgebra de boole y tablas de
digitalWrite (3,b);

3
digitalWrite (4,c);

digitalWrite (5,d);

digitalWrite (6,e);

digitalWrite (7,f);

digitalWrite (8,g);}

void loop(){

if (Serial.available()>0){mensaje=Serial.read();
Ilustración-07: tomado de http://panamahitek.com/
if (mensaje=='0'){display (1,1,1,1,1,1,0); }
Para el cual se debe tener una configuración de
if (mensaje=='1'){display (0,1,1,0,0,0,0);} conexiones con arduino igual a la siguiente:

delay(2000);}

Donde se imprime en un display 7 segmentos los


numeros 0 y 1, como se muestra en la siguiente
imagen:

Ilustración-08: tomado de http://panamahitek.com/


Donde siempre Vcc va ha 5v, GND,RW,LED(-)
van ha tierra, contraste a un potenciómetro
Ilustración-06: tomado de http://panamahitek.com/
(opcional), LED(+) a una resistencia y a potencia
Es importante aclarar que los displays 7 segmentos
de 5v, y los pines RS,EN y Dn dependiendo de la
son de dos tipos anodo o catodo comun y sus
programación del arduino ya que van conectados
bienes tiene la siguiente configuración:
directamente a las salidas digitales [4].

2 METODOLOGÍA DEL MONTAJE


2.1 Montaje de PWM:
Como insumo para el laboratorio, se debe tener un
circuito que permita activar un motor DC con
diferentes velocidades. El circuito del laboratorio
pasado puede funcionar adecuadamente para este
Ilustración-06: tomado de [3] propósito [5].
También se puede hacer uso de otros display como
la referencia LCD 16x2 el cual es alfanumérico o 2.2 Simulación de contador:
se define por sus siglas en inglés de Liquid Crystal Realice el montaje en Tinkercad de un sensor que
Display, pantalla de cristal líquido en español, un permita detectar la ocurrencia de un evento, por
tipo de dispositivo que se utiliza para la ejemplo, la cercanía de un objeto a un sensor de
visualización de diferentes tipos de contenidos o proximidad.
información de manera gráfica, mediante el uso de
diferentes caracteres, símbolos o dibujos [4].

4
2.5 Visualización:
Implemente el código que permita la conversión de
la medición de velocidad a código BCD, de forma
que la medición se visualiza en display de 7
segmentos con capacidad para tres dígitos, similar
al mostrado en la imagen.
Ilustración-09: tomado [5]
Conecte la señal de salida a uno de los pines del
Arduino, y elabore un programa que cuente la
cantidad de veces que se detecta el objeto, y que
cada 5 segundos, envíe por el puerto serial el
resultado de la cuenta en ese periodo de tiempo.
Tenga en cuenta la aplicación de estrategias en
hardware y/o software que reduzca el error del Ilustración-12: tomado [5]
conteo debido a rebotes de la señal.
3. RESULTADOS OBTENIDOS
2.3 Simulación de encoder:
3.1 Montaje de PWM:
Realice el montaje en Tinkercad de un motor con
encoder como el que se visualiza a continuación, Se diseña un circuito con un circuito integrado 555
conectando el codificador a pines de entrada a un o definido temporizador el cual nos permite generar
Arduino. Tenga en cuenta que las salidas del una señal de reloj con ayuda de capacitores en este
codificador son de colector abierto. caso de 1uF y el cual al conectar un potenciómetro
con diodos se llega a generar una señal PWM, la
cual se alimenta de forma independiente al encoder
con una batería de 9v.

Ilustración-10: tomado [5]


Aplicando lo desarrollado en el punto anterior,
ajuste su programa en Arduino para contar el
número de veces que se activa la señal del
codificador en un periodo de tiempo, y utilice el
resultado para calcular la velocidad del motor
expresada en RPM. El resultado puede ser
visualizado de manera preliminar a través del
puerto serial.[5]
Imagen-1: Autoría Propia
2.4 Montaje de encoder:
Realice el montaje del motor con el encoder para
ser presentado en el laboratorio presencial del 19
de abril. Puede utilizar un motor con encoder ya
acoplado, o implementar un sensor óptico de tipo
herradura y un disco con ranuras para lograr el
mismo efecto, tal como se muestra en la imagen.

Imagen-2: Autoría Propia


Ilustración-11: tomado [5]

5
flag=true;
}
if(digitalRead(7)==0&&flag==true)
{
flag=false;
}
lcd.setCursor(0,0);
lcd.print("NÚMERO DE OBJETOS:");
lcd.setCursor (1,1);
lcd.print(cont);
}
Imagen-3: Autoría Propia
Se observa que en la simulación no es necesario Donde la señal es enviada al pin 7 y con sentencias
conectar una terminal del potenciómetro a tierra if y un contador se suman los objetos, el flag es
pero al realizar el montaje se nota que para lograr necesario para no repetir el conteo de un mismo
variar el ciclo útil es necesario conectar una objeto ya que el sensor queda activado por unos
terminal del potenciómetro a tierra. segundos, el límite de objetos que puede contar es
de más de 1000, es importante destacar que el
3.2 Simulación de contador: potenciómetro nos permite activar y desactivar la
Con ayuda del software Tinkercad se realiza la pantalla o controlar su intensidad luminosa.
siguiente simulación:

Ilustración-13: Autoría Propia

3.3 Simulación de encoder:


Ilustración -12: Autoría Propia Con ayuda del software tinkercad se realiza la
Para el cual se diseñó el siguiente código: simulación de un circuito que muestra las
Revoluciones Por Minuto de un motor con
codificador incluido, la velocidad del motor se
#include <LiquidCrystal.h>
maneja por medio de una señal PWM la cual
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); permite modificar su ciclo útil por medio de un
int cont=0; potenciómetro.
bool flag=false;
void setup() {
lcd.begin(16, 2);
pinMode(7,INPUT);
}
void loop() {
if(digitalRead(7)==1&&flag==false)
{
cont++; Ilustración -14: Autoría Propia

6
deltaTiempoInterrupciones =
tiempoInterrupcionActual -
tiempoInterrupcionAnterior;
rpm = frecuencia*(60/20);

void loop(){
tiempo= millis();
Ilustración -15: Autoría Propia if(tiempo-tiempo2>=1000)
Para el cual se utiliza el siguiente código: {
tiempo2=tiempo;
#include <LiquidCrystal.h> lcd.setCursor(1,1);
LiquidCrystal lcd(8,7,6,5,4,3); lcd.print(rpm);
volatile unsigned tiempoInterrupcionActual = 0; Serial.println(rpm);
volatile unsigned tiempoInterrupcionAnterior = 0; }
volatile unsigned deltaTiempoInterrupciones = 0; }

float frecuencia = 0; El cual permite tomar la señal detectada por el


float rpm = 0; encoder y realizar los cálculos para obtener las
RPM, primero se debe generar una función auxiliar
la cual permite calcular las revoluciones, luego se
int contador = 0; genera el código para evitar las interrupciones o
anti rebote de las señales, esta función es
int encoder = 2;
importante para evitar interferencias en los
sensores y a su vez en las señales detectadas por el
int tiempo = 0; microcontrolador, finalmente se conecta un un
int tiempo2 = 0; LCD 16x2 el cual nos permite controlar su
intensidad luminosa por medio de un
void setup(){ potenciómetro e imprimir las RPM actuales de
lcd.begin(16,2); forma más eficiente e interactiva con el usuario, el
arduino alimenta la pantalla y el encoder con 5v.
lcd.setCursor(0,0);
lcd.print("RPM ACTUALES:"); 3.4-5 Montaje de encoder y Visualización:
Al realizar el montaje se utiliza un sensor herradura
attachInterrupt(digitalPinToInterrupt(encoder),Enc por costos y facilidad de compra en comparación
oder, FALLING); con el motor cc con codificador, se mantiene un
Serial.begin(9600); voltaje de alimentación para la PWM y el motor de
} 9v dc, por otro lado para el encoder y la pantalla
LCD 16x2 su alimentación es por medio del
void Encoder(){ arduino con 5v, es importante aclarar que el código
frecuencia = no tuvo ninguna modificación para ser utili con los
1000/(float)deltaTiempoInterrupciones; nuevos componentes ya que se manejaban o leía las
tiempoInterrupcionAnterior = misma variables generadas en la simulación, en las
tiempoInterrupcionActual; siguientes imágenes podemos observar su
contador++; funcionamiento.
tiempoInterrupcionActual = millis();

7
● Se afirma que los microcontroladores
optimizan el circuito necesario para medir las
revoluciones de un motor, también permiten
eficiencia y precisión en los resultados.
● Se afirma que la señal PWM, al momento de
manejar corrientes de 0.08A se debe conectar
a la resistencia variable una resistencia en
serie para facilitar el manejo de esta corriente
en porcentajes menores a 50% del valor total
de la resistencia variable.
● Se llega a la conclusión que una pantalla LCD
16x2 es más interactiva y permite una mejor
visualización que varios displays de 7
segmentos.
● Por medio de un código serial se puede
obtener resultados esperados permitiendo
sintetizar el proyecto que se está realizando
como para este evento experimental,
evidenciar las velocidades en RPM de un
motor dc.

REFERENCIAS

Imagen-4: Autoría Propia [1] R. L. Boylestad, Electronica: Teoria de


Circuitos y Dispositivos Electronicos, Mexico:
EBSCOhost, 2018 [Online].
Avalible:https://unahll.files.wordpress.com/2015/0
5/electrc3b3nica-teorc3ada-de-circuitos-y-dispositi
vos-electrc3b3nicos_10ed-boylestad.pdf. [Accesed
20 october 2021]

[2]J. M. Orduña Huertas, Vicente Arnau Llombart:


Arquitectura y Programación de
microcontroladores, España: Universitat de
València, 1996
[Online].https://books.google.co.ve/books?id=Vm3
LzebPliIC 20 octuber 2021]

[3] Texas Instruments,«pdf1.alldatasheet.com,» 08


2012. [Online]. Available:
https://pdf1.alldatasheet.com/datasheet-pdf/view/62
0213/TI1/LM339.html. [Accessed 20 october
2021].

[4] Uv.es. n.d. Curso de electrónica digital (II).


[online] Available at: <https://acortar.link/aU6Beo>
Imagen-5: Autoría Propia [Accessed 1 october 2021].

[5] Ing Piedrahita Giovanny «Guías De Prácticas


De Laboratorio,» Digitales, Cajicá, Cundinamarca,
4. CONCLUSIONES
2020.

También podría gustarte