Usar um conversor analógico digital pode ser muito útil em situações onde temos dispositivos com apenas uma (ou nenhuma) porta analógica para ligação de sensores, módulos e outros dispositivos. Seguindo nessa linha, vamos mostrar hoje como usar portas analógicas na Raspberry Pi com o conversor analógico digital (ADC) ADS1115.
Já mostramos aqui como usar esse conversor com ESP8266 NodeMCU (que tem apenas 1 porta analógica) mas também podemos usar com Arduino por exemplo, pois além de adicionar portas analógicas ao seu projeto o ADS1115 tem resolução de 16 bits, o que se traduz em leituras mais precisas e é essencial dependendo do tipo de aplicação desenvolvida.
Saiba mais sobre esse módulo acessando o post ADS1115 Conversor Analógico Digital com ESP8266.
Porque usar um conversor analógico digital com Raspberry Pi
As placas da linha Raspberry Pi (com exceção da Raspberry Pi Pico) não possuem portas analógicas para ligação de sensores ou componentes como trimpots e potenciômetros que exigem esse tipo de entrada.
Isso pode limitar bastante o alcance do seu projeto, ou exigir o uso de placas adicionais como um Arduino conectado na Raspberry Pi para troca de dados de sensores.
Conectando um conversor analógico digital na sua placa Raspberry Pi, você tem, no caso do ADS1115, 4 portas analógicas disponíveis e comunicação pela interface I2C que usa apenas 2 fios e simplifica bastante o processo de conexão dos componentes.
Conectando o ADS1115 na Raspberry Pi
Nos nossos testes vamos usar uma Raspberry Pi Zero W, mas você pode usar outras placas da linha Raspberry como a Pi 4, Pi 3, etc, que possuem a mesma GPIO de 40 pinos. Para placas mais antigas, verifique a pinagem da GPIO.
A conexão do ADS1115 com a Raspberry Pi usa somente 2 pinos para comunicação (os pinos 3 – SDA e 5 – SCL), e como alimentação o pino de 3.3V (pino 1 da GPIO).
Lembre-se que ao escolher a alimentação de 3.3V, esse deve ser o limite máximo de tensão nos pinos de entrada analógica do módulo, ok?
Na entrada analógica A0 do módulo conectamos um potenciômetro de 10K, que envia um sinal de tensão variável para o módulo e este o converte para o formato digital, que é então enviado para a Raspberry Pi para ser usado da forma que quisermos como por exemplo dentro de um programa em Python.
Configuração do Raspbian e instalação da biblioteca
Com o circuito montado, vamos à configuração do Raspbian e instalação da biblioteca necessária para comunicação com o ADC ADS1115. Lembrando que neste etapa você já deve ter a sua placa Raspberry Pi com o Raspbian instalado e conexão com a internet ativa.
Primeiramente vamos habilitar a interface de comunicação I2C usando o comando raspi-config em uma janela de terminal. Na janela do raspi-config, selecione a opção 3 – Interface Options:
Em seguida, selecione a opção P5 I2C:
Confirme que você deseja habilitar a interface I2C e saia do raspi-config. Reinicie a sua placa antes de seguir para o próximo passo.
Vamos agora instalar a biblioteca responsável por fazer a Raspberry Pi “conversar” com o módulo ADS1115. Para isso, digite o comando abaixo:
sudo pip3 install adafruit-circuitpython-ads1x15
A instalação da biblioteca costuma ser bem rápida e sem surpresas. Finalizada a instalação, vamos para o programa que fará a leitura das portas analógicas do módulo.
Programa leitor de portas analógicas na Raspberry Pi
Para usar o programa abaixo, crie um arquivo usando o editor de textos da sua preferência (recomendo o nano) e salve como conversor.py. Para fazer isso use o comando:
sudo nano conversor.py
Na janela do editor, digite ou copie o código:
#Programa: Conversor Analogico Digital ADS1115 com Raspberry Pi #Autor: Arduino e Cia import board import busio #Inicializa a interface I2C i2c = busio.I2C(board.SCL, board.SDA) #Define o tipo de módulo usado, no caso, o ADS1115 import adafruit_ads1x15.ads1115 as ADS from adafruit_ads1x15.analog_in import AnalogIn #Cria o objeto ADC ads = ADS.ADS1115(i2c) #Define a leitura da porta analogica 0 do módulo canal0 = AnalogIn(ads, ADS.P0) #Loop que realiza a leitura da porta analogica while True: print(canal0.value, canal0.voltage)
Execute o programa usando o comando
sudo python3 conversor.py
Este programa mostra de forma contínua, na janela de terminal, o valor lido da porta A0 do ADS1115. Você pode adicionar facilmente as outras portas replicando a linha 19 do programa. Para adicionar a porta A1 por exemplo, adicionamos a linha abaixo:
canal1 = AnalogIn(ads, ADS.P1)
E para efetuar a leitura dessa porta, acrescentamos dentro do loop:
print(canal1.value, canal1.voltage)
Com a biblioteca, o uso do módulo é bastante simplificado e fica muito fácil usar portas analógicas na Raspberry Pi.
Gostou? Confira outros posts usando Raspberry Pi aqui mesmo no Arduino e Cia!