Sie sind auf Seite 1von 25

1

TUGAS MATAKULIAH APLIKASI KOMPUTER DALAM


SISTEM TENAGA LISTRIK
FINAL REPORT :
Pengendalian Motor DC menggunakan Komputer

disusun oleh :
MERIZKY ALFAN ADHI
HIDAYAT AZZA LAZUARDI
JAFAR JUNAIDI

31780
31924
32032


JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK UNIVERSITAS GADJAH MADA
YOGYAKARTA
2010


2

I. LATAR BELAKANG
Di dalam industri, sering dijumpai peralatan peralatan yang berat dan berbahaya
bagi manusia. Untuk itu diperlukan alat untuk mengendalikan peralatan tersebut dari jarak
jauh sebagai pertimbangan keselamatan kerja karyawan.
Salah satu jenis penggerak peralatan berat yang sering digunakan adalah motor DC.
Salah satu contohnya berfungsi menggerakkan alat pengangkut seperti conveyor untuk
mengangkut bahan bahan industri yang berbentuk padat.
Proses pengendalian alat alat berat akan lebih aman apabila dilakukan dari jarak
jauh. Oleh karena itu, perlu adanya suatu alat yang mampu mengatur pergerakan alat alat
berat melalui motor DC dari jarak tertentu. Pada penelitian kali ini dibuat sebuah prototype
alat pengendali motor dc jarak jauh menggunakan komputer.

II. TUJUAN
- Mendesain sebuah interface yang mampu mengkomunikasikan motor DC
dengan manusia dalam jarak tertentu secara mudah.
- Mendesain sebuah sistem pengendali motor DC yang mengintegrasikan
peralatan elektronik dengan komputer sehingga memudahkan untuk sistem monitoring dan
pengendalian.

III. METODE KERJA
Secara umum dan sederhana sistem ini terdiri dari perangkat berikut :
Komputer Komunikasi SerialSistem Mikrokontroler Driver Motor
Motor DC



3

Perangkat PC akan dihubungkan dengan Sistem mikrokontroler melalui komunikasi
serial RS232. Komunikasi ini memungkinkan perangkat PC untuk melakukan perintah
tertentu terhadap mikrokontroler dan menerima output perintah dari mikroprosesor.
Dengan bahasa lain output dari komputer akan menjadi input dari mikrokontroler.
Kemudian input tersebut akan diproses sesuai dengan program yang sudah dimasukkan
pada mikrokontroler tersebut. Output dari mikrokontroler selain di tampilkan pada layar
computer juga digunakan untuk mengatur driver motor DC yang berfungsi sebagai kontrol
kecepatan maupun arah gerak dari motor DC.

IV. PERANCANGAN
a. Hyper-Terminal
Agar komputer dapat berkomunikasi dengan mikrokontroler melalui komunikasi
serial RS 232, digunakan hyper terminal. Biasanya fasilitas ini sudah tersedia pada
komputer dengan sistem operasi windows XP. Untuk menggunakan fasilitas ini dilakukan
dengan langkah langkah sebagai berikut.
Start Programs Accessories Communications HyperTerminal
Kemudian akan muncul jendela sebagai berikut.



Lalu setting pada hyper terminal disesuaikan dengan setting pada sistem
mikrokontroler, yaitu dengan menyesuaikan setting bits per second, data bits, stop bits,
dan flow control.

4



Dan jendela komunikasi antara pengguna dengan mikrokontroler ditampilkan pada
jendela berikut.










b. Komunikasi serial RS 232
Bagian ini difungsikan untuk komunikasi antara sistem mikrokontroler dengan
personal computer lewat saluran serial pada CPU PC. Untuk dapat berkomunikasi
digunakan IC pendukung yang juga sebagai penghubung, yakni MAX232. MAX232 ini
5

terhubung dengan bagian Tx/Rx mikrokontroler ATMega8535. Rangkaian yang digunakan
serta kabel serial RS 232 seperti tampak pada gambar berikut.










Gambar : Rangkaian IC serial MAX232


c. Pemrograman Mikrokontroler
Program yang akan dibuat adalah sebuah program dimana mikrokontroler dapat
melakukan komunikasi dengan komputer yaitu saling mengirim dan menerima data. Data
yang diterima mikrokontroler dari komputer akan digunakan sebagai instruksi untuk
melakukan pengendalian kecepatan motor. Adapun konfigurasi tombol yang diinginkan
untuk mengatur kecepatan motor dc adalah sebagai berikut:
konfigurasi tombol
to
mbol perintah
1 motor berhenti
2 PWM motor 50
3 PWM motor 100
4 PWM motor 150
5 PWM motor 200
6 PWM motor 250
7 PWM motor - 10
8 PWM motor + 10
9 PWM motor - 1
0 PWM motor + 1
- arah putar motor kiri
= arah putar motor kanan

Perlu diketahui bahwa jika kita mengirim data dari komputer ke mikrokontroler
melalui keyboard maka data yang diterima mikrokontroler akan berupa kode ASCII dari
6

tombol yang bersangkutan. Misal jika menekan tombol 1 maka data yang diterima
mikrokontroler adalah biner 01010001 atau hexadecimal 31 dan seterusnya yang dapat
dilihat di table ASCII.
Kemudian untuk mengendalikan kecepatan motor digunakan pwm dimana pada
mikrokontroler dapat dibangkitkan pulsa pwm melalui fitur timer/counter. Dalam
ATMega8535 sendiri terdapat 3 buah timer yaitu timer0, timer1, dan timer2. Namun pada
pembuatan alat ini hanya digunakan timer1 tepatnya ocr1a yang terdapat pada pin D.5.
Untuk lebih jelasnya table ASCII dan penjelasan listing program lengkap dapat dilihat
di lampiran.

d. Perangkat Keras Lainnya
Sistem minimal ATMega 8535












Gambar : Rangkaian system minimal ATMega8535

Konfigurasi pin pada ATMega8535
Berikut keterangan untuk tiap pin-pin yang ada dalam ATMega8535:
1. Power, VCC dan GND (Ground)
2. PORTA (PORTA
0-7
), merupakan IO dua arah dan berfungsi khusus sebagai
pin masukan ADC.
7

3. PORTB (PORTB
0-7
), merupakan pin IO dua arah dan fungsi khusus sebagai
pin Timer/Counter, komparator analog dan SPI.
4. PORTC (PORTC
0-7
), merupakan pin IO dua arah dan fungsi khusus.
5. PORTD (PORTD
0-7
), merupakan pin IO dua arah dan fungsi khusus.
6. RESET adalah pin untuk me-reset mikrokontroler.
7. XTAL1 dan XTAL2 adalah pin untuk eksternal clock.
8. AVCC adalah pin masukan untuk tegangan ADC.
9. AREF adalah pin masukan untuk tegangan referensi eksternal ADC.
Pada perancangan alat ini digunakan beberapa Pin sebagai input dan output yaitu:
Pin D0 : digunakan untuk komunikasi serial sebagai penerima atau output ke
komputer
Pin D1 : digunakan untuk komunikasi serial sebagai pengirim atau input dari
komputer
Pin D5 : digunakan sebagai pengatur PWM
Pin D6,D7 : digunakan sebagai pengatur arah dari mototr DC melalui driver motor.

e. Driver motor DC
Driver motor sangat dibutuhkan karena keluaran yang dihasilkan mikroprosesor
belum mampu untuk menggerakkan kedua motor yang ada. Tegangan keluaran
mikroprosesor adalah sebesar 5V dan tegangan ini tidak cukup untuk memutar motor.
Driver motor akan membuat tegangan tersebut sesuai dengan yang dibutuhkan oleh motor
DC dalam prototype ini digunakan tegangan sebesar 9 V.
Driver motor menggunakan IC L293D yang mampu mengatur dua motor namun
dalam alat ini hanya digunakan untuk satu motor. untuk menyesuaikan. IC L293D
membutuhkan 2 Vcc yaitu Vcc1 dan Vcc 2 . Vcc 1 berfungsi sebagai supply tegangan
untuk mengaktifkan IC sedangkan Vcc 2 digunakan untuk supply motor. Pada prototype
ini regulator Vcc2 menggunakan IC7809 yang mengubah tegangan sumber 12V menjadi
senilai 9V, sedangkan regulator Vcc1 menggunakan IC 7805 yang mengubah 12 V
menjadi 5V.
Berikut konfigurasi pin IC L293D yang digunakan sebagai driver motor:




8




Vcc1 sebesar 5V
Vcc2 merupakan tegangan yang akan digunakan untuk memutar motor dalam
hal ini digunakan 9V
A merupakan input dari mikro
Y merupakan Output ke motor
Input 1A dan 2A akan keluar pada port 1Y dan 2Y, port ini terhubung dengan motor
kiri karena B5 dan B7 mengatur maju dan mundur motor kiri. Input 3A dan 4A akan
keluar pada port 3Y dan 4Y yang terhubung langsung dengan motor kanan dan terhubung
dengan port B4 dan B6. Atau secara umum pin-pin ini digunakan untuk mengatur arah
putaran motor apakah maju atau mundur.
1,2 EN dan 3,4 EN merupakan masukan PWM
- D4 tersambung dengan 3,4 EN
- D5 tersambung dengan 1,2 EN
Tegangan pada Pin ini bervariasi dari 0 sampai 9 volt. Tergantung pengaturan PWM.
Jika di set maksimum maka tegangan yang keluar pada pin output adalah 9 volt sehingga
motor berputar maksimum dan sebaliknya. Sehingga dikatakan bahwa PWM digunakan
untuk mengatur kecepatan.




f. Metode PWM
Metode Pulse Width Modulation (PWM) adalah metode yang cukup efektif untuk
mengendalikan kecepatan motor DC. PWM ini bekerja dengan cara membuat gelombang
persegi yang memiliki perbandingan pulsa high terhadap pulsa low yang telah tertentu,
biasanya diskalakan dari 0 hingga 100%. Gelombang persegi ini memiliki frekuensi tetap,
namun lebar pulsa high dan low dalam 1 periode yang akan diatur. Perbandingan pulsa
high terhadap low ini akan menentukan jumlah daya yang diberikan ke motor DC.
9



V. HASIL PENGUJIAN
Pertama rangkaian mikrokontroller, RS232, driver motor, motor dc, dan catu daya
dihubungkan satu sama lain menjadi:


Kemudian setelah dihubungkan ke komputer lalu membuka hyper-terminal
dengan seeting seperti telah dijelaskan di atas. Setelah jendela hyper-terminal
dibuka akan muncul tampilan awal seperti:
10


Sesuai dengan program yang dibuat, maka untuk memulai tekan tombol space.
Ketika tombol space ditekan akan muncul tampilan seperti:

Dari tampilan terlihat bahwa keadaan motor masih diam dengan arah putar motor
searah jarum jam.
11


Kemudian jika ditekan tombol-tombol untuk menggerakkan motor tampilan pada
hyper-terminal akan terus meng-update posisi PWM dan arah putar motor.

Dan pada kondisi ini motor sudah berputar sesuai dengan pwm dan arah putar
motor yang kita tentukan.
12


Kemudian jika telah selesai tekan tombol k maka motor akan berhenti dan
konfigurasi tombol-tombol sudah tidak berfungsi dan akan muncul tampilan:

VI. KESIMPULAN

1. Alat yang dibuat dapat bekerja sesuai dengan yang diharapkan. Komputer dan
sistem mikrokontroler telah dapat saling mengirim dan menerima data.
13

2. Melalui komputer sistem pengendali motor DC dapat mengubah kecepatan
serta arah putar motor DC dan memberikan informasi mengenai keadaan
PWM kecepatannya saat itu.
3. Informasi yang terpantau oleh pengguna adalah keadaan PWM kecepatannya
saat itu. Namun, sistem ini dapat dikembangkan lagi agar dapat memantau
kecepatan rpm motor DC.



14

VII. LAMPIRAN

Tabel ASCII













15

Listing Program mikrokontroller :

#include <mega8535.h>//menggunakan mikrokontroler ATMega8535
#include <delay.h>//Menyertakan fungsi delay
#include <stdio.h>//menyertakan library standar stdio.h (printf,scanf,dll)

//Mendefinisikan konstanta
#define maju 0b01110111
#define mundur 0b10111011
#define pwm_motor OCR1A

//Deklarasi variabel-variabel
unsigned char eeprom ee_arah=maju;
unsigned char eeprom ee_data=0x30;
unsigned int eeprom ee_pwm=0;
unsigned char eeprom ee_putar=0x3E;
unsigned char a,b,c,status;

void intro(void) //Fungsi untuk tampilan awal
{
putchar(13);
printf("\n");
printf("Program kendali kecepatan dan arah putaran motor DC sederhana dengan cara mengubah
PWM");
putchar(13);
printf("\n");
printf("\n");
printf(" Dibuat oleh : Merizky Alfan Adhi / 31780");
putchar(13);
printf("\n");
printf(" Hidayat Azza Lazuardi / 31924");
putchar(13);
printf("\n");
printf(" Ja'far Junaidi / 32032");
putchar(13);
printf("\n");
printf("\n");
printf(" Untuk mulai mengendalikan motor tekan tombol space");
putchar(13);
printf("\n");
printf("\n");
printf(" Untuk Selesai tekan tombol k (KELUAR)");
}



16

//Fungsi tampilan menu
void muncul(void)
{
putchar(13);
printf("\n");
printf("\n");
printf("program kendali motor,, ");
printf("masukkan PWM motor yg diinginkan :");
putchar(13);
printf("\n");
printf("\n");
printf("tombol 1: motor berhenti");
putchar(13);
printf("\n");
printf("tombol 2: PWM motor 50");
putchar(13);
printf("\n");
printf("tombol 3: PWM motor 100");
putchar(13);
printf("\n");
printf("tombol 4: PWM motor 150");
putchar(13);
printf("\n");
printf("tombol 5: PWM motor 200");
putchar(13);
printf("\n");
printf("tombol 6: PWM motor 250");
putchar(13);
printf("\n");
printf("tombol 7: PWM motor -10");
putchar(13);
printf("\n");
printf("tombol 8: PWM motor +10");
putchar(13);
printf("\n");
printf("tombol 9: PWM motor -1");
putchar(13);
printf("\n");
printf("tombol 0: PWM motor +1");
putchar(13);
printf("\n");
printf("tombol -: arah putar motor kiri");
putchar(13);
printf("\n");
printf("tombol =: arah putar motor kanan");
putchar(13);
17

printf("\n");
printf("\n");
printf("NB: -PWM maksimal 255");
putchar(13);
printf("\n");
printf("\n");
printf(" -untuk menampilkan kembali konfigurasi tombol tekan space");
putchar(13);
printf("\n");
printf("\n");
printf(" -Untuk Selesai tekan tombol k (KELUAR)");
putchar(13);
printf("\n");
}

//Fungsi tampilan penutup
void ending(void)
{
putchar(13);
printf("\n");
printf("................................Alhamdulillah..... Rampung.........................");
putchar(13);
printf("\n");
printf("\n");
printf(" - untuk mulai kembali tekan tombol b (BACK)");
putchar(13);
printf("\n");
printf(" - untuk selesai tidak perlu menekan apa-apa, selanjutnya terserah anda....");
putchar(13);
printf("\n");
printf("\n");
printf(".......................................matur nuwun.................................");
putchar(13);
printf("\n");
}

void main(void)//Fungsi Utama
{
//Inisialisasi PORTD sebagai output
PORTD=0x00;
DDRD=0xFC;

//Inisialisasi OC1A (pembangkit pulsa PWM)
TCCR1A=0xA1;
TCCR1B=0x03;

18





// Inisialisasi komunikasi serial
// dengan parameter 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600 (Double Speed Mode)
UCSRA=0x02;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x67;

intro();
motor_kiri=0;
a=0;
b=0;
status=0x31;

while(1)
{

while (UCSRA.7) //apakah ada data baru yang belum dibaca
{
ee_data=UDR;//perubahan input dari keyboard disimpan di ee_data
}

if (ee_data==0x31 && a==1 && status!=ee_data)//saat tombol 1 ditekan
{
pwm_motor=0;
PORTD=ee_arah;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x31;
}
19


if (ee_data==0x32 && a==1 && status!=ee_data) //saat tombol 2 ditekan
{
pwm_motor=50;
PORTD=ee_arah;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x32;
}

if (ee_data==0x33 && a==1 && status!=ee_data) //saat tombol 3 ditekan
{
pwm_motor=100;
PORTD=ee_arah;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x33;
}

if (ee_data==0x34 && a==1 && status!=ee_data) //saat tombol 4 ditekan
{
pwm_motor=150;
PORTD=ee_arah;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
20

printf("\n");
ee_data=0x70;
status=0x34;
}

if (ee_data==0x35 && a==1 && status!=ee_data) //saat tombol 5 ditekan
{
pwm_motor=200;
PORTD=ee_arah;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x35;
}

if (ee_data==0x36 && a==1 && status!=ee_data) //saat tombol 6 ditekan
{
pwm_motor=250;
PORTD=ee_arah;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x36;
}

if (ee_data==0x37 && a==1) //saat tombol 7 ditekan
{
if (pwm_motor>=10)
{
pwm_motor=pwm_motor-10;
PORTD=ee_arah;
ee_pwm=pwm_motor;
21

putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x37;
c=1;
}
else if(c==1)
{
pwm_motor=0;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x37;
c=2;
}
}

if (ee_data==0x38 && a==1) //saat tombol 8 ditekan
{
if (pwm_motor<=245)
{
pwm_motor=pwm_motor+10;
PORTD=ee_arah;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
22

status=0x38;
c=1;
}
else if(c==1)
{
pwm_motor=255;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x38;
c=2;
}
}

if (ee_data==0x39 && a==1) //saat tombol 9 ditekan
{
if (pwm_motor!=0)
{
pwm_motor=pwm_motor-1;
PORTD=ee_arah;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x39;
c=1;
}
else if(c==1)
{
pwm_motor=0;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
23

printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x39;
c=2;
}
}

if (ee_data==0x30 && a==1) //saat tombol 0 ditekan
{
if (pwm_motor!=255)
{
pwm_motor=pwm_motor+1;
PORTD=ee_arah;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x30;
c=1;
}
else if(c==1)
{
pwm_motor=255;
ee_pwm=pwm_motor;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x30;
c=2;
24

}
}

if (ee_data==0x2D && a==1 && status!=ee_data) //saat tombol - ditekan
{
ee_arah=maju;
PORTD=ee_arah;
ee_putar=0x3C;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x2D;
}

if (ee_data==0x3D && a==1 && status!=ee_data) //saat tombol = ditekan
{
ee_arah=mundur;
PORTD=ee_arah;
ee_putar=0x3E;
putchar(13);
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
ee_data=0x70;
status=0x3D;
}

if (ee_data==0x20 && b==0) //saat tombol space ditekan
{
muncul();
putchar(13);
printf("\n");
printf("\n");
printf("PWM motor saat ini %d",ee_pwm);
putchar(13);
printf("\n");
25

printf("Arah Putaran Motor saat ini %c",ee_putar);
putchar(13);
printf("\n");
a=1;
ee_data=0x70;
}

if (ee_data==0x6B) //saat tombol k ditekan
{
pwm_motor=0;
ee_pwm=pwm_motor;
ending();
a=0;
b=1;
ee_data=0x70;
}

if (ee_data==0x62) //saat tombol b ditekan
{
intro();
a=0;
b=0;
ee_data=0x70;
}

};
}

Das könnte Ihnen auch gefallen