Como usar ADC no Raspberry Pi Pico. Código de exemplo ADC

Tempo de leitura: 4 minutes

Visão geral

Neste tutorial, aprenderemos como usar ADC no Raspberry Pi Pico com código de exemplo ADC usando MicroPython. Um conversor analógico para digital (ADC) é um circuito que converte um valor de tensão contínua (analógico) em um valor binário (digital) que pode ser entendido por um dispositivo digital que pode então ser usado para computação digital.

O Raspberry Pi Pico é construído usando um microcontrolador RP2040. A placa expõe 26 pinos GPIO multifuncionais de um total de 36 pinos GPIO. Dos 36 pinos GPIO, existem 4 pinos ADC, mas apenas 3 são utilizáveis.

O ADC no Raspberry Pi Pico é de 12 bits, o que é 4 vezes melhor do que o ADC de 10 bits do Arduino. Vamos escrever um código MicroPython para aprender como podemos usar o valor do pino ADC com quaisquer sensores analógicos. Um potenciômetro é a melhor ferramenta para variar a tensão analógica de entrada. Mas antes de pular diretamente para o guia ADC, é recomendável ler o Tutorial de primeiros passos do Raspberry Pi Pico.

 

O que é conversor analógico para digital (ADC)?

Um conversor analógico para digital (ADC) é um recurso muito útil que converte uma tensão analógica de um pino em um número digital. Ao converter do mundo analógico para o mundo digital, podemos começar a usar a eletrônica para fazer interface com o mundo analógico ao nosso redor.

Em aplicações da vida real, ADC é um sistema que converte um sinal analógico, como um som captado por um microfone ou luz que entra em uma câmera digital, em um sinal digital. Um ADC também pode fornecer uma medição isolada, como um dispositivo eletrônico que converte uma tensão ou corrente analógica de entrada em um número digital que representa a magnitude da tensão ou corrente.

O ADC é perfeito para esses sensores. Com o ADC, você pode sentir parâmetros ambientais como luz, som, distância, gravidade, aceleração, rotação, cheiro, gases, outras partículas.

 

Como funciona um ADC em um microcontrolador?

A maioria dos microcontroladores hoje em dia tem conversores ADC embutidos. Também é possível conectar um conversor ADC externo a qualquer tipo de microcontrolador. Os conversores ADC são geralmente de 10 ou 12 bits, com 1024 a 4096 níveis de quantização. Um ADC de 16 bits tem 65536 níveis de quantização. Um Raspberry Pi Pico tem 12 bits ADC com um nível de quantização de 4096.

O processo de conversão ADC deve ser iniciado pelo programa do usuário e pode levar várias centenas de microssegundos para uma conversão ser concluída. Os conversores ADC geralmente geram interrupções quando uma conversão é concluída, para que o programa do usuário possa ler os dados convertidos o mais rápido possível.

 

ADC em Raspberry Pi Pico

O Raspberry Pi Pico suporta quatro conversores analógico para digital baseados em SAR de 12 bits. Dos 4, você só pode usar 3 canais analógicos. O 4º canal analógico é conectado internamente ao sensor de temperatura interno. Você pode medir a temperatura usando a temperatura incorporada lendo o valor analógico de ADC4. A tabela a seguir mostra que o sinal de entrada para ADC0, ADC1 e ADC2 pode ser conectado com os pinos GP26, GP27 e GP28, respectivamente.

ADC ModuleGPIO Pins
ADC0GP26
ADC1GP27
ADC2GP28

Você pode realizar a conversão A/D em polling, interrupção e FIFO com modo DMA. A velocidade de conversão do ADC por amostra é 2μs, ou seja, 500kS/s. O microcontrolador RP2040 opera em uma frequência de clock de 48 MHz que vem de USB PLL. Portanto, seu ADC leva um ciclo de clock de 96 CPU para realizar uma conversão. Portanto, a frequência de amostragem é (96 x 1 / 48MHz) = 2 μs por amostra (500kS/s).

 

Código de exemplo de ADC do Raspberry Pi Pico

Agora vamos aprender como usar o ADC do Raspberry Pi Pico. Usaremos um potenciômetro de 10K para variar a tensão de entrada analógica. Vamos mapear a tensão analógica de 0 a 3,3 V com 12 bits ou 16 bits ADC. O diagrama de conexão é fornecido abaixo.

Conecte os pinos 1 e 3 do potenciômetro ao pino 3,3V e pino GND do Raspberry Pi Pico. Conecte o Pino 2 do Potenciômetro ao GP28 da Torta de Framboesa Pico.

Agora é hora de escrever um código e verificar a leitura analógica. Para fazer isso, você pode usar o Thonny IDE ou ir com o uPyCraft IDE. Copie o código a seguir e clique em ‘Download & Run Button’.

import machine
import utime
 
analog_value = machine.ADC(28)
 
while True:
    reading = analog_value.read_u16()     
    print("ADC: ",reading)
    utime.sleep(0.2)

Nesta parte do código, eu defino a entrada ADC conectada no pino 28. Então, para criar um loop infinito, eu faço um tempo verdadeiro. então li o valor ADC com a leitura da função u16. Então, usando imprimir, posso mostrar o valor no monitor de shell

Quando você gira o potenciômetro e o valor vai de 0 a 65536 e isso é estranho, porque o valor deve ir de 0 a 4096. Isso deveria ser um ADC de 12 bits e não de 16 bits. De qualquer forma, é assim que podemos ler os valores analógicos com o ADC no Raspberry Pi Pico.