Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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 a .NET használatával fogja beolvasni az ADC értékeit, 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 8 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ármilyen Linux-alapú SBC-hez használható, amely támogatja a .NET-et, például az Orange Pi-t, az ODROID-ot és sok mást.
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 a 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 CLI vagy a 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 .NET CLI-t a projektkönyvtárból vagy a Visual Studióból.
dotnet add package Iot.Device.Bindings --version 3.2.0-*Cseré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:
-
hardwareSpiSettingsúj példányát aSpiConnectionSettings-ra/-re állítják. A konstruktor a paramétertbusId0-ra, a paramétertchipSelectLinepedig 0-ra állítja. - A using nyilatkozat létrehoz egy
SpiDevicepéldányt azáltal, hogy meghívja aSpiDevice.Create-t, és átadja 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 határozatlan ideig fut. Minden iteráció:- Törli a konzolt.
- Beolvassa a CH0 értékét az ADC-n egy függvény meghívásával
mcp.Read(0). - 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 parancsot
dotnet build. A Visual Studióban való buildeléshez nyomja le a CtrlShift+B+.Helyezze üzembe az alkalmazást az SBC-ben önálló alkalmazásként. Útmutatásért lásd: .NET-alkalmazások üzembe helyezése a Raspberry Pi-ben. Győződjön meg arról, hogy a végrehajtható fájlnak végrehajtás 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 a GitHubon érhető el.