Megosztás a következőn keresztül:


É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-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.

Fritzing diagram egy MCP3008 ADC-vel és egy potenciométerrel rendelkező kapcsolatcsoportról

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
A MCP3008 pinoutját ábrázoló diagram Ábra a Raspberry Pi GPIO fejlécének kitűzéséről. Kép jóvoltból Raspberry Pi Foundation.
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:

  1. 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 AdcTutorial
    
  2. Adja 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.0
    
  3. 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 a új példányára SpiConnectionSettingsvan állítva. A konstruktor a paramétert busId 0-ra, a paramétert chipSelectLine pedig 0-ra állítja.
    • A using deklaráció létrehoz egy SpiDevice példányt úgy, hogy meghívja a SpiDevice.Create-t és átadja neki a hardwareSpiSettings-t. Ez SpiDevice a SPI buszt jelöli. A using deklaráció biztosítja az objektum ártalmatlanítását és a hardvererőforrások megfelelő kiadását.
    • Egy másik using deklaráció létrehoz egy példányt Mcp3008 , és átadja a SpiDevice konstruktornak.
    • A while hurok a végtelenségig fut. Minden iteráció:
      1. Törli a konzolt.
      2. Beolvassa az ADC CH0 értékét a mcp.Read(0) hívásával.
      3. A nyers értéket a konzolra írja.
      4. 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.
      5. 500 ms-ig alszik.
  4. Hozza létre az alkalmazást. Ha a .NET parancssori felületet használja, futtassa a dotnet build parancsot. A Visual Studio-ban történő buildeléshez nyomja le a Ctrl+Shift+B billentyűkombinációt.

  5. 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 +x használatával.

  6. 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.

    ./AdcTutorial
    

    Figyelje 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.

  7. Á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.

Következő lépések