Membaca tegangan analog dengan Arduino


Tulisan kali ini akan membahas tentang pembacaan tegangan analog yang masuk pada pin analog Arduino. Tegangan yang masuk dikonversi terlebih dahulu menjadi data digital. Arduino yang saya gunakan adalah Arduino UNO. Pin analog Arduino dapat menerima nilai hingga 10 bit sehingga dapat mengkonversi data analog menjadi 1024 keadaan (2^10= 1024). Artinya nilai 0 merepresentasikan tegangan 0 volt dan nilai 1023 merepresentasikan tegangan 5 volt. Mengapa 1023? Bukannya 1024? Hati-hati, disini dimulai dari angka 0 bukan angka 1, sehingga nilai terbesar adalah 1023. Data yang sebelumnya analog dikonversi menjadi data digital. Proses konversi dari nilai analog menjadi digital ini disebut proses ADC (Analog to Digital Conversion). Bagaimana jika tegangan 5 volt dikonversi menjadi data digital 10 bit? Mari kita hitung

konversi ADC 10 bit

Artinya setiap 1 angka desimal mewakili tegangan sebesar 0,004887585 volt. Berapa besar tegangan yang diwakili angka 512?

konversi nilai digital

Oke sekarang mari kita langsung saja menuju ke program Arduino-nya. Tulis program seperti dibawah ini:

/*

Membaca tegangan analog ReadAnalogVoltage

Membaca input analog pada pin 0 kemudian mengonversi menjadi data digital, dan ditampilkan pada serial monitor atau hyperterminal.

Pin tengah potensiometer terhubung dengan pin A0, pin yang lainnya terhubung dengan +5 dan ground.

*/

void setup() {

// komunikasi serial 9600 bit per sekon:

Serial.begin(9600);

}

void loop() {

// baca input analog pada pin A0:

int NilaiSensor = analogRead(A0);

// Konversi NilaiSensor (dari 0 – 1023) menjadi tegangan (0 – 5V):

float Tegangan = NilaiSensor * (5.0 / 1023.0);

// Menampilkan hasil:

Serial.println(Tegangan);

}

Setelah programnya selesai ditulis, sekarang upload, dan putar potensiometernya. Saya menampilkan hasil dengan hyperterminal seperti dibawah ini

potensio serial hyperterm

Jika tidak memiliki hyperterminal hasilnya dapat ditampilkan dengan fasilitas serial monitor pada menu tools yang ada di software Arduino-nya.

178 thoughts on “Membaca tegangan analog dengan Arduino

  1. Misi gan, dari beberapa penjelasan agan di atas,, saya ingin tau gimana cara nya buat grafik dan cari persamaan grafik t gimana ? mohon bimbingan nya gan….

  2. halo mas riski, mau nanya.
    kalo mau konversi tegangan ke PPM gimana ya, tapi alat untuk mengukur PPM nya ga ada. bisa ga di koneversikan kalo dari lihat datasheet nya masing-masing? caranya gimana mas. saya make sensor MQ 131, MQ7, MG811 dan MQ 136.
    Terimakasih mas

    1. Halo mas
      Di datasheet ada data tentang hubungan keluaran sensor dengan konsentrasi zat yang diukur nggak? Kalau ada dan yakin tentang nilai di datasheet itu, mungkin bisa. Tapi saya tidak menyarankan untuk melakukan hal itu. Dalam merancang alat, mas pasti punya rancangan sistem elektronik sendiri mulai dari penguatan dan lainnya, sehingga menurut saya, alat yang mas buat punya karakter sendiri dan punya persamaan konversi sendiri. Jadi kalau saya pribadi tetap akan membandingkan dengan alat ukur standar untuk menilai kebenaran konsenttrasi yang diukur. Bandingkan keluaran nilai keluaran sensor dan nilai PPM alat yang sudah standar. Semoga menjawab pertanyaannya mas

      1. gini mas, penelitian saya itu mau buat alat pendeteksi polusi udara menggunakan sensor MQ 131, MQ7, MG811 dan MQ 136 yang di pasang di arduino. kalo hasil bacaan awal sensor kan nilainya masih berupa nilai ADC ? sementara untuk sensor itu, satuan outputnya berupa PPM (part per milion). saya mengalami kesulitan untuk mengubah nilai tegangan ke PPM karena keterbatasan referensi.
        untuk data sheet masing-masing sensor ada, dan range sensivitas sensor juga ada. misalnya untuk MQ 7 dia dapat mengukur tingkat gas CO itu antara 20 ppm – 2000 ppm. saya berharap mas riski bisa membantu masalah saya. ataupun jika mas punya referensi, saya akan sangat senang untuk mempelajarinya.
        terimakasih mas

      2. Begini mas, untuk mengubah nilai ADC mas harus punya alat standar sebagai pembanding untuk mengukur konsentrasi. Prosesnya seperti ini,
        Nilai ADC ————————— PPM alat ukur standar
        100———————————- 20 PPM
        150———————————- 30 PPM
        200———————————- 40 PPM
        250———————————- 50 PPM
        dan seterusnya.

        Selanjutnya, buat grafik dengan sumbu X adalah nilai ADC dan sumbu Y adalah nilai PPM. Dari grafik itu, tarik garis regresinya mas, dan nanti ada persamaannya. Persamaan tersebut yang digunakan untuk konversi nilai ADC ke PPM. Misal persamaannya y=20x+10. Nah, x disini adalah nilai ADC dan y adalah nilai PPM. Jadi misal mas dapat nilai ADC 10, maka nilai PPM adalah 210. Semoga sedikit membantu mas

    1. Untuk pertanyaan yang ini sudah pernah ditanyakan mas. Jawaban saya ada di atas. Nanti mas tinggal ubah satuannya saja dalam bentuk persen. Tetapi tentunya harus ada alat standar sebagai pembanding.

      1. Halo mas mau nanya, untuk jawaban dari yang MQ-3 ada dimana ya mas? soalnya saya cari ga ada. Trs kalo pake yang volt hasilnya berbeda. makasih sblumya

  3. permisi mohon bantuannya, saya menggunakan arduiono dengan e-health untuk mencari bpm dengan sensor ecg. hasil nilai sensor cg memiliki satuan V, bagaimana cara menggubah akar nilai tersebut satuannya menjadi bit ? terim kasih atas informasinya

  4. Saya mau nanya mas, kalau dari nilai tegangan yang terbaca itu mau kita rubah ke derajat arah (0 sampai 360 deraiat) gimana yah mas?

  5. terimaksih mas, saya mau tanya, saya kan ingin memasukkan output dari fotodioda ke arduino dan tegangn keluaran fotodioda itu juga saya ukur dengan multimeter, kalau tegangannya makin besar, ADC makin kecil.. sesuai itu mas?

  6. Mas Rizki,

    mau Tanya untuk rumus sensor suara (ADC) ke Decibel dan di tampilkan ke LCD?
    mungkin ada literature,

    ini yang saya dapat dari browsing
    double db = (20. * log(10)) * (sensorValue / 5.);
    tapi masih kurang akurat?

    tks

    1. Maaf mas, sensor yang digunakan sensor apa? Kalau menurut saya harus dibandingkan dengan alat standar mas. Jadi mas mencatat nilai ADCnya dan nilai pembacaan pada alat standar. Misal
      ADC Alat standar
      50 50 dB
      100 75 dB
      150 85 dB
      … …

      Begitu seterusnya. Nanti mas buat grafik sumbu x ADC sumbu y intensitas. Dari situ tarik garis regresinya mas, nah persamaan regresi itu yang dapat digunakan untuk konversi nilai ADC jadi dB. Semoga membantu

      1. Mas mau tanya, kalau sensor saya piezoelectric(sebagai input) dan untuk rentangnya dari 0v-1.5v . apakah bisa membaca tegangan adc sesuai yang ada di blog ini?
        trims

      2. Berdasarkan pengalaman mas, mayoritas alat yang standar dan tersertifikasi itu sudah tertutup. Jadi penggunanya tidak bisa ambil data nilai ADC nya karena harus akses ke mikrokontrolernya. Tapi kalau untuk orang-orang yang niat, ‘penggila’ hardware atau elektronik bisa saja mereka ngoprek untuk routing (cari track pcbnya), cari komponennya masing-masing, dan baca datasheetnya kemudian ‘nguping’ sinyal yang masuk ke ADC. Jadi intinya, sepengetahuan saya, nilai ADC dari suatu alat yang standar sulit untuk diakses oleh pengguna.

  7. mau nanya mas, bisa tidak kalau yang tegangan yang diukur itu nilainya mili volt trus caranya agar nilai tesebut bisa dikirimkan ke handphone dengan module gsm seperti apa/bagaimana??

    1. Rentang tegangan yang dibaca berapa mas? Kenapa tidak diperkuat dengan amplifier? Saran saya tegangan orde milivolt perkuat dulu dengan amplifier hingga rentang 0-5V setelah itu kirimkan dengan modul gsm.

    1. Rumus itu ditulis sendiri. Ingat massa jenis dari seuatu benda yang merupakan hasil bagi antara massa dengan volumenya rho = massa/volume. Setiap benda memiliki massa jenis sendiri. Bagaimana mengetahui massa jenis suatu benda? Bisa cari diinternet karena itu sebuah tetapan.

  8. Punten mas mau tanya, kalo hasil programnya ditampilkan lewat LCD kira2 kodingannya jadi seperti apa ya mas ?

    makasih

  9. Permisi gan mau nanya..
    Gimana cara mengkonversi tegangan output yang dihasilkan slider potensiometer menjadi mm ?
    nuhun

    1. Untuk konversi berarti harus ada persamaan (rumus). Untuk mendapatkan persamaannya, mas harus melakukan pengukuran. Kemudian buat grafik dari dara yang didapatkan. Saya beri contoh

      Pergeseran—————–tegangan
      1 mm———————–>10 mV
      2 mm———————–>20 mv
      3 mm———————–>30 mv
      4 mm———————–>40 mV
      dst

      Dari data yang didapatkan, mas harus buat grafik. Sumbu X adalah tegangan keluaran, sumbu y adalah pergeseran. Setelah itu tarik garis regresi dan lihat persamaannya. Persamaan itu yang digunakan untuk konversi dari tegangan menjadi mm. Buat saja grafik di excel, cukup mudah kok. Semoga membantu

    1. Sensor suara V2? Keluaran sensor tersebut adalah tegangan analog. Untuk mengubah menjadi dB, anda harus punya alat pembanding misalnya pengukur intesitas suara yang sudah standar. Ukur keluaran sensor pada berbagai taraf intensitas, buat grafik, tarik garis regresi, dan persamaan garis regresi tersebut yang digunakan untuk konversi. Mas bisa baca komentar yang sudah ada di tulisan ini mas. Caranya sama kok

  10. gan, boleh nanya saya ada penelitian tentang wsn, saya mau nanya: bagaimana cara menghitung berapa daya pada saat transmisi antar node 1 ke node 2 untuk menghitung lifetime baterai pada node sensor. mohon bantuannya gan!

    1. Cara konversi untuk sensor tersebut sudah ada di datasheetnya. Keluaran sensor tersebut berupa tegangan analog yang sebanding dengan perbedaan tekanan pada kedua inputnya. Tinggal dibaca saja berapa tegangannya kemudian dikalikan nilai sensitivity nya

  11. Gan, ane mau tanya. Kalau inputnya adalah tegangan sinus AC 4Vpp apakah untuk konversi ke 10 bit juga sama caranya?

      1. Kan ini ane lagi bikin tapis digital gan. Untuk masukannya kan sama cara konversi ke 10 bit. Nah kalo untuk keluarannya apakah harus dikonversi lagi jadi analog? Kalau iya berarti harus dikali 1023/5 kah? Keluaranya mau ditampilkan ke osiloskop.

      2. Kalau tampilannya mau ke osiloskop bagi saya nggak perlu dikonversi jadi tegangan. Konversi itu kan hanya untuk tampilan saja misal LCD atau serial monitor. Kalau ditampilkan diosiloskop ya langsung saja baca di pin keluaran

  12. Permisi mas rizki, saya mau tanya mengenai perhitungan PPM,saya baca dari beberapa komentar yang dimaksud mereka mungkin bagaimana cara mendapatkan kok bisa gas tersebut dikatakan 1 ppm,2ppm,3ppm. Apa memang harus menggunakan alat aslinya? tidak ada cara alternatif lain?
    Terima Kasih

    1. Iya mas saya paham. Sejauh yang saya tau kita butuh alat standar untuk konversi ke PPM. Kalau kita tidak punya alat ukur yang standar, lalu apa acuan kita? Jadi hasil bacaan alat kita harus dibandingkan dengan hasil bacaan alat standar. Dari situ kita bisa membuat grafik dan memperoleh persamaannya

  13. Mas, mau tanya, klo tujuan kita hanya utk menDETEKSI keberadaan gas saja, apakah alat rakitan kita perlu di kalibrasi/koreksi dg alat ukur standar? Karena di datasheetnya sensor gas kan udah ada keterangan rentang ppm yg bisa disense oleh sensor. Nah, apakah sama antara alat deteksi dengan alat ukur? Menurut saya BEDA, klo alat ukur tujuannya utk mengukur jd wajib dikalibrasi /dibandingkan dg alat standar, klo hanya sebagai alat deteksi ya tinggal menerapkan/melihat bacaan tegangan keluaran yg mas jelaskn disini. Terimakasih, mohon pencerahannya.

    1. Menurut saya kalau hanya mendeteksi kita tidak perlu mengetahui berapa ppm gas nya. Asal ada gas, sensor mendeteksi, alarm bunyi sudah beres. Tapi kalau mau mengukur ya bagi saya harus ada pembandingnya.

  14. Mas mau tanya bagaimana ya merubah arus dari rpm sepeda motor untuk bisa dibaca ke arduino? Saya punya rpm digital supaya bisa di baca di arduino dan digunakan sebagai swicth on/off pada rpm atau putaran tertentu harus bagaimana mas? Thanks

  15. Halo Mas Rizki, saya mau tanya mas, saya mau membuat alat pengukuran intenstas cahaya dengan sensor fotodioda, nah saya sudah mendapatkan nilai tegangan keluaran dari sensornya saat dikenai cahaya, bagaimana yaa cara mengkonversi nilai tegangan keluaran tersebut menjadi satuan nilai photonic unit seperti candela atau lux atau lumens? karena sudah saya cari2, saya belum menemukan rumus hubungan antara tegangan keluaran fotodioda dengan lux stsu candela atau lumen.
    i would really appreciate it your respon mas.

    1. Halo, terima kasih sudah baca blog saya.
      Cara konversi ini sebenarnya sudah banyak ditanyakan pembaca sebelumnya. Butuh alat ukur yang standar sebagai alat bantu konversi. Pertama intensitas cahaya diukur dengan luxmeter, kemudian diukur dengan alat buatan anda. Variasikan intensitas cahaya dan ukur dengan luxmeter standar kemudian ukur berapa tegangan tiap intensitas yang digunakan. Misalnya

      Luxmeter || Hasil pembacaan alat
      1 lux || 1.5 V
      2 lux || 2.7 V
      3 lux || 2.8 V
      4 lux || 3.31 V
      dst || dst

      Kemudian buat plot hasil tegangan keluaran alat terhadap intensitas cahaya. Sumbu X adalah tegangan keluaran alat dan sumbu Y adalah intensitas cahaya. Selanjutnya amati grafiknya, cari daerah linearnya. Tarik garis regresi linear pada daerah itu. Persamaan garis regresi itu yang dapat digunakan untuk konversi tegangan menjadi intensitas cahaya.

      Setiap fotodioda punya responnya sendiri terhadap cahaya, jadi beda dioda beda respon. Setahu saya, keluaran fotodioda adalah arus listrik, sehingga ada tekniknya untuk mengubahnya menjadi tegangan. Saya rasa tidak akan ada rumus yang spesifik untuk konversi intensitas cahaya menjadi tegangan. Itu bergantung desain alatnya juga

  16. oh iyaa mas, mau tanya juga, apakah ada cara untuk meningkatkan resolusi analogRead (10 bit) dari arduino uno menjadi lebih tinggi lagi?

Leave a comment