PERCOBAAN 5
AVR MOTOR DC, SERVO DAN STEPPER
6.1 Tujuan
1. Memahami prinsip dan cara kerja Motor Stepper.
2. Mengetahui logika dan pengendalian putaran Motor Stepper
3. Memahami prinsip dan cara kerja Motor Servo.
4. Mengetahui logika dan pengendalian putaran Motor Servo.
5. Memahami logika dan pengendalian motor DC.
6. Mengetahui penggunaan timer dan PWM sebagai pengendali kecepatan
motor DC.
6.2 Dasar Teori
6.2.1 Timer
Timer merupakan sebuah hardware khusus yang disediakan oleh Atmel
untuk menghitung/mencacah suatu nilai tertentu hingga nilai maksimal yang
diatur saat melakukan flash source code ke dalam mikrokontroller. Ia dapat
bekerja parallel walau mikrokontroller sedang mengeksekusi suatu perintah.
Pada saat selesai berhitung, interrupt akan diaktifkan agar mikrokontroller
tahu dan beranjak untuk mengeksekusi perintah terkait timer tersebut.
6.2.1.1 Normal Overflow
Memilih mode ini dgn cara mengatur semua bit WGM (Waveform
Generation Mode) bit ke-1 = 0 dan WGM bit ke-0 = 0, pada register TCCR
(Timer/Counter Control Register).
Dalam mode normal ini timer mencacah hitungan ke atas (counting up)
hingga mencapai nilai top lalu akan terjadi overflow dan hitungan kembali ke
0x00. Hal ini menyebabkan flag TOV (Timer/Counter Overflow Flag) secara
otomatis menjadi set. Interupsi akan terjadi jika interupsi timer overflow
diaktifkan. Nilai inisialisasi awal TCNT dapat ditentukan oleh programmer.
6.2.2 PWM
Pulse Width Modulation (PWM) secara umum adalah sebuah cara
memanipulasi lebar sinyal yang dinyatakan dengan pulsa dalam suatu
perioda, untuk mendapatkan tegangan rata-rata yang berbeda. Beberapa
contoh aplikasi PWM adalah pemodulasian data untuk telekomunikasi,
pengontrolan daya atau tegangan yang masuk ke beban, regulator tegangan,
audio effect dan penguatan, serta aplikasi-aplikasi lainnya. Aplikasi PWM
berbasis mikrokontroler biasanya berupa pengendalian kecepatan motor DC,
pengendalian motor servo, pengaturan nyala terang LED dan lain sebagainya.
Sinyal PWM pada umumnya memiliki amplitudo dan frekuensi dasar yang
tetap, namun memiliki lebar pulsa yang bervariasi. Lebar Pulsa PWM
berbanding lurus dengan amplitudo sinyal asli yang belum termodulasi.
Artinya, Sinyal PWM memiliki frekuensi gelombang yang tetap namun duty
cycle bervariasi (antara 0% hingga 100%).
Pada mode non inverting PWM maka nilai pada pin output PWM yaitu
OC akan low jika TCNT sama dengan nilai OCR. Pin OC akan menjadi set
(high) kembali jika TCNT kembali lagi ke nilai 0x00 (TCNT==0x00).
Sedangkan mode inverting PWM merupakan kebalikan dari mode noninverting PWM. Pin OC akan high jika TCNT = OCR dan akan low jika
TCNT = 0x00.
Secara prinsip dasarnya mode ini sama dengan mode fast PWM. Yang
berbeda adalah operasi pencacahan pada mode phase correct PWM adalah
dual slope. TCNT akan mencacah dari nilai 0x00 hingga mencapai 0xFF.
Kemudian TCNT akan melakukan pencacahan kebawah (pengurangan) dari
nilai 0xFF menjadi nilai 0x00 lagi. Begitu seterusnya sehingga grafik yang
terbentuk adalah dual slope.
Pada mode inverting PWM output pada pin OC akan memiliki nilai high
jika TCNT sama dengan OCR pada waktu proses counting up. OC akan
bernilai low jika TCNT sama dengan OCR pada waktu counting down.
Sedangkan pada mode non-inverting PWM sebaliknya. Pin OC akan
memiliki nilai high jika TCNT sama dengan OCR pada waktu proses
counting down. OC akan bernilai low jika TCNT sama dengan OCR pada
waktu counting up.
Adapun nilai frekuensi pada mode Phase Correct PWM dapat dihitung
sesuai persamaan :
Metode On Off.
Menggunakan Variabel tegangan.
Menggunakan PWM (Pulse Width Modulation).
6.2.4 Motor Stepper
Motor Stepper adalah motor listrik sinkron yang mengubah data pulsa
digital ke rotasi mekanik dan 1 putaran penuhnya terbagi dalam banyak
langkah (step). Banyaknya rotasi yang dilakukan sebanding dengan pulsa
digital yang diberikan dan kecepatan putaran sebanding dengan frekuensi
pulsa digital tersebut. Motor stepper dapat diatur posisi sudutnya dengan teliti
tanpa perlu ada mekanime umpan balik (open-loop controller) selama motor
stepper tersebut dikendalikan dengan hati-hati.
Beberapa karakteristik motor stepper antara lain :
Motor stepper adalah perangkat dengan tenaga tetap (constant power
device).
Kecepatan motor stepper berbanding terbalik dengan torsi yang dihasilkan,
semakin cepat putarannya maka semakin kecil torsinya.
Kurva torsi motor stepper bisa diperluas dengan menggunakan perangkat
pembatas arus dan meningkatkan tegangan kendalinya.
Motor stepper menghasilkan getaran lebih besar dibandingkan tipe motor
lainnya.
Getaran yang dihasilkan bisa buruk untuk kecepatan tertentu dan
menyebabkan kehilangan torsi atau kehilangan arah (posisi) sehingga
membutuhkan metode tertentu untuk mengurangi getaran tersebut.
Motor stepper dengan banyak phase menghasilkan pergerakan yang lebih
halus dibandingkan dengan motor stepper sedikit phase.
Motor Stepper
1. Membuka code wizard AVR
2. Mengatur timer dengan mode CTC TOP=OCR
3. Mengatur pin yang tersambung menuju output
4. Memilih Generate, save exit
5. Menulis data OCR
6. Melakukan download program dengan aplikasi chipboot GUI
7. Menghitung waktu putaran motor
6.4.3
Motor Servo
1. Membuka code wizard AVR
2. Menentukan timer dengan mode Ph. Corrrect PWM
3. Menentukan set pin yang tersambung menuju output
4. Memilih Generate, save exit
5. Memasukkan rutin fungsi sudut servo
6. Memasukkan data sudut
7. Melakukan download program dengan aplikasi chipboot GUI
9. Mengukur sudut servo
Nilai OCR
255
150
50
6.5.2
Kecepatan
Cepat
Sedang
Lambat
Motor Stepper
Tabel 6.2 Data Percobaan Motor Stepper
Putaran
90o
180o
6.5.3
Waktu (detik)
5,0
9,8
Motor Servo
Tabel 6.3 Data Percobaan Motor Servo
Variasi
1
2
3
#include <delay.h>
void main(void)
// Program utama
{
#pragma optsizeCLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTH=0b10000000;
DDRH=0xff;
TCCR4A=0x81;
TCCR4B=0x03;
// Mode non-inverted
ACSR=0x80;
while (1)
{
OCR4AL=255;delay_ms(5000); // inisialisasi OCR4AL=150,tunda 5 detik
OCR4AL=150;delay_ms(5000); // inisialisasi OCR4AL=50,tunda 5 detik
OCR4AL=50;delay_ms(5000); // inisialisasi OCR4AL=0,tunda 5 detik
};
}
6.6.1.2 Flowchart
Start
Inisiasi
-Timer mode PWM
-Set PORTH.7 logika 1
-Set DDRH menjadi output
While(1)
OCR4AL=..
Delay_ms(5000)
Gambar 6.12 Flowchart Percobaan Motor DC
6.6.1.3 Analisis
Tabel 6.4 Data Percobaan Motor DC
Nilai OCR
255
150
50
Kecepatan
Cepat
Sedang
Lambat
omron CPM1A I/O 30. Penggerak pintu pada sistem penggerak pintu geser
pada otomatisasi sistem monitoring penyimpanan database menggunakan
PLC omron CPM1A I/O 20 yang digunakan adalah motor DC. Untuk
menggerakkan motor DC diperlukan driver motor DC yaitu driver HBridge yang digunakan untuk mengatur motor agar dapat berputar dalam
dua arah yaitu forward (searah jarum jam) dan Reverse(berlawanan arah
jarum jam). Berputarnya motor DC juga dipengaruhi oleh terhalang
tidaknya sensor PIR pada pintu. Ketika sensor PIR terhalangi maka motor
akan membalik putarannya sehingga akan membuka pintu. Jika pintu
dibuka secara paksa maka alarm akan menyala dikarenakan sensor PIR
terhalangi oleh benda.
ACSR=0x80;
PORTL=0b00001000;
TCCR0A=0x02;
TCCR0B=0x05;
OCR0A=0x6C;
TIMSK0=0x02;
#asm("sei")
}
6.6.2.2 Flowchart
Start
Inisiasi
-Timer mode CTC
-Intterupt CTC
-Set PINL Output
-Set OCR=0x6C
Interupsi
=1
PORTL<<1
PORTL=0b10000000
y
PORTL=0b00001000
Gambar 6.13 Flowchart Percobaan Motor Stepper
6.6.2.3 Analisis
Untuk mengeluarkan sinyal full drive pada motor stepper yaitu
dengan cara awal bergerak pada PORTL=0b00001000 akan bergeser 1 bit
kiri secara terus menerus hingga PORTL=0b10000000 setiap 10ms yang
dijalankan
pada
waktu
interupsi.
Bila
mencapai
kondisi
Putaran
90o
180o
Waktu (detik)
5,0
9,8
motor
stepper
digunakan
untuk
aplikasi-aplikasi
yang
dari
beberapa
kutub, makin
banyak
kutub
makin
sulit
{
float pulsa_sudut;
int pwm;
pulsa_sudut=sudut_degree_phi*7.122;
if
(pulsa_sudut<0) pulsa_sudut=0;
else if (pulsa_sudut>1282)pulsa_sudut=1282;
pwm=376+(int)pulsa_sudut;
OCR4CL=pwm&0xff;
OCR4CH=(pwm>>8)&0xff;
}
void main(void)
{
#pragma optsizeCLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
DDRH=0xff;
TCCR4A=0x08; // Set timer mode phase and frequency correct PWM top = ICR4
TCCR4B=0x12; // Mode non-inverted
ICR4H=0x36;
ICR4L=0x00;
ACSR=0x80;
while (1)
{
sudutservo(60);
};
}
6.6.3.2 Flowchart
Start
Inisiasi
-Timer mode Phase correct PWM
-Intterupt CTC
-Atur nilai TOPICR
-Tulis fungsi sudut servo
-
While(1)
6.6.3.3 Analisis
7
Pada percobaan ini mikro mengeluarkan pulsa PWM yang bisa kita
atur lebar duty cyclenya dengan cara mengganti nilai pada fungsi konversi
sudutservo(). Sehingga sudut servo itu akan berubah dengan sudut yang
kita masukkan.
8
V
ar
ia
12
15
18
si
1
2
3
10
13
16
19
60
120
180
11
Sudut pada
motor
14
17
20
60
120
170
21
22
dimasukkan terlihat sama dengan yang diatur pada motor servo. Namun
pada variasi ke-3, sudut pada program berbeda sedikit dari sudut pada
motor. Hal ini dikarenakan adanya precision loss pada konversi bilangan
dan pembulatan nilai pulsa yang kurang sempurna.
23
6.6.3.4 Aplikasi
24
lengan robot dapat menjangkau segala arah dengan mudah. Lengan robot
yang dibuat ini lebih menitik beratkan pada jenis kontrol kinematika
dengan memanfaatkan program pada mikrokontroller karena memiliki
struktur dinamika yang rumit.
26
6.7
Kesimpulan
1. Untuk mengatur kecepatan motor DC bisa dengan menggunakan timer
dengan mode PWM.
2. Mode PWM yang digunakan dalam percobaan motor DC adalah Phase
Correct PWM Top=0xff yang mempunyai nilai mulai dari 0 sampai
3.
4.
5.
6.
dengan 255.
Pada program, nilai PWM diberikan pada OCR4AL.
Aplikasi motor DC dapat digunakan untuk dimanfaatkan perputarannya.
Untuk mengatur gerakan motor stepper digunakan setting timer CTC.
Pada motor stepper, kondisi awal PORTL=0b00001000 dan bergerak