Desde 1994 en la Red. La pagina de los aficionados a la electronica, informatica y otras curiosidades de la vida. No dudes en visitarnos.
Ahora 1 visitas.| 3408200 Visitas (desde Dic. 2011), hoy: 265 Visitas 800 Pag. Vistas , ultimos 36 dias: 10110 Visitas. 39574 Pag. Vistas. Tu IP: 3.144.17.45
Que ando curioseando:
AutosuficienciaCosas de casaElectronicaEn InternetInformáticaMundo MisticoSin categoríaSociedadTe lo recomiendo

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.

candle[1]

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

 

 

 

Escribe un comentario

Tu comentario