12 November, 2014

ROBOT PENGENDALI JARAK JAUH BERBASIS MIKROKONTROLER ATMEGA 8535 DENGAN MODUL YS1020 SEBAGAI KOMUNIKASI WIRELESS





Pada zaman sekarang ini, dimana tekhnologi sudah sangat berkembang. Hampir semua pengontrolan sudah bisa dilakukan dengan jarak yang jauh tanpa harus menggunakan kabel sebagai media jalurnya. Seperti sekarang ini sudah banyak pengendalian dengan menggunakan infrared, Bluetooth, bahkan wireless. Oleh sebab itu, pada makalah ini saya akan membahas sebuah robot dimana untuk pengendalian kita memanfaatkan sebuah komunikasi jarak jauh yaitu wireless. Dengan menggunakan modul tambahan yaitu ys 1020 dimana modul ini sebagai transceiver dan receiver. Komunikasi yang kita pakai adalah komunikasi serial melalui wireless. Dengan bantuan modul wireless yang terhubung dengan komputer, dimana pengendali dapat menggerakkan sebuah robot dari komputer. Dan tentunya pada robot tersebut juga harus terpasang modul transceiver dan receiver. Berikut akan dijelaskan blok diagram sistem pengendali robot jarak jauh.


BLOK DIAGRAM SISTEM ROBOT PENGENDALI JARAK JAUH :



KETERANGAN WARNA :
-          MERAH (INPUT)
-          BIRU (PROSES)
-          HIJAU (OUTPUT)

PRINSIP KERJA TIAP BLOK SEBAGAI BERIKUT :
  1. PC digunakan sebagai input, yang terhubung dengan usb antara PC dengan USB AVR Programmer.
  2. USB AVR Programmer menerima input dari PC. Dimana level tegangan keluaran dari pc masih berupa RS 232. namun USB AVR ini merubah level tegangan RS 232 ini menjadi TTL. Diperlukan tegangan TTL untuk menghubungkan ke modul YS-1020.
  3. YS-1020 merupakan modul komunikasi yang sangat aman, mempunyai 8 kanal dengan frekuensi yang berbeda, jarak jangkauan komunikasi sekitar 100 meter dengan baudrate 2400 kbps.
  4. Antena berfungsi sebagai pengirim dan penerima gelombang frekuensi radio.
  5. Mikrokontroler atmega 8535 menerima output dari YS-1020 yang terhubung pada port RXD dan TXD.
  6. Driver motor DC L298 perintah yang berbentuk data 0 dan 1 dari mikrokontroler untuk arah gerak motor DC A dan B.


PERANCANGAN PENGONTROL
Pada perancangan hardware ini terdiri dari sebuah PC, USB AVR programmer, modul wireless YS-1020, mikrokontroler atmega 8535, driver motor L298 dan motor DC sebagai output untuk pergerakkan.

PC (KOMPUTER)

PC pada perancangan sistem robot ini digunakan sebagai input, dengan bantuan sebuah software. Software yang digunakan merupakan software yang sudah bawaan dari windows xp yaitu hyper terminal. Dimana hyper terminal ini dapat menghubungkan antara pc dengan port yang terhubung ke usb. Agar hyper terminal ini dapat terhubung dengan perangkat yang terhubung melalui usb ini kita harus mensetting dan mengetahui port mana yang akan digunakan.



USB AVR Programmer K-125
USB ini berfungsi sebagai komunikasi serial antara PC dengan Robot, dimana usb ini akan menghubungkan antara PC dengan modul YS-1020.

 


Gambar USB AVR Programmer K-125

Untuk menghubungkan USB ini ke modul YS-1020, kita hanya menghubungkan port TX, RX, Ground dan VCC ke modulYS-1020 tersebut.




Selain berfungsi sebagai komuikasi serial, USB AVR Programmer ini juga dapat digunakan sebagai downloader untuk memasukkan program kedalam mikrokontroler, khususnya mikrokontroler keluarga AVR saja.

MODUL YS-1020
Untuk mengirim bit-bit digital maka diperlukan sistem modulasi digital yang dapat mengkonversikan bit-bit tersebut ke dalam bentuk sinyal analog modulation digital yang dipakai ialah sistem FSK dengan menggunakan rangkaian terintegrasi YS-1020UB dapat dilihat pada gambar berikut ini.





Gambar modul YS-1020



Keterangan fungsi tiap port pada modul YS-1020

YS-1020UB merupakan modul komunikasi yang dapat digunakan sebagai modulator atau demodulator. Untuk menggunakan modul sebagai modulator maka hanya digunakan satu Pin saja, Pin 3 (RX) adalah Pin masukan dengan level tegangan TTL. Sebaliknya untuk menggunakan modul sebagai demodulator maka digunakan Pin 4 (TX) dengan level tegangan TTL dapat dilihat pada tabel sebelumnya.


MIKROKONTROLER ATMEGA 8535
Mikrokontroler atmega 8535 termasuk jenis keluarga AVR, yang menggunakan design arsitektur RISC (Reduce Instruction Set Computer) yang mempunyai lebar bus data 8 bit. Jenis ini berbeda dengan jenis keluarga MCS51, yaitu dapat dilihat dari frekuensi kerjanya. Pada MCS51 memiliki frekuensi kerja seperduabelas kali frekuensi osilator sedangkan pada AVR frekuensi kerjanya sama dengan frekuensi osilator. Jadi dengan frekuensi osilator yang sama, maka kecepatan AVR dua belas kali lebih cepat dibandingkan dengan kecepatan MCS51.    

 


Pin output atmega 8535



Rangkaian pada mikrokontroler atmega 8535

Berikut  program yang digunakan yang akan dimasukkan ke dalam mikrokontroler atmega 8535 dengan bantuan software CodeVisionAVR dan hardware USB AVR programmer.


/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.3 Standard
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date    : 2/23/2011
Author  : ZAINUDDIN
Company : UNIVERSITAS GUNADARMA
Comments:

Chip type           : ATmega8535
Program type        : Application
Clock frequency     : 12.000000 MHz
Memory model        : Small
External SRAM size  : 0
Data Stack size     : 128
*****************************************************/
#include
#include

// Standard Input/Output functions
#include

// Declare your global variables here
unsigned char data_rx;
void menu()
{
putchar(13);
printf("MENU PENGENDALI MOBIL :\n");
putchar(13);
printf("(1) TEKAN 1 MOBIL MAJU\n");
putchar(13);
printf("(2) TEKAN 2 MOBIL MUNDUR\n");
putchar(13);
printf("(3) TEKAN 3 BELOK KANAN\n");
putchar(13);
printf("(4) TEKAN 4 BELOK KIRI\n");
putchar(13);
printf("(5) TEKAN 5 MOBIL BERHENTI\n");
}
void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A 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
PORTA=0x00;
DDRA=0x00;

// Port B 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
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;

// Port D initialization
// Func7=In Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x30;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 12000.000 kHz
// Mode: Ph. correct PWM top=00FFh
// OC1A output: Inverted
// OC1B output: Inverted
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xF1;
TCCR1B=0x01;
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: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 2400
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x01;
UBRRL=0x37;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
 {
      OCR1AL=00;
      OCR1BL=00;
menu();
while (1)
{
      // Place your code here
      data_rx=getchar();        //terima data dari komputer
      if (data_rx == '2' )
      {
     OCR1AL=100;
      OCR1BL=70;
      PORTC.0=0;
      PORTC.1=1;
      PORTC.2=0;
      PORTC.3=1;
      //printf("MOBIL BERGERAK MAJU");
      }

      if (data_rx == '1' )
      {
     OCR1AL=100;
      OCR1BL=69;
      PORTC.0=1;
      PORTC.1=0;
      PORTC.2=1;
      PORTC.3=0;
      //printf("MOBIL BERGERAK MUNDUR");
      }

       if (data_rx == '3' )
      {
      OCR1AL=255;
      OCR1BL=40;
      //printf("MOBIL BELOK KANAN");
      }

      if (data_rx == '4' )
      {
      OCR1AL=55;
      OCR1BL=255;
      //printf("MOBIL BELOK KIRI");
      }

      if (data_rx == '5' )
      {
      OCR1AL=255;
      OCR1BL=255;

      //printf("MOBIL BERHENTI");
      }
      }
      };
}

 



Tampilan pada software CodeVisionAVR


Driver Motor DC L298
Untuk menggerakkan dua buah motor dc, digunakan IC H-Bridge Motor Driver L298, yang mampu memberikan arus maksimum sebesar 1A ke tiap motor. Input L298 ada 6 jalur, terdiri dari input data arah pergerakan motor dan input untuk PWM (Pulse Width Modulation). Untuk mengatur kecepatan motor, pada input PWM inilah akan diberikan lebar pulsa yang bervariasi dari mikrokontroler.




Gambar rangkaian pada Driver Motor DC L298





SUMBER REFERENSI :

  • SKRIPSI “SISTEM PENGONTROL TELE-MOBILE ROBOTIK BERBASIS MIKROKONTROLER AT89S51”
  • MAKALAH “MEMBUAT SENDIRI ROBOT LINE TRACKER”
  • WWW.GOOGLE.COM
  • BUKU “PEMROGRAMAN BAHASA C UNTUK MIKROKONTROLER ATMEGA 8535”
  • BUKU “MIKROKONTROLER AVR ATMEGA 8/16/32/8535 DAN PEMROGRAMANNYA DENGAN BAHASA C PADA WINAVR”