Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Carpeta Seguidor de Luz Con PIC
Carpeta Seguidor de Luz Con PIC
Ignacio Olmedo
Introduccin: Con el fin de incursionar en el mundo de los microcontrladores PIC, y mas especficamente en el manejo de motores paso a paso, nos propusimos el desafo de desarrollar un sistema que reuniera las herramientas del control de giro por pasos mediante pulsos y las del manejo de seales analgicas. De manera que as fuimos definiendo lo que sera un seguidor de luz inteligente, es decir, un sistema compuesto bsicamente por una LDR, un PIC y el motor paso a paso de una impresora, que llevara a cabo la funcin 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 tambin, tiene la capacidad de establecer un lazo cerrado de control, ya que despus de posicionarse hacia el punto de mayor iluminacin estar chequeando que el valor de luz no cambie drsticamente, si lo hace, inicia un nuevo sensado y nuevo posicionamiento. Hardware: La electrnica 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 visualizacin. - 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 tensin de salida y 500mA.
- LDR: El sensado se realiza a partir de un LDR tpica. La variacin de la tensin provocada por la variacin de la resistencia (LDR) en la rama colocada a en la entrada analgica AN0 del PIC, es transformada a valores digitales y va siendo comparada con el valor anterior obtenido,
- 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)
Cabe destacar la caracterstica 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 imn permanente, pero veamos algunas diferencias importantes a la hora de disear al hardware y el software.
Bobinados motor
*Motor Unipolar: tiene 2 bobinados con punto medio, Los puntos 1 y 2 generalmente van a tensin positiva y se activan cada uno de los cuatro bobinados que quedan conectndolos a masa. *Motor Bipolar: tambin 2 bobinados pero sin puntos medios, es ms difcil 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 metlicos que cumplirn el rol de interruptor final de carrera, es utilizado para dar lmite al giro en un sentido en el posicionamiento del sensor.
Imagen del PCB de la plaqueta terminada con los componentes montados Software: Para el diseo 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 conversin. - comparar el valor del sensado con el del paso anterior, guardando el mayor valor, y el nmero 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 comparacin, 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. - adems, 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 precisin por saltos indeseados. A continuacin se presenta el cdigo 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
;--------------------------------------------------------------------------------------------------------------------------ptoinicio clrf conscan clrf posision bsf PORTC,5 clrw movwf PORTB btfss PORTC,3 return clrw movwf
PORTB
movlw b'00010000' movwf PORTB movlw b'00010000' movwf ultimini call retardo clrw movwf PORTB btfss PORTC,3 return movlw movwf movlw b'00100000' PORTB b'00100000'
movlw b'10000000' movwf PORTB movlw b'10000000' movwf ultimini call retardo clrw movwf PORTB btfss PORTC,3 return goto ptoinicio ;--------------------------------------------------------------------------------------------------------------------------------escaneo call CONVERCION bcf PORTC,5 bsf PORTC,6 movlw b'11111111';para que el siguiente paso sea desde 0 movwf posision loop clrw movwf PORTB clrc btfsc ultimini,4 goto jump
deljump
rrf ultimini,1 movf ultimini,0 movwf paraposfi movf ultimini,0 movwf PORTB call CONVERCION clrw movwf PORTB call Medpaso movf medpas,0 movwf PORTB call CONVERCION
incf conscan,1 movf conscan,0 Sublw .32 btfsc STATUS,CARRY goto loop return Medpaso btfsc ultimini,7 goto medpaso1 btfsc ultimini,6 goto medpaso2 btfsc ultimini,5 goto medpaso3 btfsc ultimini,4 goto medpaso4 medpaso1 movlw movwf return movlw movwf return movlw b'11000000' ;192 medpas b'01100000';96 medpas b'00110000';48
medpaso2
medpaso3
jump
clrc rrf ultimini,1 clrc rrf ultimini,1 clrc rrf ultimini,1 clrc rrf ultimini,1 clrc rrf ultimini,1 goto deljump ;-------------------------------------------------------------------------------------------------------------------------------guardo movf posisionm,w movwf indec return ;--------------------------------------------------------------------------------------------------------------------------------posfinal movf ultimini,0 movwf paraposfi movf indec,0 sublw 0x40; son 64 los pasos para el semiciclo completo movwf 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 retardo decfszreg,1 delmedio btfsc paraposfi,7 goto jump2
deljump2
rlf
paraposfi,1
movf paraposfi,0 movwf PORTB call retardo decfszreg,1 ;incfszindec,1 goto Medpaso2 return Medpaso2 btfsc paraposfi,7 goto medpaso42 btfsc paraposfi,6 goto medpaso12 btfsc paraposfi,5 goto medpaso22 btfsc paraposfi,4 goto medpaso32 goto delmedio medpaso12 movlw b'11000000' ;192 movwf PORTB call retardo decfszreg,1 ;incfszindec,1 goto delmedio return medpaso22 movlw movwf b'01100000';96 PORTB
call retardo decfszreg,1 ;incfszindec,1 goto delmedio return medpaso32 movlw movwf b'00110000';48 PORTB
jump2 rlf rlf rlf rlf rlf paraposfi,1 paraposfi,1 paraposfi,1 paraposfi,1 paraposfi,1
goto deljump2 ;--------------------------------------------------------------------------------------------------------------------------------CONVERCION incf posision,1 call retardo call retardo ADCON0,adgo btfsc ADCON0,adgo goto espera movf ADRESH,W movwf actual subwf mayor,0 ; mayor-actual btfss STATUS,CARRY call gmyp0 clrc return ;--------------------------------------------------------------------------------------------------------------------------------gmyp0 movf posision,w movwf posisionm movf actual,0 movwf mayor espera bsf
espera1
movf mayor,w subwf cambio,0 ; cambio-mayor btfss STATUS,CARRY; goto reset goto test end ;si el valor nuevo de la conversin ; es menor que el 10%;del ultimo mayor valor reinicia ; y escanea Conclusin: Finalmente, el dispositivo fue ensayado probando seguir la luz de una luminaria tipo velador con una lmpara 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 posicin donde capte mayor iluminancia. Tambin se puede notar el hecho de que al disponer de un sistema de control automtico, el aparato sabr sortear los errores por saltos y vibraciones,