Вы находитесь на странице: 1из 16

Interfaceamento Analgico

Converso de Analgico para Digital ADC


A converso do valor de um sinal eltrico analgico para um valor digital realizada atravs de dispositivos perifricos conhecidos como conversores analgico/digital ADCs. Diversos microcontroladores comerciais dispem destes perifricos, como o casos dos 68HC908QT4/QY4, PIC16F876, 80C552 e outros. Um diagrama funcional bsico deste perifrico exibido na figura abaixo:

Digitais V - Firmware: Interfaceamento Analogico

Descrio do funcionamento O bloco ADC consiste em um conversor analgico para digital. Usualmente este conversor de 8 ou 10 bits do tipo por aproximaes sucessivas. ADC_CH corresponde a um SFR utilizado para configurar qual canal de entrada (AD0-AD7) estar conectado ao conversor ADC e o ADC_CLK corresponde a um SFR utilizado para definir a razo de diviso do sinal de clock que alimentar o conversor. Considera-se o clock do microcontrolador como o sinal de referncia para o conversor ADC. Assim, se ADC_CLK contiver o valor 2, o clock que alimentar o conversor ter a freqncia do clock que alimentar o microcontrolador dividida por 2. ADC_DATA um SFR de somente leitura que contm o ltimo valor convertido. ADC_START um flag para escrita utilizado para disparar o incio de uma converso e ADC_EOF um flag de leitura que informa que o conversor terminou de efetuar uma converso. ADC_EN um flag utilizado para habilitar o funcionamento do mdulo conversor. Estando o mdulo conversor habilitado (ADC_EN=1) a porta A no mais poder ser utilizada como entrada/sada digital. Considera-se a existncia de um flag ADC_IE, utilizado para habilitar a gerao de interrupo no sistema por fim de converso. Considera-se ainda, que o incio da converso marcada ao se setar o flag ADC_START e que, ao final da converso, quando ADC_EOF for setado, o flag ADC_START ser automaticamente resetado pelo sistema.
Digitais V - Firmware: Interfaceamento Analogico

Diagrama em blocos do conversor A/D do HC08-QT/QY

Digitais V - Firmware: Interfaceamento Analogico

Conversor A/D do HC08-QT/QY


Estes microcontroladores possuem um conversor ADC de 8bits cuja entrada de sinal est conectada a um multiplexador que por sua vez recebe as entradas AD0-AD3. A converso feita por aproximao sucessiva a uma taxa determinada pelo sinal ADC CLOCK, derivado de um divisor de frequncia programvel, cuja base de tempo vem do sinal BUS CLOCK. O fator de diviso programado no registro ADC Input Clock Register (ADIV0-ADIV2), conforme ilustrado na figura 4. Cada entrada, AD0-AD3, associada a um canal do multiplexador, podendo ser configurada para converso por meio da programao dos bits CH0-CH4 do registro ADC Status and Control Register (vide Tabela 1). Ao final da converso, o bit COCO deste registro setado (nvel 1). Uma interrupo poder ser gerada, ao final da converso, desde que o bit AIEN deste registro esteja setado. O dado gerado pela converso pode ser lido no registro ADC Data Register.

Digitais V - Firmware: Interfaceamento Analogico

Conversor A/D
Conjunto de Registradores

Digitais V - Firmware: Interfaceamento Analogico

Tabela de seleo de entrada para converso

Digitais V - Firmware: Interfaceamento Analogico

Configurao do clock do conversor

Digitais V - Firmware: Interfaceamento Analogico

Exemplo- Detetor de nvel

Digitais V - Firmware: Interfaceamento Analogico

Exemplo- Detetor de nvel por Polling


#include <MC68HC908QT4.h> // include peripheral declarations #define VREF 127 // meio da escala do conv. AD (~2.5V) void Init_AD(void); unsigned char LeAD(unsigned char canal); void main(void) { CONFIG1_COPD=1; // Desabilita o mdulo COP DDRA=0x02; // Configura o pino PTA1 como sada Init_AD(); // Configura o conversor AD for(;;) { if (LeAD(0) > VREF) PTA_PTA1=1; // Acende led else PTA_PTA1=0; // Apaga led } }

Digitais V - Firmware: Interfaceamento Analogico

Exemplo- Detetor de nvel por polling

void Init_AD(void) { ADSCR_AIEN=0; // Desabilita interrupo do Conversor AD ADSCR_ADCO=0; // Configura o conversor AD para converso nica ADICLK_ADIV=0x03; // CLOCK AD => BUSCLOCK div 8 } unsigned char LeAD(unsigned char canal) { ADSCR_CH=canal; // Configura o mux de entrada while(!ADSCR_COCO); // Espera o fim da converso return(ADR); }

Digitais V - Firmware: Interfaceamento Analogico

Exemplo- Detetor de nvel por interrupo

#include <MC68HC908QT4.h> // #define VREF 127 // void Init_AD(void); void interrupt LeAD(void); unsigned char Vad; void main(void) { CONFIG1_COPD=1; // DDRA=0x02; // Init_AD(); // __asm CLI; // for(;;) { if (Vad > VREF) PTA_PTA1=1; else PTA_PTA1=0; } }

include peripheral declarations meio da escala do conv. AD (~2.5V)

Desabilita o mdulo COP Configura o pino PTA1 como sada Configura o conversor AD Limpa bit de mscara de interrupo no CCR

// Acende led // Apaga led

Digitais V - Firmware: Interfaceamento Analogico

Exemplo- Detetor de nvel por interrupo

void Init_AD(void) { ADSCR_AIEN=1; // Habilita interrupo do Conversor AD ADSCR_ADCO=1; // Configura o conversor AD para converso cclica ADICLK_ADIV=0x03; // CLOCK AD => BUSCLOCK div 8 ADSCR_CH=0; //Configura mux para canal zero e dispara converso } Void interrupt LeAD(void) { Vad=ADR; }

Digitais V - Firmware: Interfaceamento Analogico

Exemplo- Detetor de nvel por interrupo

/* This is a .Prm file for the QY4*/


NAMES END SEGMENTS RAM = READ_WRITE 0x0080 TO 0x00FF; ROM = READ_ONLY 0xF800 TO 0xFDFF; END PLACEMENT DEFAULT_ROM INTO ROM; DEFAULT_RAM INTO RAM; SSTACK INTO RAM; END STACKSIZE 0x60 VECTOR 0 _Startup VECTOR ADDRESS 0xFFFD LeAD // Associa vetor de interrupo a funo de tratamento de interrupo

Digitais V - Firmware: Interfaceamento Analogico

Converso de Digital para Analgico DAC


A converso de um valor digital para um valor analgico, representado por um sinal eltrico, realizada atravs de dispositivos perifricos conhecidos como conversores digital/analgico DACs. Estes conversores raramente so disponibilizados em microcontroladores comerciais, devido a sua aplicabilidade ser menos comum. Um diagrama funcional bsico deste perifrico exibido na figura abaixo:

Descrio do funcionamento
O bloco DAC consiste no conversor digital para analgico. DAC_DATA um registrador de entrada de dados. DAC_EOC um sinal que informa que a converso est terminada. Vo um sinal eltrico de tenso, correspondente ao valor convertido. Vref corresponde a uma tenso de referncia para o valor de tenso de sada.
Digitais V - Firmware: Interfaceamento Analogico

Modulao por largura de pulso - PWM


Um sinal PWM consiste em um sinal digital de forma de onda retangular com freqncia fixa e ciclo de trabalho (Duty-Cycle) controlvel. Estes sinais so comumente aplicados em acionamentos de cargas eltricas, como por exemplo, motores e resistncias de aquecimento. Os sinais PWM provm um meio alternativo para se realizar a converso digital para analgico a um custo baixo em microcontroladores que no dispem de dispositivos DAC, considerando-se aplicaes que no demandam especificaes muito rgidas quanto a qualidade da converso.

Digitais V - Firmware: Interfaceamento Analogico

Desenvolvimento: Firmware 6
Implemente um firmware para um sistema indicador de nvel. A figura abaixo descreve o sistema composto por um tanque, um sensor de presso, um microcontrolador com conversor ADC interno de 8bits e um bargraf (conjunto de leds). Considere que o sensor foi calibrado para fornecer 0v quando o tanque estiver vazio e fornecer a tenso de fundo de escala do conversor ADC do microcontrolador quando o tanque estiver completamente cheio. O acionamento do leds do bargraf conectado na porta PTB dever ser proporcional ao nvel de tanque. Assim, o led_0 dever estar aceso quando o tanque estiver vazio, o led_7 quando o tanque estiver completamente cheio e os demais leds devero estar acesos para os nveis intermedirios.

Digitais V - Firmware: Interfaceamento Analogico