Tampilkan postingan dengan label Robotika. Tampilkan semua postingan
Tampilkan postingan dengan label Robotika. Tampilkan semua postingan

Sabtu, 25 Februari 2012

Sistem Minimum Mikrokontroler ATMega16 Robot Pemadam Api

Sistem Mikrokontroler
Sistem mikrokontroler ini merupakan pusat kendali robot yang membaca semua sensor untuk kemudian menentukan tidakan apa yang akan dilakukan robot. Sistem mikrokontroler ini terdiri dari beberapa bagian rangkaian, yaitu rangkaian reset, dan rangkaian pewaktu.
Reset pada mikrokontroler ATMega16 akan terjadi jika pin reset diberi logika 0 (low) karena pin reset pada ATMega16 adalah active low, sehingga pin ini perlu diberi logika high terus menerus agar mikrokontroler dapat bekerja. Maka rangkaian reset dapat dibuat seperti Gambar 3.24.

Gambar 3.24 Rangkaian Reset Mikrokontroler ATMega16.

Rangkaian ini akan memberikan logika low pada pin RST ATMega16. Jika sakelar terhubung, arus yang sebelumnya mengalir ke pin reset akan mengalir menuju ground dengan melewati resistor. Resistor berfungsi sebagai pembatas arus yang mengalir ke pin RST mikrokontroler. 
Selain rangkaian reset, mikrokontroler agar dapat bekerja juga membutuhkan suatu rangkaian osilator sebagai sumber detak (clock). Mikrokontroler ATMega16 telah memiliki osilator internal di dalamnya, namun frekuensi maksimumnya adalah 8MHz. Untuk meningkatkan frekuensinya perlu ditambahkan Kristal. Kristal yang ditambahkan memiliki nilai 11,0592 MHz, dan dengan tambahan dua buah kondensator keramik 30 pF seperti pada Gambar 3.25.

Gambar 3.25 Rangkaian Osilator Sebagai Sumber Detak Mikrokontroler

Dengan tambahan kristal tersebut maka mikrokontroler akan bekerja dengan frekuensi clock sebesar 11,0592 MHz.  
Pada Mikrokontroler ATMega16 terdapat  4 buah port I/O yang terdiri dari Port A (PA), Port B (PB), Port C (PC), dan Port D (PD). Port-port ini merupakan port paralel dengan lebar jalur data 8 bit. Pada perancangan ini tidak semua port yang ada pada mikrokontroler digunakan. Gambar 3.26 merupakan hubungan input-output port mikrokontroler.ATMega16 yang digunakan. Gambar 3.27 Memperlihatkan rangkaian sistem mikrokontroler secara keseluruhan.

Gambar 3.26 Hubungan input-output port mikrokontroler


Gambar 3.27 Sistem Mikrokontroler ATMega16.

Untuk mengisi mikrokontroler dengan program, digunakan downloader yang berfungsi menghubungkan mikrokontroler dengan komputer (PC) sehingga perintah dapat diisikan ke mikrokontroler. Downloader yang digunakan adalah downloader DU-ISP V3 dengan komunikasi ke komputer menggunakan port USB. Gambar 3.28  adalah downloader DU-ISP V3.


Gambar 3.28 Downloader DU-ISP V3

Video hasil akhir robot pemadam api berbasis mikrokontroler ATMega16

Kamis, 02 Februari 2012

Pendeteksi Api Robot Pemadam Api


Untuk mendeteksi keberadaan sumber api yang akan dipadamkan oleh robot pemadam api, digunakan sensor ultraviolet. Sensor ultraviolet yang digunakan pada robot ini yaitu modul Hamamatsu UVTron flame detector dengan tabung sensor tipe R9454 dan driving circuit tipe C10423. Gambar 3.21 Memperlihatkan modul driver UVTron dan tabungnya.


Gambar 3.21 Modul driver dan Tabung UVTron.

Modul ini membutuhkan tegangan catu sebesar 12V-24V. Output yang dihasilkan oleh modul UVTron ini berupa pulsa persegi yang periodanya tergantung dari intensitas cahaya ultraviolet yang ditangkapnya. Perioda maksimumnya mencapai 10 ms .Sinyal output modul UVTron tersedia dalam dua bentuk, yaitu output berimpedansi tinggi dengan kondisi active high, dan output berimpedansi rendah dengan kondisi active low. Bentuk kedua jenis output UVTron ditunjukkan pada Gambar 3.22.

Gambar 3.22 Perbandingan Output Q dan  UVTron

Kedua output ini bersifat open collector, artinya perlu ditambahkan pull up terlebih dahulu. Pull up yang digunakan yaitu pull up internal yang telah dimiliki oleh mikrokontroler ATMega16.


Output yang akan digunakan adalah output 1. Output ini bersifat active low yaitu output bernilai nol ketika mendeteksi adanya api. Output 1 dihubungkan langsung ke pin  PB.0 mikrokontroler yang telah diaktifkan pull up internalnya. 




Rabu, 01 Februari 2012

Sensor Garis Robot Pemadam Api


Pendeteksi Garis
Pendeteksi garis pada robot pemadam api ini digunakan untuk mendeteksi garis putih yang berada pada area kerja yang menandakan tempat tertentu, misalnya pintu. Untuk mendeteksi garis digunakan sensor infra merah yang terdiri dari rangkaian pengirim dan rangkaian penerima. Rangkaian pengirim berfungsi untuk memancarkan cahaya inframerah, dan rangkaian penerima berfungsi untuk menerima cahaya inframerah yang memantul pada permukaan garis putih. Pendeteksi garis diletakkan di bagian bawah robot pemadam api, seperti yang ditunjukkan Gambar 3.17.

 
Rangkaian Pengirim Inframerah
Pada rangkaian pengirim ini, digunakan LED inframerah yang berfungsi memancarkan cahaya inframerah, dan resistor yang berfungsi sebagai pembatas arus yang masuk ke LED Inframerah. Nilai resistor didapat dari hasil pengujian, dimana pada penggunaan resistor dengan nilai 270Ω ini memberi arus untuk LED Inframerah menghasilkan cahaya inframerah dengan intensitas cukup tinggi. Rangkaian pengirim inframerah diperlihatkan pada Gambar 3.18. 
 
Rangkaian Penerima Inframerah
Pada rangkaian penerima ini digunakan photodioda, resistor, dan rangkaian pembanding. Rangkaian penerima dapat dilihat pada gambar 3.19. Photodioda berfungsi untuk menangkap cahaya inframerah yang terpantul dari permukaan garis putih. Resistor berfungsi sebagai pull-up tegangan, dan rangkaian pembanding berfungsi untuk memberikan sinyal keluaran dengan kondisi ‘0’ jika sensor tidak membaca garis, dan ‘1’ jika sensor membaca adanya garis.
Nilai resistor yang terpasang merupakan hasil pengujian dimana nilai resistor sebesar 10KΩ akan membuat photodioda memiliki kepekaan yang tinggi dalam menerima cahaya inframerah yang terpantul.

 
Output rangkaian penerima inframerah masih bersifat analog. Maka output rangkaian penerima inframerah diteruskan ke rangkaian pembanding untuk mengubahnya menjadi sinyal digital yang hanya memiliki dua kondisi yaitu 1(high)  atau 0 (low).

Selasa, 10 Januari 2012

Sensor Ultrasonik Robot Pemadam Api II


Bagian Penerima
Pantulan gelombang suara ultrasonik yang dipancarkan oleh tranceiver sensor ultrasonik akan diterima  oleh receiver sensor ultrasonik. Ketika receiver sensor ultrasonik menerima gelombang suara, maka gelombang suara tersebut dikonversi menjadi sinyal listrik AC dengan frekuensi yang sama dengan gelombang suara yang diterimanya. Namun amplitudo dari sinyal ini sangat kecil untuk digunakan, sehingga perlu dilakukan penguatan terhadap sinyal ini. Setelah sinyal ini dikuatkan, selanjutnya sinyal disearahkan. Output akhir bagian penerima ini berupa tegangan DC yang berubah-ubah nilai tegangannya tergantung dari kekuatan pantulan sinyal yang dikirim oleh pemancar. Blok diagram bagian penerima ditunjukkan oleh Gambar 3.7.


Penguat ini bersifat membalik (invert), artinya keluaran dari penguat ini akan terbalik dari masukannya. Besar penguatan dari Op-Amp ditentukan oleh nilai R2 dan R5 Penguatan yang dibutuhkan adalah sebesar 10 kali, sehingga berdasarkan persamaan 2.4. maka nilai R2 dan R5 yang dipasang adalah:
Dua buah resistor R3 dan R4 berfungsi sebagai pembagi tegangan yang memberikan tegangan ke masukan tak membalik op-amp sebagai penentu titik referensi nol pada output penguat. Jika tegangan referensi diperbesar, maka tegangan sinyal keluaran semakin besar, tanpa mengubah amplitudo dan level penguatannya, seperti yang ditunjukkan pada Gambar 3.9.
Perubahan titik referensi keluaran yang diinginkan adalah dari 0V naik menjadi 2,5V. Dengan tegangan Vcc­ sebesar  +5V maka nilai R3 dan R4 yang harus dipasang adalah:

Sinyal keluaran dari penguat ini kemudian disearahkan dengan menggunakan rangkaian penahan puncak (peak hold). Rangkaian ini akan mengubah tegangan AC menjadi DC dengan nilai tegangan DC sebesar tegangan puncak AC-nya.

Selanjutnya output dari rangkaian penyearah yang telah berbentuk tegangan DC kemudian diteruskan ke mikrokontroler untuk dikonversi menjadi sinyal digital oleh ADC internal yang dimiliki mikrokontroler ATMega16. Gambar 3.11 Adalah gambar rangkaian lengkap bagian penerima gelombang ultrasonik.





Sensor Ultrsasonik Robot Pemadam Api


Bagian Pemancar Ultrasonik Robot Pemadam Api
Pada bagian pemancar, digunakan sensor ultrasonik dengan tipe SQ-40T. Agar sensor ini dapat mengirimkan sinyal audio 40KHz, dibutuhkan rangkaian pembangkit sinyal yang menghasilkan gelombang sinyal persegi bolak-balik dengan frekuensi 40KHz. Pembangkit sinyal dibuat dari rangkaian multivibrator astabil menggunakan IC timer 555. Output dari multivibrator kemudian diteruskan ke schmitt trigger yang akan memperbaiki bentuk gelombang persegi dan mengurangi noise tanpa mengubah frekuensinya.

Pemancar gelombang ultrasonik

Multivibrator akan menghasilkan gelombang bila ada masukan sinyal dari mikrokontroller berupa tegangan TTL, sehingga bagian pemancar ultrasonik  akan memancarkan gelombang ultrasonik apabila telah diberi sinyal perintah oleh mikrokontroller. Gambar 3.5  merupakan gambar rangkaian dari bagian pemancar ultrasonikk.

Rangkaian pemancar gelombang ultrasonik

Pengaturan besar frekuensi gelombang yang dihasilkan multivibrator dilakukan dengan menentukan harga dari Ra, Rb, dan C. Dengan menggunakan Persamaan 2.1, maka:
multivibrator robot
 Dalam perancangan digunakan C sebesar 1nF, maka:


Nilai RA yang digunakan ditentukan sebesar 1KW, maka:

          
Nilai hambatan sebesar 17,5KW  didapatkan dengan menggunakan resistor variabel. Dengan cara menghubungkan secara seri sebuah resistor 10KW dan sebuah trimpot yang diatur nilai hambatannya menjadi sebesar 7,5KW

Senin, 02 Januari 2012

Pendeteksi Jarak Robot Pemadam Api


Pendeteksi Jarak

Untuk mendeteksi jarak, digunakan sensor ultrasonik sebagai pendeteksi. Jarak yang akan dideteksi adalah jarak dinding terhadap robot. Gambar 3.2 menunjukkan ilustrasi pengukuran jarak robot pemadam api terhadap dinding yang berada di sebelah kanan robot.


Sensor yang akan digunakan yaitu sensor ultrasonik yang bekerja pada frekuensi 40Khz. Sensor ultrasonik terdiri dari dua bagian, yaitu bagian pemancar (transciever) dan bagian penerima (receiver). Bagian pemancar berfungsi mengirimkan sinyal ultrasonik yang kemudian pantulan sinyal tersebut diterima bagian penerima untuk kemudian diterjemahkan menjadi sinyal TTL.
Kedua bagian sensor ini harus ditempatkan sedemikian rupa sehingga receiver dapat menerima pantulan gelombang ultrasonik yang dipancarkan oleh transmitter. Penempatan sensor ini dapat dilihat pada gambar 3.3

Gambar 3.3 Penempatan Sensor Ultrasonik pada Robot Pemadam Api


Jumat, 30 Desember 2011

Desain dan Perancangan Robot Pemadam Api


DESAIN DAN PERANCANGAN ROBOT PEMADAM API
  
Desain dan perancangan robot pemadam api pada penelitian ini mengacu pada standardisasi panduan peraturan Kontes Robot Cerdas Indonesia 2011, khususnya divisi beroda robot cerdas pemadam api. Beberapa standar penting yang ditetapkan pada panduan ini yaitu mengenai dimensi fisik robot, penggunaan sensor dan aktuator, medan yang akan dilalui serta misi yang harus dielesaikan oleh robot. Dari standar tersebut, dapat dirumuskan beberapa kemampuan yang harus dimiliki robot pemadam api, yaitu:
a.       Bergerak secara otomatis
b.      Menghindari halangan
c.       Mendeteksi garis dan lingkaran putih
d.      Mendeteksi Api
e.       Memadamkan sumber api

Untuk mendapatkan kemampuan tersebut agar dapat menyelesaikan misi yang ditentukan, maka sistem dan bagian yang dirancang adalah:
a.       Pendeteksi halangan
b.      Pendeteksi jarak
c.       Pendeteksi garis dan lingkaran putih
d.      Pendeteksi api
e.       Sistem Mikrokontroler
f.       Sistem gerak
g.      Sistem Pemadam api
h.      Perangkat lunak/program.




Video hasil akhir robot pemadam api berbasis mikrokontroler ATMega16

Sabtu, 10 Desember 2011

Perangkat Lunak dan Bahasa C


2.6.1 Bahasa C (6, 8)
Bahasa C adalah salah satu bahasa pemrograman yang memiliki tingkat High Level Language. Bahasa C lebih mudah dipahami karena bahasa C adalah bahasa pemrograman tingkat menengah yang banyak menggunakan bahasa manusia dalam perintah-perintahnya. Dibandingkan dengan bahasa Assembly yang masih menggunakan kode-kode mesin yang lebih sulit dipahami. Struktur penulisan program C biasanya terdiri dari:

a).                Bagian komentar keterangan program
Komentar digunakan untuk member keterangan pada program agar mudah dibaca dan akan diabaikan olehcompiler, dengan kata lain bagian komentar ini tidak akan dikompilasi dan tidak mempengaruhi program.

b).                Bagian preprocessor
Preprocessor #include biasanya digunakan untuk menyertakan file header (*.h) atau file libraryFile include berguna untuk memberitahu compiler agar membaca file yang di include-kan lebih dahulu agar compiler mengenali definisi-definisi yang digunakan dalam pogram agar tidak dianggap error.
Preprocessor #define digunakan untuk mendefinisikan konstanta atau makro.

c).                Bagian deklarasi variable global
Variabel global dideklarasikan di luar semua fungsi termasuk fungsi utama dan letaknya harus di atas. Sifat variabel global yaitu dapat diakses (dibaca/ditulis) oleh semua pernyataan (statement) dalam program.

d).               Bagian prototype fungsi
Prototype fungsi berguna untuk mendeklarasikan fungsi yang ditulis di bawah fungsi “main”. Jika kita membuat fungsi diatas fungsi main, maka fungsi tersebut tidak perlu dideklarasikan.



e).                Bagian fungsi utama/main
Fungsi utama adalah funsi pertama yang akan dieksekusi dengan urutan dari atas ke bawah dan akan loncat-loncat tergantung pada instruksi lompatan “goto” atau instruksi pemanggilan fungsi atau terjadi interupsi jika interupsi diaktifkan.

f).                 Bagian Subprogram/fungsi
Prototype fungsi yang telah dideklarasikan di atas fungsi “main” maka fungsi lengkapnya ditulis di bawah fungsi “main”. Cara penulisan fungsi dengan membuat prototype kemudian menuliskan fungsi lengkapnya di bawah fungsi “main” akan memudahkan programmer dalam menuliskan program yang besar.

Dalam penulisan program C, instruksi atau perintah hanya terbagi menjadi dua kategori, yaitu:

a).                Kategori deklarasi (declaration)
Deklarasi adalah membuat dan member tahu kepada compiler tentang sesuatu yang digunakan nanti dalam penulisan program agar digunakan semestinya dan tidak dianggap error atau tidak dikenal.

b).                Kategori pernyataan (statement)
Pernyataan adalah membuat instrksi-instruksi program dengan menggunakan keyword seperti instruksi-instruksi operasi aritmatika, logika, operasi bit, atau instruksi percabangan dan looping, atau pembuatan fungsi.

Komponen lain yang terdapat pada bahasa pemrograman C yaitu pengenal (indentifier) dan variabel. Pengenal digunakan untuk memberi nama variabel. Sedangkan variabel adalah tempat untuk menyimpan dan mengakses data yang mewakili memori dalam mikrokontroler. Variabel harus didefinisikan terlebih dahulu dengan tipe data beserta nama variabel sebagai pengenal yang akan digunakan.


Tabel.2.1 Jenis-jenis Tipe Data Variabel dan Kapasitasnya.
Tipe Data
Ukuran (bit)
Minimum
Maksimum
Char
8
-128
127
Unsigned char
8
0
255
Signed char
8
-128
127
Int
16
-32768
32767
Unsigned int
16
0
65535
Signed int
16
-32768
32767
Long int
32
-2147483648
2147483647
Unsigned long int
32
0
4294967295
Signed long int
32
-214748368
214748647
Float
32
±1.175e-38
±3.402e38

Beberapa pengendali aliran program yang dapat digunakan sebagai algoritma pada pemrograman bahasa C yaitu:

a).             Pengendali bersyarat
§    If (…) {…}
Digunakan untuk mengecek satu kondisi untuk satu blok jawaban.

§    If (…) {…} else {…}
Digunakan untuk mengecek satu kondisi untuk dua blok jawaban.

§    If (…) {…} else if (…) {…} else {…};
Digunakan untuk mengecek beberapa kondisi yang berkaitan.

§    While (…) {…}
Digunakan untuk perulangan/looping/iterasi jika kondisi yang diuji bernilai benar.

§    For (… ; … ; …) {…}
Digunakan untuk perulangan/looping/iterasi dengan kondisi dan syarat yang ditentukan.



§    Switch
Digunakan untuk menguji satu variabel dengan beberapa jawaban konstanta.

b).             Pengendali tanpa syarat
§    Goto
Digunakan untuk melompat ke baris program tertentu (dalam satu fungsi) yang telah diberi label.

§    Continue
Digunakan untuk melewati satu pernyataan atau blok jika dalam blok tersebut memakai pernyataan continue.

§    Break
Digunakan untuk keluar dari blok.

§    Super loop
Digunakan untuk memutar atau mengulang aliran program tanpa henti dari awal blok hingga akhir blok. Dapat menggunakan perintah while (1){…} atau for ( ; ; ) {…}.

2.6.2    CodeVisionAVR (6, 8)
CodeVisionAVR adalah salah satu alat bantu pemrograman (programming tool) yang bekerja dalam lingkungan pengembangan perangkat lunak yang terintegrasi (Integrated Development Environment, IDE). Seperti aplikasi IDE lainnya, CodeVision AVR dilengkapi dengan source code editor, compiler, linker, dan dapat memanggil Atmel AVR Studio untuk debugger-nya.  CodeVision AVR merupakan software C-Cross compiler, dimana program hanya dapat ditulis dalam bahasa C. CodeVision memiliki IDE (Integrated Development Environment) yang lengkap, dimana penulisan program, compilelink, danpembuatan kode mesin (assembler) dan download program ke chip AVR dapat dilakukan pada CodeVision, selain itu ada fasilitas mikrokontroler yang sudah diprogram. Tampilan awalCodeVision AVR ditunjukkan pada Gambar 2.27.


Gambar 2.27 Tampilan Awal CodeVisionAVR
Untuk memulai membuat project baru, pilih File New pilih File Type→Project, seperti pada Gambar 2.28.


Gambar 2.28 Membuat Project Baru.
Muncul tampilan konfirmasi seperti pada gambar 2.29 dan menanyakan apakah akan menggunakan CodeWizarduntuk membuat project baru, pilih Yes.

Gambar 2.29 Membuat Project Baru Menggunakan CodeWizardAVR.
Kemudian akan tampil konfigurasi USART, Analog Comparator, ADC, SPI, I2C, 1 Wire, 2 Wire (I2C), LCD, Bit-Banged,Project Information, Chip, Port, External IRQ, TimerCodeWizardAVR ini membantu untuk membuat konfigurasi program  yang akan dibuat. Misalnya untuk konfigurasi chip yang digunakan, pada pilihan tab chip seperti yang ditunjukkan pada gambar 2.30, terdapat kolom untuk memilih tipe mikrokontroler yang digunakan, pada penelitan ini digunakan tipe ATmega16. Kemudian terdapat kolom untuk menentukan berapa besar frekuensi clock yang diinginkan.
Gambar 2.30 Tampilan CodeWizardAVR untuk Tab Chip.
Pada tab ports terdapat kolom konfigurasi port mikrokontroler. Kolom data direction untuk mendefinisikan arah dari port A sampai port D apakah akan digunakan sebagai input atau sebagai output. Kolom pullup/output valuemendefinisikan kondisi internal pullup dan nilai kondisi logika output. Jika port digunakan sebagai input, maka kondisi yang diatur yaitu internal pullup diaktifkan atau tidak. Jika port digunakan sebagai output, maka kondisi yang diatur yaitu output berlogika 1 atau 0.  Gambar 2.31 menunjukkan konfigurasi port B.

Gambar 2.31 Tampilan CodeWizardAVR untuk Tab Ports.
Tab ADC digunakan untuk konfigurasi Analog to Digital Converter yang terdapat pada mikrokontroler. Opsi ADCEnable digunakan untuk memilih apakah ADC akan diaktifkan atau tidak. Opsi Use 8 bits untuk menentukan resolusi data hasil keluaran ADC, jika opsi ini dipilih maka output ADC memiliki resolusi 8 bit, jika tidak maka output ADC memiliki resolusi 10 bit. Opsi Interrupt dipilih jika ingin mengaktifkan fitur interupsi dari ADC. Kolom Volt.Ref untuk menentukan sumber tegangan referensi ADC. Kolom clock untuk menentukan frekuensi konversi ADC. Gambar 2.32 menunjukkan tab konfigurasi ADC.

Gambar 2.32 Tampilan CodeWizardAVR untuk Tab ADC.
Jika konfigurasi sudah dilakukan, maka pilih File|Generate Save & Exit, kemudian beri nama file source (*.c), fileproject(*.prj) dan file project CodeWizard(*.cwp). Kode-kode program yang dihasilkan codewizardAVR sebagai berikut:

#include
//deklarasi variable global ditambahkan disini
......
Void main(void)
{
//deklarasi variable local dapat ditambahkan disini
......
//Kode-kode yang dihasilkan oleh CodeWizardAVR
......
While(1)
{
//place your code here
//program utama dapat ditambahkan di sini
......
};
}

Jika program yang akan diisikan ke mikrokontroler telah selesai dibuat, maka program harus dikompilasi terlebih dahulu, dengan cara pilih Project | Compile, maka akan muncul seperti pada Gambar 2.33.

Gambar 2.33 Tampilan Hasil Compile Program.
Jika ada error, klik keterangan error atau warning yang terdapat pada bagian messages, kemudian letak kesalahan akan ditampilkan, perbaiki kesalahan tersebut dan compile kembali. Jika sudah tidak ada error, pilihProject|Build, maka akan muncul tampilan seperti pada Gambar 2.34



Gambar 2.34 Tampilan Hasil Build.
Untuk memasukkan program yang sudah dibuat ke mikrokontroler AVR ATMega16, harus dilakukan pengaturanjenis programmerProgrammer yang digunakan disini adalah tipe Atmel AVRISP MkII (USB) seperti pada Gambar 2.35.
Gambar 2.35 Pemilihan Jenis Programmer
Setelah memilih programmer, selanjutnya adalah memasukkan program ke mikrokontroler ATMega16, pilih Tools | Chips Programmer, maka akan muncul tampilan seperti pada Gambar 2.36. Kemudian pilih Program All.

Gambar 2.36 Tampilan Chip Programmer AVRISP MkII USB