Resumen— En el presente reporte se mostrara de una forma clara y entendible para personas con bajo conocimiento en el área de instrumentación, como realizar una práctica de un sensor de giro, con ayuda del conocimiento de los sensores del tipo óptico, asimismo nos apoyaremos con material didáctico como son imágenes, códigos de programación y videos; con la finalidad de que dicho reporte en mención sea una guía o comúnmente como una receta, de la realización de la práctica de un sensor de ángulo.
I. INTRODUCCIÓN
El presente documento es una guía de cómo se puede realizar un sensor de giro, donde se aprenderá paso por paso y con explicaciones claras que materiales son los que se utilizan. Un sensor de giro es un dispositivo que mide sentido de giro de un motor en el que se encuentra un encoder el cual ayuda al dispositivo a realizar la lectura del sentido de giro.
II. PLANTEAMIENTODEL PROBLEMA
Realizar un sensor de giro con el cual se interprete claramente y de forma precisa el sentido de giro de un motor.
III. MARCOTEÓRICO
Optointerruptor
El sensor reflejante óptico consiste en un emisor y un sensor ópticos en el mismo empaque, y está diseñado para que la emisión del LED sea cortada por un objeto y reflejada al sensor.
Figura 1. Optointerruptor.
Encoder
Los Encoders son sensores que generan señales digitales en respuesta al movimiento. Están disponibles en dos tipos, uno que responde a la rotación, y el otro al movimiento lineal. Se caracteriza porque determina su posición, contando el número de impulsos que se generan cuando un rayo de luz, es atravesado por marcas opacas en la superficie de un disco unido al eje.
Figura 2. Encoder.
Microcontrolador (PIC 16f877A)
Es un circuito integrado o chip que incluye en su interior las tres unidades funcionales de una computadora: CPU, Memoria y Unidades de E/S, es decir, se trata de una computadora completa en un
Prácticas de Instrumentación
Sensor de giro
Miguel Ceballos; Verónica López; Luis López; Ángel Mendoza; Martín Silva INSTITUTO TECNOLÓGICO DE COLIMA
Departamento de Ingeniería Mecatrónica
solo circuito integrado programable y se destina a gobernar una sola tarea con el programa que reside en su memoria. Sus líneas de entrada/salida soportan el conexionado de los sensores y actuadores del dispositivo a controlar.
Figura 3. Pic PIC 16f877A
XTAL (cristal)
Dentro de la carcasa de metal es una pequeña pieza de cristal de cuarzo que se ha cortado con precisión en tamaño de modo que la pieza de cristal vibra a una frecuencia específica. El valor del cristal generalmente es de 4Mhz. o 10Mhz.
Figura 4. Cristal utilizado para la frecuencia de ejecución que utiliza el pic.
Capacitor cerámico
Los capacitores cerámicos son utilizados en circuitos resonantes, alta frecuencia y acoplamiento, dieléctricos de temperatura compensada, estabilidad dieléctrica y otras aplicaciones.
Figura 5. Capacitor cerámico utilizado para el buen funcionamiento del pic.
ADC (convertidor analógico-digital)
El convertidor analógico-digital, ADC por sus siglas en inglés, la conversión analógico-digital consiste en transformar valores analógicos en digitales. Es el proceso inverso a la D/A. En este caso, a cada valor aplicado en la entrada del conversor le corresponde un valor digital de salida, dentro de los que puede generar el conversor.
Display LCD (16 x 2)
Las pantallas LCD están construidas en base a un material cuya polarización de la luz varía en presencia de un campo eléctrico denominado cristal liquido, este display funciona gracias a un circuito interno el cual hace que cuando el display se conecte al microcontrolador de forma correcta y por una serie de instrucciones, en la pantalla muestre los caracteres que se quieren.
Figura 6. LCD (display) utilizado para la impresión de resultados.
PCWHD
Compilador C de la firma CCS (Custom Computer Services). Lenguaje de alto nivel que contiene las funciones y librerías necesarias para el diseño de cualquier aplicación basada en microcontroladores PIC: matemáticas, control de protocolos serie, I2C, etc. La versión PCWHD admite todos los dispositivos PIC de las gamas baja (12xxx), media (16xxx) y alta (18xxxx), con núcleos de 12, 14 y 16 bits respectivamente y los nuevos PIC24/dsPIC de 24 bits.
ISIS Proteus
El Programa ISIS, Intelligent Schematic Input System (Sistema de Enrutado de
Esquemas Inteligente) permite diseñar el plano eléctrico del circuito que se desea realizar con componentes muy variados, desde simples resistencias, hasta alguno que otro microprocesador o microcontrolador, incluyendo fuentes de alimentación, generadores de señales y muchos otros componentes con prestaciones diferentes. Los diseños realizados en Isis pueden ser simulados en tiempo real, mediante el módulo VSM, asociado directamente con ISIS.
Figura 7. Programa simulador de circuitos electronicos.
Programador MINIPROG+
Es una herramienta de programación y depuración profesional para la familia de microcontroladores PIC. Con dicho programador se le graba al pic el programa creado y compilado en el programa de la figura 8.
Figura 8. Programador
PICKIT
Es una familia de programadores de microcontroladores PIC realizados por Microchip Technology. Se utilizan para programción y depuración de microcontroladores.
Figura 9. Programa para grabar el código al Microcontrolador.
Potenciómetro
Es una resistencia eléctrica de valor variable, su valor óhmico se regula normalmente por una ruleta que se desliza sobre una película de carbón o bien un arroyamiento de hilo progresivo, modificando así el valor de su resistencia eléctrica.
Figura 10. Potenciómetro utilizado en esta práctica.
Resistencia
Mayor o menor oposición que ofrecen los cuerpos conductores al paso de la corriente eléctrica, la unidad que mide la resistencia es el Ω, en la práctica se usará cierto número de resistencias las cuales se parecen a la de la Fig. 12, estas resistencias tienen 2 pines, no tienen polaridad y pueden tener un gran número de resistencia el cual es determinado por los colores de las franjas que tiene.
Figura 11. Resistencia
Protoboard
Tablero con orificios conectados eléctricamente entre sí, habitualmente siguiendo patrones de líneas, en el cual se Pueden insertar componentes electrónicos y cables para el armado y prototipado de circuitos electrónicos y sistemas similares.
Figura 12. Protoboard
IV. LISTA DE MATERIALES
1 PIC 16f877A
3 Resistencia de 10KΩ 2 Resistencia de 220Ω 1 Cristal de cuarzo de 4MHz 1 Resistencia de 330Ω 1 Potenciómetro de 5KΩ 1 Display LCD 16 x 2
2 Capacitores cerámicos de 22pF 2 Optointerruptores
1 Encoder
Cables para conectar en protoboard 1 MINIPROG+
1 Cable de USB A a USB B
1 Computadora con ISIS proteus, PICkit y PCWHD
1 Protoboard
V. DESARROLLO
Para realizar la práctica primeramente se deben tener todos los materiales a la
mano, tanto la computadora con los 3 software necesarios y los materiales físicos.
Primer paso. Conexión del circuito representativo en el software ISIS Proteus, con todos los componentes de dicho circuito.
Figura 13. Circuito del sensor de giro.
Nota: Estos optointerruptores no funcionan como deberían en físico, por lo tanto se debe hacer un circuito que simule lo que nosotros queremos que haga.
Figura 14. Sustitución de los optointerruptores.
Segundo paso. Se identifica las variantes de la problemática, y para solucionarlas se crea un programa en el PCWHD (el programa de este sensor se anexa al final de este archivo).
Tercer paso. Se le carga el programa al Microcontrolador del circuito conectado en ISIS Proteus, esto se lleva acabo dando doble clic y cargando el archivo .hex creado al compilar el programa. Se continúa realizando la simulación para cerciorarse de que el programa cumple con las especificaciones necesarias para satisfacer la problemática actual.
Figura 15. Simulación del circuito del sensor de giro.
Cuarto paso. Una vez que la simulación del sensor funciona como se desea que lo haga el circuito en físico, se le carga el programa al pic 16f8877A utilizando el programador MINIPROG+ y el software PICkit.
Nota. Se sigue cargando el programa con la extensión .hex
Quinto paso. Se procede a comenzar a conectar el circuito en la protoboard. Primeramente se conecta el pic 16f8877A, de ahí se le conectan los componentes necesarios:
- 1 resistencia de 10kΩ de la alimentación positiva al pin 1 del pic. El número de pin del pic se puede ver en la figura 16.
- 2 capacitores de 22pF conectados desde tierra, uno al pin 13 y el otro al pin 14 del pic.
- 1 Cristal de cuarzo de 4MHz conectado entre el pin 13 y el pin 14, cabe destacar que el cristal no posee polaridad.
- El pin 11 y 32 del pic se conectan a la alimentación positiva. El pin 12 y 31 se conectan a tierra.
Figura 16. Numeración de los pines del pic 16F877A según el datasheet.
Sexto paso. Conexión de la LCD al pic y un potenciómetro de 5kΩ según como se muestra en la figura 17. La fuente de voltaje que se muestra en dicha figura en forma de triángulo, es una conexión a la alimentación positiva de una de las terminales que está en un extremo del potenciómetro.
Nota. El potenciómetro de 5kΩ solo se utiliza para regular el contraste de la LDC
Figura 17. Conexión de la LCD.
Séptimo paso. Se conectan ambos optointerruptores en la protoboard al microcontrolador siguiendo la figura 13, tomando una separación entre ambos, teniendo en cuenta el tamaño del encoder que se utilizará, al conectar los optointerruptores se debe tomar en cuenta cuales son los pines correspondientes basándose en las letras que tiene el optointerruptor encima como se muestra en la figura 18. La forma de conectar el optointerruptor es colocando en la parte donde se tienen los signos “+” junto a “E” se conecta un cable directo del “+” a voltaje y una resistencia de 220Ω al pin “E”, para el lado donde se tiene el “+” y la letra “D”, se conecta la “D” a tierra y en el pin “+” se conecta una resistencia a voltaje y un cable directo al puerto que se desea.
Figura 18. Conexión del optointerruptor.
Octavo paso.
Se procede a hacer el encoder, para esta práctica se usa un disco pequeño y se corta una ranura del tamaño aproximado de separación entre los optointerruptores como se muestra en la figura 19.
Nota. Se necesita que la ranura sea menor a la separación ya que si es mayor el programa no podría leer tan fácil y tendría errores.
Figura 19. Acoplamiento del encoder a los 2 optointerruptores.
Noveno paso.
Se alimenta el circuito con 5V. Es importante checar que la fuente que alimenta al circuito no sobrepase los 5V porque quemaría el pic.
Decimo paso.
Se procede a comprobar la funcionalidad del circuito identificando si es correcto, observando que si cuando se gira en sentido horario o en contra entregue lo indicado.
Undécimo paso. Probar que el sensor no va fallar si se detiene en el centro de los dos optointerruptores como se muestra en la figura 19, en el anexo se muestra el programa con su debida protección para hacer que dicho circuito no falle y de los resultados correctos.
Conclusión. En la práctica se presentaron dificultades al acoplar perfectamente los optointerruptores al encoder, otra problemática que se encontró es que para cuando el encoder se detiene en el centro de ambos optointerruptores el programa se confunde y se debe hacer una protección para que si esto ocurre se pueda corregir lo antes posible.
VI. ANEXO 1. SIMULACION EN EL PROGRAMA ISIS PROTEUS
Figura 18. Circuito del sensor de ángulo digital.
VII. ANEXO 2. DESARRO DEL PROGRAMA EN PCWHD
#include <16f877a.h> //Librería del pic
#device adc=10 // Librería del ADC
#fuses XT,NOWDT // Librería “PERRO GUARDIAN”
#use delay(clock=4000000) // Cristal
#include <lcd.c> // Librería de la LCD
#use standard_io(B) // Activación del Puerto B
void main() // Inicio del cuerpo del programa
{
port_b_pullups(TRUE); // Activación de PULLUPS
lcd_init(); // Iniciación del LCD
int a=0, b=0; // Declaración de variables
while(1) // Inicio del ciclo “MIENTRAS”
{
while(input(PIN_B4)==0 && input(PIN_B3)==0) // Inicio del ciclo “MIENTRAS”
{printf(lcd_putc,"\f no hay disco"); delay_ms(100);} // Impresión del estado del encoder
while(input(PIN_B4)==1 && input(PIN_B3)==1) {
printf(lcd_putc,"\f si hay disco");delay_ms(100); // Inicio del ciclo “MIENTRAS”
}
//es en contra
{
printf(lcd_putc,"\f contra de reloj"); // Impresión del estado del encoder
b=0;a=0;
while(input(PIN_B4)==1 && input(PIN_B3)==0 && b==0){delay_ms(10);a=a+1; if(a==150){b=1;}}a=0; // Inicio del ciclo “MIENTRAS”
while(input(PIN_B4)==1 && b==0) // Inicio del ciclo “MIENTRAS”
{delay_ms(10);a=a+1; if(a==40){b=1;}}a=0; // Protection por encoder detenido
while(input(PIN_B4)==0 && b==0) // Inicio del ciclo “MIENTRAS”
{delay_ms(10);a=a+1; if(a==40){b=1;}}a=0; // Protection por encoder detenido
while(input(PIN_B4)==1 && input(PIN_B3)==1 && b==0) // Inicio del ciclo //“MIENTRAS”
{delay_ms(10);a=a+1; if(a==150){b=1;}}a=0; // Protection por encoder detenido
}
if(input(PIN_B4)==0 && input(PIN_B3)==1) //condición para indicar que el sentido
//es a favor
{
printf(lcd_putc,"\f favor de reloj"); // Impresión del estado del encoder
b=0;a=0;
while(input(PIN_B4)==1 && input(PIN_B3)==0 && b==0) {delay_ms(10);a=a+1; if(a==150){b=1;}}a=0;
while(input(PIN_B3)==1 && b==0){delay_ms(10);a=a+1; if(a==40){b=1;}}a=0; while(input(PIN_B3)==0 && b==0){delay_ms(10);a=a+1; if(a==40){b=1;}}a=0; while(input(PIN_B4)==1 && input(PIN_B3)==1 && b==0){delay_ms(10);a=a+1; if(a==150){b=1;}}a=0;
} } }