JavaScript is disabled or you're using old browser, please turn on your JavaScript or upgrade your browser to see fancy looking.
Archive for the ‘elec’ Category

  Older Entries 

Interfacing antara AVR dengan CMPS03

Well, malam rabu (or kamis ya?) saya bergadang dengan teman CERC lainnya. Dua robot kami belum menggunakan modul kompas, jadi saya terpaksa menemani Memet and friend. Sebelumnya terima kasih untuk teman CERC yang telah mentraktir makan di pasar ikan (egh pancingan untuk menginap?), lumayan juga ternyata upah dari pameran. Sesuai dengan janji saya pada postingan sebelumnya kali ini saya akan membahas penggunaan CMPS03 melalui jalur I2C, mungkin ini bisa juga berguna bagi yang lainnya yang ingin mencoba menggunakan CMPS03 dengan AVR (saya menggunakan AT90s2313), bahasa yang digunakan adalah C (dengan CodeVisionAVR). Untuk module CMPS03 ini terdapat dua cara interfacing, yaitu menggunakan PWM dan menggunakan I2C. Nah saya hanya akan membahas yang I2C. Yang dibutuhkan adalah: AT90s2313 (ini bisa digantikan dengan chip AVR lainnya), CMPS03 (serta 2 resistor 1K s/d 47K untuk pullup, nilai resistornya tidak menjadi masalah) dan LCD 2×16 (serta trimpot atau potensio untuk kontras LCD). Lebih bagus jika ada kompas marinir untuk kalibrasi nantinya. Jika Anda belum mengetahui susunan pin CMPS03, berikut adalah susunan pinnya:

Gambar 1. Susunan pin CMPS03 (sumber: http://www.robot-electronics.co.uk/images/cmps3pin.jpg)

Read the rest of this entry »

Menggunakan Jalur I2C

Saya tulis ini sebagai awalan sebelum memulai interfacing dengan CMPS03 dengan cara I2C. Sebenarnya saya dulu sempat menulis mengenai I2C di text file di komputer, tapi entah kemana file itu sekarang. OK langsung saja, I2C (Inter-Integrated Circuit), dibaca aytusi, merupakan jalur komunikasi serial multi-master yang dikembangkan oleh Philips, sekarang menjadi tanggung jawab NXP (perusahaan semikonduktor yang didirikan Philips). Ada beberapa versi spesifikasi yang dikeluarkan. Versi awal yang dibuat pada tahun 1982 hanya dapat mencapai kecepatan 100 Kbit/s (standard mode) dan pengalamatan hanya sebesar 7 bit. Hingga tahun 1992 (versi 1.0) kecepatan masih mencapai 100 Kbit/s, namun ada penambahan mode (Fast-mode) yang dapat mencapai kecepatan 400 Kbit/s (Fast-mode hanya kompatibel dengan versi terdahulu (downward)). Versi 2.0 (tahun 1998) menjadikan jalur I2C standar de facto yang diimplementasikan lebih dari 1000 IC yang berbeda dan dilisensikan ke 50 lebih perusahaan. Modifikasi versi 2.0 ini meliputi penambahan mode High-speed mode (Hs-mode) yang dapat meningkatkan bit rate sampai 3.4 Mbit/s. Perangkat dengan Hs-mode dapat berkomunikasi dengan perangkat lainnya (dalam satu jalur I2C) yang memiliki bit rate antara 0 s/d 3.4 Mbit/s (jadi kompatibel dengan Hs-mode dan standard mode). Tahun 2000 keluar lagi versi 2.1 dan saat tulisan ini saya buat spesifikasi I2C saat ini sudah mencapai versi 3.0. Menurut saya seharusnya I2C ini masuk ke dalam materi kuliah yang berhubungan dengan interfacing. Saya tidak tahu apakah I2C pernah dibahas pada saat mata kuliah interfacing, karena saya jarang masuk kuliah :mrgreen: .

Read the rest of this entry »

Hanya Ide Sesaat

Lagi iseng ngelamunin alat skripsinya Ayu, jadi muncul ide. Mungkin basi, tapi sebenarnya cukup mudah, sederhana dan tidak terlalu mahal jika diimplementasikan, bahkan bisa menghasilkan sedikit uang jika ada yang berminat. Bisa ditawarkan ke sekolah, lembaga kursus atau bahkan institusi. Wait.. wait.. ngomongin apa sih? OK, karena kebetulan ada teman yang minta dibuatkan alat buat skripsinya, munculah suatu ide dari alat tersebut (jadi ini ide awalnya si Ayu, bukan gw). Sepertinya belum diaplikasikan di sebagian besar institusi. Alat yang dibuat sebenarnya sebuah tampilan (berupa LCD) yang menampilkan status dosen apakah masuk atau tidak masuk. Mudahkan? Karena ini buat mahasiswi TI, maka saya buat tidak terlalu ribet. Pakai modul uC (kit jadi), komunikasi serial antara modul uC dan PC, dan modul uC yang akan mengontrol tampilan LCD. Aplikasi yang berjalan di PC cukup dibuat mudah saja dengan aplikasi berbasis desktop. Nah, aplikasi desktop ini melakukan query ke database dosen. Sehingga di aplikasi ini, pengguna cukup memilih daftar dosen dari dropdown list, memberinya keterangan masuk atau tidak masuk. Ada field tambahan, misal jika tidak masuk bisa digunakan untuk memberi informasi tugas. Nah itu sederhananya alat skripsi teman saya. Mudahkan?
Read the rest of this entry »

Boring Day

Fyuh.. My friends came again to me asking for help, then i guest “it must be their PI related to electronic”. But, nevermind i like to do that :D. As could as possible, the task should be solderless. Damn.. im so f*ck*ng lazy soldering IC’s pin. It could be nice to buy development board for your project dude. So i recommend my friends to buy the devboard. Electronic hobbyist tend to build the board by himself, but i think it is wasting time. There is one way as electronic hobbyist to press budget and time, IMHO, yeah.. find your friend who needs her/his project done ASAP, he/she will give tools, kits & components needed by you and probably a tip. In my case, i don’t need to find them, they come to me already. Last project was digital temperature, using AVR’s ADC, which controls two fans and monitored via LCD. Now, same thing in using LCD, digital clock with alarm and stopwatch. For you, who is familiar with electronic might blame my friend as a foolish. Ya.. ya.. there are many many application note, articles, tutorials strip this project. So who is wrong when someone has money to help hobbyist kill their boring day.

So what you gonna build today, gedex? Just like i said “digital clock with alarm & stopwatch feature”. In addition, other friend also request me to change his already apps, just minor modification. For this digital clock, i use AT89S51/52 as controller, DS1302 for RTC, 93C66 for EEPROM. For you who is interested, here is the code written in assembler (1600 lines). Use new firmware for ‘no reset’ on RTC below.

Happy debugging :D
To get my digital clock schematic just drop me a message.

Update new firmware here. This time, the program doesn’t reset the clock each time you unplug the power. But for saving alarm time, i still got problem when writing to EEPROM. Anyone can help??

Note : Hari’s program here, based on this app, which i wrote the program in assembler plus added swicth connected to INT0 for switching startup (20,30,40, and 60).

Fuzzy Logic Untuk Navigasi Robot (Bagian I)

Seperti apa yang pernah diucapkan almarhum buyut :D:

The only source of knowledge is experience

Albert Einstein

Saya ingat bagaimana saya membuat robot pertama kali dengan pengetahuan nol dalam bidang robotika dan juga elektronik. Meskipun banyak buku, artikel dan tutorial yang membahas bagaimana membuat robot dari awal, rasanya hanya akan membuat bingung dengan segudang referensi tanpa mengotori tangan dengan solder dan coding. Akhirnya saya lupakan referensi dan mengingat sebagaian referensi yang masih menyangkut di otak. Ini saatnya memakai otak untuk sedikit berpikir dan berimajinasi. Jadi teringat pesan buyut :D :

Any man who reads too much and uses his own brain too little falls into lazy habits of thinking.

Albert Einsten.

Berhubung robot yang dibuat hanya sebatas tugas lab, maka saya tidak memprioritaskan untuk membuatnya istimewa. Cukup bekerja sesuai deskripsi yang diminta. Apabila saya mengingat robot itu, saya tertawa membayangkan baris program yang sangat sederhana sekali, tapi beberapa orang melihatnya cukup serius :D. Mungkin ini juga sering terjadi apabila Anda belajar bahasa pemrograman dan sebulan kemudian melihat program Hello World. Tadinya saya berniat menaruh skematik beserta program di tulisan ini, tapi filenya entah di mana.. :D. Robot yang saya buat ini adalah light seeking, hanya menggunakan 3 LDR. Kalau tidak salah ada koran yang memuatnya (he2.. narsis).

Robot kedua yang saya buat dibuat untuk mengikuti kontes robot line follower di kampus, kontes perdana.
Masih dengan pengetahuan yang sangat minim dan agak sotoy (karena menganggap enteng) dan masih acuh terhadap sistem kontrol, maka yang terbesit saat itu hanya teknik kontrol ON-OFF. Teknik kontrol seperti ini masih bisa di terapkan di arena tak bersimpang, namun arena yang digunakan banyak terdapat simpangan, sehingga dibutuhkan teknik kontrol
yang dapat mentolelir gain motor. Hal yang pertama di lakukan adalah melakukan pendataan kondisi sensor pada garis dan menentukan aksi terhadap kondisi tersebut. Pada robot tersebut digunakan 5 sensor dengan susunan sebagai berikut :

(4)___(3)_(2)_(1)___(0)

Angka tersebut menunjukkan urutan pin pada port mikrokontroller. Untuk nilai binary dengan 4 variabel (sensor) memliki kemunkinan nilai unik (kondisi sensor) sebanyak 2^4 = 16. Tidak semua kondisi digunakan. Adapun kondisi yang perlu diprioritaskan untuk mendapatkan aksi adalah :

—————————————————-
4 | 3 | 2 | 1 | 0 | Aksi
—————————————————-
x | 0 | 1 | 0 | x | Maju
x | 1 | 1 | 0 | x | Serong kiri
x | 1 | 0 | 0 | x | banting kiri
x | 0 | 1 | 1 | x | serong kanan
x | 0 | 0 | 1 | x | banting kanan
x |1 | 1 | 1 | x | Maju
——————————————————
1 menunjukkan sensor berada pada garis.
Pengaturan jarak antar sensor disini memungkinkan 2 atau 3 sensor mengenai garis. Dengan mengabaikan sensor paling kiri (4) dan kanan (0) dan menggunakan aksi sesuai tabel, robot saya dapat berjalan cukup smooth mengikuti garis lurus. Bila terdapat jalur berupa huruf L, sensor (0) dan (4) bisa membantu. Kontrol yang digunakan hanya proportional
saja, yaitu pemberian PWM motor. Apabila diinginkan pergerakan yang lebih smooth bisa menambah kontrol derivative. Mendapatkan nilai konstanta proportional yang tepat adalah melalui test berulang kali. Ini seperti melakukan mapping input sensor terhadap output PWM motor. Nilai input disini sangat sederhana jadi tidak perlu menggunakan fuzzy logic. Beberapa orang menyebutnya dengan table lookup. Oia ini video robotnya, cupu abis :

http://www.youtube.com/v/ks1zYPqFcEI

Sialnya nih robot dah di gondol oleh orang yang tidak tahu berterima kasih tidak bertanggung jawab, tidak menghargai karya orang lain, menipu dosen (dengan mengklaim robot saya sebagai robot buatannya). Dan parahnya dia adalah seorang wanita yang seharusnya menjadi pamong bagi mahasiswa/i di filkom (ketua BEF). Astagfirullah,
mudah-mudahan Allah ta’ala memaafkannya. Saya sendiri sudah mengikhlaskannya (mudah2an). Apabila ada yang tertarik ini source codenya. Saya bukan programmer sekelas Kel, jadi masih banyak menggunakan delay. Rutin utama yang perlu diperhatikan adalah rutin scan :scan:
mov a,p1
anl a,#0eh
jz cekKiKamov p2, #66h
mundur: ;serkan / serkir / maju, 0,6,c,e
mov B, A
movc A,@A+dptr
mov pwmKi, A
mov A, B
inc A
movc A,@A+dptr
mov pwmKa, A
ret

mundur_:mov p2, #3Ch
sjmp mundur

cekKiKa:jnb sKiLuar,_kanan
_kiri: mov pwmKi,#40h
mov pwmKa,#50h
mov p2, #36h
ret

_kanan: jnb sKaLuar,mundur_
mov pwmKi,#50h
mov pwmKa,#40h
mov p2, #6Ch
ret

Pemanggilan rutin scan secara otomatis akan memandu robot untuk mengikuti track putih tanpa mempedulikan simpangan. Pertama-tama kontroler akan membaca kondisi sensor saat itu nilai sensor akan menentukan alamat pengambilan data PWM motor. Penggunaan instruksi ‘anl a,#0eh’ akan membaca 3 sensor tengah (sesuai dengan susunan sensor yang saya jelaskan di atas). Instruksi ‘jz cekKiKa’ akan mengecek nilai accumulator, apabila ‘0′ maka sensor paling ujung (0 & 4) akan dicek. Jika ada salah satu dari sensor (0) atau (4) mengenai track putih (memberikan logik ‘1′) maka robot akan spin ke arah sensor bernilai ‘1′ tersebut. Ini berguna untuk track yang memiliki belokan berbentuk huruf L. Jika 3 sensor tengah memberikan nilai ‘0′ dan tidak ada sensor (0) dan (4) yang memberikan logik ‘1′ maka robot akan mundur. Ini kurang efektif, jika saya berpikir sekarang, untuk digunakan sebenarnya. Sayangnya, rutin ini hanya bisa diimplemetasikan pada jalur lurus. Ada paper menarik, Penggunaan Kombinasi Sensor Array Depan dan Belakang pada Robot Pengikut Garis (Kasus Robot Otomatis ASKAF-i), yang menggunakan tambahan sensor belakang dalam kombinasi sensor Array. Jika Anda menginginkan navigasi line tracking yang lebih robust, paper ini dapat dijadikan acuan. Jika jalur yang digunakan tidak lurus, terdapat jalur melengkung, ada baiknya melihat robot ini.
Robot yang saya kerjakan saat ini (sudah selesai seminggu yang lalu) menggunakan fuzzy logic untuk navigasinya, baik untuk wall following (mengikuti dinding) dan obstacle avoidance (menghindari dinding). Karena menggunakan sensor ultrasonic, data untuk satu sensor tidak lagi berupa biner. Biner dalam bahasa pemrograman tingkat tinggi dapat di padankan sama halnya dengan tipe data boolean (true atau false). Engineer melihatnya sebagai level tegangan, apabila bekerja dengan komponen logika, yang mempresentasikan 0 atau 5 V. Tapi tidak absolut 0 atau 5 (tergantung spesifikasi komponen tersebut). Misal jika sebuah sensor memberi masukan 5 V, program melihatnya sebagai ‘1′ atau true, yang mengindikasikan sensor menangkap adanya objek yang berdekatan. Bila tidak objek yang menghalangi sensor dalam batas toleransinya, maka akan dihasilkan tegangan 0 V, dimana program merepresentasikan nya sebagai ‘0′ atau false. Secara sederhana program dapat di tulis seperti ini :

if (sensor==1) {
aksi(1); //aksi yang dilakukan sistem bila ada objek
} else {
aksi(0); //aksi yang dilakukan sistem bila tidak ada objek
}

Dalam teknik kontrol, ini termasuk kontrol ON-OFF. Bagaimana bila sistem yang kita inginkan dapat melakukan aksi yang berbeda untuk jarak yang sangat jauh, jarak jauh, sedang, cukup dekat dan dekat. Mungkin ini saatnya menggunakan Fuzzy logic. Teori fuzzy logic dipropose oleh seorang ahli matematika bernama Lotfi Zadeh pada tahun 1973. Sebelumnya Zadeh memperkenalkan teori fuzzy set pada tahun 1965.

Bersambung … (Ntar lagi ya lanjutinnya, banyak image nya soalnya bagian ke-II)

  Older Entries