Anda di halaman 1dari 13

PRAKTIKUM MIKROKONTROLLER

MODUL 5
MOTOR DC


















Nama : Akhmad Aludi
NIM : 201110370311197






LABORATORIUM JARINGAN
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK
UNIVERSITAS MUHAMMADIYAH MALANG
2014
3.1 TUJUAN
1. Memahami pengendalian starting dan stopping DC motor.

3.2 KOMPONEN YANG DIGUNAKAN
1. Modul Mikrokontroller.
2. Motor DC.
3. Driver Motor L298.
4. Oscilloscope.

3.3 GAMBAR RANGKAIAN

Gambar 4.1 Rangkaian Motor DC

Motor DC adalah suatu motor penggerak yang dikemudikan oleh arus searah (DC). Motor jenis ini
dapat dibedakan menjadi 4 macam :
a. MOTOR DC SERI

Kumparan eksitasi dan jangkarnya dihubungkan secara seri. Motor ini memiliki torsi awal yang besar.
b. MOTOR DC SHUNT

Kumparan eksitasi dan jangkarnya dihubungkan secara pararel (shunt). Motor ini digunakan untuk
kecepatan konstan dan berubah-ubah.
c. MOTOR DC PENGUAT TERPISAH
d. MOTOR DC PERMANEN MAGNET

Medan magnet stator-nya dihasilkan oleh inti besi magnet permanen. Karena inti ini mempunyai medan
magnet yang permanen, kurva yang menyatakan hubungan torsi atau kecepatan adalah berbanding
terbalik.
Pada pengontrolan motor DC dapat digunakan resistor variable, auto transformator, transistor dan lain-
lain. Tetapi cara-cara ini digunakan pada motor DC dengan daya yang relatif besar. Ada 2 cara lain yang
saat ini sudah sering digunakan, antara lain :
a. Pulse Width Modulation

Cara ini menggunakan frekuensi yang konstan. Daya DC diberikan ke motor dengan pengaturan waktu
switching ON / OFF (lebar pulsa) berubah-ubah untuk mendapatkan tegangan rata-rata yang dapat
diatur.
b. Pulse Frequency Modulation

Cara ini menggunakan lebar pulsa yang konstan. Tegangan rata-rata yang diberikan dipengaruhi oleh
frekuensi switching ON / OFF.

Gambar 5.1 Tipe Switching PWM dan PPM


3.4 PROSEDUR PELAKSANAAN
Program 1 Menjalankan Motor DC
Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut :
1. Ketik code berikut ini di CodeVisionAVR :



2. Setelah selesai, build project melalui menu Project >Build The Project untuk menghasilkan
file.hex yang akan dimasukkan ke dalam rangkaian di Proteus.
3. Lakukan pengamatan pada Motor DC.
Program 2 Mengontrol Motor DC dengan PWM
Untuk melakukan percobaan ini lakukan beberapa langkah sebagai berikut :
1. Ketik code berikut ini di CodeVisionAVR :



2. Setelah selesai, build project melalui menu Project >Build The Project untuk menghasilkan
file.hex yang akan dimasukkan ke dalam rangkaian di Proteus.
3. Lakukan modifikasi pada program tersebut sesuai tabel berikut ini :
Motor Relay PWM
1 0 90
0 1 50
1 1 60
1 0 100
1 0 0
0 1 100
0 0 0


3.5 TUGAS PRAKTIKUM
1. Buatlah motor berputar searah jarum jam selama 5 detik dan berhenti selama 3 detik dan
kembali berputar.
2. Buatlah flowchart untuk program-program di atas.

Penyelesaian :
Tugas 1
Motor Berputar 5 detik, berhenti 3 detik dan berputar lagi 5 detik
#include <mega32.h>
#include <delay.h>
//===========motor========================
#define motor PORTD.0
#define relay PORTD.1
#define enable PORTD.4

// timer 0 overflow interrupt service routine
unsigned char Counter_PWM,pwm;
interrupt [TIM0_OVF] void timer0_ovf_isr (void)
{
if(Counter_PWM >= 100)
Counter_PWM=0;
if(Counter_PWM >= pwm)
enable=0;
else
enable=1;
Counter_PWM++;
}

void main(void)
{
DDRD=0xFF;

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

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

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

// Analog Comparator initialization
// Analog Comparator: off
// Analog Comparator Input Capture by Timer/Counter 1: off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")

while (1)
{
// place your code here
motor=1; relay=0;
pwm=50;
delay_ms (500);

motor=0; relay=0;
pwm=50;
delay_ms (300);
};
}









Screen Shoot

Flow Chart
Start
Inisialisasi Port
Motor, delay dan
riley
Proses Input Motor,
relay, delay
Output motor
berputar 5 detik,
dan berhenti 3
detik
FINISH




Tugas 2
Saklar di pencet yang atas, motor berputar searah jarum jam. Sedangkan bila di pencet saklar
bawah, maka motor berputar berlawanan arah jarum jam.
#include <mega32.h>
#include <delay.h>
//===========motor========================
#define motor PORTD.0
#define relay PORTD.1
#define enable PORTD.4
#define saklar1 PINA.0
#define saklar2 PINA.1

// timer 0 overflow interrupt service routine
unsigned char Counter_PWM,pwm;
interrupt [TIM0_OVF] void timer0_ovf_isr (void)
{
if(Counter_PWM >= 100)
Counter_PWM=0;
if(Counter_PWM >= pwm)
enable=0;
else
enable=1;
Counter_PWM++;
}

void jalan ()
{
motor=1; relay=0;
pwm=50;
//delay_ms(500);
}

void jalan2 ()
{
motor=0; relay=1;
pwm=50;
//delay_ms(300);
}

void main(void)
{
DDRD=0xFF;

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

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

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

// Analog Comparator initialization
// Analog Comparator: off
// Analog Comparator Input Capture by Timer/Counter 1: off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")

while (1)
{
// place your code here

if(saklar1==0 && saklar2==1)
{
jalan();
}

else if(saklar1==1 && saklar2==0)
{
jalan2();
}
};
}

Screen Shoot



Tugas 3
Bila saklar atas di pencet, maka motor yg atas yang berputar. Dan bila saklar bawah yang di pencet,
maka motor bawah yang berputar
#include <mega32.h>
#include <delay.h>
//===========motor========================
#define motor PORTD.0
#define relay PORTD.1
#define motor2 PORTD.2
#define relay2 PORTD.3
#define enable PORTD.4
#define saklar1 PINA.0
#define saklar2 PINA.1

// timer 0 overflow interrupt service routine
unsigned char Counter_PWM,pwm;
interrupt [TIM0_OVF] void timer0_ovf_isr (void)
{
if(Counter_PWM >= 100)
Counter_PWM=0;
if(Counter_PWM >= pwm)
enable=0;
else
enable=1;
Counter_PWM++;
}

void jalan ()
{
motor=1; relay=0;
pwm=50;
//delay_ms(500);
}

void jalan2 ()
{
motor2=1; relay2=0;
pwm=50;
//delay_ms(500);
}

void diam ()
{
motor=0; relay2=0;
pwm=50;
}

void diam2 ()
{
motor2=0; relay2=0;
pwm=50;
}

void main(void)
{
DDRD=0xFF;

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

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

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

// Analog Comparator initialization
// Analog Comparator: off
// Analog Comparator Input Capture by Timer/Counter 1: off
ACSR=0x80;
SFIOR=0x00;

// Global enable interrupts
#asm("sei")

while (1)
{
// place your code here

if(saklar1==0 && saklar2==1)
{
diam2();
jalan();
}

else if(saklar2==0 && saklar1==1)
{
diam();
jalan2();
}
};
}

Screen Shoot

Anda mungkin juga menyukai