Você está na página 1de 26

Circuitos de Interface para

Microcontroladores
Adaptao livre de parte do documento AXE001_pic_electronics.pdf
da Revolution Education Ltd.
ndice
1. O que um Microcontrolador PIC ?______________________________________1
2. Interfaceamento do Microcontrolador_____________________________________1
2.1. Circuitos de interface standard____________________________________________1
.1.1. Circuito de interface com trans!stor______________________________________________1
.1.. Circuito de interface com trans!stor "arlin#ton_____________________________________
.1.$. Circuito de interface com rel%s__________________________________________________$
.1.&. Circuito de interface com transistor 'E(__________________________________________$
2.2. Interface com Dispositivos de sada_________________________________________4
..1. LE"_______________________________________________________________________&
... L)mpada de sinali*ao_______________________________________________________+
..$. ,e*ouro ou ,u**er___________________________________________________________+
..&. Altifalantes pie*o-el%ctricos____________________________________________________.
..+. Micromotores_______________________________________________________________.
.... Motor passo-a-passo unipolar___________________________________________________/
..0. Motor passo-a-passo 1ipolar___________________________________________________10
../. 2ervo radio-controlado_______________________________________________________1
..3. 2olen4ides e v5lvulas solen4ides_______________________________________________1$
2.3. Interface com Dispositivos de Entrada_____________________________________14
.$.1. Interruptores_______________________________________________________________1&
Interruptores e ressaltos 6de1ouncer7_______________________________________________1+
.$.. 8otenci4metro______________________________________________________________1+
.$.$. L"R 6Li#9t "ependent Resistor7_______________________________________________1.
.$.&. (ermistor__________________________________________________________________1/
2.4. Interface com Componentes Avanados____________________________________18
.&.1. "ispla: LC" 6Li;uid Cr:stal "ispla:7___________________________________________1/
.&.1.1. Caracteres LC"_________________________________________________________13
.&.1.. Interface de LC" a microcontoladores_______________________________________13
Li#ando o LC" usando < 'RM010 62erial LC" 'irm=are C9ip7_____________________0
Li#ando o LC" usando o AXE0$$ 62erial LC" Module7____________________________0
Li#ando o LC" directamente__________________________________________________1
>m 8ro#rama 2imples para escrever no LC"___________________________________1
>m 8ro#rama mais Avanado________________________________________________
2u1rotinas 2tandard para li#ar o LC" directamente.______________________________
>sando o con?unto de instru@es 6comandos7 do LC".____________________________$
C4di#os das instru@es 6comandos7 para o LC"._________________________________$
EAemplosB_______________________________________________________________&
i
1. O que um Microcontrolador PIC ?
<s e;uipamentos controlados por microprocessadores so normalmente constitu!dos por
v5rios circuitos inte#rados ou c9ipsC cada um com a sua funoC a sa1erB o
microprocessador 6C8>7C uma mem4ria E8R<M com o pro#ramaC uma mem4ria RAM
para arma*enamento de dados e interfaces de entradaDsa!da 6ID< inputDoutput7 para
li#ao ao eAterior. 8elo contr5rioC os sistemas 1aseados em microcontroladores
possuem um Enico c9ip F o microcontrolador. >m microcontrolador 8IC % um circuito
inte#rado de pe;uenas dimens@es e ;ue cont%m num Enico c9ipC a C8>C RAMC R<M e
circuitos de interface. A #rande variedade destes componentes possi1ilita ;ue o mesmo
fa1ricante oferea modelos com mais ou menos RAMC com outros dispositivos como
portos de comunicaoC conversores anal4#icoDdi#itaisC etc.
<s microcontroladores 8IC podem ser utili*ados como Gc%re1roH para controlar uma
enorme variedade de e;uipamentosC desde m5;uinas de lavar a telem4veis ou
autom4veisC etc. EAistem portanto aos mil9@es por todo o ladoC sendo o seu custo muito
redu*ido. 2oC por issoC eAcelentes compan9eiros para a tarefa a ;ue nos propomosB
conce1er um ro1I m4vel aut4nomoC dotado de v5rios sensores. 8ara isso as informa@es
provenientes desses sensoresC de to;ueC de deteco de o1st5culosC de dist)nciaC etcC
devem ser adaptadas de forma a serem interpretadas pelo nosso 8IC. 8or outro ladoC o
controlo de dispositivos como motores ou rel%s tam1%m eAi#e adaptao de sinal. J
desse assunto ;ue iremos tratar nos pr4Aimos cap!tulos.
2. Interfaceamento do Microcontrolador
Keste cap!tulo iremos eAplicar como reali*ar as interfaces para ;ue diferentes
dispositivos de entrada e de sa!da possam ser li#ados ao microcontrolador.
Iremos tratar dos se#uintes dispositivosB
2.1. Circuitos de interface standard
2.1.1. Circuito de interface com transstor
Muitos dos dispositivos de sa!da iro necessitar de um circuito de comutao por
trans!stor. 8ara a maioria dos casos um par "arlin#ton formado por dois trans!stores %
ideal.
ContudoC este circuito necessita de dois trans!stores separados. J poss!vel ad;uirir um
dispositivo contendo os dois trans!stores num Enico encapsulamento. Estes trans!stores
desi#nam-se "arlin#ton e possuem elevado #an9o. >m trans!stor como o ,CX$/,
pode accionar correntes at% /00 mA. Este ser5 o trans!stor utili*ado em todos os
eAemplos deste manual.
1
Kote ;ue % comum colocar um d!odo invertido em paralelo com o dispositivo
controlado 6d!odo de roda-livre7. Isto % essencial para car#as indutivasC como so os
casos de motores e rel%s. 2empre ;ue se desli#a um destes dispositivos cria-se uma
corrente inversa ;ue iria destruir o trans!stor. 8oder5 ser usado um vul#ar d!odo
1K&001.
2.1.2. Circuito de interface com transstor Darlington
2e for necess5rio controlar mais do ;ue um dispositivoC poder5 ser aconsel95vel utili*ar
um inte#rado espec!ficoC o >LK00$ Darlington driver ICC ;ue cont%m 0 trans!stores
"arlin#ton e ainda os d!odos de roda-livre num Enico inv4lucro.

A verso >LK/0$ cont%m / trans!stores.


2e for necess5rio controlar correntes mais elevadas podero ser li#adas duas sa!das
como na fi#ura.
2.1.3. Circuito de interface com rels
<s rel%s podem ser utili*ados para accionar dispositivos de maior potLncia como
motores e solen4ides. Kesse casoC o rel% pode ser alimentado por uma fonte de
alimentao separadaC por eAemplo 1 M. Kote o uso do d!odo de roda-livre em paralelo
com a 1o1ina do rel%.
2.1.4. Circuito de interface com transistor !"
<s trans!stores de 8otLncia M<2'E( podem ser utili*ados em ve* dos pares "arlin#ton
para accionamento de dispositivos de m%dia potLncia. < circuito a utili*ar % o da fi#ura.
Repare-se no uso do d!odo de roda-livre.
<s M<2'E(s apresentam uma resistLncia interna muito 1aiAa 6d%cimas de o9m7C pelo
;ue a ;ueda de tenso no trans!stor % muito redu*ida.
$
2.2. Interface com Dispositivos de sada
2.2.1. #!D
<s pinos do microcontrolador 8IC podem deiAar passar 6sink7 ou fornecer 6source7
correntes de 0 mAC o ;ue si#nifica ;ue % poss!vel li#ar directamente um LE" a um
pino de sa!da. Lem1re-se de ;ue os pinos de um microcontrolador como o 8ICAXE
vLm ?5 confi#uradosC uns como sa!das e outros como entradas. Al#uns so
repro#ram5veis. 8ara limitar a corrente utili*a-se em s%rie uma resistLncia de $$0 o9ms.
LE" li#ado N massa.
8ara li#ar o LE" 6<K7 - high 1
8ara desli#ar o LE" 6<''7 - low 1
LE" li#ado N alimentao.
8ara li#ar o LE" 6<K7 - low 1
8ara desli#ar o LE" 6<''7 - high 1
&
2.2.2. #$m%ada de sinali&a'(o
8ara interfacear uma l)mpada de sinali*ao % necess5rio o circuito com trans!stor atr5s
referido. Isso resulta nomeadamente da elevada corrente utili*ada pela l)mpada mas
tam1%m pode ser fre;uente esta necessitar de uma alimentao diferente da do
microcontrolador. Kesse caso % necess5rio #arantir ;ue a massa 60MC OK"7 % comum Ns
duas alimenta@es. Importa referir ;ue como o nosso circuito vai ser alimentado por
1aterias ou pil9as a mel9or soluo % usar um LE"C pois consome menos corrente.
8ara li#ar a l)mpada - 9i#9 1
8ara desli#ar a l)mpada - lo= 1
2.2.3. )e&ouro ou )u&&er
8ara interfacear um 1e*ouro 61u**er7 % necess5rio utili*ar o circuito a trans!stor
standard. Ko caso de se utili*ar uma alimentao separada % necess5rio #arantir ;ue a
massa 60MC OK"7 % comum Ns duas alimenta@es. Ko caso de se utili*arem 1aterias ou
pil9as como fonte de alimentaoC % de lem1rar ;ue os altifalantes pie*o-el%ctricos
consomem menos corrente. Al%m disso os 1e*ouros apenas produ*em uma fre;uLnciaC
ao contr5rio dos altifalantes pie*o-el%ctricos ;ue permitem reprodu*ir diferentes
fre;uLncias.
8ara li#ar o 1u**er -9i#9 1
8ara desli#ar o 1u**er -lo= 1
+
2.2.4. *ltifalantes %ie&o+elctricos
8ode usar-se um altifalante pie*o-el%ctrico para produ*ir dieferentes sons. <s 1e*ouros
produ*em som 6ru!do7 ;uando so alimentadosC en;uanto ;ue os altifalantes eAi#em um
sinal pulsado 6onda ;uadrada7 para #erar o som. 'eli*mente isso % f5cil de produ*ir no
8ICAXEC pois eAiste uma instruo sound.
8ara produ*ir uma nota de tom 100C durao +0 no pino 1
sound 1, (100,50)
8ara produ*ir um som variado usando a vari5vel 11 -
for b1 = 1 to 100 P a instruo sound % repetida tomando os valores de tom
sound 1, (b1,25) P de 1 a 100
next b1
2.2.,. Micromotores
Muitos pro?ectos re;uerem a utili*ao de motores de corrente cont!nua 6CC7 1aratos
para criar movimento circular. EAistem v5rias possi1ilidades de interfacear motores ao
microcontrolador.
< circuito da fi#ura utili*a transistores "arlin#ton para accionar o motor. Este circuito
funciona 1em com motores CC de 1rin;uedos 1aratos. Ko entanto importa acautelar o
facto de ;ue os motores produ*em muito ru!do el%ctrico nas lin9as de alimentao do
microcontroladorC podendo lev5-lo a deiAar de funcionar.
.
>ma soluo para o ru!do el%ctrico consiste em colocar entre os terminais do motor um
condensador de poli%ster 6no polari*ado7 de 0n'.
8ara accionar motores de maior potLnciaC pode usar-se o circuito a M<2'E(
anteriormente descrito.
Em v5rias circunst)ncias ir5 ser necess5rio accionar mais do ;ue um motorC como % o
caso dos ro1Is m4veis. A soluo mais simples e 1arata consiste em utili*ar um
inte#rado motor driver como o L3$". Este inte#rado possi1ilita o controlo de dois
motores CCC utili*ando ;uatro pinos de sa!da do microcontrolador. Katuralmente se
tivermos um s4 motor 1astam dois pinos. Esta soluo ir5 ser utili*ada nos nossos ro1Is
pois al%m de permitir o accionamento nos dois sentidos dos dois motoresC permite ainda
o controlo de velocidade por 8QMC como se ver5 mais N frente.
0
Am1as as entradas 1aiAas - o motor p5ra
8rimeira entrada altaC se#unda entrada 1aiAa - motor para frente
8rimeira entrada 1aiAaC se#unda entrada alta - motor para tr5s
Am1as as entradas altas - motor p5ra
A mudana dos sinais nos pinos de entrada tem o efeito de produ*ir a alterao do
sentido da corrente no enrolamento do motorC lo#o do seu sentido de rotao.
Kote ;ue o L3$" a;uecer5 com uso intenso. < uso de um dissipador colocado no topo
do inte#rado pode a?udar ao arrefecimento. Ko caso de monta#ens em placas pr%-
perfuradas 6stripboard7 a soldadura Ns pistas dos ;uatro terminais de massa centrais
pode a?udar a dissipar.
>ma maneira de redu*ir os efeitos do ru!do el%ctrico so1re o microcontroladorC consiste
em usar fontes de alimentao separadas para a parte de controlo 6microcontrolador7 e
para os motores. Ko caso dos ro1Is ;ue iremos construirC pode usar-se uma vul#ar pil9a
de 3M com re#ulador de tenso para +M para a electr4nica e um pack de 1aterias de
modelismo 6KiCad ou KiMR de 3C.M7 para os motores. Katuralmente continua a ser
necess5rio manter um terminal de massa comum Ns duas alimenta@es. A separao total
de circuitos pode ser reali*ada usando circuitos optoelectr4nicos mas apenas se ?ustificaC
face N sua compleAidadeC no caso de ru!do el%ctrico eAcessivoC resultante de comutao
de rel%s ou motores.
2.2.-. Motor %asso+a+%asso uni%olar
<s motores passo-a-passo so motores muito precisos com aplicao corrente em
leitores de discos de computadoresC impressoras e rel4#ios. Ao contr5rio dos motores
CCC ;ue rodam livremente ;uando a alimentao % aplicadaC os motores passo-a-passo
re;uerem ;ue a alimentao se?a aplica se#undo um determinado padro. 8ara cada
impulsoC o motor passo-a-passo roda um passo 6step7C normalmente 0.+ #raus 6o ;ue d5
&/ passos para uma rotao completa7.
EAistem dois tipos principais de motores passo-a-passo - >nipolares e ,ipolares.
<s motores unipolares possuem normalmente ;uatro enrolamentos ;ue so li#ados 6on7
e desli#ados 6off7 numa se;uLncia determinada. <s motores 1ipolares possuem dois
enrolamentos nos ;uais a corrente % invertida numa se;uLncia idLntica. < uso de
motores 1ipolares % tratado no cap!tulo se#uinte.
Cada um dos ;uatro enrolamentos de um motor unipolar tem ;ue ser comutado on e off
numa certa ordem para ;ue o motor rode. Muitos sistemas controlados por
/
microprocessador utili*am ;uatro pinos de sa!da para controlar cada um dos ;uatro
enrolamentos.
Como o motor passo-a-passo % alimentado a 1MC % necess5rio um circuito a trans!stor
para cada enrolamento. Como os enrolamentos so indutivosC % necess5rio prote#er cada
trans!stor com um d!odo de roda-livre. < uso do inte#rado >LK00$ 6ou /0$7 % neste
caso de particular relev)nciaC simplificando o nEmero de componentes e as li#a@es.
A ta1ela a1aiAo apresenta os ;uatro passos necess5rios para ;ue o motor rode.
Analisando com cuidado a ta1elaC reparamos ;ue eAiste um padro. < enrolamento %
sempre o oposto 6operao l4#ica K<(7 do enrolamento 1. < mesmo se aplica aos
enrolamentos $ e &. J assim poss!vel redu*ir a metade o nEmero de pinos do
microcontrolador necess5rios para controlar o motorC desde ;ue se acrescentem duas
portas l4#icas K<(. Ka fi#ura se#uinteC este sistema % implementado usando os
trans!stores livres como inversores 6portas K<(7.
KotaB eAistem v5rias normas ;uanto Ns cores dos condutores do motor.
3
Antes de comear a pro#ramarC eAiste um outro padro a verificar na se;uLncia de
passos.
Analise a ta1elaC ;ue mostra os enrolamentos 1 e $.
Repare ;ue na passa#em do passo 1 para o passo C apenas muda o enrolamento $.
Repare a#ora no passo se#uinte F s4 o enrolamento 1 muda. "e facto os dois
enrolamentos mudam GN ve*H de alto para 1aiAo sucessivamente. Esta passa#em alto-
1aiAo-alto pode ser descrita como um estado de Gto##lin#H. Isso torna a pro#ramao
ainda mais simples F 1asta usar a instruo toggle.
steps:
toggle 1 P (o##le pino 1
pause 200 P Espera 00 ms
toggle 2 P (o##le pino
pause 200 ; Espera 00ms
goto steps ; Ciclo
Nota: 2e o motor StrepidarTC verifi;ue a ordem de li#a@es dos condutores 6cores7.
2.2... Motor %asso+a+%asso /i%olar
<s motores 1ipolares possuem dois enrolamentos ;ue tLm ;ue ser accionados de modo
a ;ue a corrente circule nos enrolamentos pela se;uLncia ade;uada. A mudana de
campo ma#n%tico ;ue esses enrolamentos produ*em fa* com ;ue o motor 6rotor7 rode
por passos. < circuito normalmente utili*ado para cada enrolamento % o apresentado na
fi#ura se#uinte. Repare ;ue eAistem ;uatro trans!stores de controloC ;ue so activados
Gaos paresH. AssimC para dois enrolamentos eAistem ;uatro pares de trans!stores de
controlo 6U1-U&7 ;ue tLm ;ue ser activados on e off numa determinada se;uLncia.
10
Kote ;ue como os enrolamentos so indutivosC para prote#er os trans!stores da eAtra-
corrente de roturaC so necess5rios d!odos de roda-livre em paralelo com cada um deles.
A ta1ela a1aiAo mostra os ;uatro passos necess5rios para fa*er rodar o motor.
AfortunadamenteC o motor driver L293D foi desen9ado especificamente para esta
funo de comutao. Cada L3$" possui / trans!stores e os respectivos d!odos num
encapsulamento de 1. pinos.
Uuatro pinos do microcontrolador so li#ados aos ;uatro pares de trans!stores 6pinos C
0C 10 e 1+7.
11
< pro#rama ?unto fa* o motor rodar 100 passos para a es;uerda e a se#uir 100 passos
para a direitaC utili*ando duas su1rotinas. A su1rotina lstep fa* o motor rodar um passo
para a es;uerdaC a su1rotina rstep fa* o motor rodar um passo para a direita. A vari5vel
11 % utili*ada para #uardar a posio do passo e dever5 ser utili*ada em ;ual;uer outra
parte do pro#rama.
ain:
for b! = 0 to "" ; ini#ia u #i#lo for$$$next
gosub lstep ; #haa subrotina left step
next b! ; #i#lo seguinte
for b! = 0 to "" ; ini#ia u #i#lo for$$$next
gosub rstep ; #haa subrotina right step
next b! ; #i#lo seguinte
lstep: let b1 = b1 % 1 ; soa 1 & 'ari('el b1
goto step ; salta para tabela loo)up
rstep: let b1 = b1 - 1 ; subtrai 1 da 'ari('el b1
step: let b1 = b1 * 2 ; as#ara os dois bits enos pesados de b1
loo)up b1,(+1010,+1001,+0101,+0110),b2 ; guarda o #,digo loo)up e b2
let pins = b2 ; fa- sair o 'alor de b2 para os pinos de
#ontrolo
return
2.2.0. 1er2o radio+controlado
<s servos so vul#armente utili*ados nos carros e avi@es radiocontrolados para
controlar mecanismos de direco. (rata-se de dispositivos muito precisos ;ue rodam
sempre o mesmo )n#ulo para um dado sinalC pelo ;ue so ideais para utili*ao em
automatismos. >m servo t!pico possui trLs condutores de li#aoC normalmente pretoC
encarnado e 1ranco 6ou amarelo7. < condutor preto % a referLncia de massa da
alimentao 60 volts7C o condutor encarnado % a alimentao de +M 6de &C/M a .M7 e o
condutor 1ranco 6ou amarelo7 % o sinal de posicionamento. Este sinal de posio % um
impulso de 0C0+ a C+ milise#undos 6ms7C repetido cada 1/ ms aproAimadamente
6portantoC temos +0 impulsos por se#undo7. Com o impulso de 0C0+ ms o servo move-se
6roda7 para uma das eAtremidades e com o impulso de C+ ms para a eAtremidade
oposta. "esse modoC com um impulso de 1C+ msC o servo roda para a posio central. 2e
os impulsos terminarem o servo move-se ao acaso. LamentavelmenteC os servos
consomem correntes elevadas 6de 00 mA a 1 A7 e introdu*em ru!do el%ctrico nos
condutores de alimentao. "everoC portantoC ser alimentados por fonte de alimentao
1
separadaC como se mostra na fi#ura a1aiAo. Lem1re-se ;ue o condutor de massa
6referLncia7 deve ser comum Ns duas alimenta@es.
loop:
ser'o .,/5 ; o'e ser'o para u dos lados
pause 2000 ; espera 2 segundos
ser'o .,150 ; o'e ser'o para posi01o #entral
pause 2000 ; espera 2 segundos
ser'o .,225 ; o'e ser'o para o outro lado
pause 2000 ; espera 2 segundos
goto loop ; 'olta para o in2#io
2.2.3. 1olen4ides e 25l2ulas solen4ides
>m solen4ide consiste num Lm1olo de ferro colocado no interior de uma 1o1ina
6indut)ncia7 el%ctricaC enrolada em torno de um tu1o. Uuando se alimenta
electricamente a 1o1inaC cria-se um campo ma#n%tico ;ue atrai o Lm1olo para dentro do
tu1o. Uuando se retira a alimentaoC uma mola empurra o Lm1olo para fora do tu1o. <
controlo de um solen4ide pode ser efectuado com o circuito a M<2'E( atr5s descrito.
1$
2.3. Interface com Dispositivos de Entrada
2.3.1. Interru%tores
EAiste dispon!vel uma enorme variedade de interruptoresC mas a maior parte possui dois
contactosC ;ue ou esto Ga1ertosH 6off7 ou Gfec9adosH 6on7. <s dois circuitos
apresentados a1aiAo podem ser usados com a maioria dos interruptores.
Com este primeiro circuito o pino de entrada 68in 07 fica 1aiAo 607 ;uando o interruptor
est5 a1erto e alto 617C ;uando o interruptor % fec9ado.
>m pro#rama poss!vel
Mai para SsaltaT ;uando o interruptor est a!ertoB
if pin0 = 0 then salta
Mai para SsaltaT ;uando o interruptor " fec#adoB
if pin0 = 1 then salta
Com o circuito se#uinte o pino de entrada 68in 07 fica alto 617 ;uando o interruptor est5
a1erto e 1aiAo 607C ;uando o interruptor % fec9ado.
>m pro#rama poss!vel
Mai para SsaltaT ;uando o interruptor est a!ertoB
if pin 0 = 1 then salta
Mai para SsaltaT ;uando o interruptor " fec#adoB
if pin 0 = 0 then salta
1&
Interruptores e ressa$tos %de!ouncer&
(odos os interruptores mec)nicos GressaltamH ;uando o interruptor a1re ou fec9a. Isso
si#nifica ;ue os contactos mec)nicos GressaltamH um so1re o outro antes de
esta1ili*arem. Como o microcontrolador % muito r5pidoC pode acontecer em certos
pro#ramas ;ue re#iste dois ou trLs contactos em ve* de re#istar apenas um. < processo
mais simples de ultrapassar este pro1lema % simplesmente
acrescentando um tempo de espera 6pause 1007 depois de
cada instruo ifV. 2e a seco de c4di#o a se#uir N
presso do 1oto for lon#aC este atraso ocorre naturalmenteC
?5 ;ue cada instruo leva certo tempo a ser eAecutada. Ko
entantoC se o c4di#o no for lon#oC deve incluir-se um
atraso. <utra soluo consiste em utili*ar a instruo
!utton.
<s dois pro#ramas se#uintes mostram o efeito dos
GressaltosH. < pro#rama deveria acender o LE" no pino 1
;uando o interruptor li#ado ao pino 0 fosse pressionado
mais do ;ue cinco ve*es. Contudo o primeiro pro#rama
no funciona correctamenteC pois o microcontrolador ir5
contar ressaltos e no os impulsos reaisC pelo ;ue o LE"
acender5 prematuramente.
init: let b0 = 0
ain: if pin 0 = 1 then add
goto ain
add: let b0 = b0 % 1
if b0 3 5 then ain
high 1
goto ain
init: let b0 = 0
ain: if pin 0 = 1 then add
goto ain
add: pause 100 ; pe4ueno
atraso a4ui
let b0 = b0 % 1
if b0 3 5 then ain
high 1
goto ain
2.3.2. Potenci4metro
>m potenci4metro 6ou resistLncia vari5vel7 possui um eiAo ;ue pode ser rodado para
variar o valor da resistLncia do potenci4metro. 8odemos usar potenci4metros para medir
movimentos circulares ou )n#ulos. 8ara serem utili*ados com o microcontroladorC os
potenci4metros so colocados como divisores de tenso e o microcontrolador lL
1+
efectivamente a tenso ;ue converte para um valor num%rico 6di#ital7. 8ara isso usa-se a
instruo readA"C ;ue activa o Conversor Anal4#ico-"i#ital. < valor da resistLncia
vem assim transformado num valor entre 0 e ++C ;ue % #uardado numa vari5vel. A
instruo ifVpoder5 a#ora ser utili*ada para definir as ac@es a desenvolver consoante
o valor lido.
< pro#rama a1aiAo acende trLs LE"s diferentes 6li#ados aos pinos 1C e $7C dependendo
da leitura do sensor anal4#ico 6potenci4metro7
ain: readad# 0,b1 ; l5 o 'alor no pin0 para a 'ari('el b1
if b13/5 then light1 ; se b1 6 enor do 4ue /5 ent1o salta para light 1
if b131/5 then light2 ; se b1 6 enor do 4ue 1/5 ent1o salta para light 2
goto light! ; se b1 6 aior do 4ue 1/5 ent1o salta para light !
light1: high 1 ; 789 1 on
low 2 ; 789 2 o:
low ! ; 789 ! o:
goto ain ; loop
light2: low 1 ; 789 1 o:
high 2 ; 789 2 on
low ! ; 789 ! o:
goto ain ; loop
light!: low 1 ; 789 1 o:
low 2 ; 789 2 o:
high ! ; 789 ! on
goto ain ; loop
2.3.3. #D6 7#ig8t De%endent 6esistor9
>ma Li#9t "ependent Resistor 6L"R7 % uma resistLncia cu?o valor depende da lu*
rece1ida. >m dispositivo muito fre;uenteC o <R8-1C possui uma resistLncia muito
elevada no escuroC e uma resistLncia 1aiAa N lu*. A li#ao de uma L"R ao
microcontrolador % muito f5cilC eAi#indo no entanto cali1rao.
1.
Conv%m lem1rar ;ue a resposta de uma L"R no % linearC pelo ;ue as leituras no
variam como num potenci4metro. Em #eralC eAiste uma #rande variao de resistLncia
para n!veis de iluminao elevados. Isso pode ser compensado por soft=areC utili*ando
#amas de variao menores para os n!veis escuros. EAperimente at% encontrar os a?ustes
ade;uados ao circuito e Ns condi@es de iluminao.
ain:
readad# 0,b1 ; leitura do 'alor
if b1350 then light1 ; gaa 0-50 = 50
if b13100 then light2 ; gaa 50-100 = 50
if b131.5 then light! ; gaa 100-1.5 = .5
if b131/5 then light. ; gaa 1.5-1/5 = !0
goto ain
K<(AB A 8ICAXE disp@e de uma placa 6Analo#ue
Cali1ration ,oard F BAS8107 ;ue permite ver nos displa:s
de 0 se#mentos o valor eAactoC entre 0 e ++C ;uando
um sensor est5 l5 li#ado. 8ermite tirar leituras
nas mais diversas condi@es de teste de
modo a o1termos a mel9or #ama
de valores para um pro#rama.
2e ;uiser consultar mais informa@esB
===.tec9supplies.co.uWDc#i-
1inDtec9supplies.storefrontD&$afe/010+0f0ef
a0&0cc3/a110010D8roductDMie=D,A2/10

Exemplo de ligao:
10
2.3.4. "ermistor
>m termistor % uma resistLncia vari5vel com a temperatura. Ka realidade todas as
resistLncias variam com a temperaturaC s4 ;ue os termistores so feitos para terem uma
#rande variao com a temperatura. A li#ao do termistor ao microcontolador % muito
simplesC mas conv%m tam1%m cali1r5-lo 6com o BAS810C por eAemplo7.

Conv%m lem1rar ;ue a resposta de um termistor no % linearC pelo ;ue as leituras no
variam como num potenci4metro. Em #eralC eAiste uma #rande variao de resistLncia
para temperaturas 1aiAas. Isso pode ser compensado por soft=areC utili*ando #amas de
variao menores para os n!veis de temperatura mais altos. EAperimente at% encontrar
os a?ustes ade;uados ao circuito e Ns condi@es de temperatura.
ain:
readad# 0,b1 ; leitura do 'alor
if b1350 then light1 ; gaa 0-50 = 50
if b13100 then light2 ; gaa 50-100 = 50
if b131.5 then light! ; gaa 100-1.5 = .5
if b131/5 then light. ; gaa 1.5-1/5 = !0
goto ain
2.4. Interface com Componentes Avanados
2.4.1. Dis%la: #CD 7#iquid Cr:stal Dis%la:9
>m "ispla: de Cristal Li;uido % um dispositivo electr4nico ;ue permite mostrar
caracteres como numerosC teAto e ;uais;uer outrosC incluindo pontuao. EAistem dois
tipos principais de displa:s LC"C os displa:s numericos 6tipo dos usados nos rel4#ios e
calculadoras7 e os displa:s alfanum%ricos 6como os
usados nos telem4veis7.
Kos displa:s num%ricos o con?unto de cristais est5
distri1u!do em se#mentosC en;uanto ;ue nos
alfanun%ricos esto so1 a forma de pontos.Cada
cr:stal tem uma li#ao el%ctrica individual por forma a
ser controlado independentemente. Uuando o cristal
est5 SoffT 6i.e. ;uando no 95 tenso aplicada ao
cristal7 o cristal no se vL por;ue reflecte a mesma ;uantidade de lu* ;ue o material do
fundo onde est5. ContudoC ;uando o cristal tem uma tenso aplicadaC fica polari*adoC
a1sorvendo lu* e portanto aparecendo um se#mentoC ou pontoC mais escuro ;ue pode
ser visuali*ado contra o material do fundo.
J importante perce1er a diferena entre os displa:s LC" e LE". <s LE" fornecem lu*
6podendo ser vistos na escurido7 en;uanto o LC" apenas reflecte a lu* ;ue rece1e. Em
1/
contrapartida 95 consumo de ener#ia nos LE" en;uanto ;ue nos LC" praticamente no
95 consumos.
2.4.1.1. Caracteres 'CD
A ta1ela se#uinte mostra os caracteres dispon!veis
num displa: LC" t!pico. < c4di#o do c9aracter %
o1tido adicionando o numero da coluna ao
nEmero da lin9a.
<s caracteresC do $ ao 10 so sempre i#uais
independentemente do LC"C en;uanto os
c9aracters do 1. ao $1 e do 1/ ao ++ diferem
conforme o fa1ricante do LC". Claro ;ueC sendo
assimC al#uns LC" podero mostrar caracteres
diferentes dos da ta1ela ao lado.
"o caracter 0 ao 1+ so normalmente desi#nados
como caracteres Suser-definedT e assimC devem
ser definidos antecipadamenteC de acordo com os
manuais de cada fa1ricanteC para evitar ;ueC para
esses c4di#osC apaream caracteres aleat4rios.
< funcionamento de um displa: LC" %
relativamente compleAo dado ;ue cada displa:
pode mesmo arma*enar mais caracteres do ;ue
a;ueles ;ue ele tem capacidade de mostrar na sua
?anela. EC na sua ?anelaC de uma maneira #eralC o
displa: s4 conse#ue mostrar 1. caracteres de cada
ve*.
24 ;ue na maioria dos displa:s LC" 95 uma
mem4ria ;ue permite arma*enar &0 caracteres por cada lin9a ;ue o displa: ten9a. Cada
espao na mem4ria RAM % uma GcaiAaH para um c9aracter e tem um endereo ;ue o
descreve. A primeira lin9a tem os endereos 1/ a 131. A se#unda lin9aC os endereos
de 13 a ++.
<s displa:s de 1.A tLm uma ?anela com duas lin9as. Uuer di*erC podemos ver 1.
caracteres em cada uma das duas lin9as. < caracter ;ue % para aparecer na se#unda
lin9aC o1ri#a-nos a mover o cursor para o in!cio dessa lin9a.
8ara mover o cursorC para para ;ual;uer posio do displa:C 1asta enviar o endereo da
RAM como instruo. Isto ;uer di*er ;ue para enviar para a primeira posio da
primeira lin9a 6endereo S1/T7C % enviar este endereo como instruo. <raC para mover
o cursor para o in!cio da lin9a 1asta enviar o endereo 6S13T7 da RAM como
instruo para o m4dulo LC". 8ara mover o cursor para a ;uinta posio da se#unda
lin9a tem ;ue se enviar a instruo S130T 6X13Y+7.
2.4.1.2. Interface de 'CD a microconto$adores
R5 trLs formas principais de fa*er o interface de LC" a microcontroladores.
17 Com um inte#rado com firm=are 2%rie para LC"
7 Com um m4dulo 2%rie LC" 6tem uma 8CI ?5 com o inte#rado com firm=are7
$7 Li#ando "irectamente
13
i!ando o C" usando O #$M010 %&erial C" #irm'are Chip(
< 'RM010 % usado para permitir o controlo s%rie de um LC" alfanumerico. Assim
permite aos micocontroladores 6e sistemas
1aseados em microcontroladorescomo os
8ICAXE e ,asic 2tamp7 utili*ar um ecr onde
se?a visuali*ado o teAto ;ue o utili*ador ;ueira
e de uma forma relativamente simples. 8oisC
todos os comandos do LC" so transmitidos a
partir do microcontrolador atrav%s de uma
Enica lin9a s%rieC como se pode ver pela fi#ura
ao lado e usando a instruo serout.
8or eAemploC para ;ue aparea escrito o teAto SRelloT a instruo % simplesmenteB
serout /,;2.00,(<=ello>)
< preo a pa#ar % ;ue se tLm ;ue fa*er as li#a@es de acordo com os dois es;uemas
a1aiAoB
A& 'I(A)*E+ D, -I./0A.E 1& 'I(A)*E+ D, /2D3', 'CD
i!ando o C" usando o )*+0,, %&erial C" Module(
< AXE0$$ % um m4dulo s%rie em 8CI 6% vendido em Wit7 ?5 com todas as li#a@es feitas
do LC" para o inte#rado do firm=are.
8ortantoC o m4dulo vem-nos a?udar a resolver as li#a@es necess5rias na opo anteriorC
al%m de ;ue este m4dulo permite o uso do protocolo de comunicao ic.
0
i!ando o C" directamente
< LC" tem . lin9as ;ue podem ser li#adas directamente aos pinos do microcontrolador.
Contudo % uma 1oa pr5tica de pro?ecto
li#ar resistLncias de $$0R Ns lin9as para
prote#er de descar#as est5ticas.
< potenci4metro de 10W li#ado ao pino $
tem como misso a?ustar o contraste do
displa:. (odas os pinos do LC" no
usadosC como se vL na fi#uraC devem
ficar li#ados N massa.
3m 4ro5rama +imp$es para escrever no 'CD
< 8ro#rama ;ue se se#ue escreve a frase SRello t9ereZT em duas lin9as do displa: LC".
(emos ;ue usar trLs su1rotinas standard c9amadas init- 'rins e 'rchr. Elas resolvem
todos os nossos pro1lemas no s4 de iniciali*ao como de envio para o LC" tanto das
instru@es como das mensa#ens.
Essas rotinas standard fa*em eAactament o se#uinteB
init 'a* a iniciali*ao do LC"C deiAando-o pronto a aceitar as instru@es
6rins envia as instru@es arma*enadas na vari5vel 11 para o m4dulo LC"
6rc#r envia um caracter arma*enado na vari5vel 11 para ser mostrado no ecr LC"

[5 N frente sero eAplicadas mais detal9adamente estas trLs su1rotinas.
88?@AB 0,(<=ello thereC>) D ara-ena o texto na e,ria 88?@AB
gosub init Dinitiali-a o 7E9
ain: let b1 = 1 Db1=1 =F instru01o D#lear displaGH
gosub wrins D en'ia instru01o para o 7E9
for b! = 0 to . D#i#lo for$$$next (<=ello> . #ara#teres)
read b!, b1 D b1=88?@ABIb!J
gosub wr#hr D en'ia #hara#ter para 7E9
next b! D #ontinua
let b1 = 1"2 Db1=1"2 =F instru01o Dstart of se#ond lineH position
gosub wrins D en'ia instru01o para o 7E9
for b! = 5 to 11 D#i#lo for$$$next (<thereC>-posi0Kes 5 a 11)
read b!, b1 D b1=88?@ABIb!J
1
gosub wr#hr D en'ia #hara#ter para 7E9
next b! D#ontinua
3m 4ro5rama mais Avanado
< pro#rama se#uinte fa* rodar na ?anela do LC" a mensa#em SRello t9ere ever:1od:ZT.
Isto por;ue o teAto tem mais do ;ue as 1. letras ;ue um ecr suporta. A mensa#em %
primeiro arma*enada na mem4ria do LC"C indo depois rodando na ?anela do displa:
repetidamente para ;ue se?a mostrada toda a mensa#em.
88?@AB 0,(<=ello there e'erGbodGC>) D ara-ena o texto na e,ria 88?@AB
gosub init D initiali-a o 7E9
start: let b1 = 1 Db1=1 =F instru01o D#lear displaGH
gosub wrins D en'ia instru01o para o 7E9
for b! = 0 to 22 D #i#lo for$$$next (<=ello there e'erGbodGC> 22
#ara#teres)
read b!, b1 D b1=88?@ABIb!J
gosub wr#hr D en'ia #hara#ter para 7E9
next b! D #ontinua
let b1 = 12 Db1=12 =F instru01o Dhide #ursorH
gosub wrins D en'ia instru01o para o 7E9
ain: let b1 = 2. Db1=2. =F instru01o Ds#roll displaG leftH
gosub wrins D en'ia instru01o para o 7E9
pause 250 D pausa 0$25s
goto ain D roda a ensage (<=ello there e'erGbodGC>)
+u!rotinas +tandard para $i5ar o 'CD directamente.
Kos pro#ramas ;ue vimos fa*endoC
vemos ;ue o LC" tanto tem ;ue
rece1er instru@es como caracteres.
J o pino & 6R27 do LC" F
controlado pela sa!da do
microcontrolador F ;ue define se %
instruo ou caracter o ;ue est5 N
entrada. 8ondo o pin G1aiAoH o
LC" est5 em modo de instruo
en;uanto ;ue ;uando o pin est5 GaltoH fica em modo de caracter.
Cada instruo ou caracter % enviada como um nEmero 1in5rio de & 1its para as lin9as
de dados 6pinos 0-&7. "epois o LC"C ;uando rece1e um impulso de EKA,LEC no seu
pino . - 2E 6e ;ue % enviado pela sa!da $ do microcontrolador7 lL os dados e imprime o
caracter 6ou cumpre a instruo7 correspondente ao nEmero nas lin9as de dados.

(odos os c4di#os de caracteres e instru@es 6comandos7 tLm / 1it. Como s4 95 & lin9as
de dadosC os / 1it so mandados em duas metadesC uma a se#uir N outra. Cada um dos
;uatro 1it rece1e o nome de Gni11leH 6Sni11le altoT e Sni11le 1aiAoT7.
8ortantoC por cada caracter 6ou comando7 so transmitidos ni11les.
1011 0101 X 10110101
ni11le alto Y ni11le 1aiAo X 1:te
A funo das trLs su1rotinas SstandardT 6init- 'rins e 'rchr7 % levar a ca1o toda esta
tarefa GcomplicadaH ;uando tra1al9amos com displa:s LC".
init: let pins = 0 Todas sadas=0
let b4 = 0 Reset variavel
let dirs = 252 Pins 2-7 como sada (%11111100).
pause 200 200 ms para reset ao LCD.
let pins = 48 Funcionamento LCD a 8-bit.
pulsout 3,1 Envia comando (enable)
pause 10 Espera 10 ms
pulsout 3,1 Envia comando outra vez(enable)
pulsout 3,1 Envia comando outra vez(enable)
let pins = 32 Funcionamento LCD a 4-bit.
pulsout 3,1 Envia comando(enable)
pulsout 3,1 Envia comando outra vez(enable)
let pins = 128 Funcionar em duas linhas
pulsout 3,1 Envia comando (enable).
let b1 = 14 LCD ON e com cursor.
gosub wrins Ecrever instruco no LCD
return
wrchr: let pins = b1 & 240 nibble alto de b1=>fora(ateno RS=0).
high 2 Enviar Caracter=> RS alto
pulsout 3,1 Pulsa enable (envia nibble alto).
let b2 = b1 * 16 nibble baixo de b1=>b2.
let pins = b2 & 240 nibble baixo de b1=>fora(ateno RS=0).
high 2 Caracter=> RS alto
pulsout 3,1 Pulsa enable pin (envia nibble baixo).
Return
wrins: let pins = b1 & 240 nibble alto de b1=>fora(RS=0->instru).
pulsout 3,1 Pulsa enable (envia nibble alto).
Let b2 = b1 * 16 b2=b1 rodado 4x p/ esquerda.
let pins = b2 & 240 nibble baixo de b1=>fora(+RS=0-instru).
pulsout 3,1 Pulsa enable pin (envia nibble baixo).
high 2 Modo character
return
Nota: na subrotina init, o comando let dirs =252(%11111100) vai afectar os
8 pinos e no apenas os usados pelo !"#$ "omo se pode ver, nem wrins
nem wrchr necessitam dos pinos 0 e 1$ %e o nosso pro&rama usar estas
rotinas deve ter em conta 'ue, 'uando retorna da c(amada, o valor de b2
vem alterado (assim como )0)$
3sando o con7unto de instru8es %comandos& do 'CD.
<s c4di#os das instru@es de comando para o LC"C como vimosC devem GirH na vari5vel
11 ;uando se c9ama a su1rotina 'rinsC ;ue se encarre#a de modificar o estado do LC".
$
C9di5os das instru8es %comandos& para o 'CD.
1 Limpa o displa: e move para a primeira lin9a
Move o cursor e a ?anela de displa: para o in!cio da primeira lin9a
& Modo Gescrever da direita para a es;uerdaH
+ Modo Sscroll para a es;uerdaT
. Modo Gescrever da es;uerda para a direitaH
0 Modo Sscroll para a direitaT
10 Misuali*ao do LC" off
1 2em cursor
1$ Cursor a piscar
1& Misuali*ao do LC" 6e cursor7 on
1. Move cursor para a es;uerda uma posio
0 Move cursor para a direita uma posio
& 'a* o scroll da ?anela uma posio para a es;uerda
/ 'a* o scroll da ?anela uma posio para a direita
1/ Move o cursor para o in!cio da primeira lin9a
13 Move o cursor para o in!cio da se#unda lin9a
E:emp$os
Limpar o displa:
clear: let b1 = 1 b1=instruo clear
call wrins Envia para o LCD
Mover o cursor para a se#unda lin9a
clear: let b1 = 192 b1=incio da segunda linha
call wrins Envia para o LCD
8iscar uma menssa#em 10 ve*es
flash:for b3 = 1 to 10 for...next usando variable b3(nunca b1!!)
let b1 = 10 b1= Visualizao do LCD off
gosub wrins Envia para o LCD
pause 200 Pausa de 0.2 segundos
let b1 = 14 b1= Visualizao do LCD on
gosub wrins Envia para o LCD
pause 200 Pausa de 0.2 segundos
next b3 Fim do loop for...next
'a*er scroll a uma mensa#em lon#a 6$0 caracteres7
scroll: for b3 = 1 to 30 for...next usando variable b3(nunca b1!!)
let b1 = 28 b1= Scroll da janela uma posio p/ direita
gosub wrins Envia para o LCD
pause 200 Pausa de 0.2 segundos
next b3 Fim do loop for...next
let b1 = 1 b1=instruo clear
gosub wrins Envia para o LCD
pause 200 Pausa de 0.2 segundos
goto scroll Loop
&

Você também pode gostar