O Site do Hardware Livre - OSHW

Implementando um ADC com um Microcontrolador, AO e resistores (MIC085)

Em seu Application Note 5074 de maior de 2012, a Maxim (WWW.maximintegrated.com) sugere uma maneira simples de se implementar um conversor analógico-para-digital usando componentes comuns e um microcontrolador. O documento, de autoria de Gordon Lee, pode ser acessado na seção de documentação do site da Maxim e baixado na íntegra em sua versão em inglês,

A idéia básica, mostrada na figura consiste em se implementar um ADC de 8 bits com um amplificador operacional comum, resistores de precisão e um microcontrolador que, no caso, foi o MAXQ2000.

 


 

Os resistores de R3 a R18 formam a rede R/2R que determina a conversão, obtendo-se uma tensão que é aplicada ao amplificador operacional U1.

O amplificador operacional é usado como comparador, comparando a saída do CAC e a entrada analógica.

A saída de dados do microcontrolador varia ciclicamente numa ordem decrescente, aplicando o sinal nas entradas DAC. Cada saída instantânea do DAC é comparada com a tensão analógica. O circuito trava quando a saída e menor que a entrada analógica, obtendo-se então na entrada DAC a saída ADC.

Abaixo a listagem da Maxim para o microcontrolador usado:


#include "bitbanging_iomaxq200x.h"

void main(void)
{ 
  int wait;
  char DAC_out;

  PD0=0xFF;  //Sets IO port 0 to output (This port shows the ADC result)

  PD3=0xFF;  //Sets IO port 3 to output (This port connects to the DAC input)

  PD6_bit.bit2=0; //Sets IO port 6, pin 2, to input
		   //This pin connects to the output of the comparator

  while(1)
  {
    //Set DAC output to the MAX (DAC output = 3.3v) at the beginning
//Then decrease the DAC output 1 LSB at a time, 
//until the output of the comparator toggles low
    for(DAC_out=0xFF; DAC_out>=0; DAC_out--)
    {
      PO3=DAC_out;  //Sets the value of the output port 3 to DAC_out

      //wait for the output of the comparator to settle
      for(wait=0; wait<500; wait++); 

      //if the DAC output = 0V, and the output of the comparator is still 1
      if(PI6_bit.bit2==1 && DAC_out==0)
        PO0=0;  //Sets the ADC result = 0
      else if(PI6_bit.bit2==1)
        continue;
      else  //if the output of the comparator becomes 0
      {
        PO0=PO3;  //the ADC result = the value of the output port 3
        break;
      }
    }
  }
}

 

 

 

BUSCAR DATASHEET

 


N° do componente 

(Como usar este quadro de busca)

 

Opinião

Mês de Aniversário - 10 Anos (OP195b)

Este é um mês especial para nós. Comemoramos o décimo aniversário do Instituto Newton C. Braga e de nosso site. O que se pensou inicialmente que seria um pequeno blog para dar continuidade ao meu trabalho de até então 50 anos se tornou um verdadeiro portal da eletrônica com edições em espanhol e em inglês. Na verdade, quando isso ocorreu o pensamento de alguns é que as coisas na internet estavam com os dias contados. Era uma “Febre de Momento” como ouvi dizer de alguns. Não era e fomos em frente.

Leia mais...

Amar
Se quiseres ser amado, ama. (Si vis amari, ama.)
Sêneca (55 a.C - 39 d.C.) - Epístolas - Ver mais frases


Instituto Newton C Braga
Entre em contato - Como Anunciar - Políticas do Site

Apoio Social
Lions Clube de Guarulhos Sul SOS Mater Amabilis
Advertise in Brazil
If your business is Electronics, components or devices, this site is the correct place to insert your advertisement (see more)