Simular vela con PIC12F675
Esto tiene que ser el proyecto más simple de todo lo que he hecho hasta ahora. Se utiliza un PIC para simular el parpadeo de una vela en su totalidad en el software. El brillo de la lámpara se controla haciendo PWM (modulación de anchura de impulso) de la potencia a la lámpara. Un generador de números aleatorios controla la amplitud parpadeo.
Como se ve en el esquema, sólo 3 pines se utilizan en el PIC12F675. PWM se genera en GP5 para conducir un pequeño transistor. Esto da suficiente corriente para funcionar una lámpara de 6,3 voltios.
Puesto que la lámpara está básicamente alimentado por un promedio de 2 o 3 voltios, que tiende a ser más ‘amarillo’ en color. Esto ayuda en el efecto de la llama de la vela. Este dispositivo se instala en un frasco de agua de plástico decorado con gráficos colord transparentes. La mayoría de los clientes de este lugar simplemente asumen que es una vela de verdad en la botella. A pocos consiguen curiosos y mirar hacia abajo para ver el circuito interior. Para aquellos que desean duplicar este proyecto, la fuente y el objeto de código disponible.
code:
; Candle Simulation ; 6/04 Luhan Monat ; ; Simulate flicker of candle using incandescent lamp ; device PIC12F675,intrc_osc,pwrte_on,wdt_off org 20h del1 ds 1 del2 ds 1 pcnt ds 1 temp ds 1 lev1 ds 1 lev2 ds 1 level ds 1 rbuf ds 5 LAMP = gp.5 org 0 goto start org 4 reti start bsf RP0 movlw 0 movwf GP movlw 127 movwf OSCCAL bcf RP0 bsf rbuf,0 ;seed random number movlw 127 movwf lev1 ;initial light level movwf lev2 ; Main Loop ; Create hi and low power levels ; Switch between levels candle movf lev1,w movwf level call power ;do lev1 power call rando andlw 7 btfss z goto :run ;skip 7 out of 8 call rmid ;generate new hi and low levels movwf lev1 sublw 0 movwf lev2 :run movf lev2,w ;do lev2 power movwf level call power goto candle ; PWM power control power movlw 100 ;set flicker rate: higher=slower movwf pcnt ;set loop count :p1 movf level,w ;get target level movwf del1 ;set 1st delay sublw 0 movwf del2 ;set 2nd delay bsf LAMP ;power on :p3 nop decfsz del1 ;do 1st delay goto :p3 bcf LAMP ;power off :p4 nop decfsz del2 ;second delay goto :p4 decfsz pcnt goto :p1 ; find sum of 4 random numbers ; skews results around 127 rmid call rando andlw 3fh movwf temp call rando andlw 3fh addwf temp call rando andlw 3fh addwf temp call rando andlw 3fh addwf temp,w ret ; Pseudo Rando Number ; "Chop Suey Machine" rando movf rbuf,w addwf rbuf+1,w movwf rbuf+1 addwf rbuf+2,w movwf rbuf+2 addwf rbuf+3,w movwf rbuf+3 addwf rbuf+4,w movwf rbuf+4 bcf c rlf rbuf+4 btfsc c bsf rbuf+4,0 movf rbuf+4,w addwf rbuf ret end QED
hex:
:020000000528D1 :1000080009008316003085007F3090008312271482 :100018007F30A400A5002408A6001E203B20073935 :10002800031D1A282E20A400003CA5002508A600C0 :100038001E200F286430A2002608A000003CA10062 :1000480085160000A00B252885120000A10B292881 :10005800A20B20283B203F39A3003B203F39A307B0 :100068003B203F39A3073B203F39230708002708D7 :100078002807A8002907A9002A07AA002B07AB0010 :0E0088000310AB0D03182B142B08A70708005C :02400E00840F1D :02FFFE00750686 :00000001FF
Fuente: http://mondo-technology.com/candle.html
Tuitear 2.705 Veces leído 0 comentarios |
8 septiembre 2014 en Electronica | tags: Circuitos electrónicos, Electronica |