Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En analog-till-digital konverterare (ADC) är en enhet som kan läsa ett analogt indataspänningsvärde och konvertera det till ett digitalt värde. APC:er används för att läsa värden från thermistors, potentiometer och andra enheter som ändrar resistens baserat på vissa villkor.
I det här avsnittet använder du .NET för att läsa värden från en ADC när du modulerar inspänningen med en potentiometer.
Förutsättningar
- ARM-baserad (ARMv7 eller senare) enkelkortsdator (SBC)
- MCP3008 analog-till-digital-konverterare
- Potentiometer med tre stift
- Skärbräda
- Bygelkablar
- Raspberry Pi GPIO breakout board (valfritt/rekommenderas)
- .NET SDK 8 eller senare
Anmärkning
Den här handledningen är skriven med antagandet att målenheten är en Raspberry Pi. Den här handledningen kan dock användas för alla Linux-baserade SBC som stöder .NET, till exempel Orange Pi, ODROID med mera.
Förbereda SBC
Kontrollera att din SBC har konfigurerats för att stödja följande tjänster:
- SSH
- SPI
För många enheter krävs ingen ytterligare konfiguration. Använd kommandot för Raspberry Pi raspi-config
. Mer information om raspi-config
finns i Raspberry Pi-dokumentationen.
Förbereda maskinvaran
Använd maskinvarukomponenterna för att skapa kretsen enligt följande diagram:
MCP3008 använder SPI (Serial Peripheral Interface) för att kommunicera. Följande är anslutningarna från MCP3008 till Raspberry Pi och potentiometern:
- VDD till 3,3V (visas i rött)
- VREF till 3,3V (röd)
- AGND till jord (svart)
- CLK till SCLK (orange)
- DUT till MISO (orange)
- DIN till MOSI (orange)
- CS/SHDN till CE0 (grön)
- DGND till jord (svart)
- CH0 till variabelt (centralt) ben på potentiometer (gul)
Leverera 3,3V och jord till de yttre stiften på potentiometern. Ordning är oviktig.
Se vid behov följande kopplingsschema:
MCP3008 | Raspberry Pi GPIO |
---|---|
![]() |
![]() Bild med tillstånd Raspberry Pi Foundation. |
Tips/Råd
En GPIO-utbrytartavla tillsammans med en brödskiva rekommenderas för att effektivisera anslutningarna till GPIO-huvudet.
Skapa appen
Slutför följande steg i den utvecklingsmiljö du föredrar:
Skapa en ny .NET-konsolapp med hjälp av .NET CLI eller Visual Studio. Ge den namnet AdcTutorial.
dotnet new console -o AdcTutorial cd AdcTutorial
Lägg till paketet Iot.Device.Bindings i projektet. Använd antingen .NET CLI från projektkatalogen eller Visual Studio.
dotnet add package Iot.Device.Bindings --version 3.2.0-*
Ersätt innehållet i Program.cs med följande kod:
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); }
I koden ovan:
-
hardwareSpiSettings
ställs in som en ny instans avSpiConnectionSettings
. Konstruktorn anger parameternbusId
till 0 och parameternchipSelectLine
till 0. - En användningsdeklaration skapar en instans av
SpiDevice
genom att anropaSpiDevice.Create
och skicka inhardwareSpiSettings
. DettaSpiDevice
representerar SPI-bussen. Deklarationenusing
säkerställer att objektet tas bort och att maskinvaruresurser släpps korrekt. - En annan
using
deklaration skapar en instans avMcp3008
och skickarSpiDevice
den till konstruktorn. - En
while
loop körs på obestämd tid. Varje iteration:- Rensar konsolen.
- Läser värdet för CH0 på ADC genom att anropa
mcp.Read(0)
. - Skriver raw-värdet till konsolen.
- Skriver värdet till konsolen formaterat som procent.
- För att beräkna procentandelen divideras värdet med 10,23. MCP3008 är en 10-bitars ADC, vilket innebär att den returnerar 1024 möjliga värden mellan 0 och 1023. Att dividera värdet med 10,23 representerar värdet i procent.
- Procentandelen avrundas till närmaste 0,1.
- Väntar i 500 ms.
-
Skapa appen. Om du använder .NET CLI kör du
dotnet build
. Om du vill skapa i Visual Studio trycker du på Ctrl+Skift+B.Distribuera appen till SBC som en fristående app. Anvisningar finns i Distribuera .NET-appar till Raspberry Pi. Se till att ge den körbara filen körningsbehörighet med hjälp av
chmod +x
.Kör appen på Raspberry Pi genom att växla till mappen för distribution och köra den körbara filen.
./AdcTutorial
Observera resultatet när du vrider potentiometerratten. Detta beror på att potentiometern varierar den spänning som levereras till CH0 på ADC. ADC jämför indataspänningen på CH0 med referensspänningen som levereras till VREF för att generera ett värde.
Avsluta programmet genom att trycka på Ctrl+C.
Grattis! Du har använt SPI för att läsa värden från en analog-till-digital konverterare.
Hämta källkoden
Källan för den här handledningen är tillgänglig på GitHub.