sábado, 25 de fevereiro de 2012

Potenciômetro - Leitura Analógica

Arduino by my Self

Esta barra, indica o nível de dificuldade encontrado para cada experiência realizada.
sendo:
"VERDE", indicação de nível 1 a 5 (Fácil);
"AMARELO", indicação de nível 6 a 8 (Médio);
VERMELHO, indicação de nível 9 e 10 (Difícil);


Agora vamos mostrar como fazer a leitura de um componente analógico, ou seja que gera um sinal de saída usando toda a gama de valores entre 0 e 5V.
Para isto utilizaremos um potenciômetro como sensor.  O potenciômetro é um componente mecânico, que de acordo com uma variação angular em seu eixo central, varia sua resistência de saída de um 0 a um MÁX; quando conectado a uma fonte de tensão, significa que em seu terminal de saída, podemos então ler uma tensão proporcional a essa variação angular.





O Hardware:

1 x Placa Arduino UNO;
1 x Potenciômetro de 10KO;
Fios

O Circuito:
Imagem gerada usando Fritzing, veja o site oficial para download e tutoriais.
http://fritzing.org/

Usando a breadboard:
Conecte o terminal direito do potenciômetro ao positivo da alimentação;
Conecte o terminal esquerdo do potenciômetro ao negativo da alimentação;
Conecte o terminal central do potenciômetro à entrada analógica 0 do Arduino.



Internamente o Arduino tem um conversor analógico-digital, capaz de converter sinais que podem variar de 0 a 5 volts em um sinal digital de 10 bits variando de 0 a 1023.
Quando o cursor estiver girado todo em sentido ao 0V, isso significa valor 0; e quando o cursor estiver girado todo em sentido ao 5V, isso significa 1023; valores intermediários devem ser mapeados, para poderem ser exibidos....
A função utilizada para a leitura dos dados é:

analogRead(A0);

Que retornará um número proporcional a quantidade lida (entre 0 e 1023)
Sendo A0 o pino analógico de onde será lido o sinal.



O Código:

Abaixo o código completo e os comentários;


/*
  AnalogReadSerial
Lê uma entrada analógica 0, envia e mostra os resultados no monitor serial

Este código exemplo é de domínio público
 */


//inicialização do Arduino
void setup() {
  Serial.begin(9600);                                   //inicializa a comunicação serial USB com oPC
}


//Iteração principal do programa
void loop() {
  int sensorValue = analogRead(0);          //faz a leitura da porta analógica A0 e guarda o valor na variável
                                                                 //"sensorValue" de tipo inteiro.
  Serial.println(sensorValue, DEC);            //envia os dados da variável "sensorValue" para a porta de 
                                                                //comunicação serial em notação decimal.
} //Fim da Compilação

Consulte o site do Arduino para maiores informações: http://arduino.cc/en/Tutorial/AnalogReadSerial

Vídeos:





Conclusão:
Esta experiência também nível básico não teve maiores problemas.



4 comentários:

  1. Olá. Me tire uma dúvida: Se eu quiser que os valores variem de 0 a 4V, como eu faço. Tentei usar o analogwrite pra entrar com esse valore de tensão, e embora o LED acenda com essa tensão menos, o valor lido pelo potenciômetro é o máximo ainda, correspondente a tensão de 5V.

    ResponderExcluir
    Respostas
    1. João,

      A entrada analógica é para 0 a 5V independentemente. O conversor analógico digital gera valores de 0 a 1023 função analogRead(pin).
      Não existe como modificar isto no Arduino. O que acontecerá se você colocar uma entrada de 0 a 4V é que o valor lido na porta não deve nunca atingir 1023.
      Na saída analogica analogWrite() a tensão vai variar de 0 a 5V de acordo como o comando 0-255, dessa forma, você não poderá fazer um analogWrite(pin, 255), pois isso mandaria o sinal de 5V na saída. É interessante fazer os testes para saber qual valor significa 4V na saída.
      Você pode usar a função map() ou a função constrain() para especificar um range aceitável.
      No seu programa, você deve considerar estes fatos.

      Cuidado:
      analogRead() é para você ler a tensão vinda do POT.
      analogWrite() é para você escrever no LED.
      Penso que você conhece estes detalhes.


      Se tiver mais alguma dúvida entre em contato pelo email:
      marcelo.moraes.1971@gmail.com


      Abraço


      Marcelo Moraes

      Excluir
  2. Olá, como eu transformo os valores lidos de 0 a 1023 para valores do próprio potenciômetro? tipo, eu quero imprimir num display o valor do potenciometro mas só aparece valores de 0 a 1023

    ResponderExcluir