Membaca Sensor Analog Dengan Satu Pin GPIO
Tidak seperti beberapa perangkat lain, Raspberry Pi tidak memiliki input analog. Semua 17 pin GPIO-nya adalah digital. Mereka dapat menampilkan level tinggi dan rendah atau membaca level tinggi dan rendah. Ini bagus untuk sensor yang memberikan input digital ke Pi, tetapi tidak terlalu bagus jika Anda ingin menggunakan sensor yang tidak menyediakannya.
Untuk sensor yang bertindak sebagai resistor variabel seperti LDR (Light Dependent Resistors) atau termistor (sensor suhu), ada solusi sederhana. Ini memungkinkan Anda untuk mengukur sejumlah level menggunakan satu pin GPIO. Dalam hal sensor cahaya, ini memungkinkan Anda mengukur tingkat cahaya yang berbeda.
Ini menggunakan sirkuit pengisian daya “RC” dasar (Artikel Wikipedia) yang sering digunakan sebagai pengantar elektronik. Dalam rangkaian ini Anda menempatkan Resistor secara seri dengan Kapasitor. Ketika tegangan diterapkan di seluruh komponen ini, tegangan melintasi kapasitor naik. Waktu yang diperlukan tegangan untuk mencapai 63% dari maksimum sama dengan resistansi dikalikan dengan kapasitansi. Saat menggunakan resistor Light Dependent kali ini akan sebanding dengan tingkat cahaya. Waktu ini disebut konstanta waktu :
t =RC di mana t adalah waktu, R adalah resistansi (ohm) dan C adalah kapasitansi (farad)
Jadi triknya adalah menghitung berapa lama suatu titik dalam rangkaian tersebut mencapai tegangan yang cukup besar untuk didaftarkan sebagai “Tinggi” pada pin GPIO. Tegangan ini kira-kira 2 volt, yang cukup dekat dengan 63% dari 3,3V untuk selera saya. Jadi waktu yang dibutuhkan rangkaian untuk mengubah input GPIO dari Low ke High sama dengan ‘t’.
Dengan resistor 10Kohm dan kapasitor 1uF t sama dengan 10 milidetik. Dalam gelap LDR kami mungkin memiliki hambatan 1Mohm yang akan memberikan waktu 1 detik. Anda dapat menghitung nilai lain menggunakan kalkulator konstanta waktu online.
Untuk menjamin selalu ada beberapa hambatan antara 3.3V dan pin GPIO, saya memasukkan resistor 2.2Kohm secara seri dengan LDR.
Teori
Berikut urutan acaranya :
- Tetapkan pin GPIO sebagai output dan atur Low. Ini melepaskan muatan apa pun dalam kapasitor dan memastikan bahwa kedua sisi kapasitor adalah 0V.
- Tetapkan pin GPIO sebagai input. Ini memulai aliran arus melalui resistor dan melalui kapasitor ke ground. Tegangan kapasitor mulai naik. Waktu yang dibutuhkan sebanding dengan daya tahan LDR.
- Pantau pin GPIO dan baca nilainya. Tingkatkan penghitung sementara kita menunggu.
- Pada titik tertentu tegangan kapasitor akan meningkat cukup untuk dianggap sebagai Tinggi oleh pin GPIO (kira-kira 2v). Waktu yang dibutuhkan sebanding dengan tingkat cahaya yang dilihat oleh LDR.
- Tetapkan pin GPIO sebagai output dan ulangi prosesnya sesuai kebutuhan.
Untuk detail lebih lanjut:Membaca Sensor Analog Dengan Satu Pin GPIO