Uma das formas possível de efetuar leitura de sinais analógicos com Raspberry Pi é utilizando o ADS1115, visto que o Raspberry não tem nativamente suporte para tal funcionalidade.
Em projetos de sistemas embarcados, as vezes é necessário ler sinais analógicos em computadores embarcados que não possuem ADC (Analog to Digital Converter) como é o caso do Raspberry Pi.
Um Raspberry Pi não possui portas analógicas e precisa de um componente externo para realizar a função de leitura desses sinais. É onde entra o ADS1115.
O ADS1115 utiliza o protocolo I2C para comunicação. Através deste protocolo se pode configurar o dispositivo e fazer a leitura de seus dados de conversão AD.
Assim como todo dispositivo I2C tem um endereço, o ADS1115 pode ter seu endereço configurado através do pino ADDR. Conectando esse pino de acordo com a tabela abaixo obtém-se o endereço.
O ADS1115 possui 4 registradores de memória que podem ser acessados através do Address Pointer Register. Iremos trabalhar com apenas 2 destes registradores. O Conversion Register, que possui os valores de conversão, e o Config Register, que é usado para configuração dos parâmetros do ADS1115.
Antes de fazer a leitura dos dados de sinal analógico do ADS1115, seus parâmetros precisam ser configurados de acordo com cada necessidade de projeto. Essa configuração é feita através do Config Register. Este registrador é formado por 2 Bytes sendo dividido em alguns grupos de bits para cada tipo de parâmetro. Basicamente precisaremos configurar os parâmetros MUX, PGA e MODE.
Parâmetro MUX
O MUX é formado pelos bits 14, 13 e 12. Manipulando esses 3 bits configuramos o multiplexador do ADS1115 para ler os canais A0, A1, A2 ou A3 individualmente ou em modo diferencial entre canais. Por exemplo para ler o canal A1 apenas, os bits seriam 101.
Parâmetro PGA
Este parâmetro é formado pelos bits 11, 10 e 9 e usado para configurar o Programmable Gain Amplifier. Como estamos trabalhando com 3,3 V da Raspberry Pi, configuramos este registrador em 4,096 V. Assim nossa faixa de medição fica dentro dos 4,096 V. Para esta faixa de medição os bits devem ficar na forma 001. É possível até mesmo ler valores de tensão muito baixos com o ADS1115, como 0,256 V, e mesmo assim ter uma ótima resolução.
Parâmetro MODE
Esse parâmetro é formado pelo bit 8 apenas, e configura a forma de operação do ADS1115. Podem ser usadas duas formas. Forma contínua, onde o ADS1115 faz conversões continuamente, e forma single-shot, onde o ADS1115 faz apenas uma conversão e espera pela leitura. Iremos usar como exemplo a forma single-shot, por isso o bit 8 deve estar configurado em 1.
Existem ainda outros parâmetros mas, para este artigo, não serão necessários. Se seu projeto necessitar da configuração desses parâmetros, basta configurar os registros e bits de acordo.
Por fim, temos o registrador de leitura, Conversion Register, que possui os valores de conversão em um formato de 16-bits.
Para ativar a interface I2C no Raspberry Pi, acesse este artigo para obter as instruções