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"................................................................. $ EAemplos.............................................................................................................................. &

1. O que um Microcontrolador PIC ?


<s e;uipamentos controlados por microprocessadores so normalmente constitu!dos por v5rios circuitos inte#rados ou c9ipsB cada um com a sua funoB a sa1erC o microprocessador 6C8>7B uma mem4ria E8R<M com o pro#ramaB uma mem4ria RAM para arma*enamento de dados e interfaces de entradaDsa!da 6ID< inputDoutput7 para li#ao ao eAterior. 8elo contr5rioB 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 c9ipB a C8>B RAMB R<M e circuitos de interface. A #rande variedade destes componentes possi1ilita ;ue o mesmo fa1ricante oferea modelos com mais ou menos RAMB com outros dispositivos como portos de comunicaoB conversores anal4#icoDdi#itaisB etc. <s microcontroladores 8IC podem ser utili*ados como Gc%re1roH para controlar uma enorme variedade de e;uipamentosB desde m5;uinas de lavar a telem4veis ou autom4veisB etc. EAistem portanto aos mil9@es por todo o ladoB sendo o seu custo muito redu*ido. 2oB por issoB eAcelentes compan9eiros para a tarefa a ;ue nos propomosC conce1er um ro1I m4vel aut4nomoB dotado de v5rios sensores. 8ara isso as informa@es provenientes desses sensoresB de to;ueB de deteco de o1st5culosB de dist)nciaB etcB devem ser adaptadas de forma a serem interpretadas pelo nosso 8IC. 8or outro ladoB 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 dispositivosC

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. ContudoB 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.

Kote ;ue % comum colocar um d!odo invertido em paralelo com o dispositivo controlado 6d!odo de roda-livre7. Isto % essencial para car#as indutivasB 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 dispositivoB poder5 ser aconsel95vel utili*ar um inte#rado espec!ficoB o >LK 00$ Darlington driver ICB ;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 casoB o rel% pode ser alimentado por uma fonte de alimentao separadaB 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 o9m7B 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 mAB 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#uradosB 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 60MB 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"B pois consome menos corrente. 8ara li#ar a l)mpada 8ara desli#ar a l)mpada - 9i#9 1 - 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 60MB OK"7 % comum Ns duas alimenta@es. Ko caso de se utili*arem 1aterias ou pil9as como fonte de alimentaoB % de lem1rar ;ue os altifalantes pie*o-el%ctricos consomem menos corrente. Al%m disso os 1e*ouros apenas produ*em uma fre;uLnciaB ao contr5rio dos altifalantes pie*o-el%ctricos ;ue permitem reprodu*ir diferentes fre;uLncias. 8ara li#ar o 1u**er 8ara desli#ar o 1u**er -9i#9 1 -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 alimentadosB en;uanto ;ue os altifalantes eAi#em um sinal pulsado 6onda ;uadrada7 para #erar o som. 'eli*mente isso % f5cil de produ*ir no 8ICAXEB pois eAiste uma instruo sound.

8ara produ*ir uma nota de tom 100B 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 microcontroladorB 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 potLnciaB pode usar-se o circuito a M<2'E( anteriormente descrito.

Em v5rias circunst)ncias ir5 ser necess5rio accionar mais do ;ue um motorB como % o caso dos ro1Is m4veis. A soluo mais simples e 1arata consiste em utili*ar um inte#rado motor driver como o L 3$". Este inte#rado possi1ilita o controlo de dois motores CCB 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 motoresB permite ainda o controlo de velocidade por 8QMB como se ver5 mais N frente.

Am1as as entradas 1aiAas - o motor p5ra 8rimeira entrada altaB se#unda entrada 1aiAa - motor para frente 8rimeira entrada 1aiAaB 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 motorB lo#o do seu sentido de rotao.

Kote ;ue o L 3$" 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 microcontroladorB consiste em usar fontes de alimentao separadas para a parte de controlo 6microcontrolador7 e para os motores. Ko caso dos ro1Is ;ue iremos construirB 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 3B.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 ?ustificaB face N sua compleAidadeB no caso de ru!do el%ctrico eAcessivoB 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 computadoresB impressoras e rel4#ios. Ao contr5rio dos motores CCB ;ue rodam livremente ;uando a alimentao % aplicadaB os motores passo-a-passo re;uerem ;ue a alimentao se?a aplica se#undo um determinado padro. 8ara cada impulsoB o motor passo-a-passo roda um passo 6step7B 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 1 MB % necess5rio um circuito a trans!stor para cada enrolamento. Como os enrolamentos so indutivosB % necess5rio prote#er cada trans!stor com um d!odo de roda-livre. < uso do inte#rado >LK 00$ 6ou /0$7 % neste caso de particular relev)nciaB 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 ta1elaB 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 motorB desde ;ue se acrescentem duas portas l4#icas K<(. Ka fi#ura se#uinteB este sistema % implementado usando os trans!stores livres como inversores 6portas K<(7.

KotaC eAistem v5rias normas ;uanto Ns cores dos condutores do motor.

Antes de comear a pro#ramarB eAiste um outro padro a verificar na se;uLncia de passos. Analise a ta1elaB ;ue mostra os enrolamentos 1 e $.

Repare ;ue na passa#em do passo 1 para o passo B 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 alto1aiAo-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 pause 200 toggle 2 pause 200 goto steps P (o##le pino 1 P Espera 00 ms P (o##le pino ; Espera 00ms ; Ciclo

Nota: 2e o motor StrepidarTB 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 controloB ;ue so activados Gaos paresH. AssimB 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 indutivosB para prote#er os trans!stores da eAtracorrente de roturaB 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.

AfortunadamenteB o motor driver L293D foi desen9ado especificamente para esta funo de comutao. Cada L 3$" 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 B 0B 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 direitaB utili*ando duas su1rotinas. A su1rotina lstep fa* o motor rodar um passo para a es;uerdaB 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 "" gosub lstep next b! for b! = 0 to "" gosub rstep next b! lstep: let b1 = b1 % 1 goto step rstep: let b1 = b1 - 1 step: let b1 = b1 * 2 loo)up b1,(+1010,+1001,+0101,+0110),b2 let pins = b2 #ontrolo return ; ini#ia u #i#lo for$$$next ; #ha a subrotina left step ; #i#lo seguinte ; ini#ia u #i#lo for$$$next ; #ha a subrotina right step ; #i#lo seguinte ; ; ; ; ; ; so a 1 & 'ari('el b1 salta para tabela loo)up subtrai 1 da 'ari('el b1 as#ara os dois bits enos pesados de b1 guarda o #,digo loo)up e b2 fa- sair o 'alor de b2 para os pinos de

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 sinalB pelo ;ue so ideais para utili*ao em automatismos. >m servo t!pico possui trLs condutores de li#aoB normalmente pretoB encarnado e 1ranco 6ou amarelo7. < condutor preto % a referLncia de massa da alimentao 60 volts7B o condutor encarnado % a alimentao de +M 6de &B/M a .M7 e o condutor 1ranco 6ou amarelo7 % o sinal de posicionamento. Este sinal de posio % um impulso de 0B0+ a B + milise#undos 6ms7B repetido cada 1/ ms aproAimadamente 6portantoB temos +0 impulsos por se#undo7. Com o impulso de 0B0+ ms o servo move-se 6roda7 para uma das eAtremidades e com o impulso de B + ms para a eAtremidade oposta. "esse modoB com um impulso de 1B+ msB o servo roda para a posio central. 2e os impulsos terminarem o servo move-se ao acaso. LamentavelmenteB os servos consomem correntes elevadas 6de 00 mA a 1 A7 e introdu*em ru!do el%ctrico nos condutores de alimentao. "everoB portantoB ser alimentados por fonte de alimentao

separadaB 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 pause 2000 ser'o .,150 pause 2000 ser'o .,225 pause 2000 goto loop ; ; ; ; ; ; ; o'e ser'o para u dos lados espera 2 segundos o'e ser'o para posi01o #entral espera 2 segundos o'e ser'o para o outro lado espera 2 segundos '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%ctricaB enrolada em torno de um tu1o. Uuando se alimenta electricamente a 1o1inaB cria-se um campo ma#n%tico ;ue atrai o Lm1olo para dentro do tu1o. Uuando se retira a alimentaoB 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 interruptoresB mas a maior parte possui dois contactosB ;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 617B ;uando o interruptor % fec9ado. >m pro#rama poss!vel Mai para SsaltaT ;uando o interruptor est a ertoC if pin0 = 0 then salta Mai para SsaltaT ;uando o interruptor ! fec"adoC 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 607B ;uando o interruptor % fec9ado. >m pro#rama poss!vel Mai para SsaltaT ;uando o interruptor est a ertoC
if pin 0 = 1 then salta

Mai para SsaltaT ;uando o interruptor ! fec"adoC


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 r5pidoB 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#aB este atraso ocorre naturalmenteB ?5 ;ue cada instruo leva certo tempo a ser eAecutada. Ko entantoB se o c4di#o no for lon#oB 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 correctamenteB pois o microcontrolador ir5 contar ressaltos e no os impulsos reaisB 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 microcontroladorB 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 ++B ;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 1B e $7B dependendo da leitura do sensor anal4#ico 6potenci4metro7
ain: readad# 0,b1 if b13/5 then light1 if b131/5 then light2 goto light! ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; l5 o 'alor se b1 6 se b1 6 se b1 6 789 1 on 789 2 off 789 ! off loop 789 1 off 789 2 on 789 ! off loop 789 1 off 789 2 off 789 ! on loop no pin0 para a 'ari('el b1 enor do 4ue /5 ent1o salta para light 1 enor do 4ue 1/5 ent1o salta para light 2 aior do 4ue 1/5 ent1o salta para light !

light1: high 1 low 2 low ! goto ain light2: low 1 high 2 low ! goto ain light!: low 1 low 2 high ! goto ain

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;uenteB o <R8-1 B possui uma resistLncia muito elevada no escuroB e uma resistLncia 1aiAa N lu*. A li#ao de uma L"R ao microcontrolador % muito f5cilB eAi#indo no entanto cali1rao.

1.

Conv%m lem1rar ;ue a resposta de uma L"R no % linearB pelo ;ue as leituras no variam como num potenci4metro. Em #eralB eAiste uma #rande variao de resistLncia para n!veis de iluminao elevados. Isso pode ser compensado por soft=areB 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 if b1350 then light1 if b13100 then light2 if b131.5 then light! if b131/5 then light. goto ain ; ; ; ; ; leitura do 'alor ga a 0-50 = 50 ga a 50-100 = 50 ga a 100-1.5 = .5 ga a 1.5-1/5 = !0

K<(AC 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 eAactoB entre 0 e ++B ;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@esC ===.tec9supplies.co.uWDc#i1inDtec9supplies.storefrontD&$afe/010+0f0ef a 0&0c c3/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 temperaturaB s4 ;ue os termistores so feitos para terem uma #rande variao com a temperatura. A li#ao do termistor ao microcontolador % muito simplesB mas conv%m tam1%m cali1r5-lo 6com o BAS810B por eAemplo7.

Conv%m lem1rar ;ue a resposta de um termistor no % linearB pelo ;ue as leituras no variam como num potenci4metro. Em #eralB eAiste uma #rande variao de resistLncia para temperaturas 1aiAas. Isso pode ser compensado por soft=areB 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 if b1350 then light1 if b13100 then light2 if b131.5 then light! if b131/5 then light. goto ain ; ; ; ; ; leitura do 'alor ga a 0-50 = 50 ga a 50-100 = 50 ga a 100-1.5 = .5 ga a 1.5-1/5 = !0

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 numerosB teAto e ;uais;uer outrosB incluindo pontuao. EAistem dois tipos principais de displa:s LC"B 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#mentosB 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. ContudoB ;uando o cristal tem uma tenso aplicadaB fica polari*adoB a1sorvendo lu* e portanto aparecendo um se#mentoB ou pontoB 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 caracteresB do $ ao 1 0 so sempre i#uais independentemente do LC"B en;uanto os c9aracters do 1. ao $1 e do 1 / ao ++ diferem conforme o fa1ricante do LC". Claro ;ueB sendo assimB 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 assimB devem ser definidos antecipadamenteB de acordo com os manuais de cada fa1ricanteB para evitar ;ueB para esses c4di#osB 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. EB na sua ?anelaB de uma maneira #eralB 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 lin9aB os endereos de 13 a ++. <s displa:s de 1.A tLm uma ?anela com duas lin9as. Uuer di*erB podemos ver 1. caracteres em cada uma das duas lin9as. < caracter ;ue % para aparecer na se#unda lin9aB o1ri#a-nos a mover o cursor para o in!cio dessa lin9a. 8ara mover o cursorB para para ;ual;uer posio do displa:B 1asta enviar o endereo da RAM como instruo. Isto ;uer di*er ;ue para enviar para a primeira posio da primeira lin9a 6endereo S1 /T7B % enviar este endereo como instruo. <raB para mover o cursor para o in!cio da lin9a 1asta enviar o endereo 6S13 T7 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 6X13 Y+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

Li ando o LC! usando O "#M010 $%erial LC! "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. 8oisB todos os comandos do LC" so transmitidos a partir do microcontrolador atrav%s de uma Enica lin9a s%rieB como se pode ver pela fi#ura ao lado e usando a instruo serout. 8or eAemploB para ;ue aparea escrito o teAto SRelloT a instruo % simplesmenteC
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 a1aiAoC A% &I'A()E* D+ ,I-./A-E 0% &I'A()E* D+ .1D2&+ &CD

Li ando o LC! usando o ()*0++ $%erial LC! 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. 8ortantoB o m4dulo vem-nos a?udar a resolver as li#a@es necess5rias na opo anteriorB al%m de ;ue este m4dulo permite o uso do protocolo de comunicao i c.

Li ando o LC! 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 usadosB como se vL na fi#uraB devem ficar li#ados N massa.

2m 3ro4rama *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#uinteC init 'a* a iniciali*ao do LC"B deiAando-o pronto a aceitar as instru@es 5rins envia as instru@es arma*enadas na vari5vel 11 para o m4dulo LC" 5rc"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>?@A 0,(;<ello thereB=) gosub init ain: let b1 = 1 gosub wrins for b! = 0 to . read b!, b1 gosub wr#hr next b! let b1 = 1"2 gosub wrins for b! = 5 to 11 read b!, b1 gosub wr#hr next b! C ar a-ena o texto na Cinitiali-a o 7D9 Cb1=1 =E instru01o C#lear displaFG C en'ia instru01o para o 7D9 C#i#lo for$$$next (;<ello= . #ara#teres) C b1=88>?@AHb!I C en'ia #hara#ter para 7D9 C #ontinua Cb1=1"2 =E instru01o Cstart of se#ond lineG position C en'ia instru01o para o 7D9 C#i#lo for$$$next (;thereB=-posi0Jes 5 a 11) C b1=88>?@AHb!I C en'ia #hara#ter para 7D9 C#ontinua e ,ria 88>?@A

2m 3ro4rama 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"B indo depois rodando na ?anela do displa: repetidamente para ;ue se?a mostrada toda a mensa#em.
88>?@A 0,(;<ello there e'erFbodFB=) gosub init start: let b1 = 1 gosub wrins for b! = 0 to 22 #ara#teres) read b!, b1 gosub wr#hr next b! let b1 = 12 gosub wrins ain: let b1 = 2. gosub wrins pause 250 goto ain C b1=88>?@AHb!I C en'ia #hara#ter para 7D9 C #ontinua Cb1=12 =E instru01o Chide #ursorG C en'ia instru01o para o 7D9 Cb1=2. =E instru01o Cs#roll displaF leftG C en'ia instru01o para o 7D9 C pausa 0$25s C roda a ensage (;<ello there e'erFbodFB=) C ar a-ena o texto na e ,ria 88>?@A

C initiali-a o 7D9 Cb1=1 =E instru01o C#lear displaFG C en'ia instru01o para o 7D9 C #i#lo for$$$next (;<ello there e'erFbodFB= 22

*u rotinas *tandard para #i4ar o &CD directamente.

Kos pro#ramas ;ue vimos fa*endoB 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"B ;uando rece1e um impulso de EKA,LEB 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 dadosB os / 1it so mandados em duas metadesB uma a se#uir N outra. Cada um dos ;uatro 1it rece1e o nome de Gni11leH 6Sni11le altoT e Sni11le 1aiAoT7.

8ortantoB 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 let b4 = 0 let dirs = 252 pause 200 let pins = 48 pulsout 3,1 pause 10 pulsout 3,1 pulsout 3,1 let pins = 32 pulsout 3,1 pulsout 3,1 let pins = 128 pulsout 3,1 let b1 = 14 gosub wrins return wrchr: let pins = b1 & 240 high 2 pulsout 3,1 let b2 = b1 * 16 let pins = b2 & 240 high 2 pulsout 3,1 Return wrins: let pins = b1 & 240 pulsout 3,1 Let b2 = b1 * 16 let pins = b2 & 240 pulsout 3,1 high 2 return Todas sadas=0 Reset variavel Pins 2-7 como sada (%11111100). 200 ms para reset ao LCD. Funcionamento LCD a 8-bit. Envia comando (enable) Espera 10 ms Envia comando outra vez(enable) Envia comando outra vez(enable) Funcionamento LCD a 4-bit. Envia comando(enable) Envia comando outra vez(enable) Funcionar em duas linhas Envia comando (enable). LCD ON e com cursor. Ecrever instruco no LCD nibble alto de b1=>fora(ateno RS=0). Enviar Caracter=> RS alto Pulsa enable (envia nibble alto). nibble baixo de b1=>b2. nibble baixo de b1=>fora(ateno RS=0). Caracter=> RS alto Pulsa enable pin (envia nibble baixo).

nibble alto de b1=>fora(RS=0->instru). Pulsa enable (envia nibble alto). b2=b1 rodado 4x p/ esquerda. nibble baixo de b1=>fora(+RS=0-instru). Pulsa enable pin (envia nibble baixo). Modo character

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)$

2sando o con6unto de instru7es $comandos% do &CD.

<s c4di#os das instru@es de comando para o LC"B como vimosB devem GirH na vari5vel 11 ;uando se c9ama a su1rotina &rinsB ;ue se encarre#a de modificar o estado do LC".
C8di4os das instru7es $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

E9emp#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 let b1 = 10 gosub wrins pause 200 let b1 = 14 gosub wrins pause 200 next b3

for...next usando variable b3(nunca b1!!) b1= Visualizao do LCD off Envia para o LCD Pausa de 0.2 segundos b1= Visualizao do LCD on Envia para o LCD Pausa de 0.2 segundos Fim do loop for...next

'a*er scroll a uma mensa#em lon#a 6$0 caracteres7 scroll: for b3 = 1 to 30 let b1 = 28 gosub wrins pause 200 next b3 let b1 = 1 gosub wrins pause 200 goto scroll

for...next usando variable b3(nunca b1!!) b1= Scroll da janela uma posio p/ direita Envia para o LCD Pausa de 0.2 segundos Fim do loop for...next b1=instruo clear Envia para o LCD Pausa de 0.2 segundos Loop

&

Você também pode gostar