Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az analóg-digitális átalakító (ADC) egy olyan eszköz, amely képes beolvasni egy analóg bemeneti feszültségértéket, és digitális értékké alakítani. Az ADC-k a termisztorok, a potenciométerek és más olyan eszközök értékeinek olvasására szolgálnak, amelyek bizonyos feltételek alapján módosítják az ellenállást.
Ebben a témakörben Ön .NET-et fog használni az ADC értékeinek beolvasására, miközben a bemeneti feszültséget egy potenciométerrel modulálja.
Előfeltételek
- ARM-alapú (ARMv7 vagy újabb) egylapos számítógép (SBC)
- MCP3008 analóg-digitális konverter
- Három tűs potenciométer
- Kenyérvágódeszka
- Átvezető vezetékek
- Raspberry Pi GPIO-melléklap (opcionális/ajánlott)
- .NET SDK 10 vagy újabb
Megjegyzés
Ez az oktatóanyag meg van írva, feltéve, hogy a céleszköz Raspberry Pi. Ez az oktatóanyag azonban bármely olyan Linux-alapú SBC-hez használható, amely támogatja .NET, például Orange Pi, ODROID stb.
Az SBC előkészítése
Győződjön meg arról, hogy az SBC a következő szolgáltatások támogatására van konfigurálva:
- SSH
- SPI
Sok eszköz esetén nincs szükség további konfigurációra. Raspberry Pi esetén használja a raspi-config parancsot. További információkért raspi-configtekintse meg a Raspberry Pi dokumentációját.
A hardver előkészítése
A következő ábrán látható módon használja a hardver összetevőket az áramkör megépítéséhez.
A MCP3008 soros periféria interfészt (SPI) használ a kommunikációhoz. A következő kapcsolatok a MCP3008 és a Raspberry Pi és a potenciométer között:
- VDD 3,3V-ra (pirossal jelölve)
- VREF-ről 3,3V-ra (piros)
- AGND földhöz (fekete)
- CLK–SCLK (narancssárga)
- DOUT to MISO (narancssárga)
- DIN-ből MOSI-ba (narancssárga)
- CS/SHDN–CE0 (zöld)
- DGND földeléshez (fekete)
- CH0 csatlakoztatása a potenciométer változó (középső) tűjéhez (sárga)
A potenciométer külső csapjaihoz 3,3V-os tápellátást kell biztosítani. A sorrend nem lényeges.
Szükség szerint tekintse meg a következő kivezetési rajzokat:
| MCP3008 | Raspberry Pi GPIO |
|---|---|
|
|
Kép jóvoltból Raspberry Pi Foundation. |
Jótanács
A GPIO csatlakozólap és a próbaáramköri lap együttes használata javasolt a GPIO-fejléchez való kapcsolódások egyszerűsítése érdekében.
Az alkalmazás létrehozása
Hajtsa végre a következő lépéseket az előnyben részesített fejlesztési környezetben:
Hozzon létre egy új .NET konzolalkalmazást a .NET parancssori felület vagy Visual Studio használatával. Nevezze el AdcTutorial néven.
dotnet new console -o AdcTutorial cd AdcTutorialAdja hozzá az Iot.Device.Bindings csomagot a projekthez. Használja a(z) .NET CLI-t a projektkönyvtárból vagy a Visual Studio-t.
dotnet package add Iot.Device.Bindings --version 4.1.0Cserélje le a Program.cs fájl tartalmát a következő kódra:
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); }Az előző kódban:
-
hardwareSpiSettingsa új példányáraSpiConnectionSettingsvan állítva. A konstruktor a paramétertbusId0-ra, a paramétertchipSelectLinepedig 0-ra állítja. - A using deklaráció létrehoz egy
SpiDevicepéldányt úgy, hogy meghívja aSpiDevice.Create-t és átadja neki ahardwareSpiSettings-t. EzSpiDevicea SPI buszt jelöli. Ausingdeklaráció biztosítja az objektum ártalmatlanítását és a hardvererőforrások megfelelő kiadását. - Egy másik
usingdeklaráció létrehoz egy példánytMcp3008, és átadja aSpiDevicekonstruktornak. - A
whilehurok a végtelenségig fut. Minden iteráció:- Törli a konzolt.
- Beolvassa az ADC CH0 értékét a
mcp.Read(0)hívásával. - A nyers értéket a konzolra írja.
- Százalékként formázott értéket ír a konzolra.
- A százalék kiszámításához az érték 10,23-ra van osztva. A MCP3008 egy 10 bites ADC, ami azt jelenti, hogy 1024 lehetséges értéket ad vissza 0 és 1023 között. Ha az értéket 10,23-tal osztja el, az értéket százalékként jelöli.
- A százalékos érték a legközelebbi 0,1 értékre van kerekítve.
- 500 ms-ig alszik.
-
Hozza létre az alkalmazást. Ha a .NET parancssori felületet használja, futtassa a
dotnet buildparancsot. A Visual Studio-ban történő buildeléshez nyomja le a Ctrl+Shift+B billentyűkombinációt.Helyezze üzembe az alkalmazást az SBC-ben önálló alkalmazásként. Útmutatásért lásd: A Raspberry Pi .NET-alkalmazások üzembe helyezése. Győződjön meg arról, hogy a végrehajtható fájlnak végrehajtási engedélyt ad a
chmod +xhasználatával.Futtassa az alkalmazást a Raspberry Pi-en az üzembehelyezési könyvtárra való váltással és a végrehajtható fájl futtatásával.
./AdcTutorialFigyelje meg a kimenetet a potenciométer gomb forgatása közben. Ennek az az oka, hogy a potenciométer az ADC-n ch0-nek adott feszültséget változtatja. Az ADC összehasonlítja a CH0 bemeneti feszültségét a VREF-nek adott referenciafeszültséggel, hogy értéket hozzon létre.
Állítsa le a programot a CtrlC+ lenyomásával.
Gratulálok! Az SPI segítségével olvasta be az értékeket egy analóg-digitális konverterből.
A forráskód lekérése
Az oktatóanyag forrása elérhető GitHub.