As lâmpadas PL exigem circuitos apropriados para sua excitação. Estes circuitos podem ser implementados com facilidade pelo uso de microcontroladores como os da série HT48RA0A da Holtek (www.holtek.com). Neste artigo levamos aos leitores um projeto que serve de exemplo para este tipo de aplicação.
As lâmpadas PL são excitadas por circuitos inversores que normalmente operam com uma ampla faixa de tensões de entrada, convertendo-as em um sinal de alta frequência e alta tensão apropriados à excitação da lâmpada. O circuito dado como exemplo, fornecido pela própria Holtek, opera com uma baixa tensão de entrada e alimenta uma lâmpada PL de 13 watts.
No application note da Holtek, os microcontroladores HT48RA0/-1/-2/ são utilizados como componentes centrais para controlar as lâmpadas PL. No application note é discutida sua utilização. Neste artigo vamos nos limitar a fornecer os dados básicos do circuito, ficando por conta dos leitores interessados baixar o documento completo no site da empresa.
Para entender o funcionamento do circuito partimos do princípio básico de operação de uma lâmpada PL. Estas lâmpadas consistem num bulbo de vidro preenchido com um gás inerte. Quando a lâmpada é ligada a uma fonte de alta tensão, o gás ioniza emitindo radiação ultravioleta (UV). Essa radiação excita uma cobertura de fósforo interna ao vidro a qual emite luz na faixa visível.
No exemplo de aplicação, temos o circuito da figura 1, que consiste na configuração mais simples para um inversor para lâmpada PL.
Este circuito consta de um microcontrolador, dois diodos de alta velocidade ligados a uma fonte de alimentação DC, quatro transistores NPN para transformação de nível, um capacitor em série com o filamento de lâmpada PL e dois indutores ligados a diodos. Os dois circuitos boost, sendo um formado por L1 e Q5 e o outro por L2 e Q6 elevam a tensão aplicada à lâmpada. Na figura 2 temos um exemplo de placa de circuito impresso para o circuito que utiliza uma lâmpada PL de 4 pinos de 13 W.
O circuito de alimentação para esta aplicação deve fornecer uma tensão de 12 V, podendo ser uma bateria ou um pequeno conversor.
Na figura 3 temos o aspecto da montagem do protótipo da Holtek para este inversor.
A seguir a listagem do programa que deve ser utilizado para excitação do circuito:
;*******************************************************
;
; HT48RA0A Demo Board for Auto lighting
;
;*******************************************************
INCLUDE HT48RA0A.INC
DATA .SECTION AT 20H ?DATA?
;------------------------------------------------
counter0 db ?
counter1 db ?
keycount db ?
keystatus db ?
;------------------------------------------------
CODE .SECTION
ORG 00H
Jmp initial
;------------------------------------------------
ORG 010H
Initial: ;Clearing all the data ram from
;20H to 3FH
mov A,20H
mov MP,A
jmp clramloop
clramloop:
clr R0
inc MP
mov A,0BFH
sub A,MP
sz STATUS.0
jmp clramloop ;MP0<3FH then jump to clramloop
;------------------------------------------------
;------------------------------------------------
; -- MAIN PROGRAM --
;------------------------------------------------
initial_mode:
clr keycount
mov A,00000011B ;Setting PA0 and PA1 output
;?1?
mov PA,A
mov A,00000000B ;
mov PC,A
;------------------------------------------------
mov A,0E0H;
mov counter1,A ;100×256×32=First ignition
;time (4MHz=E0H=0.8sec)
;................................................
;................................................
sign_test:
sz keystatus.0 ;Detecting signal from PB5
jmp ignite ;If PB5 is low then turn the
;light on
calldelay_46
calldelay_46
sz PB5
jmp clr_sign
inc keycount
mov A,0FAH
sub A,keycount
sz status.0
jmp sign_test
set keystatus.0 ;
jmp sign_test
clr_sign:
clr keycount
mov A,00000011B ;Setting PA0 and PA1 output
;?1?
jmp sign_test
;................................................
ignite:
clr keycount
call ignite_sub ;Ignition mode: First time
;sub-program
;
mov A,0FCH ;4MHz=FCH=0.1sec
mov counter1,A ;110×256×4=Second ignition
;time
ignite_se: ;Ignition Mode: Second time
mov A,00000001b
clr pa
mov PA,A
call delay_46
nop
nop
nop
nop
;..
mov A,00000010b
clr pa
mov PA,A
call delay_46
nop
siz counter0
jmp ignite_se
siz counter1
jmp ignite_se
;................................................
run_mode: ;Running Mode: fix friquency at
;22kHz
mov A,00000001b
clr pa
mov PA,A
call delay_run
snz keystatus.0 ;
jmp initial_mode ;PB5 is high-level, turn-off
;the light
;.......
mov A,00000010b
clr pa
mov PA,A
call delay_run
jmp run_mode
;--------------------------------------------------
; -- Sub PROGRAM --
;--------------------------------------------------
;delay_run:
clr wdt
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
ret
;
delay_run:
clr wdt
snz PB5 ;Detecting the signal from PB5
jmp delay_run1 ;If PB5 is high then turn the
;light off
inc keycount
mov A,0FAH
sub A,keycount
sz status.0
jmp delay_run2
clr keystatus.0
jmp delay_run3
delay_run1:
nop
jmp $+1
jmp $+1
delay_run2:
jmp $+1
delay_run3:
jmp $+1
ret
delay_46:
clr wdt
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
nop
ret
;--------------------------------------------------
; -- Sub PROGRAM --
;--------------------------------------------------
ignite_sub:
mov A,00000001b
mov PA,A
;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;
mov A,00000010b
mov PA,A
;.......
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;.......
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;.....
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;.....
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
;..
mov A,00000001b
mov PA,A
;;
mov A,00000010b
mov PA,A
clr wdt
siz counter0
jmp ignite_sub
siz counter1
jmp ignite_sub
clr pa
;..................................
ret
end