SENSORES E CONVERSORES AD Acredito que atualmente
muitos são os que buscam por
respostas sobre "medidas analógicas". Neste artigo procurarei descrever
alguns
tipos de sensores, conversores AD e o que são as “medidas
analógicas” para reforçar a teoria no assunto e , finalmente, como
realizar uma medida analógica com o microcontrolador Basic Step 1.
SINAIS ANALÓGICOS X SINAIS DIGITAIS Sempre que falamos em microcontroladores ou mesmo nos PC’s (com seus poderosos processadores), pensamos logo na lógica digital presente nestes, e por conseqüência nossa referência sobre os pinos de I/O (tanto entrada como saída) também nos remetem ao mundo digital (“0” ou “1”, “tudo” ou “nada”). No mundo digital, temos dois níveis previamente definidos. O “1” lógico (sempre Vcc) e o “0” lógico (GND). No “mundo analógico” poderíamos dizer que não existem tais níveis. O sinal pode variar no “tempo” de maneira quase que infinita. Para isso bastaria considerar a quantidade de números possíveis entre os valores 1 e 2: “1,000000000000000000000...01”, “1,000000000000000000000...02”, e assim por diante. Claro que sempre existirão os limites, devido as limitações dos próprios componentes e outros. Um conversor AD (Analógico Digital) de oito bits pode converter valores de “0” a “5” Volts, por exemplo, em até 256 passos (de 0 a 255). Ou seja, o valor 0V seria informado com um conjunto de oito bits “0000 0000” e o valor 5 V o seria em um conjunto de oito bits “1111 1111” (255 decimal). Podemos observar que o limite de um conversor AD está justamente em seus “degraus”. Mais à frente, neste artigo, falarei um pouco mais sobre isso.
OS SENSORES Os
sensores (figura abaixo) ou transdutores como são também usualmente
conhecidos são componentes eletrônicos capazes de transformar uma
grandeza “física” qualquer em uma “medida elétrica”.
SENSORES BÁSICOS Alguns sensores são
sempre mais fáceis de lidar que outros. Sensores de calor como os
termistores e de luz como os LDRs podem ser considerados como o que se
tem de mais simples no mundo dos sensores. Estes sensores variam sua
resistência de acordo com a temperatura (termístores) ou a luz (LDR) e
assim, são fáceis de lidar. Abaixo descreverei cada um deles além de
passar alguns exemplos de uso. OS TERMÍSTORES Os
“termistores” (figura abaixo) são sensores capazes de alterar sua
resistência em relação da temperatura. São dois os tipos mais
básicos: o PTC (Coeficiente de Temperatura Positiva) e o NTC
(Coeficiente de Temperatura Negativa). Na figura mais abaixo podemos observar
a
curva características destes dois sensores.
O
PTC tem um aumento na sua resistência conforme a elevação da
temperatura. Já o NTC tem uma queda no valor da sua resistência,
proporcional ao aumento da temperatura. Estes
componentes são constituídos, entre outros, de “titanato de
bário” (PTC) e “óxidos metálicos”, como o magnésio (NTC).
Sendo assim, como os resistores, estes componentes não são
polarizados e não requerem o cuidado com a polarização ao serem
ligados. Na
figura abaixo demonstro como utilizar estes componentes. O uso de um ou
outro é de livre escolha. Posso apenas dizer o seguinte sobre o
seu uso: o NTC’s têm melhor precisão quando a tomada de
temperatura exige uma grande curva, ou seja, a faixa a ser
medida é grande (por exemplo, de 0 a 100 ºC). Já o PTC tem maior
precisão em pequenas variações (tomadas menores). Observe isso na curva
características destes componentes na figura mais acima.
Os LDRs Os LDRs (Resistores Dependentes da Luz) são componentes feitos de uma pequena trilha de “sulfito de cádmio”, depositada sobre uma base isolante. Geralmente uma cobertura em acrílico ou esmalte é inserida sobre o material para protejê-lo. Esta “cobertura” permite a passagem da luz e protege o componente (trilha) contra a umidade, poeira, e outros. Veja a figura abaixo.
Na figura abaixo você encontra duas maneiras de ligá-lo. Em uma é possível medir a intensidade luminosa e em outra a quantidade de sombra. Teríamos assim dois sensores, um para “luz” e outro para “sombra”.
É muito importante você perceber nos circuitos exemplos passados até aqui que em todos os casos temos a passagem da corrente elétrica pelos elementos “sensores” e neste caso, deve-se ter cuidado para que esta seja a menor possível. Se forçarmos uma corrente muito alta sobre um NTC ou mesmo PTC, este terá a tendência de aquecer, alterando sua resistência de acordo com este aquecimento também, além da temperatura a sua volta. O mesmo acontece com os LDR’s. Se aplicarmos uma corrente alta sobre o mesmo, o aquecimento pode alterar significativamente o seu comportamento. Neste
caso é aconselhável calcular antes a corrente que passará sobre o
sensor. Um outro detalhe que ajuda é utilizar um buffer para
conexão com outros circuitos. Isso pode ser feito conforme indica a
figura abaixo, utilizando um amplificador operacional como seguidor de
tensão. Essa configuração tem elevada impedância na entrada, o
que garante baixo dreno de corrente. Claro que você também
poderia utilizar o amplificador operacional em outras configurações
como “amplificador inversor”, “não inversor”, “diferencial”,
etc. Tudo dependerá da sua aplicação.
OUTROS TIPOS DE SENSORES Existem outros tipos de sensores considerados “inteligentes”, e conequentemente, sua operação é um pouco mais complexa. Alguns são do tipo analógico e, portanto, necessitam de um conversor AD para sua ligação a um microcontrolador qualquer, já outros são digitais. Neste último caso, o sensor tem internamente um pequeno “microcontrolador” dedicado capaz de se comunicar com um outro microcontrolador externo através de padrões/protocolos pré-definidos como: I2C, SPI, RS-232, etc. Na
figura abaixo você tem um exemplo de um sensor muito conhecido, do
tipo analógico, o LM35. Este sensor aumenta ou diminui sua tensão
de saída em 10 mV para cada grau Celsius de variação na
temperatura. A precisão deste tipo de sensor é muito boa, já que
a variação da tensão é linear.
CONVERSORES AD Agora que você já possui a base teórica necessária, de acordo com as informações passadas acima sobre grandezas analógicas, grandezas “físicas” e “sensores” podemos falar um pouco mais sobre os conversores AD (Analógico Digital). Você já deve ter percebido que vivemos num mundo completamente analógico. Tudo o que “percebemos” e “experimentamos” é analógico. A audição, a visão, o tato, o paladar e o olfato são “percepções” que podemos chamar de “analógicas”. Alias, tudo na natureza é analógico! Porém nossos computadores e microcontroladores não são perfeitos! Eles não podem compreender as “medidas analógicas” sem uma “ajudinha”. E esta ajuda é feita pelos conversores AD’s. Estes componentes são capazes de receber em suas entradas um sinal analógico e convertê-lo em um valor digital fixo, expresso em bit’s para que um microcontrolador posso interpretar e tratar este sinal.
NÚMERO DE BITS X PRECISÃO Para
converter um sinal analógico, um conversor AD faz algumas amostragens e
depois representa a leitura realizada em um número equivalente
binário (digital), dentro da sua escala de “degraus”. Cada
degrau representa um byte na
escala de conversão. Então, quanto
mais degraus, maior a precisão. E o que determina o número de
degraus é o número de bits
que um AD pode usar em sua escala. Um AD
de 8 bits usa 256 degraus de
00H a FFH (0 a 255) e um AD de 10 bits
utiliza 1024 degraus de 0000H a 03FFH (0 a 1023). Obs.: O “H” inserido ao lado dos números refere-se à adoção do sistema de numeração hexadecimal, um sistema muito usado em computação e eletrônica e que possui 16 valores – números de 0 a 9 e letras A, B, C, D, E, F, respectivamente, os valores de 10 a 15. Para exemplificar ainda mais, na tabela 1 você tem o comparativo do valor escalar para uma conversão do valor de 5 VDC com AD’s de 8 e 10 bits. Tabela 1 – Conversões com AD’s de 8 e 10 bits de precisão
Onde, N = número de bits
do AD. Note também que o valor a ser enviado pelo conversor ao microcontrolador não será o valor de 0,0196V ou 0,00488, por exemplo. O conversor AD enviará um valor binário dentro da sua escala que representa a grandeza analógica em sua entrada. Cabe a “nós” “desenvolvedores” operarmos o milagre da “conversão” do valor binário para um valor decimal dentro da escala desejada. Isso será feito internamente no microcontrolador, através de equações matemáticas previamente definidas. Um
outro ponto importante a respeito é que a informação é dividida
em “degraus”, e se o valor ficar entre um degrau e outro, o AD
poderá enviar uma leitura “flutuante”, hora enviando o primeiro
degrau, dentro da faixa de leitura, hora o segundo. Mas nunca um
valor intermediário entre dois degraus. Os valores dos degraus são
sempre fixos!
AD EXTERNO X AD INTERNO
Você deve estar se perguntando: “E fisicamente, como se mostram estes tais AD’s?!?” Bom, existem vários modelos, como os CI’s conversores AD’s da National Semicondutores. Um deles e bastante conhecido é o modelo ADC0808, um conversor AD com apenas um canal (uma única entrada para conversão) e precisão de 8 bits e saída paralela, ou seja, existem oito pinos na saída (um para cada bit). Já o ADC0831 é um conversor AD também de apenas um canal, mas com comunicação do tipo serial “NSC MICROWIRE”. O ADC0838 é um conversor AD com 8 canais (oito entradas para conversão) e 8 bits de precisão. Sua comunicação também é feita através de uma saída serial tipo “NSC MICROWIRE”. Estes ADs são CI’s e portanto ADs do tipo externos e, geralmente, são aplicados com microcontroladores que não possuem conversores AD internamente. Porém hoje em dia, a maioria dos fabricantes de microcontroladores oferece em sua linha de produtos, alguns modelos que têm internamente conversores AD e a maioria com precisão de 10 bits. É o caso do PIC12F675 da Microchip® que tem apenas 8 pinos mas 4 canais AD de 10 bits cada. Já o PIC16F877 (também Microchip) possui 8 canais AD de 10 bits. Neste caso o “CI” conversor AD está incorporado internamente ao microcontrolador e lidar com estes torna-se mais fácil (não existem ligações externas, protocolos, etc). Precisamos apenas configurar alguns registradores e ler em outros os valores das conversões. Algumas interrupções para “término de conversão”, por exemplo, também são disponibilizadas para facilitar ainda mais a vida do “desenvolvedor”. Neste artigo não tratarei do uso dos AD’s internos nos microcontroladores. Obs.: Todos os fabricantes de microcontroladores como a Motorola, Atmel, Microchip, National, e outros possuem em sua linha de microcontroladores versões com conversores AD internos.
USANDO OS CANAIS AD DO BASIC STEP 1 O Basic Step 1 possui uma família com três membros: Basic Step 1 módulo, Basic Step 1 OEM e Basic Step 1 LT (Ligth). Destes três, os dois primeiros citados possuem cinco canais AD’s de 10 bits cada. O uso destes canais é bem simples. Basta ligá-los as entradas a serem analisadas, desde que respeitadas algumas regras: - O valor a ser lido não pode superar 5 VDC (valores
maiores devem ser atenuados para que fiquem dentro da faixa
permitida); Se você respeitar estas regras poderá utilizar os canais AD’s do Basic Step 1 sem maiores problemas. Para
ler um canal AD o compilador TBASIC ganhou uma instrução nova: write.
Basta escrever o valor 0 no canal desejado para se ler o mesmo (write
0,0 - lê o canal AD0, write 0,1 lê o canal 1 e assim sucessivamente).
Um outro detalhe não menos importante é que todo valor convertido, seja
de que canal for, será sempre inserido na variável de 16 bits W0. Esta variável é composta por duas de 8 bits b0 e b1. Na
figura abaixo você tem um esquema elétrico exemplo que mostra como usar o
Basic Step 1 e seus canais AD.
Optei
por usar um simples potenciômetro (ou mesmo trimpot) para verificar
“manualmente” a variação do valor lido de 0 a 5V e um divisor resistivo
10k/10k Ohm para ler um tensão fixa de aproximadamente 2,5VDC (para ler
esta entrada é preciso mudar no programa o número do canal - de write 0,0 para write 0,1). Os valores são apresentados em um LCD do tipo serial. Mais abaixo você
encontrará o código
fonte do programa, devidamente
comentado, para uma melhor compreensão do seu funcionamento.
Em seus testes você poderá usar um NTC, PTC ou LDR para obter os valores em graus centígrados, quantidade de “luz” ou ainda outra medida. Para isso terá de compor uma nova fórmula, diferente da apresentada no meu programa. E acredito que sem dúvida alguma a maior dificuldade encontrada será sempre no tratamento do resultado. O compilador do Basic Step 1 não possui instruções diretas de conversão e sendo assim, alguns artifícios deverão ser adotados. Estude o programa fornecido. Com certeza você chegará ao que precisa. Você também pode, tomando como exemplo o uso de um sensor de temperatura (NTC ou PTC), adotar a seguinte solução: compor uma tabela com os valores possíveis de “0 à 100º C” em passos de “1 ºC” ou preferencialmente “10 ºC” (de acordo com as necessidades de cada um). Nesta "tabela", cada medida seria aferida com o auxilio de um termômetro comum e seu valor anotado. Sempre que o STEP converter um dado, ele deve verificar esta tabela e informar o valor referente. Isso pode ser feito com o comando “IF” IF valor = tabela THEN mostre_resultado A desvantagem deste tipo de programa é seu tamanho final. Dependendo do caso, ele não caberá no Basic Step 1. Existem
outras formas de tratamento que não somente informar uma determinada grandeza. Você pode também
monitorá-la. Você poderá, por exemplo, monitorar uma ou duas
temperaturas distintas. Neste caso não há a necessidade da tabela,
basta apenas saber qual valor representa cada temperatura a ser medida. Os canais AD do Basic Step 1 também podem ser utilizados para medir a tensão de uma bateria de 12V, por exemplo. Neste caso, a tensão deve antes ser "tratada" para se equiparar aos níveis de entrada do canal AD do Basic Step 1 (lembra-se das regras passadas?). A figura abaixo mostra um simples divisor resistivo. Quando a tensão máxima na entrada do divisor for 12 V, a mesma será de 5 V em sua saída.
CONCLUSÃO Nesta artigo tentei
passar a você algumas informações sobre sensores, conversores AD e “medidas
analógicas” utilizando o microcontrolador Basic Step 1. Espero ter
ajudado todo aquele que buscava por
informações sobre o assunto e desejo trazer outras muito em breve, já
que o assunto “Medidas analógicas” é bem vasto e muito
interessante. Boas experiências e até a próxima! |
Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor. |