Tutorial Arduino Indonesia kali ini membahas mengenai bagaimana cara menghitung nilai pembacaan ADC yang berasal dari suatu sensor analog.
Microcontroller memiliki kemampuan untuk menerima, mengolah, dan memberikan output signal digital. Sebagai contoh bila microcontroller dengan catu daya 5 volt, microcontroller tersebut dapat mengenali tegangan sebesar 0 volt sebagai signal digital low, atau tegangan 5 volt sebagai signal digital high. Sedangkan untuk mengenali nilai tegangan antara 0 volt hingga 5 volt, diperlukan feature khusus, yakni Analog-to-Digital Converter. Analog-to-Digital Converter atau biasa disebut ADC, memungkinkan microcontroller untuk mengenali suatu nilai analog melalui suatu pendekatan digital. Saat ini banyak microcontroller, termasuk Arduino telah dilengkapi dengan feature ADC yang terintegrasi di dalamnya.
Tapi tidak semua pin Arduino dapat digunakan untuk mengolah signal analog. Pada board Arduino Uno, terdapat enam pin analog, yakni mulai dari A0 hingga A5. Huruf A pada awal nama pin Arduino menandakan pin tersebut dapat digunakan untuk mengolah signal analog. Seberapa tepat nilai signal analog yang dipetakan secara digital, ditentukan oleh seberapa besar resolusi ADC. Semakin besar resolusi ADC, maka semakin mendekati nilai analog dari signal tersebut. Untuk resolusi ADC pada board Arduino Uno ialah 10 bit, yang berarti mampu memetakan hingga 1024 discrete analog level. Beberapa jenis microcontroller lain memiliki resolusi 8 bit, 256 discrete analog level, bahkan ada yang memiliki resolusi 16 bit, 65536 discrete analog level.
Kaitan Nilai ADC dengan Tegangan
Nilai ADC menunjukkan ratio perbandingan dengan tegangan yang terbaca. Berikut persamaannya ialah nilai ADC terukur ialah nilai ADC maximum dikalikan tegangan terbaca, kemudian dibagi dengan nilai tegangan sumber.
Nilai ADC tergantung dengan tegangan yang menjadi catu daya sistem microcontroller. Untuk board Arduino biasa menggunakan sumber tegangan 5 volt. Berikut adalah cara mencari nilai ADC, dengan menerapkan persamaan yang ada dan tegangan terbaca sebesar 2,12 volt pada board Arduino Uno.
- Board Arduino Uno memiliki resolusi 10 bit, dengan nilai terbesar 1023
- Tegangan sumber 5 volt dan tegangan terbaca ialah 2,12 volt
- Nilai ADC terukur ialah nilai ADC maximum dikalikan tegangan terbaca, kemudian dibagi dengan nilai tegangan sumber
- Sehingga diperoleh nilai ADC sebesar 434
Selain dipengaruhi oleh besarnya nilai resolusi ADC, tepat tidaknya pengukuran nilai ADC juga dipengaruhi oleh clock speed ADC tersebut. Untuk board Arduino Uno sendiri clock speed ADC maximum yang disarankan ialah 200 kHz. Nilai clock speed 200 kHz tersebut berdasarkan spesifikasi internal DAC (Digital to Analog Converter) pada rangkaian pengubahnya. Meski demikian, penggunaan clock speed pada 1 MHz mesalnya, tidak mengurangi kualitas resolusi ADC tersebut.
Sketch Membaca ADC
Tutorial project DIY (Do It Yourself) sederhana untuk belajar membaca nilai ADC dapat dilakukan dengan menggunakan potentiometer. Potentiometer bekerja dengan prinsip pembagi tegangan, dimana terdapat kaki untuk sumber tegangan dihubungkan ke Vcc 5 volt Arduino, ground dihubungkan ke ground Arduino, dan data tegangan dihubungkan ke pin analog A3 Arduino.
Berikut ini adalah sedikit tutorial source code (sketch) untuk membaca nilai ADC pada board Arduino Uno dan menampilkannya melalui jalur serial, dan dapat diamati menggunakan Serial Monitor yang ada pada Arduino IDE.
/*
Program membaca nilai ADC
dengan serial
Loki Lang
*/
int analogPin = A3;
int lang = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
lang = analogRead(analogPin);
delay(100);
Serial.println(lang);
}
Program membaca nilai ADC
dengan serial
Loki Lang
*/
int analogPin = A3;
int lang = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
lang = analogRead(analogPin);
delay(100);
Serial.println(lang);
}
Berikut ini adalah penjelasan untuk source code (sketch) program tersebut.
- Untuk pin analog yang digunakan ialah A3, yang terhubung dengan data analog dari potentiometer
- Untuk variable lang dengan (jenis data integer) digunakan untuk menyimpan nilai pembacaan ADC sebelum ditampilkan, dan diberikan nilai awal 0
- Proses inisialisasi setup dengan menentukan baud rate yang digunakan untuk jalur serial, yakni 9600
- Untuk program utama berisi function analogRead() yang digunakan untuk membaca nilai ADC pada analogPin, yakni pin Arduino A3
- Pemberian delay() ditujukan agar pembacaan nilai ADC stabil
- Baris program selanjutnya untuk menampilkan data nilai ADC pada serial monitor
Bila ada sesuatu yang belum jelas dan ingin tahu lebih dalam seputar project Arduino, pemrograman, dan elektronika, bisa bertanya pada bagian comment atau melalui page Facebook berikut.