Searching

Belum menemukan yang Anda cari, mungkin kata kunci Anda kurang tepat atau masih salah. Coba masukkan lagi kata kunci Anda yang baru pada fasilitas searching di Blog ini untuk lebih lengkap, search in database this blog :

Perhatian

Untuk tampilan gambar yang lebih jelas, Anda dapat klik langsung pada gambar yang ada. Selamat menjelajah !
More Read :

Tuesday, April 10, 2007

FEED BACK CONTROL DENGAN PULSE WIDTH MODULATION ( PWM )

Aplikasi berikut digunakan untuk pengendalian kecepatan putaran ( RPM ) motor DC
;1. Setting RPM diatur melalui potensio yang selanjutnya tegangan ini disebut
; analog0 yang merupakan tegangan setting
;2. RPM motor dapat dideteksi dengan menggunakan tachometer yang selanjutnya
; disebut sebagai analog1
;3. Agar dapat diolah oleh mikrokontroler maka diperlukan ADC dan multiplexer
;4. Dengan menggunakan instruksi JC dan JZ maka dilakukan proses perbandingan
; tegangan analog0 dan analog1
;5. Disinilah akan diambil keputusan untuk mempercepat atau memperlambat RPM
; dengan mengatur PWM yang dikeluarkan oleh port P3.0 agar sesuai dengan setting


Kode Assemblynya Ada di bawah:




dCycle equ 30h
dCycleC equ 31h
count equ 32h
Analog0 equ 33h
Analog1 equ 34h
PWM bit P3.0
Channel bit P3.1
PortADC equ P0
;
DCLB equ 000h
DCUB equ 0F0h
;
KondisiMotor bit 20h
;
org 0h
ljmp start
org 0bh
ljmp Timer_Interrupt0
start: call Init_Interupsi_Timer0
clr PWM ; mematikan motor
;============================================
; RUTINE UTAMA
;=============================================
Forever: call ADC
call Update
sjmp Forever
;
;=================================================
;Subrutine Timer_Interupsi0
;=================================================
;Subrutine berikut digunakan untuk memberikan layanan interupsi timer overflow
; bila hal ini terjadi maka nilai reload TH0 akan diloadkan ke TL0
;Pada saat awal KondisiMotor = '1' sehingga bila interupsi ini ditemui maka
; akan menuju pada label motoroff dan ditandai kondisimotor = '0'
;===================================================
Timer_Interrupt0:
JB KondisiMotor,MotoroFF
Setb PWM
Mov TH0,dCycle
Setb KondisiMotor
reti
;
Motoroff:
clr PWM
mov TH0,dcycleC
clr KondisiMotor
reti
;
;===============================================
;Subrutine Init_interupsi_timer0
;Inisialisasi mode timer: timer 0 difungsikan sebagai timer 8 bit mode 2
;===============================================
Init_interupsi_Timer0:
mov TH0,#dCycle
Mov TMOD,#00000010b ; timer0 = sbg timer 8 bit, mode 2
setb ET0 ; Enable timer 0 interupsi
Setb EA ; Master Enable All Interupsi
setb TR0 ; start rock and roll timer 0
Setb KondisiMotor
mov count,#50
mov dCycle,#0
mov dCycleC,#0FFh
ret
;===============================================
;Subrutine Update - Update duty cycle
;Internal register/ RAM yang diberi label count didecrement, ketika count = 0
; maka duty cycle diupdate, shg software counter ini berfungsi agar duty cycle
; tidak berubah terlalu cepat
;=================================================
Update:
djnz count,upDone
mov A,analog1; dari referensi
mov b,analog0; dari sensor tachometer
clr c
subb a,b
jnz update1
ret
Update1:
jc decrease
call higherDC
ret
Decrease:
call lowerDC
UpDone:

ret
;
;=============================================
;Subrutine lowerDC - Menurunkan duty cycle
;Subrutine ini akan dikerjakan bila kecepatan motor melebihi setting
;=============================================
LowerDC:mov a,dCycle
cjne a,#DCLB,DecDC
ret
DecDC: dec dCycle
inc dCycleC
ret
;
;=============================================
;Subrutine HigherDC - Menaikkan duty cycle
;Subrutine ini akan dikerjakan bila kecepatan motor dibawah setting
;==============================================
HigherDC:
mov a,dCycle
cjne a,#DCUB,IncDC
ret
IncDC: Inc dCycle
dec dCycleC
ret
;
;=============================================
;Subrutine ADC - Membaca tegangan Setting dan tegangan dari tachometer
;masing-masing disimpan ke register Internal Analog0 dan Analog1
;untuk dibandingkan pada subrutine update
;=============================================
ADC: Clr channel ; Pilih channel X0 dari multiplexer 4051
mov Analog0,PortADC
Setb channel ; Pilih channel X1 dari multiplexer 4051
mov Analog1,PortADC
ret
;
end





Selamat Mencoba !



No comments:

Disclaimer


Blog ini tidak bertanggung jawab atas kesalahan atas program yang Anda download ataupun sesuatu hal yang berhubungan dengan materi-materi yang ada. Terima kasih atas saran dan kritik yang membangun. Non profit blog. Untuk lebih lanjut hub Webmaster di : agencs@yahoo.com


"All Links In This Blog Is Temporary Link"

NO SPAM AND VIOLATED CONTENT

Generated®


Banner IP Browser

Lihat gambar di bawah ini, ingin punya yang seperti ini juga. Anda bisa pasang banner ini di blog Anda atau posting Anda. Bisa deteksi IP Adress, Browser.

Tulis code ini di footer blog kamu atau posting kamu. Copy (CTRL+C) Paste (CTRL+V) at this script.
Coba Deh, Kuueereeen lho ....
 


Creative Commons License
Powered by Blogger | Created and Maintained by Generated
Blogger Beta Template by GeckoandFly and Blogcrowds | Design by Andreas Viklund
This workis licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 Malaysia License.
Best viewed in Firefox 1.5+ at 1024x768 or higher resolution
Copyright 2007 Content by BIZON network
Hosting Reseller Reviews cydots.com - Free Domains!