Mengukur Sensor Analog pada Raspberry Pi Tanpa ADC Bawaan
Raspberry Pi tidak memiliki input analog bawaan, namun hal itu tidak mencegah Anda membaca sensor analog. Dengan menggabungkan beberapa resistor dan kapasitor, Anda dapat menggunakan teknik step-response sederhana untuk menentukan resistansi—ideal untuk potensiometer, fotoresistansi, termistor, dan lainnya.
Latar Belakang
Pendekatan ini, dipopulerkan oleh tutorial Adafruit dan disesuaikan dalam Raspberry Pi Cookbook, mengukur waktu yang dibutuhkan kapasitor untuk melewati ambang. Pin GPIO Raspberry Pi dapat mendeteksi saat tegangan melebihi ~1.65 V, memungkinkan Anda menyimpulkan resistansi dari resistor variabel yang terhubung.
Yang Anda Butuhkan
- Breadstandar dan kabel jumper
- 10 kΩ trimpot (potensiometer)
- 2 × resistor 1 kΩ
- 220 nF kapasitor
Kode Python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
# Pin assignments
A_PIN = 18 # Kontrol pengosongan/pengisian kapasitansi
B_PIN = 23 # Deteksi ambang tegangan
def discharge():
GPIO.setup(A_PIN, GPIO.IN)
GPIO.setup(B_PIN, GPIO.OUT)
GPIO.output(B_PIN, False)
time.sleep(0.005)
def charge_time():
GPIO.setup(B_PIN, GPIO.IN)
GPIO.setup(A_PIN, GPIO.OUT)
count = 0
GPIO.output(A_PIN, True)
while not GPIO.input(B_PIN):
count += 1
return count
def analog_read():
discharge()
return charge_time()
try:
while True:
print(analog_read())
time.sleep(1)
except KeyboardInterrupt:
GPIO.cleanup()
Menjalankan skrip menghasilkan output mirip dengan:
$ sudo python pot_step.py
101
210
101
623
435
367
728
610
512
314
317
0
Bacaan fluktuasi antara sekitar 10 dan 170 saat Anda memutar knob potensiometer, mencerminkan resistansi variabel.
Cara Kerja
Teknik ini bergantung pada kurva pengisian RC. Saat kapasitor terhubung ke resistor variabel, tegangannya naik secara eksponensial. Pin GPIO mendaftarkan logika tinggi saat tegangan kapasitor melebihi ambang input (~1.65 V). Waktu yang berlalu—dihitung dalam iterasi loop—secara langsung berkorelasi dengan resistansi: resistansi yang lebih rendah berarti pengisian lebih cepat, menghasilkan count yang lebih kecil.
Karena Pi tidak memiliki konverter analog-ke-digital, metode waktu ini mengatasi keterbatasan itu, menawarkan cara yang hemat biaya dan andal untuk membaca berbagai macam sensor analog.