Selasa, 11 November 2008

Level cairan dgn Fuzzy Motor Stepper

>> Persentase Wa Kerjain
* Elektronika 100 %
* Software 100 %
* Mekanik 70 %



>> Bla-bla :
Nah udah baca yg judulnya "LEVEL AIR FUZZY MOTOR SERVO" ?
Ad yg mo buat alat tapi bingung buat apa, trus wa tawarin judulnya "PENGENDALIAN TINGGI MUKA CAIRAN DENGAN METODE FUZZY MENGGUNAKAN MIKROKONTROLER ATmega8535".
Alat yg ini semuanya 100 % wa yg buat kecuali meja buat tandonnya n akuariumnya wa pesen.

Alat ini sederhana loo, elektroniknya cuma modul mikrokontroler ATmega8535, Motor stepper 5 Volt, driver stepper, power supply 5 Vdc 2 buah. Trus nambah Tandon 2, akuarium 1, Meja 2 n stop keran 1.
Alatnya memang berukuran besar tapi sederhana n tingkat keberhasilan hampir 100 % trus kerusakan mendekati 0 %. Beneeeeerr..
Jauh lebih sederhana di banding yg pake motor servo tapi memang responnya agak lama karena menggunakan motor stepper yg perstep mengendalikannya.

Krn wa udah pernah buat programnya n berhasil wa perbaharui n lebih sederhanakan lg.
Yg Fuzzy Servo, RULE-nya ada 25 n menghabiskan memori mikrokontroler ATmega8535 setelah membuang 5 rule.
Trus yg baru ini Fuzzy Stepper, RULE-nya ada 36 n menghabiskan baru 63 % memori mikronya. Fuzzy-nya semakin bagus, hmmm....
Semakin sering mencoba semakin menemukan hal baru n lebih sederhana.
Komunikasi rangkaian dgn komputer menggunakan port serial COM1. Tanpa menggunakan keypad n LCD, jadi dikendalikan n di tampilkan lgs dari komputer.

Masalah menggunakan motor stepper adalah mengatur posisi stepper yg selalu berubah-ubah sehingga wa menggunakan memori untuk mengingat posisi stepper trus wa tambahkan 2 Limit Switch pada keran.
Limit Switch 1 berada pd posisi keran tertutup penuh, jika Limit Switch ini tersentuh berarti memori stepper = 0;
Limit Switch 2 berada pd posisi keran terbuka penuh, jika Limit Switch ini tersentuh berarti memori stepper = 280;
Nilai 280 wa dapetin dari menghitung langkah stepper dari tertutup penuh ke terbuka penuh.

Mungkin sodara-sodara berpikir klo Motor stepper ga begitu kuat untuk muter keran, ya gak ??
Memang klo langsung motor stepper g kuat makanya wa pake Gearbox tambahan n efeknya semakin memperlambat respon sistem.
Trus syukurlah wa dapet keran yg bagus jadi di putar dengan 3 jari aja lgs muter, g usa pake tenaga daleem.
Gambar dibawah ini adalah tampilan program DELPHI nya dan data d konvert ke Excel :


















>> Cara Kerja :
Ketika alat di nyalakan, pertama-tama melakukan proses inisialisasi posisi keran yaitu posisi tertutup sempurna, dgn cara keran di buka sedikit kemudian di putar hingga Limit Switch tutup tersentuh, saat ini pula memori posisi stepper bernilai 0.
Pemberian nilai referensi tinggi cairan, Run, dan Stop program dilakukan melalui komputer.
Ketika di RUN n nilai error besar (Maksimum) keran diputar ke posisi terbuka penuh hingga menyentuh Limit Switch buka. Komunikasi ATmega8535 dgn komputer secara serial UART melalui port COM1.

Tundaan atau delay motor stepper wa paling minimum 4 milisekon perstep, klo wa kurangin lagi motor stepper bergetar tapi g muter-muter krn terlalu cepat. Gerakannya sangat halus seperti motor DC dgn kecepatan rendah.
Biar step-nya halus n waktu tundaan sampai minimum, wa program motor steppernya dgn half step n bukannya full step. Full step g bisa halus banget n pasti terasa step-stepnya.
Listing program motor stepper-nya wa dah taruh d blog wa yg satu lg.

>> Spek Alat :
* Dimensi Alat 100 x 75 x 150
* Mikrokontroller ATmega8535
* Driver motor stepper ULN28003
* Power Supply 5 Vdc 2 buah
* Sensor Range ultrasonik PING

>> Software
* PCB Eagle CAD
* CodeVision AVR
* DELPHI 7
* Komponen COMPORT by Dejan Camila
* Microsoft Excel

>> Catatan :
* Rotasi keran dari posisi tertutup sempurna hingga terbuka sempurna sebesar 380 derajat, jadi g mungkin sensor Limit Switchnya d pasang sebaris karena tabrakan. Jadi wa pasang bertingkat seperti tangga. Mantabb.
* Yg pesen alat punya Laptop n g punya komputer PC. Wa rancang komunikasi serial COM, jadi wa tambahin converter USB to RS232. Ternyata ketika terkonenksi Laptop dgn alat timbul masalah yaitu ketika motor stepper mulai bergerak entah bagaimana, tak ada hujan, badai, atau petir tiba-tiba Laptopnya restart sendiri.
Awalnya wa pikir laptopnya bermasalah ato g kuat trus pake Laptop temennya yg satu lg dan hal yg sama terjadi.
Padahal di port COM di PC g masalah n bagus-bagus aja.
Driver motor steppernya pake ULN28003 jadi groundnya gabung kesimpulannya karena motor stepper berarus besar ini ketika mati kemudian nyala dia mengambil sebagian arus yg ada pada Laptop sehingga Laptop kekurangan tenaga n restart deh. (Sok tau dikit wa, banyak kaliiii...).
* Kelas Fuzzy-nya wa buat 6 kelas jadi ada 36 RULE trus baru kepake 63 % memori Mikro ATmega8535 jadi masi bisa d tambah lagi dengan fungsi lain ato nambah RULE-nya, tapi untuk RULE wa rasa dah cukup.
* Nilai-Nilai error, delta error, derajat keanggotaan Fuzzy tiap kelas, num, denum, dan crispnya wa yakin benar karena wa uji coba tiap nilai-nilai tersebut n wa tampilkan seluruh nilai-nilai tersebut dikomputer sebagai umpanbalik n koreksi buat wa klo rumusnya salah.

Level Cairan dgn Fuzzy Motor Servo Posisi

>> Persentase Wa Kerjain
* Elektronika 50 %
* Software 80 %
* Mekanik 20 %







>> Bla-bla :
Fuzzy berarti kabur...
Awalnya wa bingung apa itu Fuzzy, rumus Fuzzy, trus bagaimana aplikasikan Fuzzy pada mikrokontroler.
Soalnya klo wa kuliah selalu Fuzzy (kabur) dari pelajaran alias bolos, Apa Kata Duniaa...
N memang benar, pengalaman guru terbaik.
Wa paham (walopun sedikit) salah satu metode Fuzzy setelah membaca teori n mengaplikasikannya lgs.
Klo teori trus g d aplikasikan tar cuma bisa ngitung n ngomong doank tp g tau gunanya di dunia elektronika bagaimana, tapi klo lgs praktek blum tau teorinya tar Fuzzy beneran, segalanya Fuzzy (kabur) n alatnya g jelas fungsinya.

Alat ini awalnya TA angkatan atas d kampus Wa judulnya "PENGENDALIAN TINGGI MUKA CAIRAN DENGAN JST".
Terdiri dari tandon sumber air, tandon terkontrol, dan tandon pembuangan. pengaturan bukaan keran dengan motor servo tegangan 24 Vdc. Mikrokontroler AT89S51 berfungsi mengatur bukaan keran menggunakan DAC, mengakses PING, dan berkomunikasi dengan komputer secara serial UART.
Pengolahan JST terjadi pada komputer n nilai output berupa data 0 - 255 yang diberikan pada mikrokontroler.
Makanya wa buat elektronikanya cuma 50 % saja.

Alat yg wa buat judulnya "PENGENDALIAN TINGGI MUKA CAIRAN DENGAN MENTODE FUZZY MENGGUNAKAN MIKROKONTROLER ATmega8535".
Fiuh panjang juga..
Jadi wa buat alat baru terdiri dari mikrokontroler ATmega8535, keypad, n Display LCD. Komputer hanya monitoring saja tidak melakukan komputasi Fuzzy.
Oiya alat ini bukan TA wa tapi TA orang sekelas n sekampus wa trus wa CINTAI (cieehh..). Jadi waktu itu dia mo cepet lulus n ngejar wisuda.
Masalahnya adalah alat ini dari TA kemarin n output komunikasi mikro AT89S51 secara serial UART trus mikro ATmega8535 musti komunikasi dgn komputer untuk monitoring, laaaah port UARTnya ud kepake trus gmana ?? (liat gambar diagramnya biar jelas)

Berarti wa harus buat alat dari nol lagi n itu bisa lebih dari 2 bulan padahal harus slesai 1 bulan lebih. Pikir punya pikir akhirnya komunikasi mikro Atmega8535 dgn mikro AT89S51 secara serial UART dan komunikasi mikro ATmega8535 dgn komputer menggunakan port paralel atau LPT.
N akhirnya bisa jugaaa..


>> Cara Kerja :
Input keypad untuk memberikan nilai referensi tinggi yg diinginkan.
Ketika proses mulai, mikro ATmega8535 meminta data tinggi cairan ke mikro AT89S51 yg terhubung ke sensor PING. Data tinggi cairan yang diterima ATmega8535 dikomunikasikan terlebih dahulu ke komputer secara paralel melalui port LPT sebelum di olah.
Data tinggi cairan di olah dgn metode Fuzzy oleh ATmega8535 dan nilai crisp Fuzzy bernilai 0 - 255 yg berarti bukaan valve.
Nilai ini di berikan ke mikro AT89S51 yg selanjutnya mengatur bukaan valve.
Cara kerjanya memang terkesan ribet n membingunkan karena menggabungkan 2 rancangan yg berbeda dan konsepnya berbeda pula.
Tampilan pada komputer terdiri dari 2 bagian yaitu berupa tampilan animasi pergerakan cairan pada tandon dan tampilan berupa grafik 2 dimensi. Tar bisa di lihat di "Level Cairan dgn Fuzzy Motor Stepper", serupa tapi tak sama.

>> Spek Alat :
* Dimensi Tandon air 100 x 75 x 150
* Dimensi Uc ATmega8535 20 x 10 x 10
* Dimensi Uc AT89S51 50 x 35 x 7
* Power Supply 5 Vdc + 24 Vdc
* Sensor Range ultrasonik PING
* Display LCD 16 x 2
* Keypad 4 x 4 flat

>> Software
* PCB Eagle CAD
* CodeVision AVR
* DELPHI 7
* komponen io.dll

>> Catatan :
* Pada permukaan cairan wa kasi sterofoam (gabus) krn cairan bisa meredam sensor Ultrasonik n menyebabkan kesalahan pembacaan tinggi muka cairan.
* Kadang saat merancang program dgn metode spt PID, Fuzzy, dll, programmer kesulitan mengetahui apakah rumus n proses perhitungan pada mikrokontroler telah sesuai dan benar, dan biasanya programmer hanya belihat hasil akhirnya, jika sesuai berarti benar sebaliknya jika tidak sesuai berarti salah.
Wa uji secara REALTIME dan memonitor melalui komputer hasil perhitungan pada mikrokontroler dgn port serial sehingga program selanjutnya tidak mengalami kesulitan dan jauh lebih yakin.
Saran wa selalu uji n monitor biar programnya meyakinkan n bukan d manipulasi atau kira-kira, kan engineering (Cieeh..)
* Program Fuzzy di mikro ATmega8535 yg wa buat waktu itu memakan semua memori di mikronya bahkan g cukup, jadi RULE Fuzzy-nya wa ilangin klo ga salah 5 RULE.
Masalah memori ?? Bukan, waktu itu wa g mencoba menyederhanakannya, maklum deadline.
* Banyak kelas Fuzzy yg wa buat waktu itu cuma 5 kelas.
* Wa uda banyak buat alat yg dikendalikan dgn port paralel LPT komputer n selalu aja ada masalah n macem-macem. Pada pernah ngalami g sih ??? Wa sekarang selalu menghindari menggunakan port paralel LPT.

Kecepatan Motor DC dgn PID

>> Persentase Wa Kerjain
* Elektronika 100 %
* Software 100 %
* Mekanik 10 %

>> Bla-bla :
Alat atau tugas akhir Sarjana selalu identik dgn analisis n perhitungan, walaupun tidak semuanya.
Nah Tugas akhir yg kek gini biasanya paling byk, apalagi kalo kepepet nyari-nyari judul g dapet.
Judulnya mesti ada "PENGENDALIAN KECEPATAN MOTOR DC" pake PID, Fuzzy, ato JST, deelel laaah.

Wa ngerjain salah satunya pake PID. SUSAH.....???
Ga juga, yg penting tau rumusnya yg 'tepat' trus rumusnya bisa d sederhanakan hingga tinggal pake operator kali, tambah, kurang, n bagi.
udah g ada integral, pangkat, akar, dan yg susah-susah lah.

Intinya bagaimana rumus yg sulit bisa di tuliskan dalam bahasa pemrograman untuk mikrokontroller, agak panjang gpp laah.
Soalnya mikrokontroller gitu looooh. jadi mesti mikirin kecepatan komputasi, memori RAM, byk register truss.. ad dah.
Yg jelas jgn pake ASSEMBLER tar BLENGGER.

Oiya karena nantinya analisis jd musti ada data-datanya.
Wa pake komputer sebagai monitoring dgn tampilan brupa grafik 2 dimensi dan berupa tabel data, komunikasi secara serial UART port COM1 (USB jg bisa pake konverter tapi).


>> Cara Kerja :
Input Nilai PID dapat dimasukkan dari keypad 4 x 4 maupun dari komputer, jadi klo keypad rusak g masalah.
Start sistem juga dapat di kendalikan dr komputer selain dari keypad.
Jadi ketika alatnya jadi seolah-olah keypadnya g guna. Sebenarnya emang g guna si, tp klo pas sidang selalu dari komputer seolah-olah proses PID-nya n pengendalian motor DC juga dari komputer, berarti mikronya cuma buat nilai PWM ma sensor Encoder donk. Nah makanya wa kasi keypad biar yakin tu Dosen, bahkan ketika tidak terkoneksi dgn kmputer proses tetep berlangsung.

Abis nilai Kp, Ki, dan Kd nya diberikan n proses d jalankan, mulai dah muter motor DC-nya. Besarnya nilai kecepatan motor DC di tampilkan pada LCD n komputer berupa tabel data dan grafik 2 Dimensi, yg selanjutnya tabel dapat d proses dalam program EXCEL n grafik disimpan jadi image (gambar) untuk analisis.
Gitu deh....


>> Spek Alat :
* Dimensi Alat 25 x 20 x 15
* Mikrokontroller AVR ATmega8535
* Power Supply 5 Vdc + 12 Vdc
* Driver H Bridge L293D
* Kendali motor DC dgn PWM
* Input keypad matrix flat 4 x 4
* Display LCD karakter 16 x 2

>> Software
* PCB Eagle CAD
* CodeVision AVR
* DELPHI 7
* Microsoft Excel
* komponen COMPORT by Dejan Camila

>> Catatan :
* Data yg diberikan mikrokontroler ke komputer berupa bilangan bulat n bukan bilangan pecahan, trus awalnya sumbu X pada grafik yang menunjukkan Waktu (detik) maksimum hanya 50, BAH grafiknya seperti tangga jadinya lucuu.. Wa bingung biar bisa jadi pecahan n bener-bener susah untuk bilangan pecahan pada mikrokontroler (tapi bukan berarti g bisa), Akhirnya DELPHI-nya yg wa akalin, waktu maksimum jadi 400 n wa buat program biar ada nilai pecahannya biar g spt tangga (manipulasi jg nih).
* Simpan data imagenya juga biar halus grafiknya (ga spt tangga) simpan dgn format *.jpg bukan *.bmp cobain aja.
* Alat ini sebenarnya tidak begitu ideal atau sempurna tapi berfungsi dgn baik n responya bener-bener bagus. Masalahnya pada sensor encodernya uda salah rancang wa. Hiks..3
* Oiya setiap buat alat yg pake Motor atau pake kumparan arus besar sebaiknya groundnya d pisah dgn rangkaian kontroler.
* Oiya lg setiap program panjang PASTI ada cara menyederhanakannya, masalahnya bagaimana ??? Hmmmm...

Alat Ukur Tinggi Badan Otomatis


>> Persentase Wa Kerjain
* Elektronika 100 %
* Software 100 %
* Mekanik 100 %




>> Bla-bla :
Pengukuran Tinggi badan Otomatis nih...
Beneran lo Otomatis..
wa bilang otomatis karena proses memulai dan berhentinya pengukuran tinggi badan tanpa perlu dipicu oleh pengguna melainkan di picu oleh perubahan pembacaan jarak oleh sensor PING.

Dulu wa d tawarin buat alat pengukuran tinggi badan dgn sensor Limit Switch pake motor stepper trus ada encodernya yg nantinya didefinisikan sebagai tinggi badan. Nah alat pemicunya di letakkan di alas kaki, jadi klo diinjak steppernya mulai berputar hingga Limit switch nabrak kepala. Klo uda selesai tar d tarik k atas lagi hingga nabrak Limit Switch batas atas.
Mungkin alatnya teliti tapi tidak sederhana, besar, n menurut wa kurang canggih krn berbau mekanik yg ribet.

Pembacaan tinggi alat wa dgn sensor PING dan pembatasan jarak baca 150 cm hingga 200 cm, jadi alat ini g mo ngukur orang-orang yg pendek.
Canda kok wkkk...

Batas pengukuran tinggi badan dari 50 cm - 200 cm, semua orang bisa ngukur kok tenang aja.
Alat ini terdiri dari perangkat yg sederhana saja n murah, yg mahal PING-nya aja.
Wa pake mikro AT89S51 dgn bahasa Assembler, display berupa 4 digit seven segmen, Buzzer 5 Volt, Pijakan kaki berupa papan tebal ukuran 40 x 40, tiang dari pipa air kecil yg tebel.
Pipanya wa potong jadi 3 bagian n masing-masing dapat d putus sambung, sooo alatnya bisa masuk kedalam tas kuliah neh n bisa d bawa sendiri. simpel kan.. ;)
Bagian bwah terdiri dari papan tebal dan transformator menempel d papan (berat neh), sedangkan display + mikro awal nya di posisi atas kepala n dekat dgn PING trus d pindah k bwah dekat kaki.
Rangkaian mikrokontroler, elektronik, n Display menjadi 1 dalam kemasan cantik berupa kotak kecil akrilic transparan dgn ukuran 15 x 8 x 2 cm.

>> Cara Kerja :
Display Seven segmen wa rancang dgn sistem scanning tanpa IC 7447 atau 7448 lebih ringkas shg rancangan alat lebih sederhana n fleksibel dalam program.
Rancangan program alat ini ada 2 karena wa uda buat yg 1 trus minta d ubah lg, y gpp laah...

* Rancangan 1
Display n mikro berada diposisi atas kepala dekat dgn sensor PING, tujuannya biar kabel yg menghubungkan PING dgn mikro tidak kepanjangan shg tidak ada kesalahan pembacaan data dan transformator yg berada di posisi papan bawah menjulurkan kabel hingga atas jadi kabelnya panjang. Tapi kelemahannya, tampilan tidak bisa dilihat saat mengukur tinggi badan sendirian (masa siiih..).

Wa rancangnya gini,
Tampilan awal display 000, selama sensor PING tidak mengukur adanya benda yg tingginya lebih dari 50 cm tampilan tetep 000.
Jika lebih dari 50 cm maka Buzzer bunyi 2 x 0.5 detik yg berarti siap melakukan pengukuran, trus jika waktu pengukuran lebih dari 3 detik Buzzer akan bunyi lagi selama 1 x 1 detik yg berarti pengukuran selesai dan Display "dikunci" selama 3 detik yg Artinya tampilan seven segmen tidak berubah selama 3 detik meskipun tidak ada orang yg diukur. Setelah 3 detik tampilan kembali menjadi 000.

Jadi klo ngukur sendirian trus uda bunyi buzer 2 x 0.5 detik, mulai ngukur dah tu alat, diem dlu slama 3 detik, misal tinggi 165 cm, tar klo bunyi 1 x 1 detik turun aja n liat sendiri tingginya berapa tar tampilannya tetep 165 cm.

* Rancangan 2
Display n mikro berada diposisi bawah deket kaki jadi jauh dgn sensor PING n deket dgn trafonya. Setelah d coba pembacaan data tinggi g masalah meskipun kabelnya panjang.
Pada rancangan ini Buzzernya jadi g guna trus wa matiin fungsinya karena ketika pengukuran tinggi lebih dari 50 cm tampilan akan lgs berubah n pengguna bisa melihat langsung berapa tinggi terukur, jadi tidak pake acara "mengunci" tampilan n data tampilan terukur secara REALTIME.

Wa lebih suka rancangan 1 karena lebih seru n klo ngukur pasti badan tegak, kan klo rancangan 2 musti agak nunduk untuk melihat displaynya jadi ukuran tinggi bisa berkurang 1 - 2 cm. Hmmm... untuk orang tertentu pasti berharga tuh.

>> Spek Alat :
* Dimensi Alat 40 x 40 x 210
* Mikrokontroller AT89S51
* Power Supply 5 Vdc
* Sensor Range ultrasonik PING
* Display 4 digit Seven Segmen
* Sound Buzzer 5 Volt

>> Software
* PCB Eagle CAD
* AEC_ISP
* ASM51
* NotePad

>> Catatan :
* Karena menggunakan sensor ultrasonik PING jadi untuk yg berambut mengembang, kribo, rasta, ato kayak nidji (ups..) pembacaan tinggi badannya jadi kacau yaitu menjadi lebih pendek dari yg seharusnya. Sebaiknya kepala d alasi sesuatu yg tipis seperti buku.
* Posisi harus tegak lurus dgn sensor PING.