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
1º 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.
2º colocar o potenciômetro em algum lugar do protoboard:
Figura 2:
Posicionar o potenciômetro
3º 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.
4º 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.
5º 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
https://www.tinkercad.com/things/a2vA0iV37mf
Matheus do Amaral Genta Mansano
https://www.tinkercad.com/things/8AkSDBGTFzw-sizzling-duup-lappi
Matheus do Amaral Genta Mansano
https://www.tinkercad.com/things/8AkSDBGTFzw-sizzling-duup-lappi
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