Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Konverter analog-ke-digital (ADC) adalah perangkat yang dapat membaca nilai tegangan input analog dan mengonversinya menjadi nilai digital. ADC digunakan untuk membaca nilai dari termistor, potentiometer, dan perangkat lain yang mengubah ketahanan berdasarkan kondisi tertentu.
Dalam topik ini, Anda akan menggunakan .NET untuk membaca nilai dari ADC saat Anda memodulasi tegangan input dengan potentiometer.
Prasyarat
- Komputer papan tunggal berbasis ARM (ARMv7 atau lebih besar) (SBC)
- MCP3008 konverter analog-ke-digital
- Three-pin potentiometer
- Breadboard
- Jumper wires
- Papan ekstensi GPIO Raspberry Pi (opsional/dianjurkan)
- .NET SDK 8 atau yang lebih baru
Nota
Tutorial ini ditulis dengan asumsi perangkat target adalah Raspberry Pi. Namun, tutorial ini dapat digunakan untuk SBC berbasis Linux apa pun yang mendukung .NET, seperti Orange Pi, ODROID, dan banyak lagi.
Prepare the SBC
Pastikan SBC Anda dikonfigurasi untuk mendukung layanan berikut:
- SSH
- SPI
Untuk banyak perangkat, tidak diperlukan konfigurasi tambahan. Untuk Raspberry Pi, gunakan raspi-config
perintah . Untuk informasi selengkapnya tentang raspi-config
, lihat dokumentasi Raspberry Pi.
Menyiapkan perangkat keras
Gunakan komponen perangkat keras untuk membangun sirkuit seperti yang digambarkan dalam diagram berikut:
MCP3008 menggunakan Serial Peripheral Interface (SPI) untuk berkomunikasi. Berikut ini adalah koneksi dari MCP3008 ke Raspberry Pi dan potentiometer:
- VDD ke 3.3V (ditampilkan dalam warna merah)
- V REF ke 3.3V (merah)
- AGND to ground (black)
- CLK ke SCLK (oranye)
- DOUT to MISO (orange)
- DIN ke MOSI (oranye)
- CS/SHDN ke CE0 (hijau)
- DGND to ground (black)
- CH0 to variable (middle) pin on potentiometer (yellow)
Supply 3.3V and ground to the outer pins on the potentiometer. Urutan tidak penting.
Refer to the following pinout diagrams as needed:
MCP3008 | Raspberry Pi GPIO |
---|---|
![]() |
![]() Gambar atas izin Raspberry Pi Foundation. |
Petunjuk / Saran
A GPIO breakout board in conjunction with a breadboard is recommended to streamline connections to the GPIO header.
Membuat aplikasi
Selesaikan langkah-langkah berikut di lingkungan pengembangan pilihan Anda:
Buat Aplikasi Konsol .NET baru menggunakan .NET CLI atau Visual Studio. Beri nama AdcTutorial.
dotnet new console -o AdcTutorial cd AdcTutorial
Tambahkan paket Iot.Device.Bindings ke proyek. Gunakan .NET CLI dari direktori proyek atau Visual Studio.
dotnet add package Iot.Device.Bindings --version 3.2.0-*
Ganti konten Program.cs dengan kode berikut:
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); }
Dalam kode sebelumnya:
-
hardwareSpiSettings
is set to a new instance ofSpiConnectionSettings
. Konstruktor mengaturbusId
parameter ke 0 danchipSelectLine
parameter ke 0. - A using declaration creates an instance of
SpiDevice
by callingSpiDevice.Create
and passing inhardwareSpiSettings
. IniSpiDevice
mewakili bus SPI. Theusing
declaration ensures the object is disposed and hardware resources are released properly. - Deklarasi lain
using
membuat instansMcp3008
dan meneruskanSpiDevice
ke konstruktor. - Perulangan
while
berlangsung tanpa batas waktu. Setiap perulangan:- Menghapus konsol.
- Membaca nilai CH0 pada ADC dengan memanggil
mcp.Read(0)
. - Menulis nilai mentah ke konsol.
- Menulis nilai ke konsol yang diformat sebagai persentase.
- Untuk menghitung persentase, nilai dibagi 10,23. MCP3008 adalah ADC 10-bit, yang berarti mengembalikan nilai 1024 yang mungkin berkisar 0-1023. Membagi nilai dengan 10,23 mewakili nilai sebagai persentase.
- Persentase dibulatkan ke 0,1 terdekat.
- Sleeps 500 ms.
-
Buat aplikasi. Jika menggunakan .NET CLI, jalankan
dotnet build
. Untuk membuat di Visual Studio, tekan Ctrl+Shift+B.Sebarkan aplikasi ke SBC sebagai aplikasi mandiri. Untuk petunjuknya, lihat Menyebarkan aplikasi .NET ke Raspberry Pi. Make sure to give the executable execute permission using
chmod +x
.Jalankan aplikasi pada Raspberry Pi dengan beralih ke direktori penyebaran dan jalankan executable.
./AdcTutorial
Amati output saat Anda memutar kenop potentiometer. This is due to the potentiometer varying the voltage supplied to CH0 on the ADC. ADC membandingkan tegangan input pada CH0 dengan tegangan referensi yang disediakan ke VREF untuk menghasilkan nilai.
Hentikan program dengan menekan Ctrl+C.
Selamat! Anda telah menggunakan SPI untuk membaca nilai dari konverter analog-ke-digital.
Dapatkan kode sumber
Sumber untuk tutorial ini tersedia di GitHub.