Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Um conversor analógico-digital (ADC) é um dispositivo que pode ler um valor de tensão de entrada analógica e convertê-lo em um valor digital. Os ADCs são usados para ler valores de termistores, potenciômetros e outros dispositivos que mudam a resistência com base em determinadas condições.
Neste tópico, vais usar .NET para ler valores de um ADC enquanto modulas a tensão de entrada com um potenciómetro.
Pré-requisitos
- Computador de placa única (SBC) baseado em ARM (ARMv7 ou superior)
- MCP3008 conversor analógico-digital
- Potenciómetro de três pinos
- Tabuleiro de pão
- Fios de ligação
- Placa de expansão Raspberry Pi GPIO (opcional/recomendado)
- .NET SDK 10 ou posterior
Observação
Este tutorial foi escrito assumindo que o dispositivo alvo é o Raspberry Pi. No entanto, este tutorial pode ser usado para qualquer SBC baseado em Linux que suporte .NET, como Orange Pi, ODROID e outros.
Preparar o SBC
Certifique-se de que o SBC está configurado para suportar os seguintes serviços:
- SSH
- SPI
Para muitos dispositivos, nenhuma configuração adicional é necessária. Para o Raspberry Pi, usa o raspi-config comando. Para mais informações sobre raspi-config, consulte a documentação do Raspberry Pi.
Preparar o hardware
Use os componentes de hardware para construir o circuito conforme descrito no diagrama a seguir:
O MCP3008 usa SPI (Serial Peripheral Interface) para se comunicar. A seguir estão as conexões do MCP3008 para o Raspberry Pi e potenciômetro:
- VDD para 3,3V (mostrado a vermelho)
- VREF a 3.3V (vermelho)
- AGND à terra (preto)
- CLK para SCLK (laranja)
- DOUT para MISO (laranja)
- DIN para MOSI (laranja)
- CS/SHDN a CE0 (verde)
- DGND para o chão (preto)
- CH0 para pino central variável no potenciómetro (amarelo)
Forneça 3.3V e terra aos pinos externos do potenciômetro. A ordem não é importante.
Consulte os diagramas de pinagem abaixo conforme necessário.
| MCP3008 | Raspberry Pi GPIO |
|---|---|
|
|
Imagem cortesia da Raspberry Pi Foundation. |
Sugestão
Recomenda-se uma placa de breakout GPIO em conjunto com uma placa de ensaio para agilizar as conexões com o conector GPIO.
Criar a aplicação
Conclua as seguintes etapas em seu ambiente de desenvolvimento preferido:
Crie uma nova aplicação de consola .NET usando .NET CLI ou Visual Studio. Chama-lhe AdcTutorial.
dotnet new console -o AdcTutorial cd AdcTutorialAdicione o pacote Iot.Device.Bindings ao projeto. Use .NET CLI do diretório do projeto ou Visual Studio.
dotnet package add Iot.Device.Bindings --version 4.1.0Substitua o conteúdo do Program.cs pelo seguinte código:
using System; using System.Device.Spi; using System.Threading; using Iot.Device.Adc; var hardwareSpiSettings = new SpiConnectionSettings(0, 0); using SpiDevice spi = SpiDevice.Create(hardwareSpiSettings); using var mcp = new Mcp3008(spi); while (true) { Console.Clear(); double value = mcp.Read(0); Console.WriteLine($"{value}"); Console.WriteLine($"{Math.Round(value/10.23, 1)}%"); Thread.Sleep(500); }No código anterior:
-
hardwareSpiSettingsé definido para uma nova instância deSpiConnectionSettings. O construtor define obusIdparâmetro para 0 e ochipSelectLineparâmetro para 0. - Uma declaração de uso cria uma instância de
SpiDeviceao chamarSpiDevice.Createe passandohardwareSpiSettings. IstoSpiDevicerepresenta o barramento SPI. Ausingdeclaração garante que o objeto é eliminado e que os recursos de hardware são devidamente libertados. - Outra
usingdeclaração cria uma instância deMcp3008e passa oSpiDevicepara o construtor. - Um
whileloop corre indefinidamente. Cada iteração:- Limpa o console.
- Lê o valor de CH0 no ADC chamando
mcp.Read(0). - Grava o valor bruto na consola.
- Grava o valor no console formatado como uma porcentagem.
- Para calcular a porcentagem, o valor é dividido por 10,23. O MCP3008 é um ADC de 10 bits, o que significa que retorna 1024 valores possíveis que variam de 0 a 1023. Dividindo o valor por 10,23 representa o valor como uma porcentagem.
- A percentagem é arredondada para 0,1 mais próximo.
- Espera 500 ms.
-
Crie o aplicativo. Se estiver a usar a CLI .NET, execute
dotnet build. Para construir em Visual Studio, pressione Ctrl+Shift+B.Implante o aplicativo no SBC como um aplicativo independente. Para instruções, consulte Deploy .NET apps para Raspberry Pi. Certifique-se de dar permissão de execução ao executável usando
chmod +x.Execute a aplicação no Raspberry Pi mudando para o diretório de implantação e executando o executável.
./AdcTutorialObserve a saída ao rodar o mostrador do potenciómetro. Isto deve-se ao facto de o potenciómetro variar a tensão fornecida a CH0 no ADC. O ADC compara a tensão de entrada no CH0 com a tensão de referência fornecida ao VREF para gerar um valor.
Termine o programa pressionando Ctrl+C.
Parabéns! Você usou o SPI para ler valores de um conversor analógico-digital.
Obter o código-fonte
A fonte deste tutorial está disponível em GitHub.