Carpeta Seguidor de Luz Con PIC

18
SEGUIDOR DE LUZ INTELIGENTE

Transcript of Carpeta Seguidor de Luz Con PIC

Page 1: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

Ignacio OlmedoLuciano Mulki Aguilera

Page 2: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

Introducción:Con el fin de incursionar en el mundo de los microcontrladores PIC, y mas específicamente en el manejo de motores paso a paso, nos propusimos el desafío de desarrollar un sistema que reuniera las herramientas del control de giro por pasos mediante pulsos y las del manejo de señales analógicas. De manera que así fuimos definiendo lo que sería un seguidor de luz inteligente, es decir, un sistema compuesto básicamente por una LDR, un PIC y el motor paso a paso de una impresora, que llevara a cabo la función de sensar la cantidad de luz en un arco de giro, sobre un solo eje, y luego “apuntar” o posicionarse hacia el punto de mayor luz sensada. El sistema, así también, tiene la capacidad de establecer un lazo cerrado de control, ya que después de posicionarse hacia el punto de mayor iluminación estará chequeando que el valor de luz no cambie drásticamente, si lo hace, inicia un nuevo sensado y nuevo posicionamiento.

Hardware:La electrónica del circuito que gobierna el proceso está compuesto por:

- En primer lugar por el micro controlador de Microchip, el PIC16F873A.- El 74LS245 que es un buffer octal del tipo tres estados de 8 bits, para aislar el PIC de la

carga que pueda representar las interfaces del motor y de los LEDs de visualización.- El ULN2003, (Arreglo de 7 Darlington integrados con diodos de descarga) que es un driver

para el manejo de motores paso a paso con tensiones TTL, y hasta 50V de tensión de salida y 500mA.

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 3: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

Configuración de los pines del ULN2003

- LDR:El sensado se realiza a partir de un LDR típica.La variación de la tensión provocada por la variación de la resistencia (LDR) en la rama colocada a en la entrada analógica AN0 del PIC, es transformada a valores digitales y va siendo comparada con el valor anterior obtenido, quedándose así con el

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 4: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

mayor valor, y relacionando éste con el número de pasos dados, colocará al motor nuevamente, en el paso en el cual, el PIC leyó mayor valor de LUX.

- Motor paso a paso:El giro controlado se lleva a cabo a partir de un motor paso a paso unipolar (5 hilos) de impresora (PM35L048)

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 5: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

Cabe destacar la característica de que el motor utilizado es del tipo constructivo unipolar ya que la manera de excitar las bobinas es distinto al de los bipolares. Los dos motores son del tipo de imán permanente, pero veamos algunas diferencias importantes a la hora de diseñar al hardware y el software.

Bobinados motor unipolar Bobinados motor bipolar

*Motor Unipolar: tiene 2 bobinados con punto medio, Los puntos 1 y 2 generalmente van a tensión positiva y se activan cada uno de los cuatro bobinados que quedan conectándolos a masa.*Motor Bipolar: también 2 bobinados pero sin puntos medios, es más difícil de accionar ya que se necesitan puentes de transistores para manejar cada bobina.

- Final de carrera:Se le incorporó a la estructura del dispositivo un interruptor construido a mano que consta de dos contactos metálicos que cumplirán el rol de interruptor final de carrera, es utilizado para dar límite

al giro en un sentido en el posicionamiento del sensor.

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 6: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

Imagen del PCB de la plaqueta terminada con los componentes montados

Software:

Para el diseño del Software se partió de la idea de utilizar la poderosa herramienta que nos brinda el CONVERSOR A/D del PIC16F873A y esto combinarlo con la posibilidad que nos brindan los motores de conocer y controlar paso por paso sus avances.

Entonces, se determinó que lo que llevará a cabo el bloque del programa será:- luego de posicionarse en el punto de inicio, esto con ayuda del final de carrera.- sensar la luz paso por paso, utilizando el ADRESH de la conversión.- comparar el valor del sensado con el del paso anterior, guardando el mayor valor, y el número de paso en el que se provocó el mayor valor.- de manera que al finalizar el recorrido con todos los pasos y los censados recurra al numero de paso guardado (en el que adquirió el mayor valor de luz) para posicionarse allí.- luego, con el dato del mayor valor guardado realizará una comparación, chequeando continuamente que el valor actual no descienda de un umbral constante establecido a partir del mayor valor posible, y estableciendo así un control de lazo cerrado, con la posibilidad de definir la “sensibilidad” del sensor por software.- además, hubo que agregar bloques de programa que permitan disminuir el error en el posicionamiento, es decir un bloque que se encargue de administrar el energizado de las bobinas a partir del “reconocimiento de pasos” para que no haya errores en le precisión por “saltos” indeseados. A continuación se presenta el código fuente el cual fue escrito en lenguaje ensamblador con el editor y compilador del MPLAB y el pic “quemado” por puerto serie con el programador JDM y el software ICprog.

list p=16f873A#include <p16f873A.inc>

datoA equ 31hdatoB equ 32hdatoC equ 33hmedpas equ 34hreg equ 0x35paraposfi equ 36hOPTION_REG equ 81hposision equ 0x20mayor equ 0x21

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 7: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

mayorm equ 0x22conscan equ 0x23adgo equ 02hCARRY equ 00hposisionm equ 0x24actual equ 0x25indec equ 0x26cambio equ 0x27ultimini equ 0x28;---------------------------------------------------------------------------------------------------------------------------------reset org 00h

goto startorg 05h

;----------------------------------------------------------------------------------------------------------------------------------start movlw b'00000000'

movwf mayormovlw b'00000000'movwf actualmovlw b'00000000'movwf posisionmovlw b'00000000'movwf posisionmclrf reg

movlw b'00000000'movwf medpasmovlw b'00000000'movwf cambiomovlw b'00000000'movwf conscanmovlw b'00000000'movwf indeccall inptocall ptoiniciocall retardocall escaneocall guardo;call ptoiniciocall retardocall posfinalcall test

;----------------------------------------------------------------------------------------------------------------------------------inpto

bcf STATUS,RP1bsf STATUS,RP0clrf TRISAbsf TRISA,0clrf TRISB

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 8: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

clrf TRISCbsf TRISC,3movlw b'00001110'movwf ADCON1bcf STATUS,RP0movlw b'01000001'movwf ADCON0return

;----------------------------------------------------------------------------------------------------------------------------ptoinicio clrf conscan

clrf posisionbsf PORTC,5clrwmovwf PORTBbtfss PORTC,3

returnclrwmovwf PORTB

movlw b'00010000'movwf PORTBmovlw b'00010000'movwf ultiminicall retardo

clrwmovwf PORTBbtfss PORTC,3return

movlw b'00100000'movwf PORTBmovlw b'00100000'movwf ultiminicall retardo

clrwmovwf PORTBbtfss PORTC,3

return

movlw b'01000000'

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 9: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

movwf PORTBmovlw b'01000000'movwf ultiminicall retardo

clrwmovwf PORTBbtfss PORTC,3

return

movlw b'10000000'movwf PORTBmovlw b'10000000'movwf ultiminicall retardo

clrwmovwf PORTBbtfss PORTC,3return

goto ptoinicio;----------------------------------------------------------------------------------------------------------------------------------escaneo

call CONVERCIONbcf PORTC,5bsf PORTC,6movlw b'11111111';para que el siguiente paso sea desde 0movwf posision

loop clrwmovwf PORTBclrcbtfsc ultimini,4goto jump

deljump rrf ultimini,1movf ultimini,0movwf paraposfi

movf ultimini,0movwf PORTBcall CONVERCIONclrwmovwf PORTB

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 10: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

call Medpasomovf medpas,0movwf PORTB

call CONVERCION

incf conscan,1movf conscan,0Sublw .32btfsc STATUS,CARRYgoto loopreturn

Medpaso btfsc ultimini,7goto medpaso1

btfsc ultimini,6goto medpaso2

btfsc ultimini,5goto medpaso3

btfsc ultimini,4goto medpaso4

medpaso1 movlw b'11000000' ;192movwf medpasreturn

medpaso2 movlw b'01100000';96movwf medpasreturn

medpaso3 movlw b'00110000';48movwf medpasreturn

medpaso4 movlw b'10010000';144movwf medpasreturn

jump clrc

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 11: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

rrf ultimini,1clrcrrf ultimini,1clrcrrf ultimini,1clrcrrf ultimini,1clrcrrf ultimini,1goto deljump

;---------------------------------------------------------------------------------------------------------------------------------guardo

movf posisionm,wmovwf indec

return;----------------------------------------------------------------------------------------------------------------------------------posfinal

movf ultimini,0movwf paraposfi

movf indec,0sublw 0x40; son 64 los pasos para el semiciclo completomovwf reg

movf paraposfi,0 ; lo unoc que le cambio para que no salte de scan a ;posfinalcomo del scan sale siempre con mediopaso

movwf PORTB; repito el ultimo paso completo q se ejecuto en escaneo ;que es el que le sigue para volver

call retardodecfsz reg,1

delmediobtfsc paraposfi,7goto jump2

deljump2 rlf paraposfi,1

movf paraposfi,0movwf PORTBcall retardodecfsz reg,1;incfsz indec,1goto Medpaso2

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 12: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

return

Medpaso2btfsc paraposfi,7goto medpaso42

btfsc paraposfi,6goto medpaso12

btfsc paraposfi,5goto medpaso22

btfsc paraposfi,4goto medpaso32goto delmedio

medpaso12movlw b'11000000' ;192movwf PORTBcall retardodecfsz reg,1;incfsz indec,1goto delmedio

return

medpaso22 movlw b'01100000';96movwf PORTB

call retardodecfsz reg,1;incfsz indec,1

goto delmedioreturn

medpaso32 movlw b'00110000';48movwf PORTBcall retardodecfsz reg,1; incfsz indec,1goto delmedioreturn

medpaso42 movlw b'10010000';144

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 13: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

movwf PORTBcall retardodecfsz reg,1; incfsz indec,1goto delmedioreturn

jump2rlf paraposfi,1

rlf paraposfi,1

rlf paraposfi,1

rlf paraposfi,1

rlf paraposfi,1

goto deljump2;----------------------------------------------------------------------------------------------------------------------------------CONVERCION incf posision,1

call retardocall retardo

bsf ADCON0,adgoespera btfsc ADCON0,adgo

goto esperamovf ADRESH,Wmovwf actualsubwf mayor,0 ; mayor-actualbtfss STATUS,CARRYcall gmyp0clrcreturn

;----------------------------------------------------------------------------------------------------------------------------------gmyp0 movf posision,w

movwf posisionmmovf actual,0movwf mayorreturn

;----------------------------------------------------------------------------------------------------------------------------------sinsalto

;----------------------------------------------------------------------------------------------------------------------------------retardo movlw b'01000001'

movwf datoB

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 14: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

delay2 movlw b'11111111'movwf datoA

delay1 decfsz datoA,1goto delay1 decfsz datoB,1goto delay2return

;----------------------------------------------------------------------------------------------------------------------------------retardo2 movlw b'11111111'

movwf datoBdelay22 movlw b'11111111'

movwf datoAdelay12 decfsz datoA,1

goto delay12 decfsz datoB,1goto delay22return

;----------------------------------------------------------------------------------------------------------------------------------test bcf PORTC,6

bsf PORTC,7movlw b'00000000'movwf indecmovlw b'00000000'movwf cambio

movlw b'00000000'movwf PORTB

call retardo2clrf posisionmbsf ADCON0,adgo

espera1 btfsc ADCON0,adgogoto espera1movf ADRESH,w

movwf cambiobcf PORTC,7incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)

Page 15: Carpeta Seguidor de Luz Con PIC

SEGUIDOR DE LUZ INTELIGENTE

incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1incf cambio,1; incremento 30 unidades para una sensibilidad de 0.3V

movf mayor,wsubwf cambio,0 ; cambio-mayorbtfss STATUS,CARRY;goto resetgoto testend

;si el valor nuevo de la conversión; es menor que el 10%-;del ultimo mayor valor reinicia; y escanea

Conclusión:Finalmente, el dispositivo fue ensayado probando seguir la luz de una luminaria tipo velador con una lámpara incandescente de 75W, pero estamos firmemente convencidos, de que puede seguir fielmente cualquier fuente de luz, incluso la solar. Y aunque no se trate de fuentes puntuales de luz, al ser un sistema inteligente, buscará la posición donde “capte” mayor iluminancia.También se puede notar el hecho de que al disponer de un sistema de control automático, el aparato sabrá sortear los errores por saltos y vibraciones, posicionándose correctamente aunque no fuera en el primer intento.

Ignacio Olmedo y Luciano Mulki Aguilera (Ingeniería Electrónica)