Integrasi Sensor Air Tinggi Sensitivitas Phantom YoYo dengan ADC MCP3008 pada Raspberry Pi
Dalam panduan ini kita melalui menghubungkan sensor air sensitivitas tinggi Phantom YoYo ke MCP3008 ADC 8-saluran 10-bit, lalu membaca data dengan Raspberry Pi 2 yang menjalankan Windows 10 IoT Core dan C#. MCP3008 mengonversi sinyal analog menjadi nilai digital 10-bit (0–1023) yang dapat diskalakan ke referensi tegangan apa pun.
Mengapa Menggunakan MCP3008?
MCP3008 adalah ADC kompak, biaya rendah dengan antarmuka SPI. Resolusi 10-bit memberikan 1024 tingkat diskrit, memungkinkan diskriminasi tegangan yang halus. Dengan referensi 3,3 V, output sensor dapat dikonversi ke tegangan menggunakan:
voltage = (reading / 1023.0) * Vref
Misalnya, pembacaan mentah 523 sesuai dengan:
523 / 1023 * 3.3 ≈ 1.687 V
Selalu ukur tegangan supply sebenarnya (misalnya, 3,301 V pada Pi saya) dan gunakan nilai tersebut untuk Vref untuk meningkatkan akurasi.
Ringkasan Hardware
- Sensor: Sensor Air Phantom YoYo – 3 pin (–, +, s). Hubungkan – ke ground Pi, + ke 3,3 V (atau 5 V), s ke saluran 1 MCP3008.
- MCP3008: 8 input saluran, pin SPI, Vref, Vdd, dan AGND. Hubungkan Vref ke 3,3 V, AGND ke ground Pi, Vdd ke 3,3 V, dan ground ke ground Pi.
- Potensiometer: Opsional – digunakan untuk mendemonstrasi konversi ADC pada saluran 0.
Diagram Penghubungan
Lihat skematika yang disertakan untuk pemetaan pin. Koneksi utama:
- MCP3008 Vref (Pin 15) → Pi 3,3 V
- MCP3008 AGND (Pin 14) → Pi GND
- MCP3008 Vdd (Pin 16) → Pi 3,3 V
- MCP3008 CH0 (Pin 1) → Output potensiometer
- MCP3008 CH1 (Pin 2) → Pin s sensor air
- Garis SPI (CS, CLK, DO, DI) → Pin SPI Pi
Pengaturan Perangkat Lunak
Tipe proyek: Universal Windows Platform. Dua gauge menampilkan:
- Tegangan mentah dari potensiometer (saluran 0).
- Tingkat air ternormalisasi (0–100) dari sensor (saluran 1).
Menginisialisasi MCP3008
private Mcp3008 _mcp3008; protected override async void OnNavigatedTo(NavigationEventArgs e) { _mcp3008 = new Mcp3008(0); // Bus SPI 0 await _mcp3008.InitializeAsync(); }
Membaca Saluran
float voltage = _mcp3008.Read(Mcp3008.Channels.Single0).AsScaledValue(3.3f);
Untuk pengukuran diferensial, ganti Single0 dengan Differential0. Buang objek saat navigasi pergi:
_mcp3008.Dispose(); _mcp3008 = null;
Kalibrasi & Pengukuran
Gunakan multimeter untuk memverifikasi tegangan potensiometer terhadap pembacaan MCP3008. Setel meter ke tegangan DC; bandingkan kedua nilai untuk memvalidasi akurasi.
Menjalankan Aplikasi
- Build dalam konfigurasi ARM, pilih Remote Machine.
- Setel alamat IP Pi di properti proyek dan nonaktifkan autentikasi.
- Tekan F5 untuk menerapkan dan meluncurkan.
Aplikasi menampilkan gauge 360° untuk tingkat air. Catatan: output sensor tidak sepenuhnya linier; nilai yang lebih tinggi berkorespondensi dengan lebih banyak air tetapi hubungan tersebut empiris. Gauge adalah untuk tujuan ilustratif.
Kode sumber dan dokumentasi tambahan tersedia pada halaman proyek.