Materi Workshop
-
Upload
akbarsujiwa -
Category
Documents
-
view
98 -
download
3
Transcript of 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,
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.
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.
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.
5
6
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
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.
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.
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.
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.
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.
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.
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
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)
{
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
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;
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.
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
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);
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
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.
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
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;
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);
};
}
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.