Expandindo os recursos do seu Raspberry Pi com um conversor ADC: o que você precisa saber

O Raspberry Pi é um excelente dispositivo para vários projetos eletrônicos, mas usando um conversor ADC, você pode expandir suas capacidades para medir sinais analógicos e interagir com uma gama mais ampla de dispositivos.

O Raspberry Pi normalmente não possui entradas analógicas. Isso o coloca em desvantagem em comparação com placas baseadas em microcontroladores como o Arduino.

Mas não se desespere: há muitas opções a serem consideradas. Você pode começar com um Raspberry Pi e um ADC externo. Neste guia, daremos a você uma visão geral abrangente de como usar um conversor ADC com um Raspberry Pi, concentrando-nos nas principais etapas e nos benefícios potenciais. Continue lendo para descobrir como você pode aproveitar ao máximo seu dispositivo e integrá-lo de maneira eficaz aos seus projetos eletrônicos. Verificar O que é um conversor analógico para digital (ADC)? Entenda seu trabalho e sua importância na era da tecnologia digital.

Expandindo os recursos do seu Raspberry Pi com um conversor ADC: O que você precisa saber - Raspberry Pi

Por que você deseja adicionar entradas?

O mundo real está cheio de fenômenos que podem ser facilmente descritos usando voltagem, se você tiver o circuito correto. Converta essas tensões elétricas em formato digital e você poderá registrá-las, processá-las e usá-las para controlar parâmetros e outros dispositivos.

Talvez você queira monitorar a umidade do solo, a temperatura da estufa ou o peso do seu hamster. Você pode querer adicionar um controle de volume ao seu Pi, construir um equalizador ou projetar um joystick do zero. As possibilidades, mais ou menos, são ilimitadas.

Opções de ADC

Então, qual ADC é melhor para iniciantes?

Entre as opções mais populares e simples estão os chipsets MCP3004 (E MCP3008) da Microchip. Você obterá quatro (ou oito) canais de 10 bits, que podem ler até 200k SPS. Por outro lado, existem dispositivos ADS111x da Texas Instruments, que leem 16 bits a 860 SPS. Portanto, existe um compromisso entre velocidade e precisão (e, claro, preço).

Muitos microcontroladores vêm com conversores ADC integrados. O ATMega que você encontra no Arduino médio fornecerá vários canais de 10 bits, além de todo o resto. Isso é o que permite ao Arduino fornecer entradas analógicas onde o Raspberry Pi não consegue. Se você já possui um Arduino envolvido em sua configuração e 10 bits são precisão suficiente, esse pode ser o método mais fácil.

Aqui vamos simplificar, com o ADS1115 da Adafruit. Verificar Os prós e contras de usar um clone do Arduino em seus projetos.

Expandindo os recursos do seu Raspberry Pi com um conversor ADC: O que você precisa saber - Raspberry Pi

O que é um amplificador de ganho programável?

Este chip vem com alguns recursos interessantes, incluindo um Amplificador de Ganho Programável (PGA). O que permitirá ajustar digitalmente a faixa de valores desejada, até uma fração de tensão. Com o número de valores que 16 bits podem representar, isso permitirá detectar diferenças tão pequenas quanto alguns microvolts.

A vantagem aqui é que você pode alterar o ganho no meio. Outros chips, como o MCP3004, adotam uma abordagem diferente; Ele vem com um pino adicional, para o qual você pode fornecer uma tensão de referência.

E quanto à multiplexação?

Um multiplexador (ou mux) é um switch que permite ler múltiplas entradas com um único ADC. Se o seu chip ADC tiver múltiplas portas de entrada, então está ocorrendo alguma multiplexação interna. O mux do ADS1115 permite quatro entradas, que você pode selecionar através de registros internos.

Tratamento de registros

O ADS1115 oferece essas opções, além de algumas outras. Você pode manipular o multiplexador, ajustar o ganho, ativar o comparador integrado, alterar a taxa de amostragem e colocar o dispositivo no modo de suspensão de baixo consumo de energia, tudo pressionando algumas teclas.

Mas onde estão essas chaves? Eles existem dentro do pacote, na forma de pequenos pedaços de memória chamados registradores. Para ativar um recurso específico, basta definir o bit relevante como 1, em vez de 0.

Olhando para uma folha de dados ADS111xVocê descobrirá que esses modelos vêm com quatro registros, incluindo registros de configuração que controlam o comportamento do dispositivo.

Expandindo os recursos do seu Raspberry Pi com um conversor ADC: O que você precisa saber - Raspberry Pi

Por exemplo, os bits 14 a 12 controlam o multiplexador. Usando esses três bits, você pode escolher entre oito configurações. O número que você deseja aqui é “100”, que dará a diferença entre a entrada zero e o mínimo. Por outro lado, os bits 7 a 5 controlam a taxa de amostragem. Se quiser o máximo de 860 amostras por segundo, você pode configurá-lo para “111”.

Depois de saber quais opções deseja definir, você terá dois bytes para enviar ao ADC. Se mais tarde você quiser definir um único bit aqui ou ali, poderá tratá-los individualmente usando operadores de bit.

É aqui que pode ficar confuso. Neste caso, o binário não representa um valor, mas sim os valores dos transformadores individuais. Você pode expressar essas variáveis ​​como um número grande, em decimal ou hexadecimal. Mas se quiser evitar o estresse, você deve se ater à versão binária, que é mais fácil de ler.

Conectando fios

Você pode conectar este adaptador diretamente ao painel único. Ele aceitará entradas de tensão positiva entre 2 e 5.5 volts, o que significa que o trilho de 3.3 volts no Raspberry Pi funcionará perfeitamente.

Conecte as entradas SDA e SCL às suas contrapartes no RPi e faça o mesmo com o aterramento e 3.3V. Obtenha um voltímetro entre as linhas de terra e de tensão e, em seguida, coloque o fio do meio na primeira entrada do ADC. Isso é tudo que você precisa para começar!

Lidando com I2C

Diferentes ADCs operam em protocolos diferentes. No caso do ADS1115 usaremos I2C.

O exemplo a seguir irá interagir com o ADC usando Python. Mas antes de fazer isso, você precisará configurá-lo. Lançamentos recentes do Raspberry Pi OS tornaram isso muito simples. Vá para Preferências > Configuração do Raspberry Pi. Em seguida, na guia Interfaces, ative I2C.

Expandindo os recursos do seu Raspberry Pi com um conversor ADC: O que você precisa saber - Raspberry Pi

Para verificar se tudo está funcionando, abra o Terminal e execute:

sudo i2cdetect -y 1

Este comando produzirá uma malha. Supondo que tudo esteja funcionando e que você tenha conectado corretamente, você verá um novo valor aparecer na grade. Este é o endereço do seu ADC. Tenha em mente aqui que é um valor hexadecimal, então você precisa prefixá-lo com “0x” ao usá-lo no código abaixo. E aqui está 0x48:

Expandindo os recursos do seu Raspberry Pi com um conversor ADC: O que você precisa saber - Raspberry Pi

Depois de obter o endereço, você pode usar a biblioteca SMBus para enviar comandos I2C. Você lidará com dois métodos aqui. O primeiro é write_word_data(), que aceita três argumentos: o endereço do dispositivo, o registro no qual você está gravando e o valor que deseja escrever.

O segundo é leitura_palavra_dados(), Que aceita apenas endereço e histórico do dispositivo. O ADC lerá as tensões continuamente e armazenará o resultado no registro de comutação. Usando este método, você pode recuperar o conteúdo deste registro.

Você pode embelezar um pouco o resultado e depois imprimi-lo. Antes de retornar ao início do loop, faça uma pequena pausa. Isso garantirá que você não fique sobrecarregado de dados.

from smbus import SMBus
import time
addr = 0x48
bus = SMBus(1)

# set the registers for reading
CONFIGREG = 1
CONVERSIONREG = 0

# set the address register to point to the config register
# write to the config registers
bus.write_word_data(addr, CONFIGREG, (0b00000100 << 8 | 0b10000010)) 

# define the top of the range
TOP = 26300

while True:
    # read the register
    b = bus.read_word_data(addr, CONVERSIONREG)

    # swap the two bytes
    b = ((b & 0xFF) << 8) | ((b >> 8) & 0xFF)
    
    # subtract half the range to set ground to zero
    b -= 0x8000

    # divide the result by the range to give us a value between zero and one
    b /= TOP

    # cap at one
    b = min(b, 1)

    # bottom is zero
    b = max(b, 0)

    # two decimal places
    b = round(b, 2)
    print(b)
    time.sleep(.01)

Você está quase pronto. Defina o intervalo de valores obtido com o valor de sua preferência e, em seguida, trunque-o para o número desejado de casas decimais. Você pode personalizar a função de impressão para que ela imprima apenas um novo valor quando for diferente do último valor.

Lidando com o ruído

Agora, a menos que sua configuração seja realmente boa, organizada e organizada, você notará algum ruído. Esta é a desvantagem inerente ao uso de 16 bits em vez de apenas dez: essa pequena quantidade de ruído será mais perceptível.

Ao conectar a entrada adjacente (Entrada 1) ao terra e mudar o modo para comparar a primeira e a segunda entradas, você pode obter resultados mais estáveis. Você também pode substituir cabos longos de coleta de ruído por outros menores e adicionar alguns capacitores ao fazer esse ajuste. O valor do seu potenciômetro também pode fazer a diferença.

Existem também opções de software. Você pode criar uma média móvel ou simplesmente ignorar pequenas alterações. A desvantagem é que o código adicional imporá um custo computacional. Se você estiver escrevendo instruções condicionais em uma linguagem de alto nível como Python, coletando milhares de amostras a cada segundo, esses custos aumentarão rapidamente. Verificar Guia de monitoramento de temperatura Raspberry Pi e Sense HAT: melhores etapas e dicas.

perguntas comuns

Q1. O que é um conversor ADC e como funciona com Raspberry Pi?

Um ADC (Conversor Analógico para Digital) é um dispositivo que converte sinais analógicos em sinais digitais. Um ADC pode ser conectado a um Raspberry Pi para permitir a leitura de sinais analógicos de fontes como sensores e variáveis ​​ambientais.

Q2. Quais são os principais benefícios de usar um conversor ADC com Raspberry Pi?

  • Expanda os recursos de medição: permite usar sinais analógicos, como luz, temperatura, som e muito mais.
  • Maior precisão: A conversão de sinais analógicos em digitais proporciona maior precisão nas leituras.
  • Suporta uma variedade de dispositivos: Pode ser usado com uma ampla variedade de dispositivos eletrônicos e projetos Raspberry Pi.

Q3. Como conecto um conversor ADC a um Raspberry Pi?

O conversor ADC pode ser conectado ao Raspberry Pi através da interface GPIO usando os cabos e conectores apropriados. Você deve ter cuidado e seguir o guia de comunicações incluído no conversor ADC.

Q4. Posso usar o conversor ADC com todas as versões do Raspberry Pi?

Sim, o ADC pode ser usado com a maioria das versões do Raspberry Pi. No entanto, pode ser necessário considerar conectar o adaptador à porta GPIO apropriada para sua versão de hardware específica.

Q5. A utilização de um conversor ADC requer experiência em programação?

Depende do escopo do projeto. Em casos simples, podem ser utilizadas bibliotecas prontas. No entanto, alguns projectos podem exigir competências de programação para utilizar os dados de forma eficaz.

Seguindo em frente com vários próximos passos potenciais

Fazer leituras via I2C é muito simples e o mesmo se aplica a outros métodos, como o SPI. Embora possa parecer que existem diferenças significativas entre as opções de ADC disponíveis, a verdade é que, uma vez instalada uma, é fácil aplicar o conhecimento às outras.

Então, por que não levamos as coisas adiante? Conecte vários potenciômetros ou tente ler a luz, o som ou a temperatura. Expanda o controlador que você acabou de criar e crie uma configuração do Raspberry Pi que seja realmente funcional! Você pode ver agora Potenciais desafios de auto-hospedagem de seus projetos Raspberry Pi.

DzTechName

Sou um engenheiro estadual com vasta experiência nas áreas de programação, criação de sites, SEO e redação técnica. Sou apaixonado por tecnologia e me dedico a fornecer informação de qualidade ao público. Posso me tornar um recurso mais valioso para usuários que procuram informações precisas e confiáveis ​​sobre análises de produtos e aplicações especializadas em diversos campos. Meu compromisso inabalável com a qualidade e a precisão garante que as informações fornecidas sejam confiáveis ​​e úteis para o público. A busca constante pelo conhecimento me leva a acompanhar os mais recentes desenvolvimentos tecnológicos, garantindo que as ideias compartilhadas sejam transmitidas de forma clara e acessível.
Ir para o botão superior