Thursday, January 21, 2016

Pengaturan Kecepatan Motor DC dengan Kontrol PID

Hardware yang digunakan:
  1. Arduino Nano 
  2. Breadboard dan Jumper 
  3. Motor DC 
  4. Optointerrupter, R330, R10k 
  5. L293D 
Software yang dibutuhkan:
  1. LabVIEW 
  2. PID Toolkit 
  3. Arduino IDE 
Ini gambar pengawatannya:
Kaki D2 Arduino terhubung dengan output sensor optointerrupter.
Kaki D3 Arduino terhubung dengan input IN1 L293D.

Ini videonya:



Ini video perbedaan antara kontrol dengan PID dan kontrol tanpa PID:


File program dalam video di atas dapat diunduh di link ini: https://drive.google.com/drive/folders/1eTSD9uS4BYDKnjTh-4zGobjz_nekam5V?usp=sharing

77 comments:

  1. hi saya ingin bertanya bagaimana untuk control servo imaq vision?
    maaf saya baru belajar dan ingin tahu bagaimana membuatnya..
    #sharingiscaring

    ReplyDelete
  2. Oya, apa itu servo imaq vision mas Akmal? Bisa diperlihatkan gambarnya? Maaf, saya baru tahu.

    ReplyDelete
  3. Pak. Dian klo kontrol PID yang pada PID gain harus di masukin juga nilanya pak.

    ReplyDelete
  4. Pak. din punya sy setelah di run.pembacaan sensor sama setpoin gk sama seperti yang di vidiokesalahan ada dimana ya pak

    ReplyDelete
  5. Oya? apakah semuanya sudah sama?

    ReplyDelete
  6. Sudah pak..bukanya kalo PID semakin mendekati nilai setpoinkan pak. Malah kadang berhenti sistemya. Baru direset jalan lagi...kenapa ya pak

    ReplyDelete
  7. Utk mengirim vidio atau foto di blog ini gimana ya pak dian.trim

    ReplyDelete
  8. Utk mengirim vidio atau foto di blog ini gimana ya pak dian.trim

    ReplyDelete
  9. Sudah di kirim pak
    Oya pak apakah arduino berpengaruh karena arduino sy bekas pake dari lifa base yg sudah di download

    ReplyDelete
  10. Sy optocoupler juga beli yg sudah jadi dari Depok Instrumen beikut piringan 36 lubang.

    ReplyDelete
  11. Pak Dian nilai 150 di program labview untuk kalibrasinya ya pak
    Kalo yang dibagi 20 untuk apa ya pak DIAN trims

    ReplyDelete
    Replies
    1. Dikali 150 agar menghasilkan nilai RPM putaran motor yang diperoleh dari sensor enkoder. Jadi RPM adalah putaran per menit. Sedangkan program pembacaan enkoder adalah setiap 100 milidetik. Sehingga agar menjadi menit, dari 100 milidetik, harus dikalikan 600. Kebetulan dalam satu putaran, sensor enkoder membaca pulsa optointerupter sebanyak 4 kali (karena ada 4 lubang di enkoder). Dengan demikian, tidak lagi dikalikan 600, tetapi 600/4=150.
      Kemudian dibagi 20, karena nilai PWM dari Arduino hanya bisa sampai 255 maksimumnya. Padahal Setpointnya maksimumnya adalah 5000. Jadi supaya bisa 255, tinggal dibagi saja dengan 20. Ok, semoga paham.

      Delete
    2. pak mau tanya, kalo pembacaan sensor encoder nya saya buat 1000 milidetik nanti hasil akhir nya pasti ada koma nya pak.
      apa ada pencerahan cara mengubah nilai yg bisa koma.?

      Delete
  12. TeriMa kasih pak infonya. Sangat berharga...buat sy sekali lagi terima kasih

    ReplyDelete
  13. pak dian kalo pengambialn data pada program (semisal berbentuk text) apakah di tambah libray di program labview sedangkan sudah saya coba ditambah program kaya into to tekt malah program jadi error, bagaimana penambahan programnya ya pak..trimakasih

    ReplyDelete
    Replies
    1. Mudah saja, ada 2 cara, Cara pertama, klik kanan pada kotak grafik, pada popup yang muncul pilih Export, kemudian Export Data to Excel. Tempelkan data dengan mem-paste di salah satu kolom di Excel, maka semua data akan muncul.
      Cara kedua, adalah dengan menggunakan icon Write to Measurement File. Lebih jelasnya bisa dilihat di blog ini, di bagian ketiga: http://5menitbelajarlabview.blogspot.co.id/p/tangga-ke-3.html

      Delete
  14. pak dian kan yg bapak itu menggunakan arduino ya trs sensor dan yg lainnya .. sedangkan saya hanya menggunakan motor dc nya udah gt saya menggunakan myRIO .. dari blok digram yg bapak buat kira-kira jika buat saya itu harus diganti yg mana ya pak ..

    ReplyDelete
    Replies
    1. kalau pakai myRIO, tinggal ikuti saja contoh program yang diberikan oleh National Instruments. Banyak kok di Youtube, search saja pakai kata kunci PID LabVIEW myRIO. Ok.

      Delete
    2. pak dian itu Momen inersia rotor (J) =
      rasio redaman dari sistem mekanik (b ) =
      sama gaya konstan motor yg bapak pakai berapa pak =

      Delete
    3. Aduh maaf mas Rahmat, saya nggak tahu parameternya. Saya hanya asal pakai dan langsung menerapkan toolkit yang ada di LabVIEW. Sebaiknya mas Rahmat mencari datasheet motor untuk mengetahui parameternya. Ok, sukses mas Rahmat.

      Delete
  15. hello my friend, i need your help

    ReplyDelete
  16. I'm sorry, I don't know about the motor's paramter. I just use the toolkit from LabVIEW, and did'not consider about all parameter. So, if you need those parameter, you should search datasheet.

    ReplyDelete
  17. will it work if i remove the opto sensor from the circuit?

    ReplyDelete
    Replies
    1. No, it will not work, i use optosensor for counting the dc motor speed

      Delete
    2. aah okay. can i use a Arduino Uno instead of Nano? and how to know if the Arduino board is already connected to Labview or not?

      Delete
  18. Yes, you can use Arduino Uno, both are the same. we can see if both are connected, from text or graphics that appear on the front panel display.

    ReplyDelete
    Replies
    1. hi thank u. i have a few more questions if u dont mind :) if i replace the 125c51 sensor with a re08a rotary encoder kit, will the project still work? must change anything in the block diagram or what?

      http://www.robotshop.com/media/files/PDF/users-manual-re08a.pdf << this is the encoder kit datasheet.

      Delete
    2. Yes, it will work, you only need to replace the constant number 150 to 75.

      Delete
    3. The constant number in the Labview block diagram? Or the arduino coding?

      Delete
    4. I can't find the value 150 :(

      Delete
    5. thank u so much. i have an issue, when i turn on the PID, the the motor loses control. i cannot control the speed anymore and the system crashes. when the PID is off, then i can control the motor speed. do you know why this is happening?

      Delete
  19. Yes, you can use Arduino Uno, both are the same. we can see if both are connected, from text or graphics that appear on the front panel display.

    ReplyDelete
  20. Wah mantap pak dian sukses buat pak dian

    ReplyDelete
  21. Pak Din, ini saya coba kok eror ya...ada simbol di blok diagram yg tidak terdeteksi...simbol setelah output range,,mohon pencerahan ?

    ReplyDelete
  22. Pak Din, ini saya coba kok eror ya...ada simbol di blok diagram yg tidak terdeteksi...simbol setelah output range,,mohon pencerahan ?

    ReplyDelete
    Replies
    1. waduh, maaf baru tahu kalau ada pertanyaan. Semoga sudah beres ya, maaf.

      Delete
  23. Pak, ini port i/o saya gag muncul, mohon solusinya

    ReplyDelete
    Replies
    1. maaf, baru balas, mas Alvian harus instal driver NI-VISA LabVIEW

      Delete
  24. pak dian, maaf saya memakaai driver modul l298, untuk konfigurasinya menjadi seperti apa ya?

    ReplyDelete
    Replies
    1. bila programnya tidak diubah, maka pakai saja pin D3 di arduino, masukkan ke IN1, dan IN2 digroundkan, dan ENABLE1 diberi 5V. IN3 dan IN4 serta ENABLE2 dibiarkan saja. ok, semoga bisa.
      Atau bisa juga cara lain, IN1 dihubung dengan 5V, IN2 dihubung ke Ground, dan ENABLE 1 dihubungkan ke pin D3 Arduino.

      Delete
  25. Maaf pak Dian, apakah memungkinkan program ini menggunakan LINX juga?

    ReplyDelete
    Replies
    1. Saya belum tahu kalau LINK. Jadi, ada 2 aliran di sini:
      Aliran 1: membuat Arduino melakukan pembacaan sensor enkoder dan penghitungan kecepatannya. LabVIEW hanya digunakan sebagai penampil data.
      Aliran 2: membuat Arduino hanya membaca sensor, sedangkan penghitungan kecepatan dan tampilan data dilakukan di LabVIEW.
      Aliran 1 adalah yang saya lakukan di atas. Sedangkan Aliran 2 seharusnya dilakukan oleh LINX. Namun, saya tidak tahu, apakah di LINX sudah menyediakan librari untuk penghitungan kecepatan ini.
      Begitu mas Hasan, semoga bisa menjawab.

      Delete
  26. pak dian apa ada kontak nmr hp mungkin yg bisa dihubungi. mau menanyakan projek. klo boleh kirim via email ya pak.

    fahmi14041995@gmail.com

    ReplyDelete
    Replies
    1. boleh, email saya: dian.artanto@pmsd.ac.id

      Delete
    2. Saya masih belum paham pertanyaannya? hehehe. Tentunya kalau waktu pembacaannya dibuat lebih lama, update datanya juga menjadi lebih lama. :)
      "pak mau tanya, kalo pembacaan sensor encoder nya saya buat 1000 milidetik nanti hasil akhir nya pasti ada koma nya pak.
      apa ada pencerahan cara mengubah nilai yg bisa koma.? "

      Delete
  27. Very good, help me in this line and code I can not find the order of labview that commands
    if(Serial.read()==char(13))
    I can send another one instead of char(13)

    ReplyDelete
    Replies
    1. yes, it is used to get the end of data that sent from LabVIEW to Arduino. So, if Arduino receives char(13) = Carriage Return, it means the data that receive already complete.

      Delete
  28. mau tanya pak. untuk mengubah pin pembacaan sensornya di bagian mana ya?? di coding arduinonya apa d labviewnya?? sensor saya sudah terlanjur terpasang pada pin A0. ( saya menggunakan arduino uno).

    ReplyDelete
    Replies
    1. di koding arduinonya,
      hanya saja, karena pembacaan sensornya menggunakan pin dengan kemampuan intterupt, maka sebaiknya menggunakan pin D2 atau D3. Apabila mas Akip tetap mau menggunakan pin A0, maka harus ditambahkan library pintchange, agar dapat membuat kaki A0 menjadi kaki interrupt secara software. download saja librarynya di https://github.com/GreyGnome/PinChangeInt.
      ok semoga berhasil

      Delete
  29. mau tanya pak, kalau untuk penerapan di motor stepper bagaimana ya?

    ReplyDelete
    Replies
    1. mas Fembi, bagaimana kabarnya???

      Delete
    2. alhamdulillah kabar baik pak
      hanya saja perkembangan alatnya yang stagnan hehe

      Delete
  30. pak dian, bolehkah saya meminta file blok diagram lab viewnya ?

    ReplyDelete
    Replies
    1. tentu boleh, silahkan download link di atas

      Delete
    2. terima kasih pak dian, saya sudah download front panel+blok diagram labviewnya. ini sangat membantu tugas saya. jika nanti ada kendala, bolehkah saya sharing ?

      Delete
  31. This comment has been removed by the author.

    ReplyDelete
    Replies
    1. maaf belum bisa balas, oya, dikirim lewat email ya, baik saya balas lewat email saja. sip mas Putra

      Delete
  32. This comment has been removed by the author.

    ReplyDelete
  33. Selamat malam pa dian, saya ingin bertanya saya kan menggunakan motor stepper tetapi hampir sama dengan uji coba pa dian. Tapi saya belum paham untuk kontrol posisi PID dari motor stepper nya seperti apa. Mohon bantuannya, terimakasih banyak

    ReplyDelete
    Replies
    1. Maaf baru balas mas Agung, untuk motor stepper, ada permasalahan di pengaturan kecepatan yang terbatas. Untuk mengatur hingga kecepatan penuh sangat tergantung pada pengaturan tunda waktu (delay), yang tidak bisa dibuat 0, karena kalau 0, malah motor steppernya tidak berputar. Tetapi jika dibuat mendekati 0, ada kemungkinan terjadi selip juga. Dari percobaan yang pernah saya lakukan, minimal delay pulsa untuk step motor stepper 100 mikrodetik ke atas hingga 100 milidetik. Ketika dibuat 1 detik, terlalu lambat, sehingga rentang pengaturan kecepatannya hanya terbatas. Untuk itu, kalau bisa usul, saya sarankan tidak mengatur kecepatan, tetapi mengatur posisi poros, akan lebih mudah dibanding pengaturan kecepatan. Tentu saja ketelitiannya akan terbatas pada resolusi step motor stepper.

      Delete
  34. Selamat siang pak Dian. Saya ingin bertanya. Bagaimana cara mengatasi sensor interrupter yang tidak bisa membaca speed rpm motor ? saya menggunakan opto intterupter itr 9608-F. Dikarenakan saya kesulitan mencari sensor 125c51 seperti yang di tutorial bapak. Terima kasih

    ReplyDelete
  35. Terima kasih banyak pak Dian, saya sudah kirim pertanyaan di email bapak 👍

    ReplyDelete
  36. assalamualaikum pak dian, saya mau nanya, misal menggunakan motor rc yang ada pada drone itu rangkaiannya menuju arduino dan programnya gimana ya pak? mohon bantuannya soalnya untuk tugas akhir kuliah, terimakasih

    ReplyDelete
  37. pak dian mau konsultasi tapi lewat WA apakah bisa minta nomornya terkait masalah kontrol pid

    ReplyDelete
  38. cara menghitung proses tuning PID.nya bagaimana pak?

    ReplyDelete
  39. pak cara menghitunh proses tuning PID nya gmna pak?

    ReplyDelete
  40. This comment has been removed by the author.

    ReplyDelete
  41. coding arduinonya itu sudah sesuai pak, di kodingnya tidak ada perhitungannya?

    ReplyDelete
  42. kalau utk 4 motor bldc bisa kah mas ?

    ReplyDelete
  43. kak komunikasi arduino ke labview nya gimana ya? sudah saya hubungin ke arduino tapi port nya ga kebaca di labview kak, solusinya gimana ya kak?

    ReplyDelete