Sabtu, 04 Oktober 2008

Tahapan Membuat Robot

Secara garis besar, tahapan pembuatan robot dapat dilihat pada gambar berikut:




Ada tiga tahapan pembuatan robot, yaitu:

1. Perencanaan, meliputi: pemilihan hardware dan design.
2. Pembuatan, meliputi pembuatan mekanik, elektonik, dan program.
3. Uji coba.

1. Tahap perencanan
Dalam tahap ini, kita merencanakan apa yang akan kita buat, sederhananya, kita mau membuat robot yang seperti apa? berguna untuk apa? Hal yang perlu ditentukan dalam tahap ini:

A. Dimensi, yaitu panjang, lebar, tinggi, dan perkiraan berat dari robot. Robot KRI berukuran tinggi sektar 1m, sedangkan tinggi robot KRCI sekitar 25 cm.
B. Struktur material, apakah dari alumunium, besi, kayu, plastik, dan sebagainya.
C. Cara kerja robot, berisi bagian-bagian robot dan fungsi dari bagian-bagian itu. Misalnya lengan, konveyor, lift, power supply.
D. Sensor-sensor apa yang akan dipakai robot.
E. Mekanisme, bagaimana sistem mekanik agar robot dapat menyelesaikan tugas.
F. Metode pengontrolan, yaitu bagaimana robot dapat dikontrol dan digerakkan, G. mikroprosesor yanga digunakan, dan blok diagram sistem.
H. Strategi untuk memenangkan pertandingan, jika memang robot itu akan diikutkan lomba/kontes robot Indonesia/Internasional.
2. Tahap pembuatan
Ada tiga perkerjaan yang harus dilakukan dalam tahap ini, yaitu pembuatan mekanik, elektronik, dan programming. Masing-masing membutuhkan orang dengan spesialisasi yang berbeda-beda, yaitu:

A. Spesialis Mekanik, bidang ilmu yang cocok adalah teknik mesin dan teknik industri.
Spesialis Elektronika, bidang ilmu yang cocok adalah teknik elektro.
Spesialis Programming, bidang ilmu yang cocok adalah teknik informatika.
Jadi dalam sebuah tim robot, harus ada personil-personil yang memiliki kemampuan tertentu yang saling mengisi. Hal ini diperlukan dalam membentuk Tim Kontes Robot Indonesia (KRI) atau Kontes Robot Cerdas Indonesia (KRCI). Bidang ilmu yang saya sebutkan tadi, tidak harus diisi mahasiswa/alumni jurusan atau program studi tersebut, misalnya boleh saja mahasiswa jurusan teknik mesin belajar pemrograman.

Untuk mengikuti lomba KRI/KRCI dibutuhkan sebuah tim yang solid. Tetapi buat Anda yang tertarik membuat robot karena hobby atau ingin belajar, semua bisa dilakukan sendiri, karena Anda tidak terikat dengan waktu atau deadline. Jadi Anda bisa melakukannya dengan lebih santai.

Pembuatan mekanik

Setelah gambaran garis besar bentuk robot dirancang, maka rangka dapat mulai dibuat. Umumnya rangka robot KRI terbuat dari alumunium kotak atau alumunium siku. Satu ruas rangka terhubung satu sama lain dengan keling alumunium. Keling adalah semacam paku alumunium yang berguna untuk menempelkan lembaran logam dengan erat. Rangka robot KRCI lebih variatif, bisa terbuat dari plastik atau besi panjang seperti jeruji.

Pembuatan sistem elektronika

Bagian sistem elektronika dirancang sesuai dengan fungsi yang diinginkan. Misalnya untuk menggerakkan motor DC diperlukan h-brigde, sedangkan untuk menggerakkan relay diperlukan saklar transistor. Sensor-sensor yang akan digunakan dipelajari dan dipahami cara kerjanya, misalnya:

Sensor jarak, bisa menggunakan SRF04, GP2D12, atau merakit sendiri modul sensor ultrasonik atau inframerah.
Sensor arah, bisa menggunakan sensor kompas CMPS03 atau Dinsmore.
Sensor suhu, bisa menggunakan LM35 atau sensor yang lain.
Sensor nyala api/panas, bisa menggunakan UVTron atau Thermopile.
Sensor line follower / line detector, bisa menggunakan led & photo transistor.
Berikut ini gambar sensor ultrasonik, inframerah, UVTron, dan kompas:



Pembuatan sistem elektronika ini meliputi tiga tahap:

Design PCB, misalnya dengan program Altium DXP.
Pencetakan PCB, bisa dengan Proboard.
Perakitan dan pengujian rangkaian elektronika.


Pembuatan Software/Program

Pembuatan software dilakukan setelah alat siap untuk diuji. Software ini ditanamkan (didownload) pada mikrokontroler sehingga robot dapat berfungsi sesuai dengan yang diharapkan.



Tahap pembuatan program ini meliputi:

Perancangan Algoritma atau alur program
Untuk fungsi yang sederhana, algoritma dapat dibuat langsung pada saat menulis program. Untuk fungsi yang kompleks, algoritma dibuat dengan menggunakan flow chart.
Penulisan Program
Penulisan program dalam Bahasa C, Assembly, Basic, atau Bahasa yang paling dikuasai.
Compile dan download, yaitu mentransfer program yang kita tulis kepada robot.
3. Uji coba
Setelah kita mendownload program ke mikrokontroler (otak robot) berarti kita siap melakukan tahapan terakhir dalam membuat robot, yaitu uji coba. Untuk KRCI, ujicoba dilakukan pada arena seluas sekitar 4×4 meter dan berbentuk seperti puzzle. Dalam arena KRCI ini diletakkan lilin-lilin yang harus dipadamkan oleh robot cerdas pemadam api. Contoh gambar robot pemadam api Ted Larsorn dan arena Kontes Robot Cerdas Indonesia (KRCI).



Untuk lomba robot KRI, dibutuhkan ruangan yang lebih besar, yaitu sekitar 15×15 meter. Dalam Kontes Robot Indonesia (KRI) 2008, masing-masing robot harus meraih target (bola/kubus) yang diletakkan di tempat yang tinggi, jadi sebuah robot harus bisa naik di atas robot yang lain untuk meraih target tersebut (seperti panjat pinang).



Final Kontes Robot Indonesia (KRI) dan Kontes Robot Cerdas Indonesia (KRCI) akan diadakan 14-15 Juni 2008 di Balairung UI Depok, tertarik mau menonton?

Bacaan selanjutnya:

Robocon India
Trinity Fire Fighting Robot Contest
Microcontroller Project for Fire Fighting Robot
Obstcale Avoiding Robot Tutorial
Ted Larson Fire Fighter Robot
Penulis: Oka Mahendra (http://tutorialgratis.wordpress.com)

Link ke artikel ini: Tutorial Membuat Robot Cerdas

Kembali ke: home

Rabu, 02 Juli 2008

ROBOT TIKUS

Robot tikus adalah robot sederhana yang berukuran kecil yang beroperasi dalam lingkungan labirin. Robot ini berukuran 13 CM X 13Cm. Bergerak dalam labirin berukuran 18 cm. Robot tikus ini termasuk dalam konsep pencarian (searching)yaitu robot yang bekerja mencari sesuatu dalam labirin yang belum terpetakan. Dan robot ini sering dilombakan.

Robot tikus yang saya buat ini memiliki tiga buah sensor inframerah pendeteksi lingkungan yang terpasang di samping kanan, kiri serta depan, pengendalian menggunakan mikrokontroler AT89C2051, dan penggerak menggunakan dua buah motor dc yang dipasang disebelah kana dan kiri robot. Blok perangkat keras ditampilkan pada gambar dibawah ini. penampang dan bentuk fisiknya diperlihatkan pada gambar berikunya

Senin, 09 Juni 2008

cara menghlgkan jejak

Pada Internet Explorer:

Pada Jendela Internet Explorer, pilih mnu Tools>Internet Options..
Pada Tab General, klik tombol Delete Cookies>OK, kemudian klik Delete Files..>cek Delete all offline content>OK, terakhir klik Clear History.
Klik OK untuk menutup jendela.
Pada Mozilla Firefox:

Pada jendela browser, pilih mnu Tools>Clear Private Data..
Beri cek Cookies dan Saved Password, klik tombol Clear Private Data Now.

robot penghindar karya sendiri dengan sensor IR

ROBOT PENGHINDAR

Prinsip Kerja
Fungsi dari sistem navigasi dengan menggunakan sensor Inframerah ini adalah bagaimana membuat kendaraan mini yang bergerak bebas pada suatu area yang dibatasi oleh sekat/dinding pemisah tanpa menyentuh sekat/dinding tersebut.
terdapat 2 buah motor Dc penggerak roda utama (MT1 dan MT2) yang berfungsi untuk mengatur kecepatan dari maju-mundur sekaligus mengontrol arah dan besar dari sudut belokan dari robot mobil tersebut. Juga terdapat 3 buah sensor Inframerah sebagai sensor jarak yang terletak di bagian depan robot mobil. Peletakan dari 3 buah sensor Inframerah secara bersilangan dimaksudkan agar :
1.Dapat mendeteksi besarnya halangan yang berada di depannya sehingga dapat menghindari halangan tersebut dengan baik.
2.Masih mampu mendeteksi adanya belokan walaupun robot mobil sudah terlalu berdekatan dengan salah satu sisi dari jalur jalan.
3.Pendeteksian terhadap adanya belokan dari jarak yang masih jauh lebih baik karena mempunyai sudut pantulan yang lebih kecil jika dibandingkan dengan jika dipasang secara tidak bersilangan.
5.2. Rancangan Mekanik
Gambar 5.4 di bawah ini menunjukkan masing-masing tampak atas dan tampak samping dari robot saya. Nampak rangkaian elektronika berupa rangkaian sensor dan kontroler terpasang pada punggung robot. Sistem mekatronika tersebut digerakkan oleh 2 buah motor Dc yang masing-masing memutar roda kiri dan roda kanan.
5.3. Rancangan Rangkaian Elektronika dan Kontroler
5.3.1. Rangkaian Sensor
Gelombang Inframerah adalah gelombang dengan besar frekuensi diatas frekuensi gelombang suara yaitu lebih dari 36 KHz. Seperti telah disebutkan bahwa sensor Inframerah terdiri dari rangkaian pemancar Inframerah yang disebut transmitter dan rangkaian penerima Inframerah yang disebut receiver. Sinyal Inframerah yang dibangkitkan akan dipancarkan dari transmitter Inframerah. Ketika sinyal mengenai benda penghalang, maka sinyal ini dipantulkan, dan diterima oleh receiver Inframerah. Sinyal yang diterima oleh rangkaian receiver dikirimkan ke rangkaian mikrokontroler untuk selanjutnya memberikan perintah kepada robot agar bergerak menjauhi penghalang tersebut sesuai dengan algoritma program mikrokontroler yang dibuat, seperti terlihat pada gambar di bawah ini.
a. Pemancar Inframerah (Transmitter)
Pemancar Inframerah ini berupa rangkaian yang memancarkan sinyal kotak berfrekuensi di atas 38 KHz menggunakan sebuah transducer transmitter Inframerah dan sinyalnya difokuskan melalui sebuah corong/pipa. Pada penggunaannya, akan digunakan 3 buah pemancar yang masing-masing mengirimkan sinyal dengan frekuensi yang berbeda-beda.
b. Penerima Ultrasonik (Receiver)
Penerima Ultrasonik ini akan menerima sinyal ultrasonik yang dipancarkan oleh pemancar ultrasonik dengan karakteristik frekuensi yang sesuai. Sinyal yang diterima tersebut akan melalui proses filterisasi frekuensi dengan menggunakan rangkaian band pass filter (penyaring pelewat pita), dengan nilai frekuensi yang dilewatkan telah ditentukan. Kemudian sinyal keluarannya akan dikuatkan dan dilewatkan ke rangkaian komparator (pembanding) dengan tegangan referensi ditentukan berdasarkan tegangan keluaran penguat pada saat jarak antara sensor kendaraan mini dengan sekat/dinding pembatas mencapai jarak minimum untuk berbelok arah. Dapat dianggap keluaran komparator pada kondisi ini adalah high (logika ‘1’) sedangkan jarak yang lebih jauh adalah low (logika’0’). Logika-logika biner ini kemudian diteruskan ke rangkaian pengendali (mikrokontroler).
5.3.2.Rangkaian Penggerak (Driver) Motor stepper.
Isyarat yang dimasukkan ke mikrokontroler untuk kemudian diolah, outputnya kemudian digunakan untuk menentukan langkah (step) dari motor stepper. Penggerak motor stepper berfungsi untuk mengatur pulsa-pulsa listrik dengan nilai tertentu sehingga dapat menggerakkan motor stepper.
Komponen utama dari penggerak motor stepper ini adalah IC ULN2803 yang tersusun dari rangkaian transistor yang dihubung secara Darlington dalam satu kemasan. Gambar rangkaian utama IC ULN2803 dapat dilihat pada gambar di bawah ini.
Pasangan Darlington bertindak seperti satu transistor dengan bati arus yang amat tinggi, rangkaian ini akan menghasilkan daya beban ac yang besar.
Dalam perancangan ini, tiap bagian pasangan Darlington ini akan berfungsi sebagai rangkaian saklar bagi motor, sehingga apabila pada kaki input driver (IC ULN2803) disuplai dengan tegangan maka akan menyebabkan pasangan transistor Darlington dalam IC menjadi saturasi dan mengakibatkan kaki input motor terhubung dengan ground atau dengan kata lain maka kaki input motor akan ditanahkan. Tiap pin input dari motor akan dihubungkan dengan pin keluaran dari driver, dimana pulsa keluaran dari driver yang akan diberikan pada motor diatur oleh mikrokontroler, dengan demikian port keluaran dari mikrokontroler dihubungkan dengan pin input dari driver.
5.3..3. Rangkaian Kontroler dengan Mikrokontroler AT89S51
Mikrokontroler 89S51 merupakan mikrokompumter CMOS 8 bit dengan kapasitas memori 4 Kbytes yang menggunakan flash memori ISP. AT 89S51 memiliki beberapa fitur seperti flash 4 Kbytes, RAM 128 bytes, 32 pin I/O ( 4 buah port ) timer Watchdog, 2 data pointer, 2 timer/pencacah 16 bit dan beberapa fasilitas pendukung lainnya.
Rangkaian mikrokontroler ini berperan sangat penting dalam navigasi robot mobil ini karena berfungsi sebagai pengendali utama navigasi ini, seperti halnya otak pada manusia. Rangkaian mikrokontroler ini terhubung dengan rangkaian sensor dan driver motor melalui port - port yang tersedia. Program yang dibuat dalam bahasa assembly dan telah di-compile di-download ke dalam mikrokontroler. Selanjutnya mikrokontroler akan mengeksekusi program tersebut dengan memperhatikan keadaan input dari rangkaian sensor. Selanjutnya mikrokontroler akan memberikan sinyal keluaran yang akan mengendalikan rangkaian driver motor demikian robot mobil dapat bergerak maju atau mundur sesuai dengan apa yang telah diprogram.
5.4.Rancangan Algoritma dan Perangkat Lunak
Berikut ini adalah salah satu contoh algoritma program berbentuk flowchart berserta keterangan mengenai posisi dari ketiga sensor pada mobile-robot yang akan dirancang dan dibuat :
Sensor 1 ( S.1 ) berada di tengah dan mengarah ke depan.
Sensor 2 ( S.2 ) berada di kiri dan mengarah ke samping kanan.
Sensor 3 ( S.3 ) berada di kanan dan mengarah ke samping kiri.
Logika “1” adalah logika input dimana jarak antara sensor dengan sekat atau dinding adalah minimum dan kendaraan mini harus berbelok. Sebaliknya logika “0” adalah jarak yang aman antara sensor dengan sekat atau dinding.
Pada saat robot mulai dijalankan, mikrokontroler selaku pengendali selalu memperhatikan kondisi dari ketiga sensor sebagai input. Input sensor yang diutamakan adalah sensor 1 yang berada di tengah dan mengarah ke depan. Apabila kondisi dari sensor ini low (logika ‘0’) yang berarti tidak ada penghalang maka kendaraan mini akan maju secara lurus, tetapi bila kondisi sensor ini high (logika ‘1’) maka selanjutnya mikrokontroler mengecek kondisi dari sensor 2 yang berada di sebelah kiri dan mengarah ke kanan. Jika kondisi dari sensor 2 ini low maka kendaraan mini akan berbelok ke kanan dan selanjutnya mikrokontroler terus mengecek kondisi dari sensor 1 hingga kondisinya low, bila kondisi dari sensor 1 tetap high maka kendaraan mini akan terus berbelok ke kanan hingga kondisi sensor 1 low. Tetapi jika kondisi dari sensor 2 ini high, maka mikrokontroler akan mengecek kondisi dari sensor 3 yang berada di sebelah kanan dan mengarah ke kiri. Jika kondisi dari sensor 3 ini low maka kendaraan mini akan berbelok ke kiri dan selanjutnya mikrokontroler terus mengecek kondisi dari sensor 1 hingga kondisinya low, bila kondisi dari sensor 1 tetap high maka kendaraan mini akan terus berbelok ke kiri hingga kondisi sensor 1 low. Tetapi jika kondisi dari sensor 3 ini high, maka kendaraan mini akan berbelok ke kanan dan mikrokontroler terus memantau sensor 3 hingga kondisinya low. Jika kondisi dari sensor 3 ini sudah low maka kendaraan mini akan kembali bergerak maju secara lurus.
(riana)

Selasa, 03 Juni 2008

ROBOT1

Sensor

Sensor-sensor yang digunakan robot untuk memperoleh informasi keadaan lingkungan terintegrasi dalam sistem-sistem detektor seperti proximity detector, velocity detector, flame navigator, candle detector, white floor detector, dan 3,5 kHz tone detector .

• Proximity Detector

Proximity detector digunakan untuk mengetahui posisi robot terhadap dinding kanan, dinding kiri, dan dinding depan. Dengan diketahuinya posisi ini maka robot dapat memberikan keputusan gerakan apa yang akan dilakukan. Pada sistem pendeteksi jarak digunakan tiga buah sensor pengukur jarak yang dipasang pada sisi kiri, kanan, dan depan robot. Sensor jarak kanan dan sensor jarak kiri dipasang mengarah ke samping dengan sudut 60 0 dari arah depan. Hal ini ditujukan agar pembacaan jarak lebih sensitif karena dengan perubahan sedikit arah robot maka akan mengakibatkan perubahan jarak yang besar antara robot dengan dinding yang diukur. Jarak antara masing-masing sensor dengan tepi chasis robot adalah 8 cm karena sensor ini akan salah dalam melakukan pembacaan untuk jarak dibawah 8 cm.

Sensor jarak yang digunakan adalah sensor jarak tipe GP2D12 yang diproduksi oleh Sharp . GP2D12 adalah sensor jarak yang menggunakan prinsip triangulation (prinsip segitiga) untuk mengukur jarak. Sensor ini terdiri atas sebuah LED infra merah yang menghasilkan cahaya infra merah termodulasi yang dipancarkan ke objek yang hendak diukur jaraknya dan sebuah array CCD yang berfungsi sebagai detektor infra merah yang akan menerima pantulan cahaya infra merah dari objek yang diukur.

Beberapa karakteristik dari sensor jarak GP2D12 adalah :

• Power supply 4,5 - 5,5 Volt.

• Output berupa tegangan analog yang berkisar antara 0,4 – 2,5 Volt.

• Pembacaan jarak tidak begitu dipengaruhi oleh warna objek yang diukur

• Dapat mendeteksi objek dengan jarak berkisar antara 8 cm – 80 cm

• Tidak membutuhkan rangkain kontrol eksternal

• Tidak begitu dipengaruhi oleh kondisi pencahayaan ruangan

Paket sensor GP2D12 ditunjukkan pada gambar 17.



Gambar 17

Bentuk fisik dari sensor jarak GP2D12

dengan kabel penghubungnya


Sensor GP2D12 memiliki tiga buah pin yaitu untuk Vcc, Ground dan Vo (tegangan output). Karakteristik tegangan output dari sensor ditunjukkan pada gambar 18.



Gambar 18

Grafik karakteristik tegangan output sensor GP2D12 terhadap jarak

Karena tegangan output sensor untuk pembacaan jarak yang valid berkisar antara 0,4 – 2,5 Volt maka sensor ini tidak lagi membutuhkan rangkaian pengkondisi sinyal. Masing –masing output dari sensor jarak dapat langsung dihubungkan ke ADC0809 yang tegangan referensi telah diatur sebesar sebesar 2,56 volt.



Metoda Pengolahan Data Jarak

Karena grafik hubungan jarak terhadap tegangan output sensor tidak linear maka dalam pengolahan data dalam prosesor dilakukan dengan menggunakan metoda look up table . Dalam metoda ini dibutuhkan memory dalam ROM sebesar 255 byte untuk pemetaan data jarak. Dalam look up table tersebut diisikan data-data jarak untuk setiap data tegangan yang diperoleh dari ADC mulai dari tegangan 0 sampai 2,55 Volt. Karena output valid sensor adalah berkisar antara 0,4 sampai 2,5 Volt maka dilakukan pembagian tiga zona pengisian data :

• Tegangan input 0,00 Volt sampai 0,39 Volt dinyatakan sebagai kondisi sangat jauh tanpa mendefinisikan jaraknya.

• Tegangan input 0,40 Volt sampai 2,50 Volt adalah merupakan tegangan valid sehingga akan dilakukan penerjemahan data tegangan ke jarak sesuai dengan data yang ada pada grafik hubungan jarak terhadap tegangan output sensor GP2D12 seperti pada gambar 18.

• Tegangan input 2,51 Volt sampai 2,55 volt dinyatakan sebagai kondisi terlalu dekat tanpa mendefinisikan jaraknya.



• White Floor Detector

White floor detector digunakan untuk mendeteksi keberadaan lantai putih pada saat robot berada pada home , pintu ruangan, dan daerah dekat lilin. White floor detector harus kebal terhadap pengaruh pencahayaan ruangan. Untuk melindungi dari pengaruh pencahayaan ruangan, detektor diletakkan pada kotak hitam dan dipasang di bawah chasis pertama menghadap lantai dengan jarak sedekat mungkin. Rangkaian pengkondisi sinyal white floor detector ditunjukkan pada gambar 19.



Gambar 19

Rangkaian white floor detector


Rangkaian diatas menggunakan LED infra merah sebagai emiter dan phototransistor PN163 sebagai receiver. PN163 memiliki range pendeteksian cahaya untuk panjang gelombang 700 – 1100 nm dengan puncak sensitifitas pada panjang gelombang 850 nm. Penggunaan cahaya infra merah pada sistem detektor garis putih ditujukan untuk meminimalisir kesalahan deteksi karena pengaruh kondisi pencahayaan ruangan.

Output rangkaian (WFD) adalah normal high dan apabila ada lantai putih yang terdeteksi maka output bernilai low. Pada saat lantai putih tepat berada dibawah detektor maka cahaya infra merah yang dipancarkan oleh D1 akan dipantulkan oleh lantai yang berwarna putih ke permukaan photransistor, akibatnya pada phototransistor akan mengalir sejumlah arus yang cukup besar. Kenaikan arus ini akan mengakibatkan kenaikan tegangan pada pada R2. Tegangan pada R2 kemudian dibuffer oleh U1A dengan tujuan untuk meningkatkan impendansi output. Tegangan pada output U1A kemudian akan dibandingkan dengan tegangan referensi pada output R5. Jika Jika tegangan output U1A lebih besar dari tegangan referensi maka WFD akan bernilai logika 0 (tegangan ˜ 0 Volt) dan jika sebaliknya maka WFD akan bernilai high (tegangan ˜ 3.8 Volt).

Kondisi WFD yang bernilai low akan membangkitkan interrupt pada prosessor sehingga prosessor dapat melakukan aksi yang sesuai dengan dideteksinya lantai putih.

• 3,5 kHz Tone Detektor

Tone detector digunakan untuk mendeteksi sinyal suara dengan frekuensi 3, 5 kHz. Setelah sinyal suara ini terdeteksi maka robot akan aktif untuk melakukan pencarian lilin.

Rangkaian 3,5 kHz tone detector ditunjukkan pada gambar 20. Rangkain ini memiliki output normal high dan akan memberikan sinyal low apabila frekuensi input berada pada bandwidth yang telah ditetapkan. Sinyal low pada output detektor akan menginformasikan kepada prosesor untuk men-start robot.



Gambar 20

Rangkaian 3,5 kHz tone detector


Rangkaian tone detector menggunakan IC LMC567 yang merupakan IC khusus untuk pendeteksian suara dengan frekuensi pendeteksian yang dapat diatur. Nilai Rt dan Ct menentukan besarnya frekuensi puncak input pendeteksian. Untuk mencari Rt dan Ct digunakan persamaan :



dengan menentukan Fin pada nilai 3,5 kHz maka dapat ditentukan nilai Rt sebesar 9,8k dan nilai Ct sebesar 10nF.

Rangkaian tone decoder menggunakan mic condenser untuk menangkap sinyal suara untuk kemudian diubah menjadi sinyal listrik. Output dari mic kemudian dikuatkan oleh rangkaian op-amp inverting sebesar 500 kali. Karena op-amp hanya menggunakan power supply tunggal positif maka sinyal yang berasal dari mic diperkuat pada tegangan referensi 2,5 Volt sehingga tegangan output turun naik pada kisaran 2,5 Volt. Tegangan referensi ini diperoleh dengan cara memberikan tegangan sebesar 2,5 Volt pada input non inverting amplifier melalui rangkaian pembagi tegangan. Kemudian setelah mengalami penguatan, sinyal DC pada sinyal output dihilangkan dengan cara melewatkan sinyal tesebut pada kapasitor 0,01 uF.

• Flame Navigator

Flame navigator merupakan sistem yang digunakan untuk mencari letak lilin dalam ruangan yang diletakkan secara acak. Setelah memasuki ruangan, untuk dapat memadamkan api lilin maka robot harus mengetahui letak lilin dalam ruangan tersebut. Flame navigator terdiri atas dua buah phototransistor dan rangkaian pengkodisi sinyal. Masing-masing phototransistor diletakkan dalam sebuah casing yang dibentuk sedemikian rupa sehingga cahaya lampu ruangan tidak mengenai permukaan phototransistor.

Rangkaian pengkondisi sinyal flame navigator untuk phototransistor kanan (untuk phototransistor kiri sama saja) ditunjukkan pada gambar 21.



Gambar 21

Rangkaian yang membangun sistem flame navigator .

Rangkaian ini menggunakan phototransistor PN163 sebagai detector infra merah yang dipancarkan lilin. Potensiometer yang dirangkai seri dengan phototransistor digunakan untuk mengatur level tegangan yang akan masuk ke input non inverting op-amp LM324. Sinyal yang masuk ke input non inverting kemudian akan diperkuat oleh rangkaian op-amp non inverting sebesar 501 kali. Output dari rangkaian kemudian diteruskan ke ADC agar data bisa diolah oleh prosesor. Dengan mengatur nilai tahanan pada potensiometer, intensitas cahaya terkuat dapat diatur untuk menyebabkan output dari op-amp bernilai 2,56 Volt sehingga sesuai dengan level input ADC.

• Velocity Detector

Detektor kecepatan digunakan untuk mengukur kecepatan robot pada suatu saat. Informasi kecepatan pergerakan robot dibutuhkan karena sistem pengontrolan adalah secara close loop dan kecepatan pergerakan robot pada beberapa tempat dalam arena pertandingan adalah berbeda. Pengontrolan kecepatan secara close loop adalah sangat berguna ketika robot dipercepat dari keadaan diam menuju ke suatu kecepatan tertentu yang telah ditetapkan. Disini sistem pengendalian close loop akan membaca kecepatan pada saat itu untuk kemudian membandingkan dengan kecepatan yang diinginkan. Hasil pembandingan kecepatan digunakan sebagai koreksi untuk memperbesar atau memperkecil supply daya yang diberikan ke motor dengan pengaturan nilai duty cycle PWM.

Velocity detector terdiri atas sebuah encoder dan rangkaian pengubah frekuensi ke tegangan (Frequncy to Voltage Converter /FTVC) . Ada dua buah velocity detector yaitu satu untuk pengukur kecepatan perputaran roda kanan dan satu untuk mengukur kecepatan perputaran roda kiri. Encoder dalam sistem ini digunakan untuk mengubah kecepatan perputaran roda menjadi sinyal persegi yang frekuensinya sebanding dengan kecepatan perputaran roda. Jenis encoder yang digunakan adalah jenis shaft encoder yang dipasang satu poros dengan roda. Jenis encoder ini dapat diperoleh dari mouse computer dengan jumlah celah sebanyak 36 buah .

Untuk dapat mengubah kecepatan perputaran menjadi sinyal persegi dibutuhkan sebuah phototransistor dan sebuah LED infra merah dengan dengan rangkaian seperti ditunjukkan pada gambar 22.


Pada gambar 22 apabila disk shaft encoder berputar maka ini akan menyebkan cahaya infra merah yang dipancarkan LED akan diterima oleh phototransistor secara terputus-putus sehingga output rangkaian pengkondisi sinyal akan berbentuk sinyal persegi.



Gambar 22

Rangkaian pengkondisi sinyal shaft encoder


.

Sebelum masuk ke FTVC sinyal dilewatkan terlebih dahulu ke schmit trigger 74F14 untuk memperhalus dan mempertegas logika sinyal. Pada FTVC ( frekuensi to voltage converter ) dilakukan pengkonversian frekuensi sinyal menjadi tegangan. Rangkaian FTVC ditunjukkan pada gambar 23. Rangkaian FTVC menggunakan IC LM2917 yang merupakan IC khusus untuk keperluan konversi frekuensi menjadi tegangan.




Gambar 23

Rangkaian frequency to voltage converter



Tegangan output dari FTVC ditentukan oleh persamaan :




Vcc yang digunakan adalah 5 Volt. Vout berkisar antara 0- 2,56Volt. Dengan Vout max = 2,56 volt, nilai R1 dan C1 akan diketahui seteleh mengetahui kecepatan maksimal robot (Finmax diketahui) dan ini akan dicari pada saat pengujian robot. Nilai C2 pada rangkaian diatas menentukan besarnya tegangan ripple yang nilainya dapat dicari setelah Finmax diketahui.




• Candle Detector

Sistem pendeteksian lilin digunakan oleh robot untuk memeriksa apakah suatu ruangan terdapat lilin atau tidak. Karena faktor waktu maka dalam pendeteksian keberadaan lilin dalam suatu ruangan harus dilakukan secepat mungkin. Sistem pendeteksian lilin menggunakan dua buah detektor lilin yang masing-masing detektor lilin terdiri atas tiga buah sensor infra merah. Detektor lilin dipasang pada sisi kanan dan sisi kiri robot pada chasis dasar permukaan atas seperti ditunjukkan pada gambar 24.


Right Candle detector


Left Candle detector



Gambar 24

Instalalasi candle detector



Right candle detector digunakan untuk memeriksa keberadaan lilin jika ruangan berada dikanan robot sedangkan left candle detector digunakan untuk memeriksa keberadaan lilin jika ruang yang diperiksa ada sebelah kiri robot.

Masing–masing detektor lilin terdiri atas tiga buah sensor infra merah. Sensor infra merah serong depan digunakan untuk mendeteksi intensitas infra merah pada sisi serong depan robot, sensor infra merah samping untuk mendeteksi intesitas infra merah disamping robot, dan sensor infra merah serong belakang digunakan untuk mendeteksi intensitas cahaya infra merah pada sisi serong belakang.


Sensor yang digunakan untuk mendeteksi intesitas cahaya infra merah adalah photodiode BPW41N. Photodioda BPW41N dapat mendeteksi cahaya infra merah dengan panjang gelombang berkisar antara 800 – 1100 nm dengan puncak sensitivitas pada panjang gelombang 950 nm sebagaimana ditunjukkan pada gambar 25.



Gambar 25

Grafik hubungan sensitivitas photodiode BPW41N

dengan panjang gelombang


Penggunaan dioda dengan range panjang gelombang seperti ini dimaksudkan agar detektor dapat mendeteksi nyala lilin melalui penyinaran baik langsung pada permukaan detektor atau melalui pantulan dinding.

Rangkaian pengkondisi sinyal untuk setiap sensor infra merah diwakili oleh gambar 26.




Gambar 26

Rangkaian pengkondisi sinyal sensor infra merah



Untuk menghemat pemakaian jumlah IC, pada rangkaian pengkondisi sinyal digunakan IC LM324 yang dalam satu kemasan terdapat empat buah op-amp. IC LM324 tidak memerlukan rangkaian kompensasi eksternal dan memiliki arus dan tegangan offset yang kecil yaitu sebesar 5nA dan 2mV.

Pada gambar 26 U1A digunakan sebagai konverter arus ke tegangan dengan faktor sebesar 1000 kali (diatur oleh R3) karena arus balik photodioda berkisar antara 1 sampai 100 uA maka ouput dari U1A adalah berkisar dari -1 sampai -100 mV. Tegangan negative ini kemudian diperkuat lagi oleh rangkaian inverting amplifier hingga pada nilai yang sesuai dengan level input ADC yang bekerja pada tegangan referensi 2,56 V. Besarnya penguatan ini dilakukan dengan mengatur nilai potensimeter R1.

Karena terdapat 6 buah sensor infra merah maka jika pembacaan dan pengolahan data langsung dilakukan prosesor utama (AT89S52) maka tentu akan menurunkan unjuk kerja sistem sehingga untuk keperluan ini digunakan kontroler tambahan. Kontroler yang digunakan untuk melakukan pembacaan data intesitas cahaya infra merah serta pengolahan data adalah mikrokontroler AT89C2051. Diagram rangkaian kontroler untuk candle detector ditunjukkan pad gambar 27.



Gambar 27

Kontroler untuk candle detector

Pada rangkaian kontroler candle detector, pin CLK, X_CLK, SEL, READ, IR_INT terhubung ke prosesor utama. Pin CLK menerima sinyal detak 500 kHz untuk keperluan konversi data ADC. Pin X_CLK merupakan pin yang menerima clock eksternal agar mikrokontroler AT89C2051 dapat bekerja. Pin SEL dan READ merupakan pin control pembacaan data oleh prosesor terhadap kontoler dan pin IR_INT akan menginformasikan kepada prosesor mengenai hasil pembacaan detektor lilin.

Jika sinyal READ low maka kontroler akan mulai melakukan pembacaan data intesitas cahaya infra merah dari detektor yang ditunjukkan oleh sinyal SEL. Jika Sinyal SEL low maka akan dilakukan pembacaan intensitas oleh sensor infra merah pada left candle detector dan jika SEL high maka akan dilakukan pembacaan oleh sensor infra merah pada right candle detector . Hasil pembacaan kemudian akan dibandingkan dengan intensitas infra merah referensi. Jika hasil pembacaan intensitas dari ketiga sensor infra merah lebih kecil dari intensitas referensi maka pin IR_INT tetap dipertahankan high dan pembacaan intensitas cahaya inframerah tetap dilakukan. Namun jika intensitas cahaya infra merah yang terukur lebih besar dari intensitas referensi maka kontroler akan menghentikan pembacaan dan menset pin IR_INT low untuk menginformasikan kepada prosesor bahwa telah ditemukan lilin pada ruangan yang diperiksa (kanan atau kiri robot).

ROBOT PENGHINDAR HALANGAN YANG MURAH

ROBOT "AVOIDER"

Robot Penghindar Halangan

St. sumaryono




Topik yang kami buat berbasis mikrokontroler keluarga MCS-51, dalam hal ini kami gunakan AT89S2051 buatan ATMEL. Kelebihan tipe 89SXX daripada pendahulunya 8031/51 yaitu didalam chip sudah terdapat Flash Memory yang dapat diprogram sebesar 4Kbytes, 128 x 8 bit RAM internal. Jadi dengan menggunakan mikro tipe ini akan didapat desain yang cukup kompak dan pemrogramannya relatif lebih mudah. Desain yang kami buat terdiri dari beberapa bagian yaitu:

Modul Mikrokontroler 89S2051 + Regulator.
Modul Penggerak Motor DC.
Modul Transceiver Infra Red + Pendeteksi Benturan Samping.



Gambar 1. Robot Penghindar Halangan

Penjelasan Modul

1. Modul Mikrokontroler AT89SXX + Regulator.

Berikut contoh skematik dari modul tersebut. Komponen Modul Mikrokontroler 89CXX

Pasif : Resistor 8K2 W, array 10K W 9 pin, Crystal 12 MHz, kapasitor 30 pF, 10uF, 100 uF, 1000uF, switch.

Semikonduktor : AT89S51, LM7805.

Battery charger 9 VoltDC 700mAH

Modul yang ditunjukkan pada gambar 2 berfungsi mengendalikan seluruh proses pekerjaan sistem robot ini dengan cara penanaman instruksi dalam Flash PEROM didalam chip 89S2051. Bahasa yang dipergunakan adalah bahasa C dengan bantuan Compiler C (Franklin C, Keil C, SDCC atau yang lain). Baterai menggunakan baterai yang dapat diisi ulang sebesar 700mAH dengan asumsi bila sistem memakai arus 0,75 A akan dapat bertahan selama satu jam. LM7805 digunakan untuk meregulasi tegangan dan arus dari baterai sekaligus menyesuaikan level tegangan chip 89S2051 serta piranti lain yang akan dipaparkan selanjutnya.



Gambar 2. Modul Mikrokontroler AT89S2051

2. Modul Penggerak Motor DC

Komponen Modul Penggerak Motor DC

Pasif : Resistor 1 ohm 5 watt untuk pembatas arus dan sensing arus.
Semikonduktor : IC Driver Motor L293 buatan ST Microelectronic
2 buah motor DC 9 Volt 2400 RPM dengan pengurang kecepatan dan penguat torsi


Gambar 3. Modul Penggerak Motor DC

Modul ini menggunakan IC driver L293 yang memiliki kemampuan menggerakkan motor DC sampai arus 2A dan tegangan maksimum 40 VoltDC untuk satu kanalnya. Pin Enable A dan B untuk mengendalikan jalan atau kecepatan motor, pin Input 1 sampai 4 untuk mengendalikan arah putaran. Pin Enable diberi VCC 5 Volt untuk kecepatan penuh dan PWM (Pulse Width Modulation) untuk kecepatan rotasi yang bervariasi tergantung dari level highnya.


jika dikehendaki kecepatan penuh maka diberikan 5 Volt konstan, jika dikehendaki kecepatan bervariasi maka diberikan pulsa yang lebar high dan low-nya bervariasi. Satu periode pulsa memiliki waktu yang sama sehingga dalam contoh diatas, kecepatan motor akan berubah dari setengah kecepatan penuh menjadi mendekati kecepatan penuh. Biasanya digunakan lebar pulsa dalam beberapa milisekon misalnya 2 ms. Input untuk motor servo kanan adalah input 1 (C) dan 2 (D), direction-nya dapat dilihat pada tabel 1.



Tabel 1. Pengaturan IC driver motor

Berikut didalam IC L293 mengapa pengendaliannya sesuai dengan tabel 1.



Gambar 4. Ilustrasi Pengendalian Motor didalam IC Driver Motor

Didalam chip L293, untuk mengendalikan arah putaran motor digunakan metode bridge-H dari kombinasi transistor, jadi dengan metode demikian arus yang mengalir kemotor polaritasnya dapat diatur dengan memberikan logika ke transistor Q1 sampai Q4. Pengaturannya seperti tabel kebenaran disamping gambar 5. Kondisi high untuk semua input tidak diijinkan sebab akan mengakibatkan semua transistor aktif dan akan merusakkan transistor karena secara otomatis arus dari kolektor Q1 dan Q2 langsung mengalir ke Q2 san Q3 sehingga arus sangat besar tanpa melalui beban motor DC.


3. Modul Transceiver Infra Red Untuk Pendeteksi Benturan Samping.

Untuk rangkaian pendeteksi benturan kanan dan kiri digunakan IR.

Modul Transmitter

Cara kerja IR transmitter dapat dilihat dari timing diagram dibawah ini : Sinyal IR disetting sebesar 30 - 50 KHz, sinyal IR kita pakai untuk mengendalikan ada atau tidaknya pancaran sinyal infra merah. Maksud dari frekuensi kerja IR Led adalah supaya pancarannya dapat jauh dan kurang terpengaruh noise dari luar.







Gambar 5.Rangkian Penghasil Osilasi 30 -40 kHz

Modul Receiver Infra Merah

Di bawah ini adalah gambar rangkaian dari penerima infra merah yang dapat menangkap sinyal IR dengan frekuensi 30 - 50 KHz. Setelah diterima dalam bentuk pulsa maka diubah menjadi tegangan DC rata-ratanya yang kemudian akan dimasukkan ke LM567. Out Receiver dari LM567 adalah active low yaitu bila ada sinyal IR hasil pantulan yang tertangkap cukup kuat akan membuat output menjadi low.rangkaian yang sudah direalisasikan dapat menangkap sinar Infra Merah dengan jarak 0 hingga 40 Cmeter. Receiver yang pernah dicoba adalah sensor receiver Infra Merah untuk VCD player yang sudah memiliki keluaran dengan level TTL ( +5 V dan 0 V).



Gambar 6. Modul Receiver Infra Merah
Untuk mengenali kanan atau kiri maka kita harus membuat dua rangkaian IR kemudian diumpankan lagi ke port mikrokontroler.









Untuk modul yang lain dapat ditambahkan sendiri misalnya modul sensor pendeteksi panas, pencari cahaya, pencari sumber suara, pengikut lintasan, pendeteksi arah gelombang RF yang terkuat dan lain sebagainya. Untuk proses berjalannya robot tergantung dari kreatifitas perancang.

KESIMPULAN

Sistem robot yang dibangun cukup sederhana tetapi cukup menarik untuk dipelajari lebih lanjut. Sistem robot ini sangat berguna dan banyak kita jumpai di industri. Ilmu robotika merupakan gabungan dari teknologi mekanik presisi, perangkat keras elektronika dan komputer, perangkat lunak, sistem penginderaan atau sensor, dan dapat dikatakan merupakan gabungan dari banyak ilmu elektronika dan komputer, serta mesin.

Pada dasarnya membuat robot ternyata butuh kreatifitas tinggi dan ketepatan dalam pemilihan komponen. Selebihnya doa. robot yang saya buat ini banyak memakai komponen-komponen dari yang murah. Sedang guna membuat program, dipakai bahasa pemrograman yang paling mudah.

Selasa, 20 Mei 2008

ROBOT PENGIKUT GARIS

robot ini dinamakan line follower, yang saya buat ini bukan hasil karya saya yang sejati tapi saya mencoba robot karya Plermjai Inchuay yang menang dalam kejuaraan VingPeaw Competition 2543.robot ini menggunakan dua buah roda sebagai penggerak dan sebuah roda depan yang bergerak bebas. robot ini juga menggunakan 4 buah sensor Infra Merah untuk mendeteksi garis hitam sebagai jalurnya,output dari komparator yaitu LM 324 menjadi Low Logic sedangkan yang lainnya menjadi high logic. tapi pada rangkaian sensornya ada perubahan karena ketika saya mencoba dengan rangkaian aslinya tidak berkerja dengan baik.

Komponen yang digunakan :
1. Mikrokontroler AT89C2051
2. H-Bridge driver L293D.
3. Motor Dc (gunakan motornya CD ROM)
4. IC op- Amp LM 324
5. sensor Infra merah

CARA KERJA ROBOT

Prinsip kerja dasarnya adalah pembacaan sensor terhadap lintasan yang akan diolah untuk menggerakkan motor. Perbedaan warna lintasan dengan area lapangan akan menyebabkan perbedaan pantulan cahaya yang akan dibaca oleh sensor. Sensor kemudian mengirimkan hasil pembacaan untuk diolah menggunakan mikrokontroler. sehingga menghasilkan keluaran yang akan mengatur gerak efektornya, sedangkan L293D digunakan untuk mengendalikan arah dan gerakan dari motor Dc. Robot ini akan mengubah haluannya dengan cara menghidupkan dan mematikan motornya secara bergantian sampai robot kembali di garis hitam.

Mekanik Robot robot saya buat dari bahan mika dan sensornya saya beli sepasang seharga 4000 rupiah.nih gambar rangkaian mikrokontroler dengan driver motornya.



dan ini rangkaian sensornya dan harus membuat empat buah.




Dalam pembuatan robot ini saya menemui beberapa masalah yaitu:

blok sensor, pencahayaan, setting dan Hbridge driver motor.
1. Pada blok sensor terdapat kesalahan pada pemasangan photodioda jadi klo ada yang mau mencoba jangan sampai salah kakinya.
2. Pada pencahayaan supaya jangan terlalu terang, robot akan bingung tidak mau jalan atau mau jalan tapi tidak pada jalurnya jadi gunakan cahaya yang agak redup.
3. Pada saat mensetting supaya sabar ya... dan teliti he he he jangan mudah putus asa.
4. Pada blok H-bridge ini perlu dilakukan pergantian motor berulang kali untuk mencari motor yang sesuai dengan L293D. Pada dasarnya semua motor dc bisa dipakai dan sesuai dengan driver, saat saya mencoba dengan motor dcnya tamiya menggangu pada mikrokontroler yaitu heng, sehingga saya menggunakan motor dcnya CD-rom, belinya hanya ada di pasar loak.

Hasilnya:

Line follower robot dapat mengikuti garis dengan baik pada sudut tumpul. Pada garis dengan sudut lancip robot tidak dapat mengikuti, kecuali pada sudut 90 derajat. Robot terkadang dapat mengikuti garis sesuai dengan yang telah kita tentukan, tergantung pada saat mendetaksi tikungan.Dalam membuat robot ini saya membutuhkan waktu 2 minggu dengan biaya 50 ribu saja

SELAMAT MENCOBA...

Jumat, 16 Mei 2008

Robot Penghindar Halangan

Robot Penghindar Halangan (obstacle avoidance), adalah sebuah robot yang mempunyai kemampuan untuk menghindari halangan atau rintangan yang ada didepan kanan dan kiri dengan menghindar ke arah lain. Robot ini berbentuk mobil dan menggunakan roda - roda untuk menggerakkannya.

Robot ini terdiri dari komponen - komponen elektronik diantaranya, mikrokontroler AT89C2051 sebagai pengendali,sensor Infra Merah, karena sensor ini memiliki kemampuan untuk mendeteksi halangan dengan cukup baik tanpa adanya kontak langsung dan sangat murah harganya, IC 74LS14 sebagai penghasil frekuensi 40 kHz, IC LM567 sebagai penerima pemancar Infra merah, pengendali motor L293D sebagai driver motor DC. Sensor untuk menghindari halangan menggunakan sensor Infra Merah. Dan dua buah motor Dc digunakan untuk menggerakkan robot tersebut.

Robot ini menggunakan sensor Infra Merah untuk mendeteksi ada atau tidak adanya halangan, dan sebagai pembangkit frekuensi 40 kHz digunakan IC 74LS14. Kedua roda bergerak secara diferensial yang digerakkan oleh dua buah motor Dc. Sebagai penguat sinyal yang diterima oleh bagian penerima (Rx) dari sensor Infra Merah digunakan Tone detectorop LM567. Dan untuk menguatkan sinyal keluaran penguat digunakan IC 74LS14 agar sinyal betul - betul saat high 4,8 Voly dan saat Low o Volt, sensor ini maksimal bisa mendeteksi penghalang pada jarak 40 Cm, tergantung kita mau di setel pada jarak berapa.



CARA KERJA :
Tekan switch power dari switch push button untuk memulai proses Start, Sensor IR1 sebagai sensor depan akan mendeteksi apakah ada halangan, jika tidak ada maka motor A dan B akan maju sampai ada halangan yang mengaktifkan sensor depan yang mengakibatkan motor berhenti sesaat dan kemudian mundur sesaat dan memutar ke kiri atau kanan kemudian maju,Sedangkan saat sensor IR2 sebagai sensor kanan, jika sensor ini mendeteksi halangan maka Motor kiri berhenti dan Motor kanan berputar maju sehingga robot akan berbelok ke kiri dan jika sensor IR3 yang berfungsi sebagai sensor kiri bila ada halangan akan berbuat demikian sehingga robot akan berbelok ke kanan, demikian seterusnya.

Saya membutuhkan waktu sekitar setengah bulan untuk menggarap robot beroda itu. Total biaya yang dilahap untuk membuat robot tersebut sekitar Rp 50.000 saja.

Minggu, 20 April 2008

counter

Scanning 7-Segment & Keypad
Since the output buffer of P1 can sink 20mA (each output pin, but maximum IOL for all outputs was limited at 80mA), thus we can use P1 to drive LED display directly. As shown in the circuit, Two common-anode 7-segment LEDs are connected to P1 with 180 Ohms current limiting resistor. Each segment of two LED are tied in parallel to P1. Q1 and Q2 are activated by logic low of P3.0 and P3.1, sourcing +5V to common anode pins. P3.4 read logic low if either S1 or S2 was pressed while scanning period have made.










________________________________________

/*
* 7-seg.c
* Driving 2-digit 7-segment Common Anode LED & keypad
* Copyright (C) 1999 Wichit Sirichote
* compiled with Dunfield Micro-C for 8051 Release 3.2
* c:\mc\cc51 7-seg -i h=c:\mc m=t
*/
#include c:\mc\8051io.h /* include i/o header file */
#include c:\mc\8051reg.h
extern register char cputick; // cputick was incremented every 10ms
register unsigned char flag1;
unsigned register char sec,digit,buffer[2];
register char key;
char convert[10] = {0x3F,0x0c,0x76,0x5e,0x4d,0x5b,0x7b,0x0e,0x7f,0x5f};

/* my LED's segment pin designation (differs from standard)
b
__
a|__| c
f| | d
--
e
*/
#define setValue 99
main()
{
flag1 = 0;
sec = setValue;
timeToBuffer();
serinit(9600); // set timer0 to be 16 bit counter
while(1){
while(cputick < 10)
scanLED();
// execute the following functions every 100ms
cputick = 0;
timeToBuffer();
keyexe();
countdown();
}
}

scanLED() /* scan 2-digit LED and 2-key switch, if key pressed key = 0-1
else key = -1 */
{
int i;
digit = 0x02; // scan code 00000010
key = -1;
for( i = 0; i < 2; i++) /* 2-DIGIT scanning */
{
P3 = ~digit; /* send complement[digit] */
P1 = ~buffer[i]; /* send complement[segment] */
delay(1); /* delay 1ms */
P1 = 0xff; /* off LED */
if ((P3 & 0x10) == 0) /* if key pressed P3.4 became low */
key = i; /* save key position to key variable */
digit>>=1; /* next digit */
}
}
timeToBuffer() // converts binary data in sec to 7-segment pattern
{
buffer[0] = convert[sec%10];
buffer[1] = convert[sec/10];
}
countdown()
{
if ((flag1 & 0x02) != 0)
sec--;
if (sec == 0 )
flag1 &= ~0x02; // clear run bit
}
keyexe()
{
if (key != -1)
{
switch(key){
case (0): /* key position 0 */
reset(); /* service key 0 */
break;
case (1): /* key position 1 */
run(); /* service key 1 */
}
}
}
reset()
{
sec = setValue; // reload set value
timeToBuffer();
flag1 &= ~0x02; // stop counting down
}
run()
{
if (sec != 0)
flag1 |= 0x02; // start counting down
}

stepper


Driving Stepper

M1 is a stepper taken from an old disk drive. There are five pins, i.e., common, coil 1, 2, 3 and 4. Resistance measured between common pin and each coil is about 75 Ohms. Driving current for each coil is then needed about 60mA at +5V supply. A darlington transistor array, ULN2003 is used to increase driving capacity of the 2051 chip. Each output provides 500mA max at 50V. P1.4 to P1.7, four output pins are connected to the input of the ULN2003 as shown in the circuit. Four 4.7k resistors help the 2051 to provide more sourcing current from the +5V supply. The serial port is optional for your exercises. Many have provided useful technical, and application of using stepper, see the links below.







/*
* STEPPER.C
* sweeping stepper's rotor cw and cww 400 steps
* Copyright (c) 1999 by W.Sirichote
*/
#include c:\mc51\8051io.h /* include i/o header file */
#include c:\mc51\8051reg.h
register unsigned char j,flag1,temp;
register unsigned int cw_n,ccw_n;
unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90}
#define n 400
/* flag1 mask byte
0x01 run cw()
0x02 run ccw()
*/
main()
{
flag1=0;
serinit(9600);
disable(); /* no need timer interrupt */
cw_n = n; /* initial step number for cw */
flag1 |=0x01; /* initial enable cw() */
while(1){
{
tick_wait(); /* wait for 10ms elapsed */
energize(); /* round-robin execution the following tasks every 10ms */
cw();
ccw();
}
}
}
cw(){
if((flag1&0x01)!=0)
{
cw_n--; /* decrement cw step number */
if (cw_n !=0)
j++; /* if not zero increment index j */
else
{flag1&=~0x01; /* disable cw() execution */
ccw_n = n; /* reload step number to ccw counter */
flag1 |=0x02; /* enable cww() execution */
}
}
}
ccw(){
if((flag1&0x02)!=0)
{
ccw_n--; /* decremnent ccw step number */
if (ccw_n !=0)
j--; /* if not zero decrement index j */
else
{flag1&=~0x02; /* disable ccw() execution */
cw_n = n; /* reload step number to cw counter */
flag1 |=0x01; /* enable cw() execution */
}
}
}
tick_wait(){ /* cputick was replaced by simpler ASM code 10ms wait */
asm" JNB TCON.5,*"; /* wait for TF0 set */
asm" CLR TCON.5"; /* clear TF0 for further set */
asm" ORL TH0,#$DC"; /* reload TH0 with $DC, TL0 = 0 */
}
energize(){
P1 = step[(j&0x07)]; /* only step 0-7 needed */
}