Teknik-Teknik Teknik-Teknik Penyesuaian Penyesuaian Sensor Sensor Workshop Teknologi Sensor & Aktuator Untuk Kontes Robot Indonesia Nopember 2007
[email protected]
Politeknik Elektronika Negeri Surabaya
Materi 1. 2. 3. 4. 5. 6. 7. 8.
Teknik-Teknik Penyesuaian Sensor Kalibrasi Pengamanan Sensor terhadap Lingkungan Sensor Pada Kecepatan Tinggi Code Vision Program Membaca sensor Program Menjalankan Motor Program Multi Strategi
Teknik-Teknik Penyesuaian Sensor • Jumlah sensor 6 buah • Ada dua sensor berada di dalam garis
Teknik-Teknik Penyesuaian Sensor • Bila robot bergerak agak kekiri • Satu sensor terkena garis
Teknik-Teknik Penyesuaian Sensor • Bila robot bergerak agak kekanan • Satu sensor terkena garis
Teknik-Teknik Penyesuaian Sensor • Bila robot berada pada percabangan • Semua sensor terkena garis
Kalibrasi Sensor • Letakkan sensor pada garis • Putar variabel resistor sehingga indikator lampu menyala • Matikan indikator lampu dengan memutar sebaliknya sedikit • Nyalakan indikator dengan memutar sebaliknya sedikit
Pengamanan Sensor Terhadap Lingkungan • Menerangkan lampu led • Menggunakan led warna merah • Membungkus sensor • Jarak sensor terhadap lantai
Sensor Pada Kecepatan Tinggi • Pada saat motor dalam kecepatan tinggi posisi sensor bisa pada posisi paling kanan atau kiri 5
4
3
2
1
0
Teknik Lanjutan • Saat robot mulai berjalan motor berjalan pelan sensor diusahakan pada posisi tengah • Saat posisi sensor ditengah motor dipercepat perlahan-lahan sampai kecepatan tinggi • Bila robot hendak berhenti motor berjalan pelan kemudian di rem • Bila robot hendak belok maka sensor pada posisi percabangan, gerakkan ke depan hingga posisi setengah ukuran robot putar robot sambil sensor mendeteksi ada garis • Bila semua sensor lepas dari garis yang dilakukan adalah mencatat kondidi terakhir sensor yang terbaca
CodeVisionAVR • Jalankan software CodeVisionAVR
CodeVisionAVR • Buatlah project baru. • Pilih File New. • Pilih project lalu tekan tombol OK.
CodeVisionAVR • Kemudian muncul dialog apakah akan menggunakan CodeWizardAVR untuk mempermudah merancang kerangka program. • Pilih YES.
CodeVisionAVR •
Board yang digunakan menggunakan chip ATtiny2313 dengan clock 11.0592MHz, kemudian pilih tab Ports, secara default port merupakan pin input, lakukan seting untuk PortB sebagai input sensor, PortD sebagai output LED
CodeVisionAVR • Kemudian pilih File Generate, Save and Exit.
CodeVisionAVR • Simpan pada direktori d:\workshop. • Beri nama source file, nama project file, dan nama codewizard project file anda.
CodeVisionAVR • •
Tambahkan #include <delay.h> Pada main program, sisipkan perintah berikut while (1) { // Place your code here
PORTD.4=0;PORTD.5=0;PORTD.6=0; delay_ms(1000); PORTD.4=1;PORTD.5=1;PORTD.6=1; delay_ms(1000); }; }
CodeVisionAVR • Sebelum melakukan kompilasi, lakukan seting berikut untuk pertama kali saja. • Pilih Project Configure. • Pastikan pada tab C Compiler nama chip dan clock telah sesuai dengan IC yang terpasang pada board. • Dan pada tab After Make pilih Program the Chip. • Lalu tekan tombol OK. • Pilih Settings Programmer, pilih Kanda System STK200+/300 untuk AVR Chip Programmer Type. • Lalu tekan tombol OK.
CodeVisionAVR • Secara bertahap anda dapat melakukan check syntax, compile, dan make. • Atau langsung pilih Project Make. Bila tidak ada error maka akan muncul kotak dialog informasi. • Siapkan board, nyalakan suplay tegangannya, hubungkan kabel download dari PC ke board. • Kemudian tekan tombol Program.
CodeVisionAVR • Bila tidak ada kesalahan maka – ketiga LED akan menyala satu detik. – Kemudian ketiga LED akan mati satu detik. – Demikian seterusnya.
Program Push Button • Ketika tombol 1 ditekan maka 2 led menyala • Ketika tombol 2 ditekan maka 1 led menyala
Program Push Button while (1) { // Place your code here PORTD.4=1;PORTD.5=1;PORTD.6=1; if(PINB.0==0){PORTD.5=0;PORTD.6=0;} if(PINB.1==0)PORTD.4=0; }; }
Program PWM • Menyalakan lampu berdasarkan nilai pwm
Program PWM unsigned char x,pwm; // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Place your code here x++; if(x>=pwm)PORTD.4=1; else PORTD.4=0; } ……. PORTD.4=1;PORTD.5=1;PORTD.6=1; while (1) { // Place your code here pwm=200; }; }
Program Membaca sensor • •
Membaca sensor dan menampilkan hasilnya di led. Bila sensor ke 1 aktif maka led menunjukkan nilai biner 1, bila sensor ke 2 aktif maka led menunjukkan nilai biner 2, dst
Program Membaca sensor
while (1) { // Place your code here PORTD.4=1;PORTD.5=1;PORTD.6=1; sensor=PINB>>2; switch(sensor) { case 0://00000000 PORTD.4=1;PORTD.5=1;PORTD.6=1;break; case 1://00000001 PORTD.4=0;PORTD.5=1;PORTD.6=1;break; case 2://00000010 PORTD.4=1;PORTD.5=0;PORTD.6=1;break; case 4://00000100 PORTD.4=0;PORTD.5=0;PORTD.6=1;break; case 8://00001000 PORTD.4=1;PORTD.5=1;PORTD.6=0;break; case 16://00010000 PORTD.4=0;PORTD.5=1;PORTD.6=0;break; case 32://00100000 PORTD.4=1;PORTD.5=0;PORTD.6=0;break; case 63://00111111 PORTD.4=0;PORTD.5=0;PORTD.6=0;break; } }; }
Program Menjalankan Motor • Untuk menjalankan motor dengan pwm Pilih tab Timers, setting Timer 0 dengan clock value: 10.800 kHz dan aktifkan cek Overflow Interrupt
Program Menjalankan Motor unsigned char x,lpwm,rpwm; // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Place your code here x++; while (1) if(x>=lpwm)PORTD.0=0; { else PORTD.0=1; // Place your code here if(x>=rpwm)PORTD.2=0; PORTD.1=1;lpwm=200; PORTD.3=1;rpwm=200; else PORTD.2=1; }; } }
Program Multi Strategi • • • • • •
Port yang digunakan pada robot Bagaimana cara robot berjalan lurus Bagaimana cara robot belok kanan Bagaimana cara robot belok kiri Bagaimana robot mendeteksi percabangan Bagaimana membuat program multi strategi
Port yang digunakan pada robot • • • • •
PB2-PB7 Sensor PB0-PB1 Push Button PD0-PD1 Motor Kiri PD2-PD3 Motor Kanan PD4-PD6 Led
Bagaimana cara robot berjalan lurus • Motor dalam kondisi siap jalan • Baca sensor • Bila 2 sensor ditengah aktif maka motor kanan kecepatannya sama dengan motor kiri • Bila sensor di kiri aktif atau robot agak kekanan maka motor kanan lebih cepat dari motor kiri • Bila sensor di kanan aktif atau robot agak kekiri maka motor kiri lebih cepat dari motor kanan • program
Bagaimana cara robot belok kanan • Kecepatan pwm diturunkan • Motor kiri bergerak kedepan dan motor kanan bergerak ke belakang • Sensor membaca data • Loop sampai sensor bernilai 0 • Loop lagi sampai 2 sensor di kanan ketemu garis • program
Bagaimana cara robot belok kiri • Kecepatan pwm diturunkan • Motor kanan bergerak kedepan dan motor kiri bergerak ke belakang • Sensor membaca data • Loop sampai sensor bernilai 0 • Loop lagi sampai 2 sensor di kiri ketemu garis • program
Bagaimana robot mendeteksi percabangan • • • •
Baca sensor Bila sensor aktif semua berarti percabangan Motor jalan lurus Loop dan baca sensor sensor sehingga kondisi sensor ada yang tidak aktif • Hitung jumlah percabangan • Program
Bagaimana membuat program multi strategi • Buat program menjadi fungsi misal strategi_1() dan strategi_2() • Baca tombol push button (PB) bila PB 1 ditekan maka fungsi strategi_1() jalan, bila PB 2 ditekan maka fungsi strategi_2() jalan • Strategi_1() • Strategi_2()