PRAKTIKUM MIKROKONTROLER
KENDALI MOTOR DC MENGGUNAKAN PWM
Disusun Oleh
 Khairinnisa Siregar (16507134042)
            




TEKNIK ELEKTRONIKA
FAKULTAS TEKNIK
UNIVERSITAS NEGERI YOGYAKARTA



A.    Tujuan
Setelah melakukan praktik mahasiswa diharapkan dapat:
1.       Memahami kerja dari PWM 
2.       Menguasai pengontrolan motor DC menggunakan PWM
B.     Dasar Teori
PWM (Pulse Width Modulation) atau modulasi lebar pulsa adalah salah satu keunggulan Timer/Counter yangterdapat pada Atmega8535. Ketiga jenis Timer/Counter pada Atmega8535 dapat menghasilkan pulsa PWM. Pulsa PWM adalah sederetan pulsa yang lebar pulsanya dapat diatur. Pulsa PWM berfungsi mengatur kecepatan motor DC, mengatur gelap terang LED dan aplikasi lainnya. PWM adalah Timer mode Output Compare yang canggih. Mode PWM Timer juga dapat mencacah turun yang berlawanan dengan mode Timer lainnya yang hanya mencacah naik. Pada mode PWM tersebut, Timer mencacah naik hingga mencapai nilai TOP, yaitu 0xFF (255) untuk PWM 8 bit dan 0x3FF (1023) untuk PWM 10 bit. Timer/Counter 0 hanya memiliki PWM 8 bit, sedangkan pada Timer/Counter 1 memiliki 9 bit dan PWM 10 bit, dan Timer/Counter 2 memiliki PWM 8 bit.

Pemilihan mode PWM diseting melalui bit COM01 dan bit COM00pada register TCCR. Saat COM00 clear dan COM01 set, pin OC0 clear sat timer mencacah diatas Compare Match dan pin OC0 set saat timer mencacah dibawah Compare Match atau non-inverting PWM. Kebalikannya, saat COM00 set dan COM01 juga KENDALI MOTOR DC set, maka pin OC0 set saat timer mencacah dibawah Compare Match atau disebut juga inverting PWM. Agar lebih jelas, perhatikan gambar berikut.
                       
                                         Gambar 1. Pulsa PWM inverting dan non-inverting
  

Gambar 2. Hasil pulsa PWM
Fasilitas timer mikrokontroler digunakan untuk pengaturan PWM. Berikut ini pengujian fungsionalitas mikrokontroler Atmega 16 dalam membangkitkan PWM. Penggunanan PWM menggunakan fasilitas overflow pada timer/counter 1.
C.     Alat dan Bahan
1.       Modul AVR Atmega8535/8/16/32
2.       PC (Personal computer)/laptop
3.       Jumper
4.       Power supply 5-12V
5.       CRO
D.    Skema Rangkaian


E.     Langkah Kerja
1.      Buatlah  alat dan bahan seperti rangkaian di atas;
2.      Buatlah program seperti yang tertulis berikut, uji cobakan/simulasikanlah di Proteus lalu coba pada hardware nyata;
3.      Cobalah list program berikut;
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Evaluation
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com

Project : PWM
Version : 
Date    : 3/12/2014
Author  : MUSLIKHIN, for evaluation and non-commercial use only Company : UNY Comments: 


Chip type               : ATmega16
Program type            : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#include <stdlib.h>
#include <alcd.h>

// Declare your global variables here  int SigA,SigB; char MA[12]; char MB[12];

void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In
Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=T State2=T
State1=T State0=T 
PORTA=0xFF; DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00; DDRC=0x00;
PORTD=0x00;
DDRD=0xFF;        //0X30

TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

TCCR1A=0xA1;
TCCR1B=0x01;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;


ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;


MCUCR=0x00;
MCUCSR=0x00;

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

// USART initialization
// USART disabled
UCSRB=0x00;

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

// ADC initialization
// ADC disabled
ADCSRA=0x00;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 2
// RD - PORTC Bit 1
// EN - PORTC Bit 3
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16 lcd_init(16);
While 
 (1)
      {
      // Place your code here       lcd_gotoxy(0,0);       lcd_putsf("MOT1=");       lcd_gotoxy(0,1);       lcd_putsf("MOT2=");         PORTD.0=1;   //Motor 1 Maju
PORTD.1=0;    
PORTD.3=1;   //Motor 2 Mundur
PORTD.4=0; 
if(PINA.0==0){SigA++;}  //Jika pushbutton M1_DW ditekan naikan kecepatan motor 1            if(PINA.1==0){SigA--;}   //Jika pushbutton M1_UP ditekan turunkan kecepatan motor 1
      if(PINA.2==0){SigB++;}   //Jika pushbutton M2_DW  ditekan naikan kecepatan motor 2
      if(PINA.3==0){SigB--;}    //Jika pushbutton M2_UP
ditekan turunkan kecepatan motor 2       lcd_gotoxy(5,0);       itoa(SigA,MA);
      lcd_puts(MA); //Tampilkan nilai kecepatan Motor 1       lcd_gotoxy(5,1);       itoa(SigB,MB);
     lcd_puts(MB);  //Tampilkan nilai kecepatan Motor 2
      OCR1A=SigA; 
      OCR1B=SigB;
      } }
4.      Cobalah percobaan diatas, hubungkan pin OC1A dan OC1B ke CRO, tekanlah tombol M1_UP dan M1_DW amati perubahan lebar pulsa yang ada di CRO, buatlah kesimpulan dari hasil praktik saudara.
5.      Tugas, buatlah program PWM yang dikendalikan dari sebuah potensiometer yang dihubungkan ke ADC(0) 
6.      Tuliskan hasil praktikum anda sesuai format dan simpulkan hasilnya.

F.      Hasil dan Analisa
Gambar dibawam ini merupakan Hasil rangkaian setelah disimulation

Analisa : dari praktikum yang dilakukan dapat dianalisa bahwa semakin besar duty cycle pulsa kotak, maka semakin lama pula posisi logika high. Jika motor diatur agar berjalan ketika diberi logika high, maka jika memberi pulsa seperti pada gambar diatas  maka motor akan berada pada kondisi “nyala-mati-nyala-mati” sesuai dengan bentuk pulsa tersesebut. Semakin lama motor berada pada kondisi “nyala” maka semakin cepat pula kecepatan motor tersebut. Motor akan berputar dengan kecepatan maksimum jika mendapat pulsa dengan duty cycle 100%. Dengan kata lain motor mendapat logika high terus menerus. Dengan mengatur besarnya duty cycle pulsa kotak kita dapat mengatur banyaknya logika high yang diberikan pada motor, dengan kata lain mengatur lamanya waktu motor untuk berputar dalam satu periode pulsa. Jika lamanya waktu motor untuk berputar dalam satu periode pulsa ini berubah maka kecepatan purtaran motor juga akan berubah, sesuai dengan duty cycle atau waktu motor untuk berputar dalam satu periode pulsa.
G.    Kesimpulan
Dari praktikum yang dilakukan dapat disimpulkan :
1.  Teknik PWM untuk pengaturan kecepatan motor adalah, pengaturan kecepatan motor dengan cara merubah-rubah besarnya duty cycle pulsa. Pulsa yang yang berubah ubah duty cycle-nya inilah yang menentukan kecepatan motor. Besarnya amplitudo dan frekuensi pulsa adalah tetap, sedangkan besarnya duty cycle berubah-ubah sesuai dengan kecepatan yang diinginkan, semakin besar duty cylce maka semakin cepat pula kecepatan motor, dan sebaliknya semakin kecil duty cycle maka semakin pelan pula kecepatan motor. 
2. Untuk menampilkan hasil rangkaian setelah disimulation pertama kali harus memperhatikan rangkaian apakah masih ada yang kurang atau yang salah kemudian baru membuat program pada AVR.

Komentar

Postingan populer dari blog ini

LAPORAN MIKROKONTROLER KEYPAD

LAPORAN MIKROKONTROLER RTC

LAPORAN MIKROKONTROLER TIMER/COUNTER