Materi Workshop

26
1 BAB I PERANCANGAN ROBOT 1.1 Mekanik Robot Dalam merancang sebuah robot line follower yang harus di perhatikan yaitu ukuran dari motor yang kita gunakan, besar kecilnya rangkaian yang kita buat, dan juga titik keseimbangan yang dapat mempengaruhi jalannya robot, sebagai contoh motor yang digunakan dalam line follower ini menggunakan motor DC dengan tegangan maksimal 7V dc, Gambar 1.1 motor DC Dari data sheet motor DC tersebut barulah kita dapat merancang sebuah robot yang kita inginkan dengan besar kecil ukuran yang kita inginkan, sebagai contoh dalam merancang design robot ini menggunakan software auto cad,

Transcript of Materi Workshop

Page 1: Materi Workshop

1

BAB I

PERANCANGAN ROBOT

1.1 Mekanik Robot

Dalam merancang sebuah robot line follower yang harus di perhatikan

yaitu ukuran dari motor yang kita gunakan, besar kecilnya rangkaian yang kita

buat, dan juga titik keseimbangan yang dapat mempengaruhi jalannya robot,

sebagai contoh motor yang digunakan dalam line follower ini menggunakan

motor DC dengan tegangan maksimal 7V dc,

Gambar 1.1 motor DC

Dari data sheet motor DC tersebut barulah kita dapat merancang sebuah

robot yang kita inginkan dengan besar kecil ukuran yang kita inginkan, sebagai

contoh dalam merancang design robot ini menggunakan software auto cad,

Page 2: Materi Workshop

2

Gambar 1.2 Base mekanik robot

Dari software tersebut hasilnya di print pada kertas dan kemudian

ditempelkan/ direkatkan pada sebuah base yang terbuat dari bahan yang kita

inginkan misalnya pada sebuh plat aluminium dengan ketebalan 1,5 mm yang

hanya berbentuk persegi empat, Dari gambar yang sudah di print tersebut barulah

kita bentuk sesuai ukuran dan tata letak lubang pada gambar tersebut dengan

menggunakan bor, menggunakan kikir dan gergaji untuk membentuk base

tersebut.

Dalam perancangan base atau design yang kita inginkan tidak harus

menggunakan software auto cad tetapi bisa menggunakan sketsa atau gambar

tangan sesuai dengan pikiran kita sendiri.

Page 3: Materi Workshop

3

1.2 Perancangan Elektronik

Mikrokontroler yang digunakan pada rangkain ini menggunakan ATmega 8, yang

didalamnya memiliki beberapa fitur yang tersedia seperti:

- Frekuensi clock maksimum 16 MHz

- Jalur I/O 23 buah,yang terdiri dalam PORTB, PORTC dan PORTD

- Analog to Digital Converter 10 bit sebanyak 6 input

- Dan sebagainya

Konfigurasi Pin Atmega 8 tampak pada gambar berikut :

Gambar 1.3 Konfigurasi Pin ATmega8

Dalam merancang sebuah layout PCB kita bisa menggunakan beberapa

software PCB design seperti protel, eagle, PCB designer dan banyak lagi jenis-

jenis software yang dengan mudah dapat kita cari di internet, dalam merancang

sebuah rangkain elektronika tidak hanya dengan software tetapi dengan gambar

tanganpun bisa kita membuatnya tetapi tergantung dari kesulitan rangkain

elektronika tersebut.

Page 4: Materi Workshop

4

Dalam merancang rangkain yang terdapat pada robot ini software eagle,

rangkain robot ini terdiri dari rangkain minimum system, comparator, driver

motor dan rangkain sensor cahaya.

Page 5: Materi Workshop

5

Page 6: Materi Workshop

6

Page 7: Materi Workshop

7

Dari rangkaian yang terpisah tersebut dapat juga kita satukan menjadi satu

buah PCB yang lengkap mulai dari rangkaian minimum system, komparator,

driver motor dan juga sensor line (sensor warna) seperti pada gambar dibawah ini

Page 8: Materi Workshop

8

Dari gambar rangkaian tersebut barulah kita mendapatkan gambar layout PCB nya

Apabila sudah mendapatkan gambar layout PCB, cara menempelkan atau

mencetaknya ke papan PCB dapat menggunakan beberapa cara seperti :

- Mengeprinkan gambar layout PCB pada kertas biasa setelah itu

memfotokopikannya pada plastic OHP dan di setrika sampai tinta foto

kopi tersebut menempel pda PCB.

- Dengan cara menyablonkan layout PCB ke papan PCB.

Page 9: Materi Workshop

9

BAB II

PEMROGRAMAN

2.1 Pengenalan CodeVision

CodeVisionAVR C Compiler adalah software yang digunakan untuk membuat

program mikrokontroler AVR dalam bahasa C. Program tersebut kemudian

diterjemahkan oleh CodeVisionAVR C menjadi kode heksadesimal yang akan

didownload ke dalam chip mikrokontroler AVR.

Berikut adalah langkah-langkah dalam membuat program menggunakan

CodeVisionAVR C :

2.1.1 Memulai Project

1. Start menu, Program File dan pilih CodeVisionAVR C Compiler

2. Klik Yes untuk menggunakan CodeWizardAVR

3. Pada CodeWizardAVR pilih menu Chip dan pilih menu pilihan ATmega8 serta

pilih frekuensi Clock sebesar 12 MHz.

• Pada CodeWizardAVR kita bisa melakukan setting terhadap fitur-fitur yang

disediakan seperti Timer, USART, ADC dan yang lainnya.

Page 10: Materi Workshop

10

• File yang dihasilkan dari setting CodeWizardAVR ini akan dimasukkan

(included) ke source program secara otomatis.

• Dengan CodeWizzardAVR pekerjaan programmer menjadi lebih mudah karena

tidak perlu membuat sendiri program untuk mengaktifkan fitur-fitur AVR.

4. Setelah selesai melakukan setting maka klik menu File->Generate, Save and

Exit.

Page 11: Materi Workshop

11

5. Simpan dengan nama file sesuai keinginan anda.

6. Selanjutnya anda bisa membuat program pada editor yang sudah disediakan.

2.1.2 Setting Programmer

Setelah selesai membuat program, anda harus melakukan setting programmer

untuk memilih

jenis AVR Chip Programmer yang anda gunakan untuk mendownload program ke

mikrokontroler. Ikuti langkah- langkah berikut :

1. Hubungkan programmer dengan komputer dan pastikan koneksinya sudah

benar.

2. Pastikan mikrokontroler sudah terpasang dengan benar.

3. Nyalakan power supply pada programmer anda.

Page 12: Materi Workshop

12

4. Klik menu Settings->Programmer kemudian pilih jenis chip programmer

yang anda gunakan. Pastikan juga setting port komputer sudah benar sesuai

dengan koneksi antara komputer dan programmer.

2.1.3 Mengkompilasi Project

Untuk menghasilkan file hex yang nantinya akan didownload ke mikrokontroler,

maka sebelumnya anda harus mengkompilasi project yang anda buat.

Hal ini dimaksudkan untuk mengetahui apakah program yang anda buat sudah

benar sesuai syntax bahasa C atau belum. Berikut adalah langkah- langkahnya :

1. Klik menu Project->Configure, kemudian pilih Program the Chip.

Perhatian ! Pastikan Chip Programming Options pada pilihan No Protection.

Jangan mengubah setting yang lain jika anda belum paham benar fungsi setting

tersebut. Setelah selesai klik OK.

2. Klik menu Project->Make untuk mengkompilasi program.

Jika program anda sudah benar, maka klik Program untuk memulai proses

download ke mikrokontroler. Namun jika masih terdapat kesalahan pada program,

anda harus

memperbaikinya terlebih dahulu.

Page 13: Materi Workshop

13

3. Tunggu hingga proses download selesai.

2.2 Aplikasi Input Output

2.2.1 Aplikasi LED ON/OFF

Pada aplikasi ini, kita akan membuat program untuk menampilkan data 0xFF ke

PortB selama 1 detik, kemudian data pada PortB tersebut berubah menjadi 0x00

selama 1 detik berikutnya. Demikian siklus berulang-ulang. Agar mudah dilihat,

maka PortB dihubungkan ke LED.

Page 14: Materi Workshop

14

Gambar 2.1 Rangkaian LED

1. Pada CodeWizard, lakukan setting mode PortB sebagai output dengan

memilih bit data direction.

PB0/ICP14

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

PC6/RESET1

PB6/XTAL1/TOSC19

PB7/XTAL2/TOSC210

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/XCK/T06

PD5/T111

PD6/AIN012

PD7/AIN113

AVCC20

AREF21

U1

ATMEGA8

Page 15: Materi Workshop

15

2. Pada teks editor, buatlah program sebagai berikut :

#include <mega8.h>

#include <delay.h>

void main(void)

{

.

.

.

while (1)

{

// Place your code here

PORTB=0xFF; //Keluarkan data 0xFF ke PORTB

delay_ms(1000); //Delay 1S

PORTB=0x00; //Keluarkan 0x00 ke PORTB

delay_ms(1000); //Delay 1S

};

}

3. Compile, download dan perhatikan apa yang terjadi pada PortB.

2.2.2 Aplikasi Data Increment

Masih menggunakan rangkaian LED seperti pada aplikasi LED ON/OFF, kita

akan membuat program untuk menampilkan data pada PortB yang naik satu

persatu (increment) mulai dari 0x00 sampai 0xFF dengan interval 1 detik

1. Pada CodeWizard, lakukan setting mode PortB sebagai output.

2. Pada teks editor, buatlah program sebagai berikut :

#include <mega8.h>

#include <delay.h>

void main(void)

{

.

.

.

while (1)

{

Page 16: Materi Workshop

16

// Place your code here

unsigned char x; //Mendefinisikan variable x

x++; //x=x+1

PORTA=x; //Keluarkan x ke PORTA

delay_ms(1000); //Delay 1S};

};

}

3 Compile, download dan perhatikan apa yang terjadi pada PortB.

2.2.3 Aplikasi Membaca Data PortB

Pada aplikasi ini, kita akan membuat program untuk membaca data dari PortB dan

menampilkan data tersebut ke PortA Empat buah push button switch dipasang

pada PortD.0 sampai PortD.3 dan delapan LED dipasang pada PortB seperti

tampak pada gambar berikut

PB0/ICP14

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

PC6/RESET1

PB6/XTAL1/TOSC19

PB7/XTAL2/TOSC210

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/XCK/T06

PD5/T111

PD6/AIN012

PD7/AIN113

AVCC20

AREF21

U1

ATMEGA8

Gambar 2.2 Rangkaian Switch dan led

Page 17: Materi Workshop

17

1. Pada CodeWizard, lakukan setting mode PortB sebagai output dan PortD

sebagai input Pullup.

2. Pada teks editor, buatlah program sebagai berikut :

#include <mega8.h>

#include <delay.h>

void main(void)

{

.

.

.

while (1)

{

// Place your code here

PORTB=PIND;

Page 18: Materi Workshop

18

};

}

3. Compile, download dan perhatikan apa yang terjadi pada PortA jika switch

ditekan.

2.2.4 Aplikasi Membaca Data Per Bit Pada PinD

Masih menggunakan rangkaian LED seperti pada aplikasi Membaca Data PortB,

kita akan membuat program untuk membaca data dari PinD.0 dan PinD.1 Jika

PinB.0 berlogika 0 maka PortB.0 dan PortB.1 akan berlogika 0. Jika PinD.1

berlogika 0 maka data pada PortB adalah 0xFF.

1. Pada CodeWizard, lakukan setting mode PortB sebagai output dan PortD

sebagai input Pullup.

2. Pada teks editor, buatlah program sebagai berikut :

#include <mega8.h>

#include <delay.h>

void main(void)

{

.

.

.

while (1)

{

// Place your code here

if(PIND.0==0){PORTB.0=0;PORTB.1=0;}

if(PIND.1==0)PORTB=0xFF;

};

}

3. Compile, download dan perhatikan apa yang terjadi pada PortB jika switch

pada PortD.0 dan PortD.1 ditekan.

Page 19: Materi Workshop

19

3. Driver Motor DC

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.

Untuk menentukan arah pergerakan motor maka pada input L298 harus diberikan

kondisi sesuai dengan tabel berikut :

+8

8.8

+8

8.8

BAT112V

IN15

IN27

ENA6

OUT12

OUT23

ENB11

OUT313

OUT414

IN310

IN412

SENSA1

SENSB15

GND

8

VS

4

VCC

9 U3

L298

PB0/ICP14

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

PC6/RESET1

PB6/XTAL1/TOSC19

PB7/XTAL2/TOSC210

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/XCK/T06

PD5/T111

PD6/AIN012

PD7/AIN113

AVCC20

AREF21

U2

ATMEGA8

Page 20: Materi Workshop

20

3.1 Kendali Start/Stop

Pada aplikasi ini, kita akan membuat program untuk menggerakkan motor dc.

1. Pada CodeWizard, lakukan setting mode PortB sebagai output.

2. Pada teks editor, buatlah program sebagai berikut :

#include <mega8535.h>

#include <delay.h>

// Declare your global variables here

void main(void)

{

.

.

.

while (1)

{

// Place your code here

// Konfigurasi Bit Kendali Motor DC

//PB.7 PB.6 PB.5 PB.4 PB.3 PB.2 PB.1 PB.0

// NC NC 2A2 2A1 1A2 2EN 1EN 1A1

PORTB=0b00000011; // Motor 1 run

delay_ms(3000);

PORTB=0b00000000; // Motor 1 stop

delay_ms(3000);

Page 21: Materi Workshop

21

PORTB=0b00010100; // Motor 2 run

delay_ms(3000);

PORTB=0b00000000; // Motor 2 stop

delay_ms(3000);

};

}

3. Compile, download dan perhatikan apa yang terjadi pada motor dc.

3.2 Kendali Arah Putaran

Pada aplikasi ini, kita akan membuat program untuk menggerakkan motor dc

berputar CW dan CCW.

1. Pada CodeWizard, lakukan setting mode PortC sebagai output.

2. Pada teks editor, buatlah program sebagai berikut :

#include <mega8535.h>

#include <delay.h>

// Declare your global variables here

void main(void)

{

.

.

.

while (1)

{

// Place your code here

// Konfigurasi Bit Kendali Motor DC

//PB.7 PB.6 PB.5 PB.4 PB.3 PB.2 PB.1 PB.0

// NC NC 2A2 2A1 1A2 2EN 1EN 1A1

PORTB=0b00000011; // Motor 1 run CW

delay_ms(3500);

PORTB=0b00000000; // Motor 1 stop

delay_ms(3500);

PORTB=0b00001010; // Motor 1 run CCW

delay_ms(3500);

PORTB=0b00001011; // Motor 1 fast stop

delay_ms(3500);

PORTB=0b00010100; // Motor 2 run CW

Page 22: Materi Workshop

22

delay_ms(3500);

PORTB=0b00000000; // Motor 2 stop

delay_ms(3500);

PORTB=0b00100100; // Motor 2 run CCW

delay_ms(3500);

PORTB=0b00110100; // Motor 2 fast stop

delay_ms(3500);

};

}

3. Compile, download dan perhatikan apa yang terjadi pada motor dc.

3.3 PWM

Pulse Width Modulation (PWM) adalah sebuah cara memanipulasi lebar dari

pulsa dalam perioda yang konstan untuk mendapatkan tegangan rata-rata yang

berbeda.

Pada gambar diatas menunjukkan tiga sinyal PWM yang berbeda. Sinyal yang

paling atas menunjukkan sinyal PWM dengan duty cycle 10%. Artinya sinyal on

selama 20% dari perioda sinyal dan off selama 80 % sisanya. Gambar yang

lainnya menunjukkan sinyal dengan duty cycle 50% dan 90%. Ketiga sinyal

PWM tersebut akan menghasilkan sinyal analog yang berbeda. Sebagai contoh

jika supply tegangan sebesar 9V dan duty cycle 20%, maka menghasilkan 1,8V.

Page 23: Materi Workshop

23

3.3 Kendali Kecepatan Motor DC

Pada aplikasi ini, kita akan membuat program untuk mengendalikan kecepatan

motor dc dengan metode Pulse Width Modulation (PWM).

1. Pada CodeWizard, lakukan setting sebagai berikut :

• PortB sebagai Output

• Timer 1:

Clock Source : System Clock

Clock Value : 11.719 kHz

Mode : Ph. correct PWM top=00FFh

Out A : Non-Inv

Out B : Non-Inv

Page 24: Materi Workshop

24

4. Pada teks editor, buatlah program sebagai berikut :

#include <mega8.h>

#include <delay.h>

void maju(unsigned char speed_kanan,unsigned char

speed_kiri)

{

PORTB.4=1;

PORTB.3=0;

PORTB.0=1;

Page 25: Materi Workshop

25

PORTB.5=0;

OCR1A=speed_kanan;

OCR1B=speed_kiri;

}

void main(void)

{

.

.

.

while (1)

{

// Place your code here

// Konfigurasi Bit Kendali Motor DC

//PB.7 PB.6 PB.5 PB.4 PB.3 PB.2 PB.1 PB.0

// NC NC 2A2 2A1 1A2 2EN 1EN 1A1

maju(200,200);

delay_ms(3500);

maju(50,50);

delay_ms(3500);

maju(10,10);

delay_ms(3500);

};

}

Page 26: Materi Workshop

26

4. Prinsip Kerja Proximity Sensor

Sensor proximity bisa kita buat sendiri. Prinsip kerjanya sederhana, hanya

memanfaatkan sifat cahaya yang akan dipantulkan jika mengenai benda berwarna

terang dan akan diserap jika mengenai benda berwarna gelap. Sebagai sumber

cahaya kita gunakan LED (Light Emiting Diode) yang akan memancarkan cahaya

merah. Dan untuk menangkap pantulan cahaya LED, kita gunakan photodiode.

Jika sensor berada diatas garis hitam maka photodioda akan menerima sedikit

sekali cahaya pantulan. Tetapi jika sensor berada diatas garis putih maka

photodioda akan menerima banyak cahaya pantulan. Berikut adalah ilustrasinya :

Sifat dari photodioda adalah jika semakin banyak cahaya yang diterima,

maka nilai resistansi diodanya semakin kecil. Dengan melakukan sedikit

modifikasi, maka besaran resistansi tersebut dapat diubah menjadi tegangan.

Sehingga jika sensor berada diatas garis hitam, maka tegangan keluaran sensor

akan kecil, demikian pula sebaliknya.

Agar dapat dibaca oleh mikrokontroler, maka tegangan sensor harus

disesuaikan dengan level tegangan TTL yaitu 0 – 1 volt untuk logika 0 dan 3 – 5

volt untuk logika 1. Hal ini bisa dilakukan dengan memasang operational

amplifier yang difungsikan sebagai komparator. Output dari photodiode yang

masuk ke input inverting op-amp akan dibandingkan dengan tegangan tertentu

dari variable resistor VR. Tegangan dari VR inilah yang kita atur agar sensor

proximity dapat menyesuaikan dengan kondisi cahaya ruangan.