Minggu, 12 Januari 2020

aplikasi fuzzy logic pada arduino

Muhammad Zainal Abidin
NIM :2252500166


Tujuan dari percobaan ini mengatur kecepatan putaran motor. Sistem pengontrolan kecepatan tersebut dilakukan dengan cara membaca nilai sensor yang kemudian diubah menjadi nilai tegangan yang mewakili keadaan sistem. Bagian-bagian dari hardware:
  • Mikrokontroler berfungsi sebagai otak dari sistem. Sebagai otak dari sistem, mikrokontroller ini akan berfungsi membaca nilai sensor LM35 dan ultrasonic yang kemudian akan diproses menjadi sebuah nilai RPM yang nilainya akan diberikan kepada driver motor.
  • Data dari sensor LM35 dan ultrasonic kemudian akan di proses oleh mikrokontroler. Data tersebut berupa tegangan yang menjadi nilai input yang kemudian diolah menggunakan fuzzy logic controller.
  • Motor driver DC berfungsi sebagai pengatur kecepatan motor dengan input yang diberikan oleh mikrokontroler menuju motor.
  • Baterai merupakan sumber tegangan untuk masing-masing hardware yang membutuhkan.
Berikut ini adalah tabel koneksi pin Arduino dan IC L293d yang digunakan :
Tabel 1. Koneksi Pin Arduino
Masing-masing penggunaan pin yang terdapat pada Tabel 1. akan diinsialisasikan pada program Arduino sebagai langkah awal pembacaan data. SedangkanTabel 2. menunjukkan koneksi yang terdapat pada rangkaian tersebut berfungsi untuk mengatur PWM motor yang dalam hal ini bernilai 0 – 255. Nilai tersebut akan diatur melalui sebuah formula di kode program Arduino.
Tabel 2. Koneksi Pin L293D

Perancangan Fuzzy Logic Controller

Tahapan perancangan software terdiri dari perancangan fuzzy logic controller yang menggunakan software Arduino. Digunakan Serial Monitor software Arduino untuk menampilkan hasil pembacaan sistem. Dari data tersebut akan diamati respon dari kontrol yang digunakan. Sistem dikendalikan menggunakan metode Fuzzy Logic Controller. Pada percobaan ini, input yang digunakan berjumlah 2 buah yaitu sensor suhu LM35 dan sensor ultrasonik PIR. Nilai tersebut akan berpengaruh pada kecepatan motor DC yang pada percobaan ini diatur melalui penetapan nilai PWM. Terdapat 3 buah nilai PWM yaitu 100 untuk kecepatan motor lambat, 200 untuk kecepatan motor sedang dan 250 untuk kecepatan motor cepat.
Proses Fuzzy Logic Controller ini akan diterapkan melalui coding Arduino Uno. Langkah awal dalam proses algoritma software ini adalah inisialisasi variable yang digunakan sebagai berikut:
Adapun source code pembacaan sensor dan driver motor sebagai berikut :
Setelah inisialisasi variable dan pembacaan sensor, langkah selanjutnya merancang Fuzzy Logic ControllerFuzzy Logic Controller tersebut dibagi menjadi 3 tahap yaitu :
1. Kode Program Fuzzifikasi
Pada percobaan ini, masing-masing sensor memiliki fungsi keanggotaan yang terdiri dari 3 keanggotaan. Fungsi keanggotaan sensor suhu (LM35) terdiri dari Dingin, Hangat dan Panas. Hal ini ditunjukkan pada Gambar 3 di bawah ini.

Gambar 3. Fungsi Keanggotaan Suhu
Berikut ini merupakan source code dari fuzzifikasi sensor suhu.
Untuk sensor ultrasonic juga memiliki 3 fungsi keanggotaan yaitu Dekat, Sedang, dan Jauh seperti yang ditunjukkan pada Gambar 4. Adapun fungsi dari sensor ini untuk mengukur jarak dari suatu objek yang terdeteksi.

Gambar 4. Fungsi Keanggotaan Jarak
Berikut ini merupakan source code dari fuzzifikasi sensor ultrasonic
Untuk nilai PWM motor akan diatur sebagai berikut

Gambar 5. Fungsi Keanggotaan Kecepatan Motor
2. Kode program Rule Evaluation
Adapun rule base yang dirangcang sebagai berikut :
  1. Jika Suhu Dingin dan Jarak Dekat, maka Kipas Angin Lambat
  2. Jika Suhu Dingin dan Jarak Sedang, maka Kipas Angin Lambat
  3. Jika Suhu Dingin dan Jarak Jauh, maka Kipas Angin Lambat
  4. Jika Suhu Hangat dan Jarak Dekat, maka Kipas Angin Lambat
  5. Jika Suhu Hangat dan Jarak Sedang, maka Kipas Angin Sedang
  6. Jika Suhu Hangat dan Jarak Jauh, maka Kipas Angin Cepat
  7. Jika Suhu Panas dan Jarak Dekat, maka Kipas Angin Cepat
  8. Jika Suhu Panas dan Jarak Sedang, maka Kipas Angin Cepat
  9. Jika Suhu Panas dan Jarak Jauh, maka Kipas Angin Cepat
Table 3 merupakan rule base yang akan di program pada Arduino. Dari parameter tersebut, terdapat 3 himpunan fungsi keanggotaan output motor yaitu lambat,sedang dan cepat.Adapun source code rule base di atas yaitu :
Program yang dirancang akan menggunakan operasi logika AND, dimana nilai rule yang dihasilkan akan diambil dari nilai terkecil dari kedua derajat keanggotaan dengan menggunakan fungsi matematika (MIN).
3. Kode Program Defuzzifikasi
Pada defuzzifikasi yaitu tahap terakhir pada Fuzzy Logic Controller (FLC). Penyelesaian defuzzifikasi ini menggunakan metode Sugeno tipe WA (Weighted Average):
Adapun source code nya sebagai berikut :

Hasil dan Analisa

Pada tahapan ini akan diuji hasil perancangan dari metode Fuzzy Logic Controller  yang sudah dirancang untuk mengontrol kecepatan pada motor DC pada prototype kipas angin. Metode Fuzzy Logic Controller ini dirancang pada Arduino untuk mengatur PWM pada driver motor yang selanjutnya digunakan untuk mengatur kecepatan motor. Kecepatan motor ini diatur berdasarkan nilai yang diberikan dari sensor LM35 yang mendeteksi suhu dan sensor ultrasonic yang mendeteksi jarak pada objek tertentu.
Percobaan ke-1
Pada percobaan 1 akan diuji coba kecepatan motor dengan set point PWM sebesar = 100, dimana terdapat nilai suhu sebesar 24 – 25 yang dapat dikategorikan sebagai suhu dingin dan sedang, sementara nilai jarak berubah-ubah setiap satuan waktu. Jarak akan digunakan sebagai variable yang menentukan kecepatan baling-baling kipas tersebut.

Gambar 6. Grafik Respon Fuzzy untuk set point kecepatan lambat (100)
Dari grafik di atas terlihat bahwa sistem mengalami rise time yang cepat, yaitu hanya memerlukan 1 detik untuk menyesuaikan kondisi. Dengan suhu 25 derajat Celcius dan jarak 8 cm, putaran motor dapat menyesuaikan dengan rule base yaitu 100. Hal ini berlangsung hingga detik ke 9 dengan jarak 11 cm. Namun ketika jarak dinaikkan dalam rentang nilai 18, 13, dan 10 pada grafik terlihat bahwa sistem mengalami overshoot. Namun berhasil menyesuaikan kembali ketika detik ke 12. Pada detik ke 12 hingga 14 sistem berhasil menurunkan suhu walau pun hanya 1 derajat Celcius. Adapun rata-rata error yang dihasilkan oleh sistem sebesar 15,4545 %. Hal ini dapat disebabkan oleh pembacaan kedua sensor yang kurang sensitif, selain itu pula rancangan membership function dan rule base untuk nilai input output belum optimal dan jumlah pengujian data yang sedikit.
Percobaan ke-2
Percobaan 2 tidak jauh berbeda dengan percobaan 1. Hanya saja nilai kecepatan motor yang akan diuji coba memiliki set point PWM sebesar 250, dan nilai suhu sebesar 28– 29 yang dapat dikategorikan sebagai suhu panas, sementara nilai jarak berubah-ubah setiap satuan waktu. Jarak akan digunakan sebagai variable yang menentukan kecepatan baling-baling kipas tersebut. Adapun hasil data yang diuji sebanyak 49 kali ditunjukkan oleh gambar berikut.

Gambar 7. Grafik Respon Fuzzy untuk set point kecepatan cepat (250)
Dari grafik di atas, sistem menunjukkan rise time yang sama dengan dengan percobaan 1. Sistem hanya memerlukan waktu 1 detik untuk menyesuaikan kondisi. Selain itu pula, hasil respon yang ditunjukkan sangat stabil. Tidak ditemukan ada nya overshoot pada sistem yang diuji coba. Walaupun demikian, penurunan nilai suhu tidak dapat dipertahankan secara lama. Seperti data yang ditunjukkan pada tabel, ketika detik ke 3 hingga 4 suhu berhasil turun 1 derajat Celcius menjadi 28 derajat Celcius. Namun, pada detik ke 5 hingga 8 suhu kembali naik menjadi 29 derajat Celcius. Meskipun demikian, rata-rata error yang terjadi pada sistem berhasil diturunkan hingga mencapai 3,06122 %.

sistem pemulihan panas mobil menggunakan generator thermal elektrik

Oleh : Muhammad Zainal Abidin (@J18-ZAINAL) Abstrak Mesin pembakaran internal (ICE) tidak secara efisien mengubah energi ...