top of page

CONVERSOR ANALÓGICO DIGITAL

Em muitos casos, faz-se necessário o uso de componentes analógicos para o controle de outros dispositivos. Como sabemos, componentes digitais possuem somente dois estados, ligado ou apagado. Um dispositivo analógico, como um potenciômetro, comumente gera valores de 0 a 1023. Dessa forma, como converter um valor analógico (0-1023) a um valor digital no sentido de tensão elétrica? Veremos a seguir uma série de procedimentos para trabalharmos dentro do PIC com estes projetos e além disso estaremos aprendendo também algo sobre portas analógicas. Essa aula é bastante extensa em termos de configurações dentro PIC C Compiler e dentro do ISIS 7 Professional, por isso preste bastante atenção e vamos ao que interessa!


Os microcontroladores dispõe de portas analógicas e serão elas as portas usadas para fazermos a conversão analógica digital. Para exemplo e compreensão das nossas aulas iremos utilizar o PIC 18F2550.
Então vamos abrir nosso PIC C Compiler e logo depois clicar em PIC Wizard para fazer a devidas configurações. Veja a imagem abaixo e acompanhe comigo:



























































1 – Selecione o PIC18F2550



2 – Esclareça a frequência de oscilação de 48MHz (48.000.000 Hz)


3 – No campo Fuses, logo na primeira opção, selecione High Speed Crystal/Ressonator with PLL enabled (Esta opção ativa o PLL do microcontrolador para ajudar a processar os dados a uma velocidade de 48MHz que selecionamos no clock)


4 – Marque a opção Power Up Timer


Vamos a outras configurações ainda dentro do campo Fuses. Vejamos:



























































5 - Desabilite a opção Master Clear pin enabled.



6 - Selecione a opção Divide By 5 (20MHz oscillator input).



7 - Visualize o código gerado na aba code!



Veja agora a principal configuração:























































8 – Selecione a opção Analog. Esse campo serve para fazermos as configurações para portas analógicas e até mesmo configurações para conversões AD que é o nosso caso.



9 – Nesse campo, o Analog Pins, serve para selecionarmos quantas portas analógicas iremos usar. Não vamos usar duas portas, mas mesmo assim vamos selecionar as portas A0 e A1 (são portas digitais, mas também são as portas analógicas AN0 e AN1).


10 – Serve para selecionarmos a precisão de conversão. Vamos selecionar um precisão de 10 bits que equivale a 1024 números (0-1023).


11 – Para selecionarmos o tempo de intervalo entre cada conversão. Vamos selecionar o clock interno, o Internal 2-6us (ou seja, um intervalo que varia de 2 a 6 microssegundos).


Agora é só dar OK. Antes de partirmos para a nossa programação, vamos ver algumas coisas importantes dentro do ISIS 7 Professional como a criação do nosso circuito. É recomendável que você possua um conhecimento básico no ISIS.


Assim ficará nosso circuito:































1 – Para achar o potenciômetro, procure dentro do campo de busca pelo componente: POT-HG, que é um potenciômetro ativo, ou seja, permite a mudança de seus valores para simulação.



2 – Isso é um sinal de corrente contínua e você pode encontra-lo clicando em Generator Mode e clicando em DC. Clique duas vezes sobre ele e na janela que abrir digite o número 5 no campo Voltage (Volts) informando que queremos uma tensão de 5V.


3 – Isso é como se fosse um voltímetro e você pode encontra-lo clicando em Voltage Probe Mode.


4 – É um Terminal Virtual para visualizarmos as tensões geradas. Encontre-o em Virtual Instruments Mode e depois clique em Virtual Terminal.


O PIC é facilmente encontrado digitando no campo de busca o seu nome: 18F2550.


Faça as devidas ligações e vamos a alguns pontos importantes.


Como vamos alimentar o potenciômetro com uma tensão de 5V, é importante ressaltar que isso faz uma grande diferença na nossa conversão. A depender da voltagem de alimentação, ou melhor, da voltagem de entrada na nossa porta analógica, ocorrerá também variações na voltagem de saída. Como 5V é uma tensão padrão, vamos utilizá-la para esse projeto.


Nossa tensão de alimentação e de 5V e nossa precisão foi de 1023, portanto um cálculo básico deve ser feito que irá gerar um número para que haja a conversão. Abra sua calculadora e faça o seguinte cálculo:


5/1023


Ou seja, 5 volts dividido pela precisão de 1023. O resultado será esse número: 0,0048875855327468


É um número louco mesmo, mas é essencial para nosso projeto, porque imagine se o potenciômetro estivesse gerando um valor igual a 500 (apenas uma suposição, pois vai de 0-1023, lembra?), multiplique 500 por 0,0048875855327468 e teremos um valor em volts que será igual a 2,443792766373412, aproximadamente igual a 2,45V.


Outra coisa importante e que deve ser ressaltada são os comandos usados para fazermos a leitura e conversão analógica para digital. São eles:
                 
set_adc_channel(PINO);

                          Esse comando configura a porta para ser um canal ADC e o campo PINO será preenchido apenas com o número da porta, nada de palavras ou letras. Exemplo:

                set_adc_channel(0); // Configuramos a porta A0 para ser um canal ADC



                read_adc();

                         O comando read_adc() recebe o valor lido pela porta analógica e atribui a uma variável.


Agora sim. Vamos programar!


Depois de feita todas as configurações vamos inicializar uma variável do tipo float de nome analog e será inserida antes de tudo dentro do código, até mesmo antes do void main() {...} .


float analog;


Agora vamos ao famoso While(TRUE). Nossa programação ficará assim:


While(TRUE)
{
   set_adc_channel(0); //AN0 é a porta analógica que selecionamos nas
                                 //configurações, LEMBRA?
   Delay_us(15); //Aguarda 0,10 segundos
   analog = read_adc(); //analog recebe o valor lido
  

   //Lembre-se, sempre ponto, nada de vírgula.
   analog = analog * 0.0048875855327468; //Converte em tensão.
   printf(“%f \n\t”,analog); //Mostra no Terminal via RS-232
}


Compile o código, carregue-o no ISIS e simule seu circuito. Você verá a voltagem gerada pelo terminal virtual. Você pode observar essa mesma voltagem naquele instrumento que falamos anteriormente que servirá para capturar a tensão gerada.


Esse projeto pode ser aplicado, por exemplo, em residências no controle de luminosidade de uma lâmpada pois a luminosidade é diretamente proporcional às variações da tensão.

 







bottom of page