prev next

22/11/12

Mobile Robot Dengan LCD



Kali ini kita  membuat robot mobil yang memiliki tampilan LCD. Mungkin kita bertanya-tanya untuk apa suatu robot mobil dipasang LCD? LCD ataupun seven segment atau dot matrik adalah alat tampilan yang dengannya kita dapat menampilkan suatu keadaan robot mobil kita.


Sebagai contoh dengan dipasangnya LCD, kita mungkin dapat menampilkan status sudah berapa kali robot mobil kita berputar misalnya. Ataupun sekedar tampilan tentang apa yang sedang dikerjakan oleh robot mobil kita. Sebagai contoh jika robot mobil kita sedang belok kiri, makan LCD akan tampil tulisan “belok kiri” dan sebagainya.

Base Robot
Base robot tetap menggunakan acrylic dan menggunakan motor servo sebagai pengerak. Sehingaga untuk base ini tidak perlu dijelaskan panjang lebar telah dibahas pada pembuatan robot mobil yang pertama.

Liquit Crystal Display (LCD)
Menggunakan LCD susah-susah gampang. Jika kita belum pernah mencoba menggunakannya tentu akan merasa kesulitan. Tetapi bagi yang pernah mencoba mungkin tidak akan mengalami kesulitan.

Memprogram mikrokontroler untuk berhubungan dengan LCD menggunakan bahasa assembler agak terlalu rumit. Untuk itulah kali ini kita akan menggunakan bahasa mikro Pascal saja supaya lebih muda. Adapun hubungan antara mikrokontroler dengan LCD dengan menggunakan bahasa MikroPascal adalah sebagai berikut.


Gambar Hugungan LCD dengan Mikrokontroler PIC16F84

Hubungan diatas merupakan 6 jalur I/O. oleh karena itu kita akan menggunakan port B yang berukuran penuh 8 bit. Sementara sisanya (PB0 dan PB1) akan dipakai untuk mengontrol motor sevo.

Memprogram LCD dengan bahasa mikroPascal sangatlah muda. Hal ini karena telah tersedia rutin-rutin untuk menuliskan ke LCD dan juga rutin-rutin untuk mengintrol LCD seperti menghapus layer, menghilangkan cursor dll.

Prosedur pertama untuk menggunakan LCD adalah Prosedure LCD_Init (var PORT : byte). Prosedur ini memberitahukan ke computer mikroPascal, port mana yang dipakai untuk berhubungan dengan LCD. Contoh penggunaan prosedur ini adalah sebagai berikut.
Lcd_Init (PORTB);
Sedangkan untuk menulis kalimat pad LCD dipergunakan.
procedure LCD_Out *var PORT :byte;
ROW, column : byte; var text;
array[255] of char);
Berikut contoh menulis kalimat ke layer LCD.
LCD_Out (PORTB, 1, 1, text);
Dimana text berisi kalimat yang akan dituliskan.
Adapun secara umum prosedur-prosedur yang berhubungan dengan pemakaian LCD akan diberikan dibawah ini.

Table Procedur yang berhubungan dengan LCD

Perintah
Kegunaan
lcd_first_Row
Menggerakkan Kursor ke baris 1
lcd_Second_Row
Menggerakkan Kursor ke baris 2
lcd_Third_Row
Menggerakkan Kursor ke baris 3
lcd_Fourth_Row
Menggerakkan Kursor ke baris 4
lcd_Clear
Menghapus Layar LCD
lcd_Retum_Home
Menggerakkan Kursor ke posisi home
lcd_Cursor_Off
Mematikan Kursor
lcd_Underline_On
Mengaktifkan Kursor Garis Bawah
lcd_Blik_Cursor_On
Mengaktifkan Kursor Kedip
lcd_Move_Cursor_Left
Kursor ke kiri tanpa merubah display
RAM
lcd_Move_Cursor_Right
Mengaktifkan display LCD (on)
lcd_Turn_On
Mematikan display LCD (Off)
lcd_Turn_Off
Geser display ke kiri tanpa merubah
display data RAM
lcd_Shift_Left
Geser display ke kekanan tanpa merubah
display data RAM
lcd_Shift_Right

 

 Artikel Terkait:
Rangkaian Lengkap Robot
Program Unntuk Robot Mobil Dengan LCD

21/11/12

Membangun Mobil Robot



Setelah kita paham mengenai hardware dan software untuk membuat mobil robot. Kini saatnya kita langsung berpraktek membangun mobil robot sederhana berbasis motor servo dan kontroler PIC16F84.

Dasar robot akan dibuat menggunakan acrylic berwarna merah yang agak tipis dibandingkan dengan  acrylic warna putih/clear. Namun warna apa saja tidak masalah.

Pasangkan kedua servo motor dikiri dan kanan dasar robot. Untuk memasangkan servo tersebut gunakan lem “ castol”. Hal ini karena lem tersebut cukup kuat, tetapi masih dapat memungkinkan untuk mengambil servo lagi tanpa merusak servo. Dalam hal ini janganlah menggunakan lem “super glue” kareena lem tersebut terlalu kuat dan merusak bahan yang direkatkan jika ingin diambil lagi.

Untuk meletakan system kontroler (mikrokontoler PIC 16F84 dan rangkaian lain) kita dapat menggunakan PCB lubang atau pun menggunakan mini breadboard. Dalam hal ini saya menggunakan mini breadboard sehingga rangkaian masih dapat dirubah untuk ditambah kemampuannya.
 Gambar mini Breadboard

Untuk memasukkan program kedalam mikrokontroler PIC16F84, saya menggunakan mikro computer. setelah program tersimpan kedalam mikrokontroler PIC16F84, IC mikrokontroler  diambil fan dipasangkan pada mini breadboard. Pada proyek yang lain, board mikro computer akan langsung dipasangkan pada badan robot sehingga pengendalian program dapat dengan mudah dilakukan.

 Berikut adalah yang selesa dirakit.
Gambar Robot Mobil Selesai Dirakit

Pada mobile robot diatas dipakai dua batrai. Hal ini harus dilakukan karena sumber daya untuk mikrokontroler tidak boleh terganggu. Sumber daya tersebut dapat diganggu jika motor servo sedang bekerja. Hal ini dapat menyebabkan mikrokontroler reset. Untuk itu motor servo perlu diberikan catu daya terpisah. Motor servo memerlukan tegangan kerja +4,5 sampai +16 volt.

Pada mobile robot ini program diberikan sederhana saja. Kita akan membuat  robot mobil tersebut berjalan maju. Dengan ditambahkan sensor dan merubah program, maka mobile robot akan dapat menghindari tabrakan jika ada benda yang menghalangnya.

Program untuk membuat robot tersebut berjalan maju akan diberikan berikut ini.

program moble_robot_maju;
bagin
TRISB :=0;   //port sebagai output
repear
bagin
portb := $1; // servo1 aktif maju (maju2000)
delay_us(2000); // delay 2ms
portb :=$0; //rb0 rendah
delay_ms(18);

portb := $2; // servo2 aktif maju (maju1000)
delay_us(1000); // delay 1 ms
portb :=$0; //rb1 rendah
delay_ms(18);
end;
until (0=1);
end;

Dengan menggunakan program maka mobile akan berjalan maju.


Artikil Terkait:
Pengerak Mobile Robot
Dasar Pemograman Servo Motor
Membuat Dasar Mobile Robot
Memprogram Servo Motor


20/11/12

Membuat Dasar (Base) Mobile Robot

Membuat dasar Mobile Robot sangatlah muda. pertama-tama harus ditentukan terlebih dahulu material apa yang akan digunakan sebagai dasar robot. Kita dapat menggunakan plywood ataupun acrylic. selain itu kita tinggal membuat bidang kotak untuk menempatkan kedua motor servo.


Gambar: Base Mobile Robot

Ada hal yang perlu kita perhatikan setelah selesai merakit base mobil robot ini. Yaitu arah dari pada putaran servo. Servo kiri dan servo kanan akan menjadi berlawanan. Sebagai contoh servo kiri harus diberikan pulsa selebar 2 ms agar bergerak maju. Sedangkan servo kanan harus diberikan pulsa 1 ms agar bergerak maju. Apabila kedua servo diatas diberikan pulsa 2 ms maka mobil robot tidak akan bergerak maju. Hal ini karena pulsa kedua servo saling berlawaanan.

Caster merupakan roda bebas yang dapat bergerak bebas. Namun agak sulit memang mencari roda caster yang berukuran cukup kecil. Apa bila ini terjadi, maka kita dapat menggunakan benda apa saja yang bentuknya bulat. Hal ini berguna agar pergerakan robot tidak terlalu berat

Memprogram Servo Motor
Untuk dapat memprogram servo motor dengan mikrokontroler diperlukan penguasaan untuk membuat delay. Hal ini kerana kita harus membuat pulsa dengan lebar 1,5 ms sampai 2 ms yang berulang setiap 18 ms.

Gambar: Pulsa Untuk Motor Servo
Dari gambar terlihat dengan jelas bahwa alamat 2 ms sinyal akan berlogika tinggi (1). sementara selama 16 ms sinyal berlogika rendah (0). Untuk itulah diperlukan suatu tundaan (delay. Tundaan yang 16 ms tidak tidak terlalu bermasalah jika diganti dengan 18 ms ( memudahkan membuat program).

berikut akan deberikan contoh potongan program untuk mengontrol motor servo. Program ini akan menggunakan mokro pascal agar lebih mudah membuatnya ( bila dibandingkan dengan menggunakan assembler).
repeat
   bagian 
      portb :=$1;                        // rb0 tinggi (maju2000)
      delay_us(2000);               // delay 2 ms
      portb :=$0;                        // rb0 rendah
      delay_ms(18);                   // delay 18 ms

      portb :=$2;                        // rb0 tinggi (maju1000)
      delay_us(1000);               // delay 1 ms
      portb :=$0;                        // rb0 rendah
      delay_ms(18);                  // delay 18 ms
  end;
unil (0=1);                              // loop tanpa akhir
Program diatas akan membuat motor servo yang dihubungkan dengan RB0 dan RB1 pada mikrokontroler PIC 16F84 berherak maju. Adapun hubungan secara lengkap untuk kedua motor servo tersebut dapat dilihat pada gambar berikut ini.


 Gambar: Hubungan Servo Dengan Sinyal Mikrokontroler dan Catu Daya


Artikil Terkait:
Pengerak Mobile Robot
Dasar Pemograman Servo Motor
Membuat Dasar Mobile Robot
Memprogram Servo Motor
Membangun Mobile Robot

Mobile Robot

Salah satu jenis robot yang banyak diminati oleh penggemar robot adalah moble robot. Dari namanya kita akan tahu bahwa yang dimaksud dengan Moble Robot adalah Jenis Robot yang penggeraknya menggunakan roda seperti layaknya mobil, walaupun hanya menggunakan dua ruda saja

Saat sekarang banyak jenis mobile robot yang diperlombakan. ada Sumo Bot, Robot Pemain Bola, ataupun Line Follower Robot. Masing-masing jenis mobil robot diatas memiliki kelebihan dan kekurangan masing-masing.

Untuk membuat sebuah mobil robot. Ada beberapa hal yang harus diperhatikan. hal pertama adalah pemilihan tenaga penggeraknya. Untuk mengerakkan sebuah mobil robot dapat digunakan sebuah motor DC.  Namun demikian yang patut diperhatikan adalah, ketika tidak boleh menghubungkan secara langsung roda dengan poros motor DC.

sebagaimana pengalaman saya, jika kita menghubungkan roda dengan poros roda motor, maka roda tidak kuat menggerakkan roda nantinya. Roda harus terhubung melalui system gear. Ada dua kelebihan menggunakan system gear yaitu:
  1. menaikkan tenaga pada roda
  2. menurunkan kecepatan putaran motor

Untuk dapat membuat sebuah mobil robot, maka kita dapat menggunakan motor DC biasa. Geared motor DC “motor DC yang deberikan gear” maupun resvo motor. Apabila kita hanya memiliki motor DC biasa. Maka tugas berat menanti kita.

Apa bila harus dapat membuat system gear yang cocok dengan desain mobil kita. Mungkin kita dapat menggunakan system gear pada mobil tamiya, part LEGO atau pun kita dapat berkereasi sendiri. Namun hal ini tentulah sulit dilaksanakan.

Oleh karena itu saya cendrung menyarankan untuk menggunakan geared motor DC atau pun servo motor. Geared motor DC masih agak susah dicari. Motor servo mungkin lebih mudah dicari ditoko elektronik besar.
Gambar Geared Motor
Gambar Servo Motor

Jika kita ingin menggunakan motor servo, maka hal yang perlu diperhatikan adalah tipe dari motor servo itu sendiri. Ada dua tipe motor servo yaitu standard servo (lihat gambar)  dan Continous Servo. Keterangan tersebut tertera pada badan servo.

Standard servo adalah servo yang putarannya memiliki batas. Hal inilah yang menyebabkan poros servo tidak dapat berputar 360 derajat. Servo ini hanya digunakan didalam system robotic seperti untuk menggerakkan lengan. Sedangkan Continous Servo dapat berputar 360 derajat sehingga cocok dipakai untuk mobile robot untuk menggerakkan rodanya.

Tidak seperti motor DC biasa, menggunakan motor servo agak sedikit rumit. Hal ini tidak lain Karena untuk menggerakkan servo motor tersebut diperguakan dengan cara memberikan pulsa dengan lebar tertentu.

Berikut diberikan ilusterasi arah pergerakan pada servo motor dengan jenis Continous Servo buatan Parallax Inc.
 
Gambar: pulsa yang diberikan ke servo

pada gambar diatas diberikan besar pulsa yang harus diberikan ke motor servo dan arah putar servo. Nilai 1 ms, 1,5 ms dan 2 ms adalah nilai dasar saja. nilai tersebut dapat diubah disesuaikan dengan karakteristik motor servo yang dipakai. nilai yang sesungguhnya didapatkan dengan cara trial dan error (yaitu dengan cara mencoba beberapa kali).

Misalnya pada nilai 2 ms (2000us) tuas motor servo belum sampe mentok, maka dapat diberikan nilai diatasnya dan perhatikan perubahannya. Apabila pemberian nilai terlalu tinggi maka poros motor servo akan bergerak. jika didiamkan maka nilai harus diturunkan sampai diperoleh posisi maksimum yang dikehendaki.

Artikil Terkait:
Pengerak Mobile Robot
Dasar Pemograman Servo Motor
Membuat Dasar Mobile Robot
Memprogram Servo Motor
Membangun Mobile Robot

19/11/12

Perancangan Perangkat Keras (Hardware)



Alat yang hendak kita rancang tersebut terdiri atas dua bagian yaitu bagian perangkat keras, rangkaia antar muka (interface) antara port parallel dengan robot dan perangkat lunak (software) pada computer untuk mengendalikan robot. Pada disain robot terkontrol PC kali ini, supaya sederhana akan menggunakan mobil-mobilan yang memiliki remot control. Jadi kita hendak membuat sebuah “mobil robot terkontrol PC”. Kita dapat membuat mobil tersebut berjalan maju, mundur, belok kiri maupun belok kanan hanya dengan meng-klik mouse!

 
                                                Gambar: Konsep Mobile Robot Terkontrol PC




            Dengan asumsi bahwa perangkat yang akan dikontrol hanya 4 macam saja yaitu maju (forward), mundur (backward), Belok kiri (left) dan belok kanan (right) maka akan diperlukan total 5 jalur (line) data computer ke rangkaian antarmuka. Adapun kelima data tersebut adalah sebagai berikut.

Sinyal
Digunakan Sebagai
DP-0
Maju
DP-1
Mundur
DP-2
Kiri
DP-3
Kanan
Ground
Common Ground

            Setelah kita mendefinisikan sinyal-sinyal yang akan dipakai untuk mengontrol rangkaian antarmuka maka kini saatnya untuk merancang rangkaian antar-muka tersebut. Rangkaian antar-muka ini memiliki ketentuan sebagai berikut. Pada saat masukan sinyal berlogika tinggi (high), maka pada jalur tersebut sebuah penghubung (switch) bekerja. Adapun yang dimaksud dengan switch disini tentu saja bukanlah switch manual, melaikan switch yang dapat dikontrol oleh arus listrik seperti relay atau opto coupler.

            Karena pertimbangan ukuran yaitu agar ukuran rangkaian tidak terlalu besar dan juga menghidari adanya kontak manual (seperti pada relay) yang dapat menimbulkan kebisingan, maka pilihan jatuh pada opto coupler PC-817 dari Sharp yang berharga murah.
            Opto coupler PC-817 berukuran cukup kecil dengan ‘footprint’ yang dapat dipasang pada kebanyakan soket IC, menjadikannya ideal untuk digunakan. Sebuah PC-817 dapat dipakai untuk menerima satu jalur data saja, oleh karena itu kita memerlukan 4 buah opto coupler tersebut.

            Selain opto coupler tersebut, kita masih memerlukan sebuah IC buffer yang berguna agar leluaran dari port parallel dapat men-drive opto coupler tanpa mengganggu logikanya. Kita akan menggunakan IC 74LS04 yang berisi 6 buah buffer/ driver dengan sifat open collector (harus dipasang resistor pull-up pada outputnya). Rangkaian lengkap antar-muka diberikan dibawah ini.

                                                  Gambar: Rangkaian Antar-muka PC Robot

Cara kerja rangkaian antar-muka ini adalah sebagai berikut. Jika pada jalur DP-0 (data port bit 0) dibuat berlogika tinggi, maka setelah melewati buffer 74LS07 pada pin 1 maka pada pena 2 akan terdapat logika tinggi yang akan menyebabkan opto coupler no.1 menjadi aktif, aktifnya opto coupler ini akan menyebabkan kedua pena outputnya berhambatan rendah yang cukup untuk mengaktifkan saklar “Maju” pada modul   remote mobil. Hal demikian juga berlaku untuk jalur yang lain.



Artikel Terkait :

18/11/12

Perancangan Perangkat Lunak (Software)

Setelah kita membuat rangkaian antar muka dan menghubungkan dengan Modul Remot Mobil, maka berarti bagian perangkat keras telah selesai. Satu pekerjaan lagi yang harus dibuat adalah membuat program untuk komputernya. 

beberapa bahasa pemograman dapat dipakai seperti Pascal, Delphi, Visual Basic dan lain-lain. Dalam hal ini kita menggunakan Delphi karena masih menggunakan dasar bahasa Pascal, yang mana beberapa proyek robot yang lain juga akan menggunakan bahasa pascal (Mikcro Pascal) untuk mengisi mikrokontrolernya.

Kita akan membuat program dengan lingkungan kerja windows. Untuk berhubungan dengan membaca atau menulis ke port parallel maka ada dua buah fungsi yang akan dipakai yaitu fungsi baca port dan fungsi tulis port. Adapun detail kedua fungsi tersebut adalah sebagai berikut.
function BacaPort (alamat : word) : byte;
Var tmp : byte;
bagin
    asm
    mov dx,alamat;
    in ax,al;
and;
BacaPort :=tmp;
end;
Sedangkan fungsi untuk menuliskan port adalah:
procedure TulisPort(alamat : worddata :byte);    
bagin
      asm 
      mov dx, alamat;
      mov al,data;
      out dx,al;
   end;
end   
Pada perancangan software menggunakan program Delphi ini, kita akan mengunakan CheckBox adalah salah satu komponen dalam pemograman Delphi, Jika kita memberi tanda centang, maka dikatakan checkbox terpilih (checked). pada saat checkbox terpilih, maka kita harus membuat jalur (line) yang bersangkutan menjadi tnggi (high).

Beberapa contoh potongan program apabila sebuah checkbox terpilih:
begin
if checkbox.checked then 
   begin
       tulisport ($378,$ff); // logika tinggi
    end    
else
begin
      tulisport($378,$0); // logika rendah
   end;
end;
Dengan menggunakan prinsip diatas, maka program secara keseluruhan adalah sebagai berikut. Program berikut tentu masih standard, anda dapat melakukan tambahan perbaikan-perbaikan sesuai kebutuhan anda.

unit Robot;
interface
uses
windowe, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs
StdCtrls;
type
TForml =class(TForm)
       GroupBox1: TGroupBox; 
       GroupBox2: TGroupBox; 
       GroupBox1: TCheckBox;   
       GroupBox2: TCheckBox; 
       GroupBox3: TCheckBox;   
       GroupBox4: TCheckBox;   
       procedure CheckBox1Click (Sender:TObject);
       procedure CheckBox2Click (Sender:TObject);
       procedure CheckBox3Click (Sender:TObject);
       procedure CheckBox4Click (Sender:TObject);
private
  { private declarations}
public
function bacaport (addr:word): byte;
procedure tulisport(addr:word;data:byte);
   { Public declarations}
end;
   
var
  Forml: TFofml;
implementation
{$*.DFM}
function TForml.bacaport(addr:word):byte;
var tmp:byte;
begin
  asm
    mov dx,addr;
    in ax,dx;
    mov tmp,al;
  end
  bacaport := tmp;
end;

procedure TForml.tulisport(addr :word: data : byte);
begin
  asm
    asm
    mov dx,addr;
    mov al,data;
    out dx,al;
  end;
end;

procedure TForml.CheckBox1Click(sender:TObject);
var tmp : byte;
begin;

  tmp := bacaport($378);
  if checkbox1.checked them
    tulisport ($378,tmp or $1)
  els
    tulisport ($378,tmp end $fe);
end;
procedure TForml.Checkbox2Click(sender:TObect);
var tmp : byte;
begin;

  tmp := bacaport($378);
  if checkbox2.checked them
    tulisport ($378,tmp or $2)
  els
    tulisport ($378,tmp end $fd);
end;

procedure TForml.Checkbox3Click(sender:TObect);
var tmp : byte;
begin;
  tmp := bacaport($378);
  if checkbox3.checked them
    tulisport ($378,tmp or $4)
  els
    tulisport ($378,tmp end $fb);
end;

procedure TForml.Checkbox4Click(sender:TObect);
var tmp : byte;
begin;
  tmp := bacaport($378);
  if checkbox4.checked them
    tulisport ($378,tmp or $8)
  els
    tulisport ($378,tmp end $f7);
end;
end. 

Artikel Terkait : 
ROBOT TERKONTROL PC 
Pemilihan Port Komputer (PC) 
Dasar Pemegraman Parallel Port 
Perancangan Perangkat Keras (Hardware)