Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Analog-to-digital converter (ADC) je zařízení, které může číst hodnotu analogového vstupního napětí a převést ho na digitální hodnotu. AdCs se používají ke čtení hodnot z termistorů, potenciometrů a dalších zařízení, která mění odolnost na základě určitých podmínek.
V tomto tématu použijete .NET ke čtení hodnot z ADC při modulaci vstupního napětí pomocí potenciometru.
Požadavky
- Počítač s jednou deskou (SBC) založený na ARM (ARMv7 nebo novější)
- MCP3008 analogově-digitální převodník
- Třípólový potenciometr
- Prkénko na krájení
- Propojovací vodiče
- Raspberry Pi GPIO rozšiřující deska (volitelné/doporučené)
- .NET SDK 8 nebo novější
Poznámka:
Tento kurz je napsán za předpokladu, že cílové zařízení je Raspberry Pi. Tento kurz však lze použít pro jakýkoli linuxový SBC, který podporuje .NET, jako je Orange Pi, ODROID a další.
Příprava SBC
Ujistěte se, že je vaše SBC nakonfigurovaná tak, aby podporovala následující služby:
- SSH
- SPI
U mnoha zařízení není nutná žádná další konfigurace. V případě Raspberry Pi použijte raspi-config příkaz. Další informace najdete raspi-configv dokumentaci k Raspberry Pi.
Příprava hardwaru
Pomocí hardwarových komponent sestavte okruh, jak je znázorněno v následujícím diagramu:
MCP3008 ke komunikaci používá rozhraní SPI (Serial Peripheral Interface). Následují připojení z MCP3008 k Raspberry Pi a potenciometru:
- VDD až 3.3V (zobrazený červeně)
- VREF na 3.3 V (červená)
- AGND k zemi (černá)
- CLK až SCLK (oranžová)
- DOUT do MISO (oranžová)
- DIN do MOSI (oranžová)
- CS/SHDN až CE0 (zelená)
- DGND k zemi (černá)
- CH0 na proměnný (prostřední) vývod na potenciometru (žlutý)
Přívodní 3,3V a uzemnění vnějších kolíků na potenciometru. Pořadí není důležité.
Podle potřeby nahlédněte do následujících schémat zapojení:
| MCP3008 | Raspberry Pi GPIO |
|---|---|
|
|
Obrázek se svolením Raspberry Pi Foundation. |
Návod
Pro zjednodušení připojení k hlavičce GPIO se doporučuje použít rozšiřovací desku GPIO ve spojení s kontaktním polem.
Vytvoření aplikace
V upřednostňovaném vývojovém prostředí proveďte následující kroky:
Vytvořte novou konzolovou aplikaci .NET pomocí .NET CLI nebo Visual Studio. Pojmenujte ji AdcTutorial.
dotnet new console -o AdcTutorial cd AdcTutorialPřidejte do projektu balíček Iot.Device.Bindings . Použijte .NET CLI z adresáře projektu nebo sady Visual Studio.
dotnet add package Iot.Device.Bindings --version 3.2.0-*Obsah souboru Program.cs nahraďte tímto kódem:
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); }V předchozím kódu:
-
hardwareSpiSettingsje nastaveno na novou instanciSpiConnectionSettings. Konstruktor nastavíbusIdparametr na 0 achipSelectLineparametr na 0. - Deklarace using vytvoří instanci
SpiDevicevolánímSpiDevice.Createa předánímhardwareSpiSettings. TotoSpiDevicepředstavuje sběrnici SPI. Deklaraceusingzajišťuje, že objekt je ukončen a hardwarové prostředky jsou uvolněny správně. - Další
usingdeklarace vytvoří instanciMcp3008a předáSpiDevicedo konstruktoru. - Smyčka
whileběží neomezeně dlouho. Každá iterace:- Vymaže konzolu.
- Přečte hodnotu CH0 v ADC voláním
mcp.Read(0). - Zapíše nezpracovanou hodnotu do konzoly.
- Zapíše hodnotu do konzoly formátované jako procento.
- Pokud chcete vypočítat procento, hodnota se vydělí hodnotou 10,23. MCP3008 je 10bitový ADC, což znamená, že vrací 1024 možných hodnot v rozsahu 0–1023. Rozdělení hodnoty hodnotou 10,23 představuje hodnotu v procentech.
- Procento se zaokrouhlí na nejbližší hodnotu 0,1.
- Spí 500 ms.
-
Sestavení aplikace Pokud používáte .NET CLI, spusťte
dotnet build. Pokud chcete sestavovat v sadě Visual Studio, stiskněte kombinaci kláves Ctrl+Shift+B.Nasaďte aplikaci do SBC jako samostatnou aplikaci. Pokyny najdete v tématu Nasazení aplikací .NET do Raspberry Pi. Ujistěte se, že spustitelnému souboru udělíte oprávnění execute pomocí
chmod +x.Spusťte aplikaci na Raspberry Pi přepnutím do adresáře nasazení a spuštěním spustitelného souboru.
./AdcTutorialPři otáčení číselníku potenciometru sledujte výstup. Příčinou je to, že potenciometr mění napětí dodávané na CH0 u ADC. ADC porovnává vstupní napětí na CH0 s referenčním napětím dodaném do VREF za účelem vygenerování hodnoty.
Ukončete program stisknutím kláves Ctrl+C.
Gratulujeme! Ke čtení hodnot z analogového a digitálního převaděče jste použili rozhraní SPI.
Získání zdrojového kódu
Zdroj pro tento kurz je k dispozici na GitHubu.