You are on page 1of 6

UNIVERSIDAD DE LAS FUERZAS ARMADAS

ESPE EXTENSIÓN LATACUNGA


DEPARTAMENTO DE ELÉCTRICA Y
ELECTRÓNICA

INFORME PROYECTO DE FIN DE UNIDAD

CÓDIGO DE LA
CARRERA NOMBRE DE LA ASIGNATURA
ASIGNATURA
Ingeniería en Electrónica e
1113 Instrumentación y Sensores
Instrumentación

DURACIÓ
PRÁCTIC LABORATORIO
Circuitos Eléctricos N
A N° DE:
(HORAS)
3 TEMA: Encoder 2

1 OBJETIVOS
1.1 Analizar el funcionamiento de un circuito encoder para medir adecuadamente las RPM de un
motor.
1.2 Acondicionar la señal del encoder para poder mostrarla en una pantalla LCD.
1.3 Encontrar un algoritmo simple y eficiente para el sistema.

2 INSTRUCCIONES
A. EQUIPO Y MATERIALES NECESARIOS
 Motor DC
 Potenciómetro
 Pantalla LCD
 Módulo de Encoder
 Arduino
 Rueda
 Cables

Fundamento Teórico
Motor DC
El motor de corriente continua (denominado también motor de corriente directa, motor CC o motor DC)
es una máquina que convierte la energía eléctrica en mecánica, provocando un movimiento rotatorio,
gracias a la acción que se genera del campo magnético.
El principal inconveniente de estas máquinas es el mantenimiento, muy caro y laborioso, debido
principalmente al desgaste que sufren las escobillas al entrar en contacto con las delgas.
Algunas aplicaciones especiales de estos motores son los motores lineales, cuando ejercen tracción
sobre un riel, o bien los motores de imanes permanentes. Los motores de corriente continua (CC)
también se utilizan en la construcción de servomotores y motores paso a paso. Además existen motores
de DC sin escobillas llamados brushless utilizados en el aeromodelismo por su bajo torque y su gran
velocidad.
Es posible controlar la velocidad y el par de estos motores utilizando técnicas de control de motores
CD.
Usaremos la variación de voltaje mediante un motor especial, para no requerir el uso de un PWM.

Fig. 1 Circuito Integrado 4N35

Pantalla LCD
Una pantalla de cristal líquido o LCD (sigla del inglés Liquid Crystal Display) es una pantalla delgada
y plana formada por un número de píxeles en color o monocromos colocados delante de una fuente de
luz o reflectora. A menudo se utiliza en dispositivos electrónicos de pilas, ya que utiliza cantidades muy
pequeñas de energía eléctrica.

Cada píxel de un LCD típicamente consiste en una capa de moléculas alineadas entre
dos electrodos transparentes, y dos filtros de polarización, los ejes de transmisión de cada uno que están
(en la mayoría de los casos) perpendiculares entre sí. Sin cristal líquido entre el filtro polarizante, la luz
que pasa por el primer filtro sería bloqueada por el segundo (cruzando) polarizador.

Fig. 2 Pantalla LCD

Arduino
Arduino (Estados Unidos) (Genuino a nivel internacional hasta octubre 2016), es una compañía
de hardware libre y una comunidad tecnológica que diseña y manufactura placas computadora de
desarrollo de hardware y software, compuesta respectivamente por circuitos impresos que integran
un microcontrolador y un entorno de desarrollo (IDE), en donde se programa cada placa.

El hardware consiste en una placa de circuito impreso con un microcontrolador, usualmente Atmel
AVR, puertos digitales y analógicos de entrada/salida,4 , los cuales pueden conectarse a placas de
expansión (shields), que amplían las características de funcionamiento de la placa Arduino. Asimismo,
posee un puerto de conexión USB desde donde se puede alimentar la placa y establecer comunicación
con el computador.

Fig. 3 Arduino

Módulo Encoder
Este dispositivo es muy útil ya que nos servirá para poder filtrar algo de ruido del motor, además de
adecuar de cierta manera la señal al arduino, haciéndonos más fácil la transmisión de datos.

Fig. 4 Módulo Encoder


3 ACTIVIDADES A DESARROLLAR

 Implementar un encoder en base al módulo de encoder.


 Utilizar la programación más adecuada para el arduino.

Programación Utilizada:

#include <LiquidCrystal.h>
int encoder_pin = 2; //Pin 2, donde se conecta el encoder
unsigned int rpm = 0; // Revoluciones por minuto calculadas.
float velocity = 0; //Velocidad en [Km/h]
volatile byte pulses = 0; // Número de pulsos leidos por el Arduino en un segundo
unsigned long timeold = 0; // Tiempo
unsigned int pulsesperturn = 20; // Número de muescas que tiene el disco del encoder.
const int wheel_diameter = 64; // Diámetro de la rueda pequeña[mm]
static volatile unsigned long debounce = 0; // Tiempo del rebote.
int tx;
//// Configuración del Arduino /////////////////////////////////////////////////////////
LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);
void setup(){
lcd.begin(16, 2);
lcd.print("RPM= ");
lcd.setCursor(0,1);
Serial.begin(9600); // Configuración del puerto serie
pinMode(encoder_pin, INPUT); // Configuración del pin nº2
attachInterrupt(0, counter, RISING); // Configuración de la interrupción 0, donde esta conectado.
pulses = 0;
rpm = 0;
timeold = 0;
Serial.print("Seconds ");
Serial.print("RPM ");
Serial.print("Pulses ");
Serial.println("Velocity[Km/h]");}

//// Programa principal ///////////////////////////////////////////////////////////////////////


void loop(){
if (millis() - timeold >= 1000){ // Se actualiza cada segundo
noInterrupts(); //Don't process interrupts during calculations // Desconectamos la interrupción
para que no actué en esta parte del programa.
rpm = (60 * 1000 / pulsesperturn )/ (millis() - timeold)* pulses; // Calculamos las revoluciones
por minuto
velocity = rpm * 3.1416 * wheel_diameter * 60 ; // Cálculo de la velocidad en [Km/h]
timeold = millis(); // Almacenamos el tiempo actual.
Serial.print(millis()/1000); Serial.print(" ");// Se envia al puerto serie el valor de tiempo, de
las rpm y los pulsos.
tx=rpm;
lcd.setCursor(4,0);
lcd.print(tx);
delay(300);
Serial.print(rpm,DEC); Serial.print(" ");
Serial.print(pulses,DEC); Serial.print(" ");
Serial.println(velocity,2);
pulses = 0; // Inicializamos los pulsos.
interrupts(); // Restart the interrupt processing // Reiniciamos la interrupción
}
}
////Fin de programa principal //////////////////////////////////////////////////////////////////////////////////
///////////////////////////Función que cuenta los pulsos buenos ///////////////////////////////////////////
void counter(){
if( digitalRead (encoder_pin) && (micros()-debounce > 500) && digitalRead (encoder_pin) ) {
// Vuelve a comprobar que el encoder envia una señal buena y luego comprueba que el tiempo es
superior a 1000 microsegundos y vuelve a comprobar que la señal es correcta.
debounce = micros(); // Almacena el tiempo para comprobar que no contamos el rebote que hay
en la señal.
pulses++;} // Suma el pulso bueno que entra.
else ; }

Diagrama de conexiones:

Fig. 5 Diagrama de conexiones

4 RESULTADOS OBTENIDOS

V en el motor RPM (Medida) RPM (Calculada)


4V 1300 RPM 1300 RPM
3V 1200 RPM 1200 RPM

5 CONCLUSIONES
 Se logró encontrar un algoritmo adecuado para medir con gran precisión las RPM del motor.
 La rueda del motor es fundamental y su correcta elaboración es determinante.
 Se logró mostrar los datos en la pantalla LCD sin ningún problema.

6 RECOMENDACIONES
 Construír la rueda adecuadamente para tener la mayor precisión posible.
 Utilizar un módulo de Encoder para facilitar el procedimiento.
 Colocar un condensador de cerámico 104 en paralelo al motor para evitar el ruido.

7 REFERENCIAS BIBLIOGRÁFICAS Y DE LA WEB


 https://es.wikipedia.org/wiki/Arduino
 Moscovici, A 2000, High Speed A/D Converters, Kluwer Academic Publishers,
Hingham, US. Available from: ProQuest ebrary. [25 December 2016].
 https://es.wikipedia.org/wiki/Pantalla_de_cristal_l%C3%ADquido

Latacunga 12 de Julio de 2017

Evaluado por:
Elaborado por:
Alcoser Efrain Ing. Jose Bucheli
Aldana Jair Docente de la asignatura

You might also like