quarta-feira, 14 de maio de 2014

Lendo valores analógicos na GPIO do Raspberry Pi

O RPi não possui entradas analógicas, não sendo possível ler diretamente valores analógicos. Uma forma de fazer leituras analógicas é usar um ADC como o MCP3008 mostrado aqui. Outra forma nem tanto precisa, porém mais simples e barata, é usar um capacitor em conjunto com o circuito. O funcionamento consiste em um contador definido pela carga do capacitor até ele chegar à tensão de 1,4V. Porque a partir de 1,4V o RPi considera nível alto na entrada. Com isto temos um parâmetro para trabalhar, que vai de 0 a X, onde o valor de X dependerá do circuito montado. Aumentando o valor do capacitor teremos um tempo de resposta menor, porem uma resolução maior e com um de menor valor temos um tempo de resposta rápido, mas com a resolução menor. No exemplo foi usado um capacitor de 1uF e um potenciômetro de 50k ohms onde o valor lido foi de 0 a 2700 aproximadamente.

No exemplo abaixo, o loop (while True:) roda a função RCtime, onde inicialmente o pino 24 estará como uma saída em nível baixo fechando um curto no capacitor, logo após o pino 24 passa para entrada, onde inicia o incremento do contador com a carga do capacitor. O incremento dentro do while (GPIO.input...) irá até o valor de 1,4 volts, quando a entrada 24 passa a detectar um nível alto e sai do while, retornando o valor desejado.

Neste outro exemplo, iremos controlar o brilho de um led com um potenciômetro aproveitando do valor medido, este valor medido é dividido por pouco mais de 1% do próprio valor, assim conseguimos valores que não ultrapassam 100, valor máximo do ciclo de trabalho.

Referência: https://learn.adafruit.com/basic-resistor-sensor-reading-on-raspberry-pi/overview

 

Um comentário: