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. Maaf boleh bartanya???
    Tegangan yang anda gunakan sebagai referensi adalah 5 Volt….bagaimana jika suatu sensor mengeluarkan output tegangan sampai 12 Volt…..apakah ada pengaturan tegangan referensi pada arduino???
    Terima kasih

      1. Maksudnya untuk membaca keluaran sensor yang lebih dari 5 Volt bagaimana???
        Contoh nyata misalnya di industri pertambangan atau oil…..sensor2 utk instrumentasi mereka bisa mencapai tegangan besar…..nah bagaimana arduino membacanya……
        Ada 1 kasus yg pernah saya tangani….ini merupakan aplikasi sederhana yaitu pembacaan sensor LM35 (suhu)…saat di gunakan adc 0804 tidak bisa dilakukan konversi tegangan secara langsung karena perbedaan tingkat kenaikan antara ADC 0804 dengan LM35….
        Nah kembali ke pertanyaan awal….bagaimana jika terdapat pembacaan output suatu benda misal sensor tapi keluarannya bukan range 0 s/d 5 Volt…..
        Terima kasih

      2. Kalau lebih dari 5 volt mungkin bisa pake pembagi tegangan, tapi range tegangan sensornya harus diketahui jelas untuk menentukan nilai resistornya. Saya sebelumnya belum pernah tau sensor yang outputnya segede itu makanya tadi agak kaget hehehe. Kalo lm35 mau masuk 0804 lewat op amp dulu agar level tegangannya dapat dibaca 0804. Pengalaman saya sih demikian

  2. Mas Prastio…..pertanyaan saya belum di jawab…..
    Truz boleh tanya 1 lg…..bagaimana membaca tegangan, arus dan resistansi (resistor) utk rangkaian sederhana saja….seperti praktikum, tapi ga pake multimeter…..pake arduino.
    Jadi di input Analog A0 utk baca tegangan, input A1 untuk baca nilai tahanan resistor….nah klo arusnya khan bisa di cari dengan rumus I = V/A…..
    Mohon konfirmasi dari mas Pras….Terima kasih

      1. Loh kok belum dijawab? Kalau lebih dari 5 volt bisa pake rangkaian resistor pembagi tegangan.
        Kalau baca nilai resistor ini jelas agak mbulet bin rumit soalnya saya ngetik dari hp yang ukurannya kecil nih hehehe
        Gini mas, untuk baca resistor itu sebenarnya yang dibaca adalah arus dan tegangannya. Kemudia tegangan dibagi arus ketemu R nya. Nah itu yang sebenernya cara kerja Ohmmeter. Multimeter kan didalamnya ada prosesornya juga. Nanti kalau sudah sempat buka laptop saya gambarkan ya mas hehehe

    1. kodenya sama saja, cuman nambah bagian
      int NilaiSensor = analogRead(A0);
      int NilaiSensor2 = analogRead(A1);
      int NilaiSensor3 = analogRead(A2);
      dan seterusnya.

    1. PPM= Part Per Million? Masnya mau ukur apa? Kalo mau mengonversi dari nilai tegangan ke ppm ya berdasarkan data percobaan. Mas kan dapat data terus dapat persamaannya nah itu yang dimasukin ke listing programnya mikrokontrolernya

  3. Saya ada project TUGAS AKHIR mas , bkin alat ukur kadar CO dan HC pada kendaraan . Ini code saya mas , saya pake sensor MQ7(co) dan MQ 4(Hc) , untuk mengukur nilai CO dan HC ,

    int MQ7_Value = analogRead(MQ7_analogPin);
    int MQ4_Value = analogRead(MQ4_analogPin);

    float data1 = MQ7_Value * (5.0 / 1023.0);
    float data2 = MQ4_Value * (5.0 / 1023.0);

    setelah saya dapat nilai tegangan itu , saya bingung mas , gimana cara konversi nilai tegangannya jadi PPM (part/million) ?
    misal’kn hasilnya
    nilai CO: 2.25
    nilai HC: 2.26

    ada solusinya mas ? tolong di bantu mas ?

    1. Untuk mengkonversi nilai tegangan ke PPM, mas harus punya persamaannya. Misal mas sudah mengetahui konsentrasi gas katakanlah 1 PPM, nah pada konsentrasi ini mas ukur berapa tegangannya. Kalau 2 PPM diukur lagi tegangannya dan seterusnya. Kemudian, dari data itu tadi mas buat grafik tegangan terhadap konsentrasi gas (Sumbu x konsentrasi, sumbu Y tegangan). Dari grafik itu cari persamaan regresinya. Persamaan itu yang mas tulis dikode programnya.

  4. mas rizki terima kasih atas ilmunya,
    saya mau nanya nih mas mengenai pembacaan sensor analog.
    sensor saya 4 kaki mas .
    2 input : + in , – in
    2 output : +out , -out

    saya bingung menghubungkan output sensor ini, soalnya dia 2 kaki.
    jika saya masukkan hanya +out saja hasilnya tidak berubah.
    harus dipakai keduanya, jika saya ukur di +out dan -out haasilnya berubah,
    sedangkan jika di +out dan -in hasilnya konstan.

    ada solusinya ?
    apa harus menggunakan rangkaian op amp (differential amplifier) lagi ?
    agar outputnya jadi 1 ?

  5. tolong banttuannya mas Rizki, saya pingin ngukur suhu pake lm35DZ speknya sih dpt ngukur 0-100 (oC). tapi saya pingin optimalisasi sehingga akurasinya meningkat menjadi range 10-50 (oC), karena suhu yg ingin diukur berkisaran itu. jadi gmn cranya y..?

    1. Kalau masnya mau mengukur range 10-50 derajat celcius, mas pake penguat diferensial. Pake op-amp mas, jadi masnya bisa mengatur range yang dikendaki. Kita nggak bisa membatasi pengukuran kalo nggak pake penguat diferensial.

      1. membandingkan pada termometer artinya kita mengacu pada hasil suhu pada termometer terlebih dahulu kan mas, kemudian kita cari output sensor (sensor value) hasil suhu pada termometer.
        contoh
        int sensorValue = analogRead(A0);
        float sensorValue_termometer = 49.104; //24oC hasil termometer
        int sensorValue_lm35 = 22;
        float sensorValue_real = (sensorValue_termometer – sensorValue_lm35 ) + sensorValue;
        float volt = sensorValue_real / 1023.0 * 5000;
        float suhu = volt / 10;
        apakah perhitungan yang saya maksud dia atas ini salah atau benar,

        terimakasih sebelumnya

      2. Kalau saya sih cukup ini, karena menurut pengalaman perbedaan dengan hasil termometer tidak mengganggu. Kecuali kalau masnya ingin melakukan pengukuran dengan ketepatan tinggi.
        int value = analogRead(A0);
        float suhu = value * (500 / 1024.0);
        Jadi ini bergantung penggunaannya juga. Kalau beda 0.1 derajat tidak ada masalah ya saya sih tidak perlu mendapatkan nilai yang 100% sama dengan termometer

    1. Sepengetahuan saya kalau mengubah besaran analog menjadi digital, kita membutuhkan bagian khusus yang disebut ADC. Kalau mengubah pin analog menjadi digital bisa mengubah konfigurasi pin saja. Tetapi kalau pin digital membaca digunakan untuk membaca tegangan analog maka yang terbaca hanya high dan low.

  6. mas saya mau nanya ni bagusnya untuk baterai management system menggunakan sensor arus dan sensor tegang jenis dan model apa ya mas….
    atau menggunakan rangkaian apa ya mas Rizki

  7. mas ingin bertanya bila mengambil data dalam bentuk newton gimana ya mas padahal yang diuji massa beban yang 5- 250kg tpi tampilan digital nya ribuan ya mas..mohon petunjuk mas

  8. makasih atas infonya mas, pengen tanya mas.
    apakah ada landasan teori tentang perhitungan pembacaan nilai ukur sensor? (referensinya).

    Contoh soal: Saya simulasi sensor dengan potensio di arduino, dan ingin membaca nilai ukur dari sensor tsb. Saya mengganti sensor dgn potensio karena keterbatasan biaya untuk pengadaan sensor tsb. Setelah saya melihat rumus yang telah dibuat mas, saya mencoba untuk mengembangkan.

    – rentang sensor = 4,5 s.d 7,5 m3/jam
    – rentang tegangan = 0 s.d 5 V (rentang teg. potensio yang di arduino)
    – nilai tegangan = x (nilai akan berubah-ubah dari pengaturan potensio)

    Rumusnya = [((nilai tegangan)/(rentang tegangan)) x rentang sensor] + batas bawah sensor
    = [((x) / (5 – 0)) x (7,5 – 4,5) + 4,5
    = [((x) / (5))x 3,0] + 4,5

    code di arduino :

    int s1 = analogRead(A0);
    float voltage1 = s1 * (5.0/1023.0);

    float range = 5 – 0; //rentang tegangan
    float t1 = 7.50 – 4.50; //rentang sensor
    float bts1= 4.50;

    float vol1 = ((voltage1/range)*t1)+bts1;

    Serial.print(voltage1);
    Serial.print(‘ ‘);
    Serial.println(vol1);

    Jadi kita dapat mengetahui nilai pengukuran,
    kalo nilai tegangan 0 Volt untuk nilai pembacaan sensor berapa?
    kalo nilai tegangan 0,5 Volt untuk nilai pembacaan sensor berapa?
    kalo nilai tegangan 1,0 Volt untuk nilai pembacaan sensor berapa?
    dst.

    rumus diatas hanya berdasarkan logika mas, apa ada landasan teorinya?

    1. Kalau pertanyaan mas ini menurut saya sudah masuk kedalam ranah desain sistem pengukuran. Mengenai pertanyaan apakah ini hanya logika saya atau ada referensinya, jawabannya adalah keduanya 😀
      Kemudian pertanyaan
      “kalo nilai tegangan 0 Volt untuk nilai pembacaan sensor berapa?
      kalo nilai tegangan 0,5 Volt untuk nilai pembacaan sensor berapa?
      kalo nilai tegangan 1,0 Volt untuk nilai pembacaan sensor berapa?
      dst.” Ini bergantung desain mas. Range output sensor bermacam-macam. Nah agar range output sensor ini dapat dikonversikan ADC maka kita perlu mengubah range output ini menjadi 0V-5V dengan bantuan op amp. Misal output sensor 1V-2V. Untuk mengubah ke range tegangan 0V-5V kita memerlukan penguat diferensial yang menggunakan op amp. Untuk code arduinonya sama saja dengan cara mengubah nilai tegangan ke nilai ADC. Jadi disini saya menggunakan hardware tambahan (op amp) agar range tegangan sensor masuk ke dalam range tegangan ADC. Saya tidak bermaksud menggurui atau apapun mas tapi saya ingin sharing berdasarkan pengalaman yang selama ini telah saya lakukan. Mungkin kalau masnya ingin berdiskusi bisa menghubungi saya lewat email dan nanti saya bisa menuliskan contoh perhitungannya. Saya nggak cari untung kok mas, semua ilmu yang saya share disini gratis hehehe

      1. boleh mas, saya untuk penelitian di Tugas akhir saya. bisa email kontak mas. terima kasih mas atas bantuannya

  9. slm knal mas,,, numpang tanya,,,bisa ga klo misalnya led yg dikoneksikan ke pin analog trus dibaca tegangannya??misalnya klo lednya nyala (mmiliki nilai tertentu maka alarm bunyi.)

    mturnuwun

      1. 1. brarti bisa diterapkan utk indikator backup power saat listrik utama PLN mati y??tnggal nambah rangkaian kan?

        2. tntang arduino, apa beda port usb, port dc dan port Vin y mas?? biasanya kan backup power utk arduino masuk lwat Vin, bgmn klo via port usb/port dc??apa ada pngaruh kurng baik???

        tmksh mas 🙂

      2. 1. Menurut saya sangat bisa mas. Tapi tegangan maksimal yang masuk ke arduino cuman 5 volt loh ya.

        2. Masalah power coba dilihat schematic arduino mas. Jadi semua power line nya dari usb, port DC, atau Vin itu masuk ke pin yang sama di ICnya. Ya beda sumbernya saja.

      3. 1. “Tapi tegangan maksimal yang masuk ke arduino cuman 5 volt..”
        tegangan input maksimal bukannya sampai 20v mas??

        2. saat dites :
        a. klo sumber tegangan ke dfrduino duemilanov dari usb, saat ukur tegangan di pin 5v hasilny 5v.
        b. kl pake adaptor via port dc tegangan port 5v dbwah 5v.
        c. kl via port Vin, tegangan port 5v lebih rendah lgi..skitar 3,6v.
        apakah mmg wajar sperti itu???atau kelirunya dimana mas?? 🙂

      4. 1. Tegangan yang masuk ke pin aruino maksudnya mas. Misalkan mas mau mengukur tegangan lewat ADC. Nah tegangan yang masuk ke pin ADC itu maksimal hanya 5 Volt. Kalau lebih dari itu bisa rusak. Mau coba lebih? Saya nggak menyarankan loh ya hehehe

        2. Saya sudah baca schematic aruino duemilanove mas. Mas coba cari dan perhatikan. Vin terhubung dengan regulator tegangan. Tipikalnya, tegangan yang masuk regulator minimal 2V di atas output regulator. Misal output regulator 5V, maka tegangan yang masuk ke regulator minimal 7V. Kalau masnya masukkan ke Vin 5V ya bisa turun jadi seperti itu. Kalau dari usb memang sudah teregulasi dari laptop atau pc jadi ya bisa aja tetap 5V.

  10. haha…woke2 mas… tmksh…

    poin nomor 2 sepertinya memang minimal harus ditembak 7volt 😀
    brarti dari usb tu beda jalur apa gimana mas?

    1. Ya poin no 2 minimal 7V lah, karena itu masuk regulator dulu. Kalo usb itu nggak masuk regulator tapi langsung masuk pin Vcc IC nya mas karena tegangan dari usb udah teregulasi.

      1. wooo…tmkasih mas…syukur sdh dikasitau…sy hampir mau coba tembak >5v dari adaptor lngsung masuk ke usb…ternyata beda jalur kirain sama masuk regulator dulu..,pantas beda hasil pengukurannya 😀 😀

  11. halo mas, mau nanya mas ngerti ga cara convert RPM ke MPH, saya ingin membuat tachometer sederhana menggunakan arduino uno dengan photodioda infrared sebagai sensornya hanya saja outputnya masih RPM mas

    1. RPM (Rotary Per Minute) konversi kekecepatan linear. Caranya v= (2*phi*RPM*Jari-jari roda)/60 dalam satuan meter/sekon. 1 Mile = 1603 meter. Jadi untuk mengubah RPM ke MPH adalah MPH= v*3600/1063

      Nilai 60 berasal dari 1 menit = 60 sekon. RPM dijadikan satuan frekuensi (hertz). 2*phi*frekuensi putaran adalah kecepatan sudut roda. Perkalian antara kecepatan sudut dengan jari-jari roda adalah kecepatan linear dalam satuan meter/sekon

  12. mas saya mau membuat alat pendeteksi sampah yang terapung di air, sensornya saya hadapkan ke air. letak sensornya 60 cm dari permukaan air. sensor bekerja bila ada benda atau sampah yang terapung, air tidak dideteksi. mestinya saya pake sensor apa ya mas?

    1. Mungkin pake fotodioda cukup tapi nurut saya kita perlu mengatur casing sensornya. Untuk sumber cahaya pake laser aja, kan bisa lurus tuh. Intensitas cahayanya juga tinggi jadi bisa nembus air. Ketika cahaya laser terhalang, alatnya aktif. Pengalaman saya sih gitu mas

  13. gimana cara konversi nilai ADC ke PPM klo menggunakan MQ7 arduino uno?

    sensorValue0 = analogRead(analogInPin0);// membaca data analog sensor asap (pada pin A0), range antara 0-1023
    sensorValue1 = analogRead(analogInPin1);

    if (sensorValue0 >= 550)
    {
    Serial.print(sensorValue0);
    Serial.print(“A”);
    analogWrite(speedPinA, 255);//Sets speed FAN 1 full
    // set arah putaran kipas
    digitalWrite(dir1PinA, LOW);
    digitalWrite(dir2PinA, HIGH);

    lcd.setCursor(0, 0);
    lcd.print(” “);
    lcd.setCursor(0, 1);
    lcd.print(” “);
    lcd.setCursor(0, 0);
    lcd.print(“A0=”);

    lcd.setCursor(3, 0);
    lcd.print(sensorValue0);

    lcd.setCursor(0, 1);
    lcd.print(“BANYAK ASAP”);

    delay(1000);
    }

    gimana rumusan konversi nilai ADC ke PPM?

  14. gimana cara konversi nilai ADC ke PPM?

    sensorValue0 = analogRead(analogInPin0);// membaca data analog sensor asap (pada pin A0), range antara 0-1023
    sensorValue1 = analogRead(analogInPin1);

    if (sensorValue0 >= 550)
    {
    Serial.print(sensorValue0);
    Serial.print(“A”);
    analogWrite(speedPinA, 255);//Sets speed FAN 1 full
    // set arah putaran kipas
    digitalWrite(dir1PinA, LOW);
    digitalWrite(dir2PinA, HIGH);

    lcd.setCursor(0, 0);
    lcd.print(” “);
    lcd.setCursor(0, 1);
    lcd.print(” “);
    lcd.setCursor(0, 0);
    lcd.print(“A0=”);

    lcd.setCursor(3, 0);
    lcd.print(sensorValue0);

    lcd.setCursor(0, 1);
    lcd.print(“BANYAK ASAP”);

    delay(1000);
    }

    gimana rumusan / cara menghitung adc ke ppm?

    1. Wah ada lagi nih yang tanya tentang ini hehehe.
      Jadi gini mas, sebelum kita mengubah nilai ADC ke PPM kita harus tau dulu persamaan regresinya. Artinya kita harus uji coba dulu alat kita di lab. Misal mas buat beberapa konsentrasi asap yang berbeda 10 PPM, 20 PPM, 30 PPM, 40 PPM dst. Nah selanjutnya mas coba ukur konsentrasi asap tersebut dengan alat yang udah di buat.
      Misal
      Konsentrasi ADC
      10 PPM 1 V
      20 PPM 2 V
      30 PPM 3 V
      40 PPM 4 V

      Nah ketika mas sudah punya data ini mas bisa bikin persamaan regresi dari grafiknya. Misal mas dapat persamaan
      PPM=20*ADC+5
      Jadi dari persamaan itu mas bisa mengubah ADC ke nilai PPM. Semoga membantu 🙂

    1. Pake resistor pembagi tegangan aja mas. Jadi output maksimal dari pembagi tegangan itu 5 Volt dan masuk ADC. Kalau tampilan di lcd 12V itu cuman rumusnya. Bikin aja persamaannya. Jadi misal output pembagi tegangan 5V artinya baterai 12V, 4V artinya baterai 8 V dst. Nah dari situ kan dapet persamaanya dan ditulis di code arduino nya

      1. thanks mas, saya mau tanya lagi nih.. saya punya module sensor uv-tron yang tipe C10423.. tegangan untuk sensor ini 12V mas.. sementara tegangan untuk arduino uno hanya 5V dan 3.3V saja…
        apakah bisa berfungsi ke arduino mas?
        mohon dibantu yaa..

        ini link datasheet flame sensor uv-tron :

        Click to access c10423.pdf

    1. Mas mau Tanya nih..saya buat alat ukur tinggi badan dengan sensor ping. Nah itu nnti kan jarak sensor (tinggi badan) diubah jadi tegangan (dikonvert). itu secara ilmu fisikanya rumusnya gimana ya mas? Mohon di bantu

  15. Mas mau sharing nih. Saya buat alat pengukurpengukur tinggi badan dgn sensor ping. Kan nntinya tinggi badan atau jarak responden diubah ke tegangan sama sensornya (dikonversi), nah itu pakai rumus yg mana ya mas secara fisikanya? Makasih sblmnya mas

  16. mas saya mau tanya nih gimana programernya kalau pake arduino uno kalau mau buat sensor tekanan pake sensor bmp180 lalu di tampilkan di lcd 128×64 dengan pengaturan keceraha lcdnya menggunakan potensiometer mas,
    tolong bantuannya mas makasih 🙂

  17. mas saya mau tanya nih gimana programernya kalau pake arduino uno kalau mau buat sensor tekanan pake sensor bmp180 lalu di tampilkan di lcd 128×64 dengan pengaturan keceraha lcdnya menggunakan potensiometer mas,
    tolong bantuannya mas makasih 🙂 mohon bantuannua yah mas 🙂

      1. sudah mas saya coba gugling di internet datasheet sensor bmp180nya cman saya belum ngerti nya bagaimana programnya supaya ngebaca sensor lalu di tampilkan di LCDnya
        kalau cuman ngebaca sensornya saja tapi tidak menggunakan LCD saya sudah berhasil mas,

  18. mas mau tanya kalau mau bikin oscilloscope pakai arduino itu gimana ya? terus tegangan yg mau diukur kalau melebihi 5v gimana? atau perlu pakai op amp mas?

  19. mas mau tanya, kalau mau bikin oscilloscope pakek arduino tu gmna ya? terus kalau sinyal tegangan yang mau diukur itu lebih dari 5v gmana? apa perlu pakai op amp mas?

  20. sudah mas saya coba gugling di internet datasheet sensor bmp180nya cman saya belum ngerti nya bagaimana programnya supaya ngebaca sensor lalu di tampilkan di LCDnya
    kalau cuman ngebaca sensornya saja tapi tidak menggunakan LCD saya sudah berhasil mas,

  21. mas saya mau tanya. bagaimana cara konversi tegangan dari input ldr? sedangkan input ldr bisa berubah ubah tergantung potensionya. Setiap potensionya diatur maka nilai input ldr berubah sedangkan cahaya yang diberikan sama

      1. voltnya mas. jadi pin analog arduino terhubung dengan sensor ldr. untuk mengatur sensitif ldr digunakan potensio. kemudian kodingan untuk mencari volt dari ldr tersebut saya gunakan

        int hsl_ldr = analogRead(A0);
        int volt = hsl_ldr*5/1023;

        apakah benar seperti itu? tetapi setiap saya ubah nilai potensio maka hsl_ldr berubah juga sehingga voltnya berubah juga.

        mencari tegangan ini nantinya akan saya gunakan untuk mencari nilai lux dan ntu

      2. Baiklah. Saya mau tanya lagi mas, bagaimana cara konversi lux ke ntu mas? Sensor yang saya gunakan ldr. Yang saya ketahui hanya lux berbanding terbalik dengan ntu

  22. maz Rizki ane baru belajar pemrograman ..ane baru punya arduino uno neh..pengen bikin SMART TESTER atau komponen meter digital
    bisa gak maz pake arduino ?

    klo di luaran sana kan banyak yg pakai Avr !

  23. Nice gan Rizki..
    ane mo tanya ..arduino bisa di bikin smart tester / komponen tester gak ?
    klo di google kan banyak nya pakai avr
    maklum ane newbie arduino dan program2an microcontroler

  24. mas, saya numpang tanya.
    saya da projec, membuat sistem monitoring panel surya, terus saya pakai arduino mega.

    Vout dari panel surya terbaca sekitar 220V, jadi sebelum saya masukkan ke arduino, saya beri pembagi tegangan, hingga menjadi 1,09..V.
    1. apa perlu saya kuatkan tegangannya hingga 5 V mas?
    2. terus keluaran dari pembagi tegangan kan ada 2 keluaran, + dan -. masukkan ke arduinonya gmana mas?

  25. Mas numpang tanya.
    Saya sedang membuat kendali kadar keasaman(pH) dengan menggunakan sensor pH DfRobot.Jika tegangan keluaran dari sensor pH tidak stabil biasanya disebabkan karena apa ya Mas? Terima Kasih\

  26. Salam kenal mas,
    Sebelum ke pertanyaan mohon mas Rizki mendengarkan cerita saya dulu kalau berkenan. Pada saat engine/mesin berputar itu artinya poros engkol berputar. Di bagian depan poros engkol terdapat ‘sprocket’ atau semacam gear yang jumlah giginya tertentu misalkan 36. Itu berarti jarak 1 gigi ke gigi berikutnya adalah 10 derajat. Sehingga dalam 1 put atau 360 derajat gigi 1 kembali ke posisi semula. Dekat dengan sprocket terdapat ‘pick up coil’ yang berfungsi menghitung sinyal putaran (mungkin analog) dan di ubah ke dalam sinyal kotak (mungkin sinyal digital) di dalam Elektronic Control Unit/ECU. Sinyal digital inilah yg kemudian diolah untuk selanjutnya di keluarkan lewat pin tertentu ke ‘actuator’. Yang ingin saya tanyakan :
    1. Apakah harus menambah rangkaian semacam op amp dari ‘pick up coil’ sebelum masuk ke pin adc ARDUINO ATmega 2560 sebagai pengganti ECU pabrik. Karena tegangan keluaran dari ‘pick up coil’ ini kecil kurang dari 1 volt. Kalau pakai yg asli pabrikan harganya pasti mahal. kalau pakai op amp tipe apa yg range nya bisa menaikan teg sampai 5 v?
    2. RPM mesin ini berubah ubah, dan saya menginginkan ‘duty cycle’ juga berubah pula sesuai dengan perubahan rpm. Misal untuk putaran 1000rpm duty cycle nya 50%, untuk put 2000 rpm duty cycle nya 55% dst, kira2 skecth pada arduino nya gimana ya mas?
    Saya adalah hobi otomotif yang sedang belajar Arduino atau masih nol bahasa program, oleh sebab itu saya sampaikan terimakasih manakala Mas Rizki mau menanggapi……….

    1. Halo mas salam kenal. Saya akan jawab berdasarkan pengetahuan dan pengalaman saya ya mas.
      1. Berdasarkan problem, saya menyarankan pakai op amp untuk memperkuat sinyalnya. Op amp seperti apa yang bisa menguatkan hingga 5V? Op amp apapun asal supply nya 5V bisa mas. Masalahnya sekarang, op amp tipe seperti apa? Nah kalau ini bergantung dari karakter sinyal yang akan diolah. Berapa frekuensinya, berapa amplitudonya, dll. Dari karakter sinyal ini kita bisa menentukan tipe op amp berdasarkan datasheet op amp tersebut. Jadi nanti pemilihan op amp harus memperhatikan slew rate, impedansi masukan dll.

      2. Ini mau mengubah sinyalnya dengan ADC atau dihitung frekuensinya? Kalau itu masnya cari dulu gimana cara menghitung frekuensi. Banyak kok library untuk menghitung frekuensi. Untuk mengubah frekuensi ke rpm, masnya tinggal bikin persamaan aja mas. Misal
      1000 RPM = 50%
      2000 RPM = 55%
      Ini kan bisa dibikin persamaannya. Pasti udah belajar dong cara bikin persamaan dengan 2 titik hehehe. Nah setelah tau persamaannya, tinggal tulis aja persamaan itu dikode arduinonya. Misal persamaannya Dc = 20*RPM + 10. Nah ini kan nanti kalau RPM berubah Dc (Duty cycle) juga berubah. Nilai RPM didapatkan dari frekuensi yang terukur. Setelah itu masukkan ke rumus tadi.

  27. mas riski salam kenal, mau tanya rumus cara mengkonversi nilai tegangan ke ppm gimana caranya ya mas ? terima kasih

    1. Untuk konversi harus karakterisasi dulu mas. Alat yang dibuat dibandingkan dengan alat yang sudah standar. Misal masnya buat beberapa larutan dengan konsentrasi 1 PPM, 2 PPM, 3 PPM, dst.

      Ukuran larutan ini dengan alat yang dibuat. Misal hasil yang didapatkan

      1 PPM = 1 Volt
      2 PPM = 2 Volt
      3 PPM = 3 Volt
      dst

      Dari hasil pengukuran buat plot grafiknya. Sumbu X tegangan, sumbu Y PPM. Setelah tau grafiknya, tarik garis regresinya. Persamaan garis regresi itu yang digunakan untuk konversi. Misal persamaan garis regresinya PPM = 2*tegangan + 2. Nah persamaan ini tulis dicoding aruduino nya. Setiap ada tegangan yang masuk nanti dikonversi menjadi PPM.

  28. Maaf mas saya mau tanya, bagaimana cara mengkonversi nilai pembacaan LDR ke lux ? terimakasih mas

    1. Harus dibandingkan dengan alat yang standar. Misal
      1 Volt = 1 Lux
      2 Volt = 2 Lux
      3 Volt = 3 Lux

      Setelah itu plot grafiknya, tarik garis regresinya. Persamaan garis regresi itu yang digunakan untuk konversi nilai output LDR

  29. maaf mas saya mau tanya, saya sedang membuat alat ukur konduktivitas air dengan sumber arus AC. rangkaian yang saya gunakan penguat non inverting, penyearah gelombang dan terakhir low pass filter. yang menjadi maslah output yang dihasilkan kurang stabil tidak pada satu nilai yang konstan, contoh output di sensor pada satu keadaan :
    1.613
    1.730
    1.711
    1.706
    1.725
    1.808
    1.730
    1.628
    1.794
    1.818
    1.740
    1.672
    1.628

    apakah mass punya solusi agar nilai output yang dihasilkan alat ini konstan di satu nilai. terrimakasih mas.

    1. Bagi saya rasanya tidak mungkin kita akan dapat satu nilai yang konstan mbk. Ini pengukuran dalam keadaan nyata, rasanya tidak akan mungkin kita dapat satu nilai yang tetap terus. Alat ukur selalu punya nilai toleransi loh mbk. Kalau masalah seperti yang disampaikan, coba nilai kapasitornya diperbesar mbk. Jadi nanti nilainya tidak terlalu cepat berubah.

  30. gan mau nanya,,, cara mengkonversi hasil adc ke mililiter gimana ya ? hsilnya itu berupa adc
    nah itu yg saya tanyakan gimana mengkonversinya
    trims

  31. permisi gan saya mau nanya,,, saya kan mengukur ketinggian level dengan sensor water sensor yg kemudian saya hubungkan ke dalam arduino, dari arduino tersebut keluaran nya berupa adc yang gak konstan. yang saya tanyakan bagaimana mengkonversi hasil adc tersebut ke dalam hasil mililiter ?

    1. Itu harus karakterisasi dulu. Ini mau dipakai ukur apa? Ini spesifik karena bergantung dari ukuran tempat yang dipakai. Misal anda punya drum diameter 20 cm tinggi 50 cm. Nah hitung volumenya dulu. Ketika volume maksimal catat ADC berapa, terus kurangi volume cairannya sebanyak, katakanlah 100 ml, catat ADC berapa, kurangi lagi 100 ml catat ADC berapa, begitu seterusnya. Dari data yang sudah didapatkan, buat grafik dan persamaan grafik tersebuk. Misal anda dapat y = 200x + 10. y adalah volume dalam ml, x adalah nilai ADC. Jadi disini anda punya persamaan untuk mengubah nilai ADC menjadi volume. Setiap nilai ADC yang dibaca dimasukkan ke persamaan yang tadi dan hasilnya volume dalam ml.

  32. Info yg bagus mas, kalau ini digabungkan dengan keahlian programming modus grafik maka kita dapat menampilkan bentuk gelombang sinyal tegangan si layar laptop atau PC,
    dengan kata lain kita sudah membangun sebuah osiloscope digital sederhana, tinggal melakukan penambahan rangkaian pembagi tegangan (voltage divider) di bagian input analog untuk mengukur tegangan diatas 5 volt.
    Atau menambahkan suatu penguat linier differensial di bagian input untuk mengukur sinyal2 kecil (mili volt)…

      1. Kemarin saya udah coba desain untuk osciloscope USB berbasis arduino uno dgn 6 chanel input, dengan range input 10 milivolt sampai 500 volt
        Hasilnya cukup akurat ….

  33. Mas mau tanya tentang tugas akhir saya. Sayaa mau konversi nilai ADC ke ppm, tapi tidak ada alat / data pembanding yang bisa d gunakan. Apakah ada rumus lainnya ? Dan itu bagaimana ? Saya menggunakan sensor tgs 2600 dan arduino uno

  34. Salam kenal mas.Saya membuat alat bloodpressure dengan sensor tekanan MPX5050GP dg arduino sbg kontrollernya. Mungkin yang saya tanyakan bagian ADC-nya di arduino mas. Bagaimana merancang program untuk ADC Tekanan ->Tegangan->bit->Tekanan?
    Terima kasih

    1. Sensor MPX itu keluarannya apa mas? Analaog kah? Sebenarnya yang saya tulis itu sudah memberikan ilustrasi bagaimana mengubah nilai ADC ke tegangan. Kalau kasusnya mas ini, Tekanan diubah menjadi suatu nilai oleh sensor, misal keluarannya analog. Masukkan keluaran sensor ke pin analog sehingga berubah jadi angka desimal. Nilai itu bisa dikembalikan lagi ke nilai tekanan. Sekarang masalahnya dari mana tau nilai tekananannya? Untuk ini, mas harus punya alat ukur tekanan yang terkalibrasi sebagai pembanding. Jadi mas mengukur sesuatu yang sama dengan alat mas dan alat ukur yang terkalibrasi tersebut. Nilai dari alat standar itu yang digunakan sebagai acuan.

  35. Ijin mas, saya mau buat tugas akhir timbangan menggunakan arduino Uno, timbangannya ada 2 buah,timbangan pertama mengukur barang yang masuk kedalam suatu ruangan, dan timbangan yang satunya lagi sebagai pengurang keluaran dari ruangan tersebut, jika saya batasi berat yg boleh masuk dalam ruangan tersebut dengan alarm
    Pertanyaannya:
    1.cara penjumlahan pada kedua input analog tersebut
    2. Cara mengkalibrasi nilai dari analog input

    1. Maksudnya pengurang keluaran dari ruangan tersebut ini seperti apa mas? Cara penjumlahan kedua input analog? Ini apa yang mau dijumlahkan? Tolong diberi gambaran yang lebih jelas mas. Cara kalibrasi analog? Kalibrasi seperti apa mas?

    1. Wah ini saya jadi makin bingung mas. Saya saja nggak tau sensornya seperti apa, prinsipnya gimana, dan outputnya seperti apa. Saya sarankan untuk baca datasheet sensornya dulu mas biar tau gimana cara pakenya.

  36. Mas, bagaimana jika pembacaan ADC hanya saat tertentu, contoh hanya pada saat pin 1 berlogika high ? Mohon ilmu nya mas

    1. Berdasarkan pengalaman, itu pake if bisa mas. Jadi misal
      if (pin1=HIGH)
      {
      Sensor=AnalogRead(A0);
      }
      Jadi itu ADC jalan terus tapi kita hanya mengambil datanya ketika pin 1 dalam keadaan HIGH.

Leave a comment