Conversor Analógico Digital


O que é um conversor AD?

Um conversor Analógico digital geralmente está relacionado à tensão medida por um certo aparelho. Este conversor pode ser de vários valores de bits, que estão relacionados aos valores de tensão. Um exemplo é o valor de 10 bits, que está entre 0 e 1023(ou seja, corresponde a um valor 1024 valores possíveis) e corresponde a um valor de 0 até 5 volts de tensão. Outro valor que será utilizado durante esse material será o de 8 bits, que corresponde a valores de 0 até 255.

Como montar um simples conversor AD com o Arduíno:

Para isso usaremos o simulador Tinkercad, com ele necessitaremos de:
-Arduíno UNO R3
-Protoboard
-Potenciômetro
ligar os polos negativos e positivos do Arduíno na protoboard, figura 1 ilustra esse procedimento:

Figura 1: ligação dos polos positivo e negativo na protoboard.

colocar o potenciômetro em algum lugar do protoboard:
Figura 2: Posicionar o potenciômetro

fazer as ligações dos polos positivos e negativos do potenciômetro, para isso ligaremos as duas pernas externas no polo positivo e negativo (tanto faz a ordem):

Figura 3: ligação dos polos do potenciômetro.

ligar o pino central do potenciômetro na porta analógica do Arduíno isso fará com que seja possível a leitura da tensão em seu pino central, para isso usaremos a porta A0, a primeira porta analógica do Arduíno:


Figura 4: ligação do pino A0 no pino central do potenciômetro.

programar o código para se fazer a medida e conversão par binário e hexadecimal:

5.1 primeiramente devemos configurar o setup do programa, camo só iremos fazer a impressão no monitor serial, só precisamos inicializar ele. Para isso devemos utilizar o seguinte comando:
void setup()
{
               Serial.begin(9600);
}
A função Serial.begin serve par inicializar o monitor seria com a velocidade de 9600.

5.2 após concluído o setup devemos começar a configurar o loop do circuito. Para isso devemos, primeiramente, fazer a leitura do valor de tensão medido na porta A0. Para realizar tal procedimento, utilizaremos a função analogRead que fará a leitura de tal valor:
void loop(){
                int A0 = analogRead(A0);
}
Esse valor de A0 será medido em um valor inteiro por isso utilizaremos a variável int(inteiro). Dentro da função analogRead temos o nome da porta nesse caso a porta A0.

5.3 após efetuar a leitura desse valor devemos convertê-lo para um valor em volts, visto que esse valor estará representado em um valor de 10 bits, de 0 a 1023. Para essa transformação utilizaremos a seguinte formula:
Valor em volts = ( valor medido * Voltagem total )/1023
Nesse experimento a voltagem total será 5volts logo :
                float V10bits = (A0 * 5.0)/1023;
Utilizamos um valor em float pois a tensão possuirá casas decimais logo não se adequá ao valor int. Outra coisa a se destacar é que se deve colocar 5.0 ao invés de somente 5, pois assim haverá casas decimais.

5.4 para esse experimento usaremos o valor de 8bits para converter de decimal para binário. Logo devemos converter um valor de 10 para 8 bits, para isso usamos a função map, demostrada a seguir:
                Float V8bits = map(V10bits,0,1023,0,255);
Essa função funciona da seguinte forma: primeiro devemos colocar o valor a ser transformado (nesse caso é a voltagem em 10 bits). Após isso devemos colocar o intervalo do bit medido (com é 10 bits o valor será entre 0 e 1023). Em seguida colocar o valor do intervalo ao qual será transformado (nesse caso será 8bits que se entra na faixa de 0 a 255).

5.5 por ultimo devemos fazer as impressões necessária no monitor serial. Para isso utilizamos a seguinte função:
                Serial.print(OQUE SERÁ IMPRESSO NO MONITOR SERIAL)
Nesse passo será realizado a conversão dos valores lidos em binário e hexadecimal. Logo:
                Serial.print(V8bits, BIN) // impressão em binário em 8 bits
                Serial.print(V8bits, HEX) // impressão em hexadecimal em 8 bits

CÓDIGO PRONTO(Leitura do teclado já inclusa):
void setup()
{
  //inicia o monitor seral
  Serial.begin(9600);
}

void loop()
{
  //faz a leitura do valor da tensão no pino do meio do potenciometro
                int POT = analogRead(A0);
  //tranforma o valor POT e tensão
               float POTV = (POT * 5.0)/1023;//analogico de 10 bits
  //converte o valor de 10bits para 8bits
               int cont = map(POT,0,1023,0,255);//de 10 par 8 bits
  //lê valores digitados no monitor serial
               int leitura = Serial.read();
  //faz as impresões nessesarias                Serial.print(leitura,DEC);
               Serial.print(" ");
               Serial.print(leitura,HEX);
               Serial.print(" ");
               Serial.print(leitura,BIN);
               Serial.print(" ");
               Serial.print(POT);
               Serial.print(" ");
               Serial.print(cont);
               Serial.print(" ");
               Serial.print(cont,BIN);
               Serial.print(" ");
               Serial.println(POT,HEX);
               delay(1000);
}
LINK PARA O SIMULADOR JÁ MONTADO:
João Pedro Hegedus Vellenich

Pedro Coltro do Carmo


Comentários

  1. As postagens devem ser distribuídas igualmente entre os participantes da equipe. Preciso da participação de todos. Caso contrario so quem postou terá nota de P2

    ResponderExcluir

Postar um comentário