Leitura de sinal analógico com Raspberry Pi

image_pdfimage_print

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

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!