Teknologi robot sebenarnya telah ada sebelum kata
“robot” digunakan, ilmuwan muslim merupakan pionier pertama teknologi robot. Donald Routledge dalam bukunya
Studies in Medieval Islamic Technology, mengatakan bahwa hingga zaman modern
ini, tidak satupun dari suatu kebudayaan yang dapat menandingi lengkapnya
instruksi untuk merancang, memproduksi dan menyusun berbagai mesin sebagaimana
yang disusun oleh Al-Jazari. Pada 1206 ia merampungkan sebuah karya dalam
bentuk buku yang berkaitan dengan dunia teknik. Beliau mendokumentasikan lebih
dari 50 karya temuannya, lengkap dengan rincian desain dalam buku, “al-Jami
Bain al-Ilm Wal ‘Aml al-Nafi Fi Sinat ‘at al-Hiyal” (The Book of Knowledge of
Ingenious Mechanical Devices, Springer,
1973 Edition). Bukunya ini berisi tentang teori dan praktik mekanik.
Karyanya ini sangat berbeda dengan karya ilmuwan lainnya, karena dengan
piawainya Al-Jazari membeberkan secara detail hal yang terkait dengan mekanika.
Dan merupakan kontribusi yang sangat berharga dalam sejarah teknik. Kontribusi
Al-Jazari dalam dunia robotika salah satunya adalah jam gajah yang bekerja
secara otomatis.
Gambar 1. Teknologi otomatisasi pada
tahun 1206 karya Al-Jazzari
Kata
Robot sendiri pertama kali digunakan oleh seorang novelist Karel Capek pada
tahun 1920 Ketika membuat Teater Rossum’s Universal Robots (RUR), Robot menurut
bahasa diambil dari kata Robota yang berasal dari bahasa Czech yang artinya
pelayan atau pekerja. Sehingga robot dapat diartikan sebagai mesin yang dapat
bekerja secara terus menerus sebagai pelayan atau pekerja yang dapat di kontrol
atau bekerja secara otomatis sesuai dengan kebutuhan manusia atau tujuan
pembuatannya. Oleh karena itu robot tidak harus berbentuk manusia atau hewan.
Secara umum robot tergolong menjadi dua bagian yaitu robot otomatis dan robot
teleoperated. Robot otomatis dapat bekerja tanpa kontrol langsung oleh manusia,
robot tersebut bekerja berdasarkan program yang ditanamkan seperti robot line
follower, robot avoider obstacle, robot humanoid, lampu lalu lintas, pintu
otomatis, dan sebagainya. Sedangkan robot teleoperated harus dikontrol langsung
oleh manusia, seperti robot kontrol, televisi, computer dan lainnya.
Secara
umum prinsip dasar sistem robot terdiri dari tiga bagian utama yaitu input,
proses, dan output. Input robot dapat berasal dari sensor, tombol kontrol,
maupun program yang tertanam. Proses merupakan bagian otak robot yang menerima
input dan membuat perintah pada output berisi logika atau kecerdasan buatan
yang tertanam pada chip mikrokontroler, sedangkan output adalah actuator yang dapat berisi hidup matinya motor DC,
LED, buzzer atau lainnya.
Pada percobaan kali ini, akan
dibuat robot teleoperated sederhana menggunakan mikrokontroler ATmega 8, dengan
kontrol navigasi tombol push-buttom yang dapat memberikan perintah pada robot
untuk bergerak maju, mundur, belok kiri dan belok kanan.
Desain Lengkap
Robot Kontrol Digital
Sesuai
desain pada tombol gerak kiri dihubungkan dengan PIN D.0, tombol gerak kanan
dihubungkan dengan PIN D.1, tombol gerak
maju dihubungkan dengan PIN D.2, serta gerak mundur dihubungkan dengan PIN D.3.
Motor kiri diatur oleh PORTD.5 dan PORTD.6, sedangkan motor kanan diatur oleh
PORTD.7 dan PORTB.0. Logika yang dibuat untuk membuat sebuah robot kontrol
dapat diringkas dalam tabel berikut
*****************************************************/
#include <mega8.h>
#include <delay.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In
Func4=In Func3=In Func2=Out Func1=Out Func0=In
// State7=T State6=T State5=T
State4=T State3=T State2=0 State1=0 State0=T
PORTB=0x00;
DDRB=0x06;
// Port C initialization
// Func6=In Func5=In Func4=In
Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T
State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In
Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T
State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 11.719 kHz
// Mode: Fast PWM top=0x00FF
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA1;
TCCR1B=0x0D;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s)
initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s)
initialization
TIMSK=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by
Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
DDRD.0=0; // mendefinisikan sebagai input dari tombol gerak ke
kiri
DDRD.1=0; // mendefinisikan sebagai input dari tombol gerak ke
kanan
DDRD.2=0; // mendefinisikan sebagai input dari tombol gerak
maju
DDRD.3=0; // mendefinisikan sebagai input dari tombol gerak
mundur
DDRD.5=1; // mendefinisikan sebagai ouput motor kiri
DDRD.6=1; // mendefinisikan sebagai ouput motor kiri
DDRB.0=1; // mendefinisikan sebagai ouput motor kanan
PORTD.0=1; // kondisi awal
PORTD.1=1;
PORTD.2=1;
PORTD.3=1;
PORTD.5=1;
PORTD.6=1;
PORTD.7=1;
PORTB.0=1;
OCR1A=200; // pengatur kecepatan motor menggunakan PWM untuk
motor kiri
OCR1B=200;
// pengatur kecepatan motor menggunakan PWM
untuk motor kanan
while (1)
{
if (PIND.0==0) //robot gerak ke kiri
{
PORTD.5=1;
PORTD.6=0;
PORTD.7=0;
PORTB.0=0;
}
else if
(PIND.1==0) //robot gerak ke kanan
{
PORTD.5=0;
PORTD.6=0;
PORTD.7=1;
PORTB.0=0;
}
else if
(PIND.2==0) //robot gerak maju
{
PORTD.6=0;
PORTD.7=1;
PORTB.0=0;
}
else if
(PIND.3==0) //robot gerak mundur
{
PORTD.5=0;
PORTD.6=1;
PORTD.7=0;
PORTB.0=1;
}
else //robot diam
{
PORTD.5=0;
PORTD.6=0;
PORTD.7=0;
PORTB.0=0;
}
}
}
0 komentar:
Posting Komentar