10 - Entradas analógicas

Criar um Site Grátis Fantástico
10 - Entradas analógicas

10 – ENTRADAS ANALÓGICAS

 

Antes de continuarmos, uma "lição de casa":

- Dê o significado dos sinais e palavras do vocabulário do Arduino que aprendeu até agora.

{ ...}

;

( ... )

,

=

==

int

unsigned

void

setup { ... }

loop{ ... }

pinMode( ... )

OUTPUT

INPUT

delay

LOW

HIGH

digitalWrite( ... )

digitalRead( ... )

analogWrite( ...)

Se esqueci alguma palavra, complete o exercício...

 

Existem 6 pinos no Arduino UNO que fazem leitura (Read) de entradas "analógicas" (ou imitação delas): 14, 15, 16, 17, 18, 19, respectivamente chamados de A5, A4, A3, A2, A1, A0.

231_uno

Estes pinos fazem leitura "modulada" entre 0 e 1024, conforme a tensão neles aplicada esteja entre 0 V e 5 V. Então, 1,25 V corresponde a 512 ou 2,5 V corresponde a 1024 ou ainda 3,75 V corresponde a 1536. E valem todas as proporções correspondentes, de 0 a 2048, desde que varie de 0 a 5V.

Se o sinal de leitura for superior a 5 V temos que reduzir a faixa.

E como fazemos isso?  

Com resistores, e usando os cálculos seguintes:

241_calculo

Como os resistores comerciais tem valores pré-determinados, além de um erro possível de até 10%, você terá que fazer várias tentativas até achar os valores mais próximos para a tensão de entrada máxima superior a 5 Volts. Você pode usar um potenciômetro e determinar experimentalmente a posição de seu cursor.

242_pot

Voltando ao Arduino, usaremos um potenciômetro com um extremo no 5V e o outro no GND (ou 0 V). O cursor central irá coletar uma tensão entre estes valores e passar ao pino A0.

Usaremos ainda o LED da montagem anterior para "ver" o efeito da coleta "modulada" no pino A0.

243_LED_pot

Para fazer a leitura "analógica" usaremos o comando analogRead aplicado a um pino "A", colocando o valor em uma variável.

int unsigned potencia; //variavel inteira e positiva para saída do LED

int unsigned valor; // variavel inteira e positiva, para coletar o valor do pino A0

void setup()  { //identificação dos pinos do arduino -------------------------------------------------

pinMode(A0, INPUT_PULLUP); //determina que o pino 14, ou A0, será entrada de leitura "analogica"

pinMode(11,OUTPUT); //pino 11 como saida para o LED

} //encerra o setup -----------------------------------------------------------------------------------------------------------

void loop() { //**************************************************************

valor = analogRead(A0); //coleta o valor do potenciômetro

potencia = valor / 4; //reduz o valor para a faixa de saída PWM

analogWrite(11,potencia); //aciona o LED

delay(30); //tempo de retenção no olho

} //encerra o loop ************************************************************************************

Como a leitura dos pinos "A" vai até 1024 e a saída PWM vai até 255, tivemos que "corrigir" a leitura do "valor" do A0 para a saída 11, dividindo por 4. Mas existem outras maneiras de converter faixas de valores, que veremos mais adiante. Se quiser pesquisar, é o comando "map(... , ... , ... , ... , ...);"

Se substituir o LED por um motor, como visto na montagem anterior, poderá controlar sua velocidade e potência...