• Tidak ada hasil yang ditemukan

Kontrol Adaptif

N/A
N/A
Protected

Academic year: 2021

Membagikan "Kontrol Adaptif"

Copied!
38
0
0

Teks penuh

(1)

Kontrol Adaptif adalah metode pengontrolan yang digunakan oleh alat kontrol sehingga Kontrol Adaptif adalah metode pengontrolan yang digunakan oleh alat kontrol sehingga dapat beradaptasi dengan sistem

dapat beradaptasi dengan sistem yang dikontrol. yang dikontrol. Kontrol Adaptif masih Kontrol Adaptif masih memerlukan batas-memerlukan batas- batas d

 batas dari perubari perubahan pahan parametearameter terhadap r terhadap waktu, waktu, sesuai sesuai dengadengan perubn perubahan hahan hukum ukum kontrokontrol itul itu sendiri.

sendiri.

Secara umum sistem kontrol dapat dikelompokkan sebagai berikut: Secara umum sistem kontrol dapat dikelompokkan sebagai berikut: 1. Sistem kontrol open loop

1. Sistem kontrol open loop 2. Sistem kontrol closed loop 2. Sistem kontrol closed loop

Sistem kontrol open loop Sistem kontrol open loop

• Sistem kontrol yang keluarannya tidak berpengaruh pada aksi pengendalianSistem kontrol yang keluarannya tidak berpengaruh pada aksi pengendalian •

• Keluaran tidak diukur atau diumpan balikkan untuk dibandingkan dengan masukanKeluaran tidak diukur atau diumpan balikkan untuk dibandingkan dengan masukan

Sistem kontrol closed loop Sistem kontrol closed loop

• Sistem kontrol yang sinyal keluarannya berpengaruh langsung pada aksiSistem kontrol yang sinyal keluarannya berpengaruh langsung pada aksi

 pengo

 pengontrolanntrolan

• Sistem kontrol berumpan balik Sistem kontrol berumpan balik 

Sistem kontrol modern Sistem kontrol modern

• Kompleksitas tinggiKompleksitas tinggi •

• Berbasis komputer Berbasis komputer  •

(2)
(3)

• Kontrol cerdas (learning control)Kontrol cerdas (learning control)

ATMEL AVR ATmega32 ATMEL AVR ATmega32

Mi

Mikrkrokokonontrotroleler r ATATmemegaga32 32 memerurupakpakan an MiMikrkrokokonontrotroleler r gegenernerasasi i AVAVR R (( Alf  Alf and and  Vegard’s Risk processor 

Vegard’s Risk processor ) ) [2]. Mikrok[2]. Mikrokontontroleroler r AVAVR R memmemilikiliki i arsiarsitektektur tur RISRISC C (( Reduced  Reduced   Instruction Set Computing 

 Instruction Set Computing ) 8 bit, semua instruksi dikemas dalam kode 16-bit (16-) 8 bit, semua instruksi dikemas dalam kode 16-bit (16- bits word bits word )) dan

dan sebsebagiagian an besbesar ar instinstrukruksi si diediekseksekuskusi i daldalam am 1 1 siksiklus lus clocclock. k. PadPada a perperancaancangangan n sistsistemem kontrol ini dipilih Mikrokontroler jenis ATMEL AVR RISC dengan pertimbangan sebagai kontrol ini dipilih Mikrokontroler jenis ATMEL AVR RISC dengan pertimbangan sebagai  berikut

 berikut::

1. ATMEL AVR RISC memiliki fasilitas lengkap dan harga relatif murah. 1. ATMEL AVR RISC memiliki fasilitas lengkap dan harga relatif murah. 2. Kecepatan maksimum eksekusi instruksi Mikrokontroler mencapai 16 MIPS 2. Kecepatan maksimum eksekusi instruksi Mikrokontroler mencapai 16 MIPS

(( Million In Million Instruction per struction per Second Second ),),

3. Konsumsi daya yang rendah jika dibandingkan dengan kecepatan eksekusi instruksi. 3. Konsumsi daya yang rendah jika dibandingkan dengan kecepatan eksekusi instruksi.

1.

1. Ketersediaan kompiler C (CV AVR) yang memudahkan user untuk memprogramKetersediaan kompiler C (CV AVR) yang memudahkan user untuk memprogram menggunakan bahasa C.

menggunakan bahasa C.

Gambar 2.31

Gambar 2.31 Konfigurasi Pin Konfigurasi Pin ATmega32 [1]ATmega32 [1]

Konfigurasi pin ATmega32 dapat dilihat pada Gambar 2.31. Secara Konfigurasi pin ATmega32 dapat dilihat pada Gambar 2.31. Secara fungsional konfigurasi pin ATmega32 sebagai berikut :

fungsional konfigurasi pin ATmega32 sebagai berikut :

1. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya. 1. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya.

(4)

2. GND merupakan pin

2. GND merupakan pin ground  ground ..

3. Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC. 3. Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC. 4. Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus untuk  4. Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus untuk 

Timer/Counter 

Timer/Counter , Komparator analog, dan SPI., Komparator analog, dan SPI.

5. Port C (PC0..PC7) merupakan pin I/O dua arah dan pin khusus untuk TWI, 5. Port C (PC0..PC7) merupakan pin I/O dua arah dan pin khusus untuk TWI,

Komparator analog,

Komparator analog, functions o functions of the JTAf the JTAG interfaceG interface dandan Timer Oscilator Timer Oscilator .. 6. Port D (PD0..PD7) merupakan pin I/O dua arah dan pin khusus untuk  6. Port D (PD0..PD7) merupakan pin I/O dua arah dan pin khusus untuk 

Komparator analog, Interupsi eksternal, dan Komunikasi serial. Komparator analog, Interupsi eksternal, dan Komunikasi serial.

7. RESET merupakan pin yang digunakan untuk me-reset Mikrokontroler. 7. RESET merupakan pin yang digunakan untuk me-reset Mikrokontroler. 8. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal.

8. XTAL1 dan XTAL2 merupakan pin masukan clock eksternal. 9. AVCC merupakan pin masukan tegangan untuk ADC.

9. AVCC merupakan pin masukan tegangan untuk ADC. 10. AREF merupakan pin masukan tegangan referensi ADC. 10. AREF merupakan pin masukan tegangan referensi ADC.

ATmega32 memiliki 4 buah port input/

ATmega32 memiliki 4 buah port input/ output output 8 bit, yaitu PORTA, PORTB, PORTC,8 bit, yaitu PORTA, PORTB, PORTC, dan PORTD. Selain sebagai input/

dan PORTD. Selain sebagai input/output output masing masing port juga memiliki fungsi yang lain.masing masing port juga memiliki fungsi yang lain. POR

PORTA TA dapdapat at difdifungungsiksikan an sebsebagaagai i ADADC C (( Analog  Analog to to Digital Digital Converter Converter ), ), PORPORTB TB dapdapatat difung

difungsikan sebagasikan sebagai i SPI (SPI (Serial Peripheral Interface) communicationSerial Peripheral Interface) communication. Fungsi-fungsi yang. Fungsi-fungsi yang lain dapat dilihat pada

lain dapat dilihat pada datasheet datasheet ATmega32.ATmega32.

Gambar 2.32

(5)

Berikut:

1. Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, dan Port D. 2. ADC 10 bit sebanyak 8 saluran.

3. Tiga buah Timer/Counter dengan kemampuan pembandingan. 4. CPU yang terdiri atas 32 buah register.

5. Watchdog Timer dengan osilator internal. 6. SRAM sebesar 2 Kbyte.

7. Memori Flash sebesar 32 Kb dengan kemampuan Read While Write. 8. Unit interupsi internal dan eksternal.

9. Port antarmuka SPI.

10. EEPROM ( Electrically Erasable Programmable Read Only Memory) sebesar 1K   byte yang dapat diprogram saat operasi.

11. Antarmuka komparator analog.

12. Port USART untuk komunikasi serial, kecepatan maksimal 2,5 Mbps. 13. Mikroprosessor 8 bit berbasis RISC kecepatan maksimal 16 MHz.

Perangkat input/output digunakan oleh prosessor untuk berkomunikasi dengan dunia luar. Fasilitas input/output merupakan fungsi Mikrokontroler untuk dapat menerima sinyal masukan (input) dan memberikan sinyal keluaran ( output ). Contoh pemakaian perangkat i/o adalah serial komunikasi pada keyboard, tampilan LCD dan sinyal interupsi dari luar.

Sinyal input maupun sinyal output  adalah berupa data digital 1 (high, mewakili tegangan 5 volt) dan 0 (low, mewakili tegangan 0 volt). Mikrokontroler ATMEGA 32 memiliki 4 buah PORT 8 bit bidirectional yang dapat difungsikan sebagai PORT input maupun PORT output  yaitu PORTA, PORTB , PORTC, dan PORT D. Register  digunakan untuk mengatur fungsi dari pin-pin pada tiap port. Register dapat dianalogikan sebagai kumpulan switch on/off yang digunakan untuk mengaktifkan fungsi apa yang akan dipakai dari port Mikrokontroler. Pada setiap port pin terdapat 3 buah register 8 bit: DDRxn, PORTxn, dan PINxn.

Register DDRxn digunakan untuk menentukan arah dari pin yang bersangkutan. Jika DDRxn diberikan nilai 1 (high), maka pin digunakan sebagai output . Jika DDRxn diberikan nilai 0 (low), maka pin difungsikan sebagai input.

Register PORTxn digunakan untuk mengaktifkan pull-up resistor (pada saat pin difungsikan sebagai input), dan memberikan nilai keluaran pin high/low (pada saat

(6)

difungsikan sebagai output ). Konfigurasi PORTxn dan DDRxn dapat dilihat pada Tabel 3.3 dibawah.

Tabel 3.3 Konfigurasi port pin ATMEGA 32 [2]

Tri-state adalah kondisi diantara high dan low, atau biasa disebut dengan keadaan mengambang (floating). Kondisi tri-state sangat dihindari dalam dunia digital .

Keypad

Fungsi dari keypad dalam praktek digunakan untuk memasukkan nilai suhu yang dikehendaki. Disamping itu untuk menjalankan dan mematikan kerja sistem kontrol.

Gambar 3.5 Keypad 4x4

Keypad sering digunakan sebagai suatu input pada beberapa peralatan yang  berbasis mikroprosesor atau Mikrokontroler. Keypad sesungguhnya terdiri dari

sejumlah saklar, yang terhubung sebagai baris dan kolom.

Agar Mikrokontroler dapat melakukan scan keypad, maka port mengeluarkan salah satu bit dari 4 bit yang terhubung pada kolom dengan logika low “0” dan selanjutnya membaca 4 bit pada baris untuk menguji jika ada tombol yang ditekan  pada kolom tersebut. Sebagai konsekuensi, selama tidak ada tombol yang ditekan,

(7)

yang terhubung ke baris. Tampilan LCD

Pada prektek menggunakan LCD M1632 2x16, fungsi dari LCD untuk menampilkan nilai suhu yang dikehendaki dan manampilkan nilai suhu yang terukur.

Gambar 3.7 Tampilan LCD 2x16

Pada Tabel 3.1, dibawah ini menunjukkan fungsi dari masing-masing pin Tabel 3.1 Fungsi pin LCD 2x16

Sedangkan hubungan antara kaki LCD dan Mikrokontroler pada prektek adalah sebagai berikut:

(8)

Gambar 3.8 Hubungan LCD 2x16 dengan Mikrokontroler  ADC

Dalam merancang perangkat sistem kontrol berbasis Mikrokontroler , diperlukan suatu interface antara besaran analog yang dibaca oleh sensor dengan Mikrokontroler, sebab Mikrokontroler hanya mampu mengolah data dalam bentuk diskrit sehingga diperlukan  perangkat yaitu  Analog To Digital Convertion (ADC). Agar hasil pembacaan suhu yang terukur dapat mencapai rentang suhu pada obyek prektek, maka perlu diatur tegangan acuan eksternal (Vref).

Tegangan acuan eksternal berfungsi menentukan besarnya resolusi ADC dan dapat diatur dengan memberikan referensi rangkaian eksternal Vref pada modul ATmega32. Rangkaian tegangan acuan eksternal yang digunakan adalah sebagai berikut:

D1 2V7 R3 1k +5V R4 5k 5K VR

Vreff pin=2.28 Volt

Gambar 3.11 Tegangan referensi eksternal ADC

Tegangan acuan sebesar Vreff=2,283 volt dihasilkan dengan memutar variabel resistor 5Kohm.

Contoh:

Agar hasil pembacaan suhu yang terukur dapat mencapai rentang suhu pada obyek prektek, maka perlu diatur tegangan acuan eksternal (Vref).

(9)

Gambar 3.10 Penguat noninverting untuk LM35

Besar penguatan rangkaian noninverting adalah: A = 1+(Rf/Ri) = 1+(R2/R1)

= 1+(12K/10K) =1+1.2 = 2,2 (terukur 2,23 kali) Vout LM35 = Suhu * 10 mV

ADC = (Vout LM35 x Resolusi ADC) / Vref (3.1)

Vout adalah tegangan keluaran LM35 dan Vref adalah tegangan acuan yang digunakan oleh tegangan acuan eksternal modul ATmega32. Jika menggunakan tegangan acuan 2,283 Volt eksternal maka tingkat keluaran ADC untuk 91,5 derajat Celsius dapat dihitung sebagai berikut:

ADC = ((91,5 x 10mv) x 2,23 x 1024) / 2,283 = 915,2 Vreff=2,283 volt

Dengan pembagian hasil dengan 10, sehingga didapatkan 91,5, ini adalah nilai temperatur yang tepat yang terukur oleh sensor.

PWM

Keluaran PWM berfungsi mengatur seberapa besar daya yang diberikan oleh kontrol ke modul pengendali. Modul pengendali dapat menerima rentang tegangan masukan sebesar  1-5Volt DC untuk proses pengendalian 0-100%. Seting PWM menggunakan mode  Fast   PWM dengan nilai maksimum FFH=255 untuk  Duty cycle sebesar 100%. Tegangan rata-rata

dari  Duty cycle 0-100% keluaran PWM masih berupa gelombang kotak sehingga perlu diratakan menjadi tegangan DC 0-5Volt. Besar tegangan yang dihasilkan merupakan

(10)

 perbandingan periode ton dan toff dikalikan dengan amplitudonya. dengan rumus sebagai  berikut:

Vrms= (ton/ton+toff).Vdc

Contoh:

1 Gambar 3.24 Keluaran PWM dengan variasi data register OCR2

Pada Gambar 3.24 memperlihatkan hasil pengamatan melalui tampilan Osiloskop hasil keluaran PWM yaitu dengan memberikan nilai 0 sampai 255 pada register OCR2. Keluaran PWM diambil melalui Pin PD.7 (OC2).

1

2 (a). OCR2=50 (b). OCR2=150 (c). OCR2=250 2 Gambar 3.24 Keluaran PWM dengan variasi data register OCR2

(11)

Praktikum 1

Dengan menggunakan program simulator rancanglah keypad 4x4 untuk memasukkan nilai Set Point ke dalam tampilan LCD 2x16

Peralatan :

a. IC ATmega 32

 b. LCD 2x16 di PORTC

c. Keypad 4x4 (modifikasi) di PORTB

Proses praktikum:

1. Ambil Keypad 4x4 dari Library dan edit teks masing-masing tombol sesuai fungsinya 2. LCD 2x16

3. Hubungkan setiap pin ke Mikrokontrol ATmega32 seperti gambar berikut:

2. Dengan Program CodeVision AVR , programlah mikrokontroler dengan langkah sebagai  berikut:

1 1. Buka CV AVR., pilih File->New->Project.

2 2. Klik YES ketika terdapat option untuk meggunakan codeWizardAVR. 3 3. Pilih chip yang akan digunakan ATMEGA32 dengan harga clock 4 Mhz.

(12)

4

5

Kemudian pilih File->Generate,save&exit->nama.c; nama.prj; nama.cwp Setelah dijalankan akan menghasilkan kode sbb:

Tambahkan kode-kode untuk akses SetPoint(SP),fungsi geser kursor, run & stop /*****************************************************

Project :praktek 1

Chip type : ATmega32 Program type : Application Clock frequency : 4.000000 MHz Memory model : Small

External SRAM size : 0 Data Stack size : 512

(13)

// Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> #include <delay.h> #include <stdio.h> #include <stdlib.h> #include <math.h> char dt,dtkey,arah; static char a,c;

unsigned char a1,a2,a3; int sp_1,baca;

unsigned char sp,kk,jj,dd,ee,pross; unsigned char j,k,l,y;

char buf[33];

char kiri_sp[3]={2,3,4}; char kanan_sp[3]={2,3,4}; void cursor_on();

void cursor_off();

//fungsi geser kiri nilai set_point... void geser_sp() {jj=0;kk=1; if (kk==1 && sp==1) {dd--; if (dd>=3)dd=0;a=kiri_sp[dd];kk=0;arah=0;dtkey=0;ee=0; delay_ms(70); } }

(14)

void geser1_sp() {kk=0;jj=1; if ((jj==1)&&(sp==1)) {dd++; if (dd>2)dd=2;a=kanan_sp[dd];jj=0;arah=0;dtkey=0;ee=0; delay_ms(70); } }

//fungsi masukan nilai set_point jika setuju... void enter()

{ee=1;a1=j;a2=k;a3=l;pross=0; }

//fungsi akses set_point... void set_sp()

{sp=1;c=0;ee=0;}

//fungsi stop (mematikan sistim)... void out_set()

{sp=0;baca=0;pross=0;a=0; }

//fungsi tampil kursor void cursor_on() {  _lcd_ready();  _lcd_write_data(0xf); } void cursor_off() {  _lcd_ready();  _lcd_write_data(0xC);

(15)

//fungsi pembacaan nilai setpoint void proses() {pross=1;a=0; sp_1 = ((j*100)+(k*10)+(l)); do {  baca=sp_1; } while(pross!=1); }

//fungsi scan keypad... void detek_key(void) { PORTB.4=0; dt=(~PINB & 0x0F); switch (dt) { case 1: dtkey=0x01;  break; case 2: dtkey=0x02;  break; case 4: dtkey=0x03;  break;

case 8: arah=10;//A akses set_point(Edit)  break; }; PORTB.4=1; PORTB.5=0; dt=(~PINB & 0x0F); switch (dt){ case 1: dtkey=0x04;  break; case 2: dtkey=0x05;

(16)

 break;

case 4: dtkey=0x06;  break;

case 8: arah=11;//B tombol ( stop )  break; }; PORTB.5=1; PORTB.6=0; dt=(~PINB & 0x0F); switch (dt) { case 1: dtkey=0x07;  break; case 2: dtkey=0x08;  break; case 4: dtkey=0x09;  break;

case 8: arah=12;//C geser kiri ( < )  break; }; PORTB.6=1; PORTB.7=0; dt=(~PINB & 0x0F); switch (dt) {

case 1: arah=15;//F untuk proses ( RUN )  break;

case 2: dtkey=0x00;  break;

case 4: arah=14;//E masukan nilai set_point ( = )  break;

case 8: arah=13;//D geser kanan ( > )  break;

};

(17)

void main(void) { PORTA=0x00; DDRA=0x00; PORTB=0x0F; DDRB=0xF0; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0xFF;

// External Interrupt(s) initialization // INT0: Off  // INT1: Off  // INT2: Off  MCUCR=0x00; MCUCSR=0x00; // LCD module initialization lcd_init(16); lcd_gotoxy(0,0); lcd_putsf(" ==atw=="); delay_ms(1000); lcd_gotoxy(0,1); lcd_putsf(" ===LCD==="); delay_ms(1000); lcd_clear(); #asm ("cli") while (1)

(18)

{ detek_key(); switch (arah){ case 13: geser_sp();  break; case 12: geser1_sp();  break; case 11: baca=1;pross=1;out_set();  break; case 10: set_sp();  break; case 14: enter();  break; case 15: proses();  break; };

if (c==0 && a==2 && ee==1) j=y=dtkey; if (c==0 && a==3 && ee==1) k=dtkey; if (c==0 && a==4 && ee==1) l=dtkey; lcd_gotoxy(0,0); sprintf(buf,"sp%d%d%d",a1,a2,a3,); lcd_puts(buf); lcd_gotoxy(0,1); sprintf(buf,"tampil=%3d",baca); lcd_puts(buf); lcd_gotoxy(a,c); cursor_on(); delay_ms(100); cursor_off(); }; }

(19)

Dengan bantuan program simulator akan dirancang suatu sistem kontrol open loop, dimana hasil nilai keluaran sesuai dengan nilai masukan dari keypad.

Peralatan : a. IC ATmega 32  b. LCD 2x16 c. Keypad 4x4 (modifikasi) d. PWM e. Osiloskop Proses praktikum:

1. Dari praktikum 1 tambahkan keluaran PWM

2. Dengan Program CodeVision AVR , programlah mikrokontroler dengan langkah sebagai  berikut:

6 1. Buka CV AVR., pilih File->New->Project.

7 2. Klik YES ketika terdapat option untuk meggunakan codeWizardAVR. 8 3. Pilih chip yang akan digunakan ATMEGA32 dengan harga clock 4 Mhz.

9

3

4

(20)

6 Seting PWM menggunakan mode  Fast PWM  dengan nilai maksimum FFH=255

untuk  Duty cycle sebesar 100%.

Kemudian pilih File->Generate,save&exit->nama.c; nama.prj; nama.cwp Setelah dijalankan akan menghasilkan kode sbb:

Tambahkan kode-kode untuk akses SetPoint(SP),fungsi geser kursor, run & stop /*****************************************************

Project :praktek 2

Chip type : ATmega32 Program type : Application Clock frequency : 4.000000 MHz Memory model : Small

External SRAM size : 0 Data Stack size : 512

*****************************************************/

#include <mega32.h>

// Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> #include <delay.h> #include <stdio.h> #include <stdlib.h> #include <math.h>

// Declare your global variables here char dt,dtkey,arah;

static char a,c;

(21)

unsigned char sp,kk,jj,dd,ee,pross; unsigned char j,k,l,y;

char buf[33];

char kiri_sp[3]={2,3,4}; char kanan_sp[3]={2,3,4}; void cursor_on();

void cursor_off();

//fungsi geser kiri nilai set_point... void geser_sp() {jj=0;kk=1;cc=1; if (kk==1 && sp==1) {dd--; if (dd>=3)dd=0;a=kiri_sp[dd];kk=0;arah=0;dtkey=0;ee=0; delay_ms(70); } }

//fungsi geser nilai nilai set_point... void geser1_sp() {kk=0;jj=1;cc=1; if ((jj==1)&&(sp==1)) {dd++; if (dd>2)dd=2;a=kanan_sp[dd];jj=0;arah=0;dtkey=0;ee=0; delay_ms(70); } }

//fungsi masukan nilai set_point jika setuju... void enter()

{ee=1;a1=j;a2=k;a3=l;pross=0; }

//fungsi akses set_point... void set_sp()

(22)

{sp=1;c=0;ee=0;}

//fungsi stop (mematikan sistim)... void out_set()

{sp=0;baca=0;pross=0;a=0; }

//fungsi tampil kursor void cursor_on() {  _lcd_ready();  _lcd_write_data(0xf); } void cursor_off() {  _lcd_ready();  _lcd_write_data(0xC); }

//fungsi pembacaan nilai setpoint void proses() {pross=1;a=0; sp_1 = ((j*100)+(k*10)+(l)); do { baca=sp_1; } while(pross!=1); }

//fungsi scan keypad... void detek_key(void)

{

(23)

switch (dt) { case 1: dtkey=0x01;  break; case 2: dtkey=0x02;  break; case 4: dtkey=0x03;  break;

case 8: arah=10;//A akses set_point  break; }; PORTB.4=1; PORTB.5=0; dt=(~PINB & 0x0F); switch (dt){ case 1: dtkey=0x04;  break; case 2: dtkey=0x05;  break; case 4: dtkey=0x06;  break;

case 8: arah=11;//B tombol ( stop )  break; }; PORTB.5=1; PORTB.6=0; dt=(~PINB & 0x0F); switch (dt) { case 1: dtkey=0x07;  break; case 2: dtkey=0x08;  break; case 4: dtkey=0x09;

(24)

 break;

case 8: arah=12;//C geser kiri ( < )  break; }; PORTB.6=1; PORTB.7=0; dt=(~PINB & 0x0F); switch (dt) {

case 1: arah=15;//F untuk proses ( RUN )  break;

case 2: dtkey=0x00;  break;

case 4: arah=14;//E masukan nilai set_point ( = )  break;

case 8: arah=13;//D geser kanan ( > )  break; }; PORTB.7=1; } void main(void) { PORTA=0x00; DDRA=0x00; PORTB=0x0F; DDRB=0xF0; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0xFF;

(25)

// Clock source: System Clock  // Clock value: Timer 2 Stopped // Mode: Normal top=FFh

// OC2 output: Disconnected ASSR=0x00;

TCCR2=0x69; TCNT2=0x00; OCR2=0x00;

// External Interrupt(s) initialization // INT0: Off  // INT1: Off  // INT2: Off  MCUCR=0x00; MCUCSR=0x00; // LCD module initialization lcd_init(16); lcd_gotoxy(0,0); lcd_putsf(" ==atw=="); delay_ms(1000); lcd_gotoxy(0,1); lcd_putsf(" ===LCD==="); delay_ms(1000); lcd_clear(); #asm ("cli") while (1) { OCR2=baca; detek_key(); switch (arah){

(26)

case 13: geser_sp();  break; case 12: geser1_sp();  break; case 11: baca=1;pross=1;out_set();  break; case 10: set_sp();  break; case 14: enter();  break; case 15: proses();  break; };

if (c==0 && a==2 && ee==1) j=y=dtkey; if (c==0 && a==3 && ee==1) k=dtkey; if (c==0 && a==4 && ee==1) l=dtkey; lcd_gotoxy(0,0); sprintf(buf,"sp%d%d%d",a1,a2,a3,); lcd_puts(buf); lcd_gotoxy(0,1); sprintf(buf,"tampil=%3d",baca); lcd_puts(buf); lcd_gotoxy(a,c); cursor_on(); delay_ms(100); cursor_off(); }; }

3. Amatilah hasil keluaran PWM di kaki PIND.7(OC2) dengan osiloskop dengan mengubah nilai SP = 0 sampai 255 sehingga menghasilkan Duty cyrcle = 0% sampai 100%.

(27)

Praktikum 3

Merancang keluaran PWM Duty cyrcle = 0% sampai 100% menjadi tegangan DC 0V sampai 5V Peralatan : a. IC ATmega 32  b. LCD 2x16 c. Keypad 4x4 (modifikasi) d. PWM e. Rangkaian filter DC f. DC Volt meter  Proses praktikum:

1. Dari praktikum 1 dan 2 gantilah osiloskop dengan DC Voltmeter 

2. Tambahkan rangkain filter DC untuk menghasilkan keluaran PWM menjadi tegangan DC rata.

3. Amatilah hasil keluaran di kaki PIND.7(OC2) dengan DC Voltmeter dengan mengubah nilai SP = 0 sampai 255 sehingga menghasilkan tegangan DC rata 0V sampai 5V.

(28)

Merancang dasar sistem kontrol closed loop dengan proses kontrol tipe ON/OFF Peralatan : a. IC ATmega 32  b. LCD 2x16 c. Keypad 4x4 (modifikasi) d. PWM e. ADC 8 bit f. Rangkaian filter DC g. DC Volt meter  h. LM35 (sensor suhu)

Contoh aplikasi kontrol suhu:

Jika SP < Nilai suhu (PV) maka nilai kontrol maksimal (ON) Jika SP > Nilai suhu (PV) maka nilai kontrol minimal (OFF) Error= SP – PV

(29)

Proses praktikum:

1. Dari praktikum 1,2 dan 3 tambahkan komponen sensor suhu LM35

2. Aturlah ADC dengan resolusi 8 bit di PINA.0 dan tegangan referensi diambil VCC (pin AVCC) sesuai Gambar berikut

(30)

Chip type : ATmega32 Program type : Application Clock frequency : 4.000000 MHz Memory model : Small

External SRAM size : 0 Data Stack size : 512

*****************************************************/

#include <mega32.h>

// Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 ;PORTC #endasm #include <lcd.h> #include <delay.h> #include <stdio.h> #include <stdlib.h> #include <math.h>

// Declare your global variables here unsigned char dt,dtkey,arah;

static char a,c;

unsigned char a1,a2,a3; int sp_1,baca,dtadc,vin,error; unsigned char sp,kk,jj,dd,ee,pross; unsigned char j,k,l,y;

char buf[33];

char kiri_sp[3]={2,3,4}; char kanan_sp[3]={2,3,4};

void cursor_on(); void cursor_off();

(31)

// Read the 8 most significant bits // of the AD conversion result

unsigned char read_adc(unsigned char adc_input) {

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Start the AD conversion

ADCSRA|=0x40;

// Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10; return ADCH; }

//fungsi geser kiri nilai set_point... void geser_sp() {jj=0;kk=1; if (kk==1 && sp==1) {dd--; if (dd>=3)dd=0;a=kiri_sp[dd];kk=0;arah=0;dtkey=0;ee=0; delay_ms(70); } }

//fungsi geser nilai nilai set_point... void geser1_sp() {kk=0;jj=1; if ((jj==1)&&(sp==1)) {dd++; if (dd>2)dd=2;a=kanan_sp[dd];jj=0;arah=0;dtkey=0;ee=0; delay_ms(70); } }

(32)

//fungsi masukan nilai set_point jika setuju... void enter()

{ee=1;a1=j;a2=k;a3=l;pross=0; }

//fungsi akses set_point... void set_sp()

{sp=1;c=0;ee=0;}

//fungsi stop (mematikan sistim)... void out_set()

{sp=0;baca=0;pross=0;a=0; }

//fungsi tampil kursor  void cursor_on() {  _lcd_ready();  _lcd_write_data(0xf); } void cursor_off() {  _lcd_ready();  _lcd_write_data(0xC); }

//fungsi pembacaan derajat keenggotaan fuzzy... void proses()

{pross=1;a=0;

(33)

{ dtadc=read_adc(0); vin=((dtadc*2)-1); error=sp_1-vin; if(error>0){baca=255;delay_ms(10);} if(error<=0) baca = 0; OCR2=baca; } while(pross!=1); }

//fungsi scan keypad... void detek_key(void) { PORTB.4=0; dt=(~PINB & 0x0F); switch (dt) { case 1: dtkey=0x01;  break; case 2: dtkey=0x02;  break; case 4: dtkey=0x03;  break;

case 8: arah=10;//A akses set_point  break; }; PORTB.4=1; PORTB.5=0; dt=(~PINB & 0x0F); switch (dt){ case 1: dtkey=0x04;

(34)

 break;

case 2: dtkey=0x05;  break;

case 4: dtkey=0x06;  break;

case 8: arah=11;//B tombol stop  break; }; PORTB.5=1; PORTB.6=0; dt=(~PINB & 0x0F); switch (dt) { case 1: dtkey=0x07;  break; case 2: dtkey=0x08;  break; case 4: dtkey=0x09;  break;

case 8: arah=12;//C geser kiri nilai set_point  break; }; PORTB.6=1; PORTB.7=0; dt=(~PINB & 0x0F); switch (dt) {

case 1: arah=15;//F untuk proses  break;

case 2: dtkey=0x00;  break;

case 4: arah=14;//E masukan nilai set_point  break;

(35)

 break; }; PORTB.7=1; } void main(void) { PORTA=0x00; DDRA=0x00; PORTB=0x0F; DDRB=0xF0; PORTC=0x00; DDRC=0xFF; PORTD=0x00; DDRD=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock  // Clock value: Timer 0 Stopped // Mode: Normal top=FFh

// OC0 output: Disconnected TCCR0=0x00;

TCNT0=0x00; OCR0=0x00;

// Timer/Counter 1 initialization // Clock source: System Clock  // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh

(36)

// OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off 

// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off  // Input Capture Interrupt: Off  // Compare A Match Interrupt: Off  // Compare B Match Interrupt: Off  TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock  // Clock value: Timer 2 Stopped // Mode: Normal top=FFh

// OC2 output: Disconnected //ASSR=0x00;

//TCCR2=0x69; //TCNT2=0x00; //OCR2=0x00;

// External Interrupt(s) initialization // INT0: Off 

(37)

MCUCR=0x00; MCUCSR=0x00;

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

// Analog Comparator initialization // Analog Comparator: Off 

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

SFIOR=0x00;

// ADC initialization

// ADC Clock frequency: 125.000 kHz // ADC Voltage Reference: AVCC pin // Only the 8 most significant bits of  // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x85; // LCD module initialization lcd_init(16); lcd_gotoxy(0,0); lcd_putsf(" ==atw=="); delay_ms(1000); lcd_gotoxy(0,1); lcd_putsf(" ===LCD==="); delay_ms(1000); lcd_clear(); #asm ("cli") while (1) {

(38)

detek_key(); switch (arah){ case 13: geser_sp();  break; case 12: geser1_sp();  break; case 11: baca=1;pross=1;out_set();  break; case 10: set_sp();  break; case 14: enter();  break; case 15: proses();  break; };

if (c==0 && a==2 && ee==1) j=y=dtkey; if (c==0 && a==3 && ee==1) k=dtkey; if (c==0 && a==4 && ee==1) l=dtkey; lcd_gotoxy(0,0); sprintf(buf,"sp%d%d%d",a1,a2,a3,); lcd_puts(buf); lcd_gotoxy(0,1); sprintf(buf,"tampil=%3d%3d",baca,vin); lcd_puts(buf); lcd_gotoxy(a,c); cursor_on(); delay_ms(100); cursor_off(); };

Gambar

Gambar 3.5  Keypad 4x4
Gambar 3.8  Hubungan LCD 2x16 dengan Mikrokontroler  ADC
Gambar 3.10  Penguat noninverting untuk LM35

Referensi

Dokumen terkait

Selain itu salah satu asam lemak yang mendominasi komposisi minyak sawit adalah asam lemak palmitat yang memiliki titik leleh tinggi, sehingga lebih mudah

a…penelusuran sejarah desa waktu ..mengkaji suatu keadaan dari waktu ke waktu (tidak dibatasi). ..informasi umum, asal usul desa, perkembangan desa

Data dalam penelitian ini adalah deiksis, jenis-jenis deiksis dan bagaimana deiksis digunakan di naskah film “Gnomeo and Juliet” dan sumber datanya adalah naskah

:  Menunjukkan perilaku responsif dan pro-aktif dan menunjukkan sikap sebagai bagian dari solusi atas berbagai permasalahan listrik statis dan dampaknya bagi kehidupan

Acara dihadiri oleh Dekan FKG UNAIR dan disaksikan oleh seluruh Civitas akademika, Dalam sambutannya Dekan menegaskan walau RSGM bersifat mandiri, namun FKG UNAIR akan

Berdasarkan gambar 4.2, didapatkan jumlah kasus keganasan nasofaring terbanyak terdapat pada RSUD Arifin Achmad, yaitu sebanyak 46,2%, lalu diikuti Laboratorium

Tindakan ini harus dijiwai dengan rasa kasih sayang yang bersifat mendidik terhadap mereka, oleh karena perilaku nakal yang mereka perbuat adalah akibat produk

Hal ini ditunjukkan dengan meningkatnya hasil belajar, pada Pre test dari 22 siswa belum ada yang mencapai Standar Ketuntasan Minimal (SKM) ≥75, siklus I meningkat menjadi 5 dari 22