ADC Arduino
Analog Digital Converter
Cara Membaca Nilai ADC Pada Arduino Uno – Analog Digital Converter (ADC) adalah salah satu proses konversi tegangan listrik menjadi nilai-nilai digital.
Fungsi dari ADC beragam dimulai dari mengukur tegangan listrik dan menampilkan ke LCD, sebagai perekam Audio, sebagai penerjemah sinyal Analog, Rotari Engkoder dan lain sebagainya.
Resolusi ADC
Presisi dari sebuah konversi ADC ditunjukkan dengan resolusi. Misalnya, ADC dengan resolusi 8-bit, dapat membagi tegangan 0-5Volt kedalam nilai 0-255. Bagaimana terjadi, perhatikan perhitungan berikut:
11111111 = (1 × 2⁷) + (1 × 2⁶) + (1 × 2⁵) + (1 × 2⁴) + (1 × 2³) + (1 × 2²) + (1 × 2¹) + (1 × 2⁰) = 255
Bila diberi tegangan 0-5volt, maka nilai tegangan tersebut akan dipecah kedalam nilai ADC dari 0-255. Semakin tinggi resolusi dari ADC, semakin akurat hasil pembacaan yang didapat.
Saat Texas Instrument telah mengeluarkan komponen ADC dengan reolusi 32-bit, artinya jika diberi tegangan 0-5volt, maka nilai tegangan tersebut akan dipecah dedalam nilai ADC dari 0 – 4.294.967.295.
Sangat akurat bukan? Bagaimana dengan arduino, berapa resolusi dari ADC nya?
Arduino memiliki ADC dengan resolusi 10-bit, artinya jika diberi tegangan 0-5V, maka nilai yang akan didapat dari ADC adalah 0-1023. Dengan kata lain, 5V/1024 adalah 0,004Volt per sampelnya.
Bagaimana cara kita membaca tegangan tersebut dan menampilkan dengan data digital? Pada tutorial akan dberi contoh membaca tegangan ADC menggunakan Potensiometer. Perhatikan pada gambar berikut:
Progam yang digunakan:
int adc = 0; //nilai awal pembacaan ADC A0
void setup()
{
Serial.begin(9600);
}
void loop()
{
adc = analogRead(A0); //baca ADC A0
Serial.println(adc); //tampilkan nilai ADC A0
}
Setelah program diatas terupload ke arduino, buka serial monitor dan silahkan putar-putar potensiometernya. Teman-teman dapat dilihat nilai sebagai berikut:
Merubah ADC Menjadi Nilai Tegangan
Sekarang, nilai ADC tersebut akan kita ubah kedalam tegangan. Agar tegangan listrik dapat lebih presisi, kita gunakan float.
Berikut adalah programnya:
void setup() {
Serial.begin(9600);
}
void loop() {
int val = analogRead(A0);
float data = mapf(val, 0, 1023, 0, 5);
Serial.print(data);
Serial.println(" V");
delay(100);
}
float mapf(float value, float fromLow, float fromHigh, float toLow, float toHigh) {
float result;
result = (value - fromLow) * (toHigh - toLow) / (fromHigh - fromLow) + toLow;
return result;
}
Semoga bermanfaat.