Pendahuluan
Aplikasi elektronika masa depan banyak
berhubungan dengan teknologi robotika. Oleh karena itu, pengetahuan akan
berbgai sensor dan teknik penggerakan aktutor sangatlah penting. Durasi untuk praktikum ini 4
jam menggunakan SmartAVR Robotics ver 4, kita
mengharapkan Anda memiliki kit ini agar mudah belajar pemrograman robot.
SmartAVR
Robotics Ver 4.0
Konsep Sensor
Robotika
Sensor Sharp
GP2D12
GP12D12 dan keluarganya
merupakan sensor deteksi jarak Infra Red pada aplikasi robot, selain itu juga
ukurannya yang kecil menghemat tempat dan daya Karena outputnya analog, maka
sangat tepat jika dipasangkan dengan mikrokontroler AVR. Output sensor ini
tidak linear, jadi Anda harus membuat look up table pada program untuk memperoleh hsil bacaan yang linear.
Blok diagram dari Sharp GP2D12 berisi led pemancar
dan penerima yang memiliki rangkaian pemroses, pengemudi, dan rangkaian osilasi
serta rangkaian output analog seperti gambar berikut:
Sensor
ini mempunyai output 3 kabel, yang terdiri dari :
·
Pin 1 sebagai tegangan output (Vo),
·
Pin 2, GND
·
Pin 3, Vcc
Untuk standarisasi, disarankan untuk kabel berwarna
hitam sebagai GND, kuning untuk Vo dan Merah untuk Vcc.
GP2D12 mendeteksi bacaan terus menerus ketika diberi
daya. Outputnya berupa tegangan analog yang sesuai dengan jarak yang diukur.
Nilai tersebut diperbaharui setiap 32 ms.
Berdasarkan pengukuran, tegangan
yang dihasilkan pada jarak 10cm ialah 2.6V, dan menurun tidak secara linear
pada jarak 80 cm beriksar pada tegangan 0.5 V.
Gambar 4
Karakteristik sensor Sharp GP2D12
Sensor Jarak Ultrasonik Devantech SRF04
Devantech SRF04 Ultrasonic
Range Finder memberikan informasi jarak dari kisaran 3cm hingga 3 meter,
atau SRF08 yang mencapai 6 meter. Kit
ini sangat mudah untuk dirangkai dan membutuhkan sumber daya yang kecil sekali,
yang sangat ideal untuk aplikasi mobile robot. Susunan kakinya sebagai berikut:
Pencari jarak ini bekerja
dengan cara memancarkan pulsa suara dengan kecepatan suara (0.9 ft/milidetik).
Tabel 1 Karakteristik
SRF04
Tegangan
|
5v
|
Arus
|
30mA Typ. 50mA Max
|
Frekwensi
|
40KHz
|
3 m
|
|
3 cm
|
|
Sensitifitas
|
Mendeteksi
jarak min 3cm
|
Trigger
input
|
10uS Min. TTL level pulse
|
Pulsa
echo
|
Positive TTL level signal, width
proportional to range.
|
Photoreflector Hamamatsu P5587
Photoreflector P5587 dan
P5588 ialah fotoreflektor yang mengkombinasikan LED infrared dengan daya tinggi
dan IC foto rendah tegangan. Foto IC ini terdiri dari
fotodioda sensitifitas tinggi, penguat, Schmitt trigger dan output
fototransistor pada 1 chip. Chip ini dapat digunakan untuk sensor line follower.
Lynxmotion Singeline Detector
Single Line
detector ini merupakan sensor refleksif infrared yang biasanya dipasang pada
robot sumo atau mobile robot lainnya.
Sensor ini mengeluarkan sinyal TTL
yang tergantung pada tingkat kecerahan permukaan di depan sensor
tersebut. Gunakan 2 atau lebih sensor untuk menghasilkan robot line follower.
Sensor Hamamatsu
UVTron Flame Detector
Hamamatsu UVTron Flame
Detector dan rangkaian driver dapat mendeteksi api dari lilin atau puntung
rokok dalam jarak 5 meter. Biasanya digunakan sebagai alat untuk mendeteksi
sumber api seperti lilin, yang beroperasi pada panjang spectral 185 hingga
160nm.
Gambar 8 Paket sensor UVTRON dan driver C3704
Devais lain yang sering digunakan
pada mobile robot ialah sensor kompas dan kamera CMUCam3 yang dapat mendeteksi objek
yang bergerak berdasarkan warna, serta mampu melakukan pemrosesan image dengan
cepat.
Gambar 9 Paket CMUCam3
Penerapan
pada Program
Percobaan 1.
Membaca data Sharp GP2D12
Langkah-langkahnya;
1.
Siapkan SmartAVR Robotics Ver 4.0, dan hubungkan dengan kabel AVR ISP Programmer ke PC.
Hubungkan kabel serial dari mikrokontroler ke port serial PC
2.
Hubungkan sensor Sharp GP2D12
di port A.0, motor DC 5-12V di output L298D pin OUT1 dan OUT2.
3.
Buat program di bawah ini :
SharpGP2D12.c:
// Percobaan 10.1, percobaan baca data sensor jarak Sharp GP2D12
// LED terhubung di Port B
#include
<mega16.h>
#include
<stdio.h>
#include
<delay.h>
#define
ADC_VREF_TYPE 0x60
flash unsigned char string1[]={"data adc:
%d; "};
// Baca 8 bit
terpenting
unsigned char read_adc(unsigned
char adc_input) {
ADMUX=adc_input |
(ADC_VREF_TYPE & 0xff);
// Delay needed for
the stabilization of the ADC input voltage
delay_us(10);
// Mulai konversi
ADC
ADCSRA|=0x40;
// Tunggu konversi
ADC selesai
while ((ADCSRA
& 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
void main(void) {
// Inisialisasi Port B
PORTB=0xFF;
DDRB=0xFF;
// USART
initialization
// Communication
Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver:
On
// USART
Transmitter: On
//
USART Mode: Asynchronous
//
USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;
// ADC
initialization
// ADC Clock
frequency: 31,250 kHz
// ADC Voltage
Reference: AVCC pin
// ADC Auto Trigger
Source: Free Running
// Menggunakan 8
bit data
ADMUX=ADC_VREF_TYPE
& 0xff;
ADCSRA=0xA7;
SFIOR&=0x1F;
while (1)
{
PORTB=read_adc(0); // Baca data sensor di PA.0
printf(string1,PORTB);
if
(PORTB>100)
{
...; //Putar motor
DC ke kanan
}
else
{
...; //Putar motor
DC ke kiri
}
};
}
4. Kompilasi dan jalankan, berikan
halangan pada sensor jarak tersebut, lihat perubahan arah gerak motor DC. Buat
grafik hasi pengukuran sensor tersebut.
Percobaan 2.
Pengatur putaran Motor DC dengan PWM
Langkah-langkahnya;
5.
Siapkan SmartAVR Robotics, dan hubungkan dengan kabel AVR ISP Programmer ke PC.
6.
Hubungkan motor DC ke keluaran
OUT3 dan OUT4 pada IC L298.
7.
Buat program di bawah ini :
PWM.c:
// Percobaan 2,
Percoban kontrol kecepatan motor dengan PWM
#include <mega16.h>
#include <delay.h>
bit i;
void main(void) {
unsigned int temp;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x30; //PD4 dan PD5 sebagai output
// Inisialisasi Timer/Counter 1
// Clock source: System Clock/8
// Clock value: 500 kHz
// Mode: Phase correct PWM, TOP
value = ICR1 value
//Jika TCCR1A=0x82
(Non-inverted PWM mode) maka:
// OC1A output: Clear OC1A on
compare match when up-counting.
// Set
OC1A on compare match when down-counting.
//Jika TCCR1A=0x22
(Non-inverted PWM mode) maka:
// OC1B output: Clear OC1B on
compare match when up-counting.
// Set
OC1B on compare match when down-counting.
// OC1A output: Disconected
(Normal)
TCCR1A=0x82;
TCCR1B=0x12;
TCNT1=0x0000;
ICR1H=0xFF; //Resolusi phase
correct PWM 16-bit
ICR1L=0xFF;
OCR1A=0x0000;
OCR1B=0x0000;
i=0;
temp=0x0FF0; //Nilai awal PWM
while (1)
{
if (PINC.0==0) //Jika tombol yang terhubung dengan PC0
ditekan,
{ //
maka motor semakin lambat
delay_ms(100); // dan berputar sampai berhenti
temp-=0xFF;
if (temp==0xFF01) temp=0x0000;
}
else //Jika tombol yang terhubung dengan PC0
tidak ditekan,
{ //
maka motor semakin cepat
delay_ms(100); // berputar sampai berputar terus
temp+=0xFF;
if (temp==0x00FE) temp=0xFFFF;
}
OCR1A=temp;
OCR1B=temp;
};
}
8. Kompilasi dan jalankan program, tekan saklar pada Port
C.0 dan lihat efeknya pada putaran motor
DC.