Értékek olvasása analóg-digitális konverterből
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-ket a termisztorok, a potenciométerek és más olyan eszközök értékeinek olvasására használják, amelyek bizonyos feltételek alapján módosítják az ellenállást.
Ebben a témakörben a .NET használatával fog értékeket olvasni egy ADC-ből, 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 átalakító
- Három tűs potenciométer
- Kenyérvágódeszka
- Jumper drótok
- Raspberry Pi GPIO-melléklap (nem kötelező/ajánlott)
- .NET SDK 7 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 minden olyan Linux-alapú SBC-hez használható, amely támogatja a .NET-et, például az Orange Pi-t, az ODROID-ot és egyebeket.
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ében nincs szükség további konfigurációra. Raspberry Pi esetén használja a raspi-config
parancsot. További információt a raspi-config
Raspberry Pi dokumentációjában talál.
A hardver előkészítése
A hardverösszetevők használatával hozza létre a kapcsolatcsoportot az alábbi ábrán látható módon:
Az MCP3008 soros periféria interfészt (SPI) használ a kommunikációhoz. A következők az MCP3008 és a Raspberry Pi és a potenciométer kapcsolatai:
- VDD –3,3V (pirossal)
- VREF –3,3V (piros)
- AGND földig (fekete)
- CLK-ról SCLK-ra (narancssárga)
- DOUT to MISO (narancssárga)
- DIN-ből MOSI-ba (narancssárga)
- CS/SHDN–CE0 (zöld)
- DGND földig (fekete)
- CH0–változó (középső) tű a potentiométeren (sárga)
3,3V-os tápellátás és földelés a potenciométer külső csapjaihoz. A sorrend nem lényeges.
Szükség szerint tekintse meg a következő kitűződiagramokat:
MCP3008 | Raspberry Pi GPIO |
---|---|
Kép jóvoltból Raspberry Pi Foundation. |
Tipp
A GPIO-mellékfal és a rajztábla együttes használata ajánlott a GPIO fejléchez való csatlakozás egyszerűsítéséhez.
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 AdcTutorial
Adja 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 2.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); }
A fenti kód a következőket végzi el:
hardwareSpiSettings
a értéke a következő új példányaSpiConnectionSettings
: . A konstruktor a paramétertbusId
0-ra, a paramétertchipSelectLine
pedig 0-ra állítja.- A használó deklaráció egy példányt
SpiDevice
hoz létre a hívássalSpiDevice.Create
és a beadássalhardwareSpiSettings
. EzSpiDevice
a SPI-buszt jelöli. Ausing
deklaráció biztosítja, hogy az objektum el legyen távolítva, és a hardvererőforrások megfelelően legyenek felszabadítva. - Egy másik
using
deklaráció létrehoz egy példánytMcp3008
, és átadja aSpiDevice
konstruktornak. - A
while
hurok határozatlan ideig fut. Minden iteráció:- Törli a konzolt.
- Beolvassa a CH0 értékét az ADC-n a hívásával
mcp.Read(0)
. - A nyers értéket a konzolra írja.
- Az értéket százalékként formázva írja a konzolra.
- A százalék kiszámításához az érték 10,23-ra van osztva. Az MCP3008 egy 10 bites ADC, ami azt jelenti, hogy 1024 lehetséges értéket ad vissza 0 és 1023 között. Az érték 10,23-tal való felosztása százalékként jelöli az értéket.
- A százalékos érték kerekítése a legközelebbi 0,1 értékre történik.
- 500 ms alvó állapotban van.
Az alkalmazás létrehozása. Ha a .NET CLI-t használja, futtassa a parancsot
dotnet build
. A Visual Studióban való buildeléshez nyomja le a CtrlShift+Bbillentyűkombinációt+.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ó végrehajtási engedélyt a használatával
chmod +x
adja meg.Futtassa az alkalmazást a Raspberry Pi-n az üzembehelyezési könyvtárra való váltással és a végrehajtható fájl futtatásával.
./AdcTutorial
Figyelje meg a kimenetet, miközben elforgatja a potenciométer-tárcsázást. 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 biztosított referenciafeszültséggel egy érték létrehozásához.
Állítsa le a programot a CtrlC billentyű lenyomásával+.
Gratulálunk! A SPI-t használta az értékek analóg-digitális konverterből való olvasására.
A forráskód lekérése
Az oktatóanyag forrása a GitHubon érhető el.
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: