Sensor Tegangan DC untuk Arduino

Tegangan (dan arus) merupakan parameter dasar dalam dunia elektro baik digital maupun analog. Tegangan ini merupakan besaran analog, jadi dalam elektro analog, tegangan dapat langsung diolah, diproses atau dikonversi dalam bentuk atau level lainnya. Sedangkan dalam dunia digital, tegangan akan dikonversi versi diskritnya dengan ADC (Analog to Digital Converter) atau jika dibalik dari digital ke tegangan analog harus menggunakan teknik DAC (Digital to Analog Converter).

[AdSense-A]

Interfacing Dunia Analog ke Arduino

Demikian juga dengan Arduino. Pada dasarnya Arduino adalah sebuah pusat kendali digital berbasis mikrokontroller AVR ATmega keluaran Intel. Arduino bekerja dalam level tegangan digital dengan range 0V untuk tegangan logika ‘0’ dan 5V untuk tegangan logika ‘1’. Semua parameter analog jika mau di-interfacing-kan dengan Arduino harus diubah ke digital menggunakan ADC. Dan sebaliknya jika ingin mengeluarkan tegangan analog dari Arduino harus menggunakan DAC (dalam Arduino menggunakan metode PWM/Pulse Width Modulation). Beruntunglah kita karena secara internal, Arduino sudah mendukung keduanya. Kita tidak perlu menambahkan IC ADC/DAC terpisah untuk melakukan interfacing dengan dunia analog.

Membaca Sensor Tegangan dengan Arduino

Sensor adalah transducer (pengubah/pendeteksi) parameter lingkungan menjadi besaran analog representasinya. Biasanya, apapun tipe sensor pasti akan dikonversi ke tegangan agar dapat diolah untuk proses selanjutnya. Demikian juga dengan Arduino. Untuk membaca sensor dengan output tegangan analog, Arduino menggunakan pin analog di A0-A5 sebagai ‘jembatan’ penghubung ke pusat kontrolnya. Pin analog A0-A5 terhubung dengan sebuah ADC dengan resolusi 10 bit yang akan menghasilkan angka digital 0 – 1023 sebagai representasi tegangan analog 0 – 5V. Sebagai ilustrasi, berikut ini adalah sampel data yang menunjukkan tegangan analog dan nilai digital yang terbaca di Arduino

Tegangan Analog Nilai yang terbaca Arduino
0 V 0
3,3 V 675
5 V 1023

Catatan : Tegangan analog yang dapat diterima pin analog Arduino maksimal adalah 5 VDC. Hati-hati, tegangan di atas batas ini akan merusak Arduino Anda.

Mengubah Tegangan DC agar ‘ramah’ terhadap Arduino

Seperti yang saya sebutkan di atas, batas maksimal tegangan analog yang dapat diterima Arduino adalah 5 VDC. Bagaimana dengan tegangan di atas 5V? Kita harus mengubahnya menjadi maksimal 5 V. Contoh: kita ingin mengukur tegangan aki yang berada pada rentang tegangan 9V – 15V. Perhatikan bahwa tegangan ini jauh di atas 5V. Oleh karena itu kita harus mengubahnya agar dapat dibaca Arduino tanpa merusaknya. Bagaimana caranya? Ternyata sangat mudah. Cukup menggunakan rangkaian pembagi tegangan yang hanya membutuhkan dua resistor saja. Begini contoh untuk case di atas.

sensor-tegangan-dc-untuk-arduino

Perhatikan titik ‘o’ di atas. Rumus tegangan di titik ‘o’ (Vo) adalah

rumus tegangan-output-sensor-pembagi-tegangan-untuk-arduino

Titik ‘o’ (Vo) di ataslah yang kemudian dihubungkan dengan pin Analog Arduino, bukan tegangan dari aki secara langsung. Agar pada saat tegangan 15V (tegangan maksimal aki) nilai di Vo ini bernilai 5V (batas tegangan yang dapat diterima Arduino) maka resistor-resistor yang digunakan adalah 2K (R1) dan 1K (R2).

Catatan : berhubung resistor yang tersedia pasaran tidak akurat nilai resistansinya (memiliki toleransi 1-5%) maka sebaiknya Anda menggunakan potensiometer/trimpot untuk R2

Dengan demikian akan di dapat tegangan output representasi dari tegangan sebenarnya (tegangan aki) menggunakan sensor tegangan di atas. Jika kita buat tabelnya, hasilnya adalah sebagai berikut:

Tegangan aki Tegangan output sensor (pembagi tegangan)
0 V 0 V
9 V 3 V
15 V 5 V

Bagaimana sisi Arduino membacanya? Sesuai dengan tabel pertama, tegangan dari titik ‘o’ di atas (Vo) akan dikonversi ADC internal Arduino dengan resolusi 10 bit. Sebagai gambaran, saya catat di tabel di bawah, mulai dari tegangan aki (tegangan sebenarnya yang akan diukur), tegangan output sensor tegangan (rangkaian pembagi tegangan), dan nilai digital yang terbaca di Arduino

Tegangan aki Tegangan output sensor (pembagi tegangan) Nilai yang terbaca Arduino
0 V 0 V 0
9 V 3 V 613
15 V 5 V 1023

Di sisi Arduino Anda harus menambahkan script yang digunakan untuk membaca tegangan analog di pin analog yang tehubung dengan sensor. Katakanlah sensor tegangan analog (rangkaian pembagi tegangan) di atas terhubung ke pin A0 Arduino, maka script yang harus digunakan adalah

int sensor = analogRead(A0);

Dengan demikian, nilai digital representasi sensor akan disimpan sementara di variabel ‘sensor’ bertipe integer di atas. Bagaimana mendapatkan nilai tegangan aki yang sebenarnya? Anda tinggal bagi saja variabel ‘sensor’ ini dengan angka 68,2. Angka ini didapat dengan membagi 1023 (angka maksimal nilai digital yang terbaca Arduino) dengan 15 (angka maksimal tegangan yang diukur/tegangan aki).

float tegangan_aki = sensor / 68.2;

Berikutnya variabel ‘tegangan_aki’ di atas dapat Anda proses ke tampilan display, entah menggunakan seven segment, LCD atau yang lain.

Demikian sedikit tutorial cara mengukur tegangan analog di Arduino, semoga dapat bermanfaat. Jika ada pertanyaan silahkan tulis komentar di bawah

[AdSense-A]

5 2 votes
Article Rating

Leave a Reply to Saptaji, ST. M.Tr.T Cancel reply

30 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Dani Sumarna

Mas Aji,bagus artikelnya saya jadi tertarik untuk bertanya ini mas,gimana klu kita mau buat tengangan input max sebesar 53vdc, dan tegangan input min 44vdc dengan indicator klu tegangan input max terbaca maka lampu LED akan mati, apabila tegangan input min terbaca maka lampu LED akan hidup. terima kasih mas ajie

Ahmad

Dear author,

Saya ingin membuat project monitoring backup power dengan rangkaian PLN–> UPS –> baterai –> arduino project. Kondisi : ketika PLN on, baterai charging. Ketika PLN off tidak charging. Bagaimana arduino membaca ketika posisi charging/tidak? Rencana mau saya kombinasikan dengan ethernet Shield untuk remot jarak jauh.

Thanks before.

maris

mau nanya ni mas itu di catatan dibilang : gunakan potensio meter atau pot meter sebagai r2 . ini maksudnya gak usah pakai resistornya lagi ya? jadi rangkaiannya
Aki -> pot (r2) -> resistor(1k) -> arduino gitu ya mas?
trus kira2 itu pot yang gimana ya ada contoh gambarnya?
trus satu lagi , kalau mau buat spt powerbank yang digitalnya ngukur berapa % sisa baterainya itu gimana ya scriptnya? terimakasih artikelnya sangat membantu 🙂

Rio valensi

Mas mau tanya kalo buat sensor tegangan untuk 110V DC biar bisa dibaca oleh arduino gimana ya .? Kalo jual sensor tegangan 24vdc ada tpi 110v gak ada saya cari Kalau 110v dc gmna mas ya buatnya?

Pramudya

mas itu yg sensor tegangan aki = sensor * 68.2
sepertinya dibagi mas bukan dikali

coba dicek lagi mas.

Irwan

Kalau mengukur 2 tegangan berbeda dalam 1 arduino bagaimana caranya ?

Budi

Klo inputnya frekuensi digital….trs pengin dpt output frekuensi analog …caranya gimana mas

Diana

Mas.. kalau sensor itu kan vcc nya dari pwer suppy adaptor.. cara nyambungin 10 sensor ke powes supply itu gmn caranya mas ?

Diana

Pak. Apakah bapak tau spek sensor cahaya yang baik yang digunakan untuk pembangkit listdik tenaga surya. ?

maranatha barus

sangat bagus sekali mas, kalu untuk mengukur arus dan tegangan bisa ga mas dengan metode pembagi arus dan tegangan ? kalau bisa, tolong dijelaskan disini bisa kira2 mas, karena saya sangat butuh untuk keperluan PA saya mas, terimakasih mas 🙂

Sanggi Pigantara

Berapa tegangan terkecil yang bisa dibaca modul ini?

Melchior

Mas Ajie,bagus artikelnya saya jadi tertarik untuk bertanya….
gini mas gimana kalau kita mau membuat sebuat sistem charger aki lead acid automatic menggunakan Arduino uno,voltage sensor dan MOSFET…..
Sistem ini digunakan di photovoltaic(stand-alone)….

prinsip kerja
jika aki kosong ( 40%-0%) maka sensor mengdetksi dan pada saat itu juga MOSFET on
dalam 45%- 95% masi dalam proses charge dan pada titik 100% sensor mendeteksi dan MOSFET OFF.

Masalahnya gimana dengan program arduino bisa bekerja sesuai rencana…????

Arif

Rinci mas, tapi enggak ada gambaran rabgkaiannya kah

Melchior

Terima kasih Buat Tutorialnya…
Sangat membantub

anton wijanarko

mau tanya : saya membuat kode ini : float Volt1; float Volt; Volt1 = analogRead (A0); Volt = ((Volt1 * 0.00489)*5); Serial.print (“Voltage: “); delay (1); if (Volt >=2.40) { digitalWrite (relay1A, LOW); digitalWrite (relay1B. HIGH); } else { digitalWrite (relay1B, LOW); digitalWrite (relay1A, HIGH); } codding bisa ini berjalan tapi tidak sesuai harapan akibat pembacaan voltage sensornya naik turun. yang saya harapkan adalah,, jika pembacaan sudah masuk pertama kali menunjukkan angka 2.40, dia langsung bekerja dan tidak membaca lagi. istilahnya yang saya inginkan adalah membaca 1 kali.. saya sudah nulis di Void loop, tapi selalu error. mungkin ada codding… Read more »

30
0
Would love your thoughts, please comment.x
()
x