Upload
yasar-celep
View
237
Download
0
Embed Size (px)
Citation preview
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
1/25
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
2/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
Makaleler
Hz Ayarl oklu DC MotorKontrol
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
3/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
Hz Ayarl oklu DC Motor
KontrolYazan: Mustafa Tufaner, Dzenleyen: Canol Gkel - 18 Kasm 2006Giri
Robotikte ska kullanlabilecek bir uygulama ile karnzdayz. Nasl ki uygulamalarnzda
robotunuzun beynine mikrodenetleyici yerletiriyorsunuz, bu beynin eli aya olarak da tabii ki
motorlar kullanacaksnz. Bu uygulama ile robotumuza, beyniyle elini nasl kontrol edebileceini
reteceiz. Tabii hangi hzda hareket ettireceini dardan gelen kullanc komutlar
belirleyecek. Bu hz da bilmesi iin kullancya 7-segment'ler araclyla motorlarmzn hzn
gstereceiz. oklu motor olmas amacyla uygulamamzda 3 motor ve bu 3 motorun hzn
gsterecek 6 tane de 7-segment display kullanmaya karar verdik. Unutmadan; hz kullanc
belirleyecek diyorduk, onun iin de 6 tane hz arttrma ve azaltma dmesi kullanacaz.
Bu uygulamann ileriki robotik almalarda size faydasnn dokunmas dileiyleJ iyi
almalar
Pulse Width Modulation (Darbe Genilii Modlasyonu)
Balang olarak motorlarn hzn nasl kontrol edebileceimizi incelemeliyiz.Kullandmz
mikrodenetleyicinin klarndan logic olarak 1 veya 0, elektriksel karl olarak da +5V veya
0V alabiliriz. Fakat bu uygulamamzda olduu gibi, eitli uygulamalarda bu iki seviye arasnda
kalan herhangi bir deeri k olarak almamz gerekebilir. Bu durumda bavuracamz
yntemlerden birisi Pulse Width Modulation (PWM)dr.
PWM rneklemek gerekirse; dz bir sokakta kay kay ile kayan bir ocuu dnn. Ayayla
yeri ittii an +5V, kayan zerinde gittii an da 0V olarak kabul edelim. Bu ocuun ivmesini
belirleyecek olan faktr birim zamanda yeri ne kadar ittii olacaktr. Eer yeri srekli itiyorsa
ivmesi maksimum (yani bizim sistemimize gre +5V) eer yeri hi itmiyorsa ivmesi 0
(sistemimize gre ise 0V) olacaktr. Fakat bu ocuk toplam zamann yars kadar sre ile yeri
itiyorsa ortalama ivmesi maksimum ivmesinin %50si olacaktr. Sistemimize dnecek olursak; bu
bizim iin ortalama olarak 2.5V ka denk gelmektedir. Grld gibi ocuun
(mikrodenetleyicinin) yeri ittii (+5V k verdii) srenin toplam sreye oran ocuun
ortalama ivmesini (mikrodenetleyicinin ortalama kn) verecektir.
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
4/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
ekilde de grld gibi toplam 10 birim zamann 6 biriminde k olarak +5V verilmitir.
Ortalamak=5V6Birim
10Birim=5V%60=3V
Denklemde verildii gibi maksimum k deerinin %60n ortalama k deeri olarak
gryoruz. %60PWM oran olarak da adlandrmamzda bir saknca yoktur.
PWM Oran=MaksimumOlma Sresi
Toplam Sre
Uyguladmz k sinyalinin Vmaks olma oran arttka ortalama k voltajmz da artacaktr.
k sinyalinin periyodunu motorun tepki sresinden ksa setiimiz vakit, k sinyalinin
ortalama deerini motor zerinde duraan bir biimde grebiliriz. Ancak setiimiz periyodun
ok uzun olmas durumunda sinyaldeki deiimleri motor zerinde dorudan grebiliriz, bu da
motorun kesik kesik hareket etmesine neden olacaktr.
Motoru dorudan mikrodenetleyicinin kna baladmz zaman mikrodenetleyicinin
kndan motoru istediimiz hzda evirecek kadar akm alamayz. k +5V olarak kabul eden
mikrodenetleyici gerekli akm salamaya alacak ancak baarl olamaynca kullanlamaz hale
PWM = %60
21 3 4 5 6 7 8 9 100
t
Gerilim (Volt)
5
3
0
Vort
= 3V
PWM = %80
21 3 4 5 6 7 8 9 100
t
Gerilim (Volt)
Vmaks
4
0
Vort
= 4V
PWM = %20
21 3 4 5 6 7 8 9 100
t
Gerilim (Volt)
Vmaks
1
0
Vort
= 1V
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
5/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
gelecektir. Ayn zamanda Vmaks olarak +5V kullanmak yerine daha kk yada daha byk voltaj
ile motoru srmek isteyebiliriz. Bu yzden mikrodenetleyici ile motor arasnda balant kuracak
bir elemana ihtiyacmz var. Ara eleman olarak motor srmek iin hazrlanm olan motor src
entegreleri kullanabileceimiz gibi transistrlerin anahtarlama zelliinden de faydalanabiliriz.
Temel olarak transistrden bahsetmek gerekirse; NPN tipi transistrn base'i ile emiter'i arasna
0,6V (ve fazlas) uygulanrken transistorn collector' ile emiter'i arasnda akm geii (balant)
salanr. Eer base ile emiter aras gerilim 0,6V'un altna inerse, collector ve emiter arasndaki
akm geii kesilir. Bu sayede transistre verdiimiz sinyalin ekil olarak aynsn motor zerinde
grebiliriz. Ancak motor zerinde grlebilecek Vmax motorun dier ucunun bal olduu voltaj
kaynana gre deiir. Bu zelliiyle k gc +5V olan mikrodenetleyici ile +12Vla alan
bir motoru srebiliriz. imdi bu k sinyallerini, kullandmz mikrodenetleyici ile nasl
verebileceimize bakalm.
Motor src entegre
VSS
M1
giri 1
M1
k 2
M1
giri 2
M1
k 1
M1
aktifletirme
Toprak
M2
giri 1
M2
giri 2
M2
k 1
M2
k 2
M2
aktifletirme
Toprak
L293D
Mikrodenetleyicik
+12V
1K
Motor kn 1 yap
4 birim sre bekle Motor kn 0 yap
1 birim sre bekle
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
6/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
Yukarda verilene benzer bir algoritma mikrodenetleyiciden almak istediimiz sinyali verebilir
(PWM oran %80). Verilen algoritmada bekleme srasnda istediiniz ilemleri yapmak mmkn.
Beklemeler esnasnda 7-segment display'lere motor hzlarn yazabiliriz.
Motor PWM kontroln saladmz bu algoritmay biraz daha sadeletirelim.
lk yazdmz algoritma 4 seviyeden oluuyordu ama ikinci yazdmz algoritma 3 seviyeden
oluuyor. Bylelikle programmz fazla kodlardan kurtarm olduk. nceden de deindiimiz
gibi mikrodenetleyicinin yapaca tek i bu PWM' ayarlamak olmayacaktr. Bu yzdenalgoritmamz biraz daha genelletirmemiz ve dier ilemleri de hesaba katacak ekilde
geniletmemiz gerekiyor.
Mikrodenetleyicinin dier ilemlerde (2. ve 3. motorun PWM k, 7-segment display'lerde
gsterim, buton kontrol) sabit vakit harcadn ve geen toplam zamann da birim zaman
olduunu kabul edelim. Bu durumda motor k 1 (+5V) iken 4 defa (x defa), motor k 0
olunca 1 defa (y defa) dier ilemleri yapacak ve tekrar motor pwm k ayarlamasn yapacak.
Motor kn tersle
Motor k ne?k = 0 k = 1
ybirim sre bekle xbirim sre bekle
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
7/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
Bu aamada bir nceki algoritmada bulunan motoru tersle ilemi ile motor kn kontrol etme
aamasnn yerini deitirdik. Motor k ne diye sorduumuzda eer k 1 ise sayaca attmz
deer motorun sfr kalma sresi olmaldr nk hemen bir sonraki ilemde motoru tersleyeceiz.
Motor k ne?
Hayr
Sayac 1 azalt
Saya 0 m?
Saya = 100 - x = y
Evet
Saya = x
k = 1
k = 0
Dier lem ler(birim sre)
Motoru tersle
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
8/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
Eer motor k 1 ise mikrodenetleyici Saya deikeninin iine y deerini atayacak ve ardndan
motor kn tersleyerek 0 yapacaktr. Mikrodenetleyici, dier ilemleri gerekletirdikten sonra
Saya deikenini bir azaltacak, deiken 0 olana kadar dier ilemleri tekrarlayacaktr. Yani
mikrodenetleyici Saya deikeni 0 olana kadar toplamda y kere dier ilemleri yapacak. Dierilemlerde harcadmz sreyi birim sre olarak kabul etmitik. Bu durumda motor kmz
terslenip 0 olduktan sonra y birim sre beklemi olacaz.
Algoritmamz bir aama daha ilerletmi olduk. Artk dier ilemler diye belirttiimiz ksmda
istediimiz ilemleri yapabileceiz.
Hz (Vort) leimizi 100 olarak alacak olursak Y=100-X olacaktr. kn 1 olma oran %80 ise
0 olma oran %20'dir. Baka bir deyile, 80 birim zaman boyunca k Vmaks ise 20 birim zaman
boyunca 0'dr. X bize VortVmaks
orann, yani hz oranmz verdiine gre X'i bundan sonra hz
deikeni olarak tanmlayabiliriz. X'e verdiimiz deer arttka PWM'deki 1 sresi artacak ve bu
art da beraberinde motora uygulanan ortalama voltaj ykselterek motorun hzn arttracaktr.
Artk uygulamamzda kullanacamz PWM algoritmasnn sonuna geldik. En son yazdmz
algoritma 2 PWM deeri hari tm PWM'larda sorunsuz alacaktr. PWM oran 0 veya 100
olduunda algoritmada sorun olmamas iin bu iki durum iin zel ekleme yapmalyz.
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
9/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
Bylelikle uygulamamzda PWM k retecek algoritmamz yazm olduk. Kesikli izgilerle
belirtilen ksm motorlara bal olarak deien deikenleri deitirerek 2. ve 3. motor iin
tekrarlayabiliriz. Makalenin buradan sonraki blmlerinde kesikli izgilerle belirtilen ksm 3
motoru da kontrol ettiimizi kabul ederekmotor kontrololarak adlandracaz.
Motor 1 kne?
Hayr
Motor 1 sayacn1 azalt
Saya 0 m?
Motor 1 Sayac =100 - Hz 1 = y
Evet
Motor 1 Sayac =Hz 1 = x
k = 1
k = 0
Dier lem ler(birim sre)
Motor 1'i tersle
Hz 1 = 100?Evet
Motor 1 kn 0yap
Hz 1 = 0?Evet
Motor 1 kn 1yap
Hayr Hayr
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
10/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
7-Segment Display'lerde Gsterim
7-segment display'lerin yaps ve de oklu 7-segment'lerin kullanm hakkndaki bilgilere
http://robot.ee.hacettepe.edu.tr/v5.0/dosyalar/makaleler/9_geri_sayim_cihazi.pdfadresindeki
makalemizden ulaabilirsiniz. Yzeysel olarak bahsetmemiz gerekirse, 7-segment display
ierisinde 8 adet led bulunur. Bu led'lerin 7 tanesi ekranda saynn gsteriminde kullanlrken 1
tanesi ondalk noktas olarak kullanlr. Led'lerin iletime geerek k verebilmesi iin led'in
anoduna +5V, katotuna 0V vermeniz gerekmektedir. 7-segment'lerde bulunan led'lerin bu iki
bacandan birisi ortak balanmtr. rnein ortak katot 7-segment display ierisindeki led'lerin
katot bacaklar ortaktr. Bu ortak bacaa 0V verdiiniz zaman hangi led'e +5V verirseniz 7-
segment'in o ksm yanacaktr.
oklu 7-segment kullanrken alan 7-segment'i ortak bacana verdiimiz voltaj ile
deitirebiliriz. rnek olarak 3 tane ortak katotlu 7-segment dnn. Sadece ortak bacana 0V
verdiimiz 7-segment'ler alacaktr. Dier 7-segmentler ise snk kalacaklardr. Yani
programda yapacamz ey, 7-segment'te hangi say gsterilecekse o gsterime uygun bir ekilde
7-segment'in giri ularna +5V yada 0V vermek ve de alacak olan 7-segment'in ortak bacana
0V, dier 7-segmentlerin ortak bacana +5V vermek olacaktr. Bu ilem sra ile dier 7-
segment'lere de uygulanmaldr.
Uygulamamzda 3 motorun hzlarn gstermek istiyoruz. Hz leini nceden 100 kabul
ettiimiz iin her motorun hzn gsterebilmek iin 2'er adet 7-segment display'e ihtiyacmz
olacaktr. Toplamda kullanacamz 7-segment says bylece 6 oldu.
Bu 7-segment'lere 0-5 aras sra ile numara verelim. Sra numaras hangi 7-segmenti
altracamz ve hangi rakam yazdracamz belirtecek. Gstergeleri altrma srasnn
0dan 5e doru olduunu kabul edersek motor hznn nce onlar basama sonra da birler
basama ekrana yazdrlacak demektir. Hazrlayacamz algoritmada hzlarn onlar basaman
http://robot.ee.hacettepe.edu.tr/v5.0/dosyalar/makaleler/9_geri_sayim_cihazi.pdfhttp://robot.ee.hacettepe.edu.tr/v5.0/dosyalar/makaleler/9_geri_sayim_cihazi.pdf8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
11/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
ve birler basaman hesaplayacak ilemler de yapmalyz nk hz deikenimizde lek olarak
100 kullanmtk. Eer 1. motorun hz 67 gibi bir deerse, hazrlayacamz algoritma 0 nolu 7-
segment'te 6 rakamn, 1 nolu 7-segment'te 7 deerini gstermelidir. nce onlar basaman
ekranda gstereceimiz iin bu say deerlerini her motorun onlar basaman gsterirkenhesaplamamz bizim iin daha kolay, programmz iin daha kullanl olacaktr.
Birler basamanda
Motor Kontrol
Gsterim s rashangisinde?
Onlar basamangs tergeye yazdr
Onlar basamanda
Gsterge s rasn 1 arttr
Birler basamangs tergeye yazdr
Onlar ve birler
basaman hesapla
Sradaki 7-segmentdisplay'i aktif yap
Dier ilemler(birim sre 2)
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
12/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
Bu algoritma iimizi grecektir ancak ok hzl bir ekilde gsterge srasn deitirirse saylar 7-
segment'lerde snk grnecektir. Ayn ekilde gsterge sras ok yava deiirse saylar 7-
segment'lerde sra ile grnecektir. Bu iki istemediimiz koulu ortadan kaldrmamz gerekiyor.
lk koul iin motorda kullandmz yntemi kullanabiliriz. Bir saya yardm ile belli defa motorkontrol + dier ilemleri yaptktan sonra gsterge deiimini gerekletiririz. kinci koul iinse
dier ilemler + motor kontrol kodlarnn ok uzun sren ilemler olmamas gerekmektedir.
4MHz ile alan mikrodenetleyicimizin 1 ilemi 1 sde yaptn dnecek olursak yaptmz
uygulama zaten ok ksa srecektir. O halde yeni algoritmamz yazalm.
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
13/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
Birler basamanda
Motor Kontrol
Gsterim s rashangisinde?
Onlar basamangs tergeye yazdr
Onlar basamanda
Gsterge s rasn 1 arttr
Birler basamangs tergeye yazdr
Onlar ve birlerbasaman hesapla
Sradaki 7-segmentdisplay'i aktif yap
Dier ilemler(birim sre)
Gsterge sayac 0 m?
Evet
Gsterge sayacna
deer ata
Hayr
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
14/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
Buton Kontrol
Gsterge algoritmamz da yazdmza gre geriye sadece dier ilemler diye tabir ettiimiz
blmde hz butonlarn kontrol etmek kald. Hz butonlarn kontrol edeceiz, eer bir motorun
hz arttr butonuna baslmsa ve o motorun hz zaten 100 deilse motorun hz deikenini
arttracaz. Eer hz azalt butonuna baslmsa bu durumda da hzn 0 olup olmadn kontrol
ettikten sonra hzn azaltacaz. Bu ilem bu kadar basit.
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
15/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
nceki algoritmalarda yaptmz gibi buton kontrol aamasna da bir saya yerletirmeliyiz.
Mikrodenetleycimiz ok hzl ilem yapt iin kullanc elini butondan ekemeden hz
Evet
7-segmentdisplay'de gsterim
Hz azalt butonunabasld m?
Hayr
Hz azalt
Hz arttr butonunabasld m?
Hayr
Motor Kontrol
Evet
Hzn 0 veya 100olup olmadn
kontrol et
Hz 100 m?
Hz 0 m?
Hayr
Hayr
Hz arttr
Evet
Evet
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
16/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
deikenimiz 100e ulaabilir. Bu yzden bir saya yardmyla belirli srede bir butonlar kontrol
edebiliriz. Bu sayac da ekledikten sonra programmzn algoritmasn bitirdik demektir.
Algoritmamzla ilgili deinmemiz gereken ok nemli bir nokta daha var. Dikkat ederseniz dier
ilemlerolarak tabir ettiimiz ilemleri yani motor kontrol srasnda buton kontrol + 7-segmentgsterim, 7-segment gsterim srasnda motor kontrol + buton kontrol, buton kontrol srasnda
ise motor kontrol + 7-segment gsterim ilemlerini hep sabit sreli olarak kabul ettik ve
programmz ona gre hazrladk. 7-segment gsterimde pek nemli olmasa da PWM k
rettiimiz motor kontrol ilemlerinde zamanlama olduka nemlidir. Bu yzden hazrladmz
program ana dngde 1 tur attnda her koulda ayn zaman harcamaldr. Bunun iin de
kullandmz sayalar sfrlanp motor, gsterim, buton kontrolilemlerine girse de girmese de
ayn zamanda dngy tamamlayabilmesi iin gerekli yerlere gereken gecikme ilemlerini
koymalyz. Bu gecikmelerin uzunluunu program yazdmz zaman kontrol edebiliriz.
Assembly Programlist p=16f877A
#include
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC &
_WRT_OFF & _LVP_OFF & _CPD_OFF
; PORTA motorlar, PORTB 7-segment, PORTC butonlar, PORTD 7-segment degisimi
w_temp EQU 0x71
status_temp EQU 0x72
pclath_temp EQU 0x73
BUTONSAYACI EQU 0X20
KONTROLTEMP EQU 0X21
BUTONTEMP EQU 0X22
HIZ1 EQU 0X23
HIZ2 EQU 0X24
HIZ3 EQU 0X25
M1SURESI EQU 0X26
M2SURESI EQU 0X27
M3SURESI EQU 0X28
GOSTERGE_SIRASI EQU 0X29
BIRLER_BAS EQU 0X2A
ONLAR_BAS EQU 0X2B
GOSTERGE_SAYAC EQU 0X2C
TEMP EQU 0X2D
#DEFINE M1 PORTA, 0
#DEFINE M2 PORTA, 1#DEFINE M3 PORTA, 2
#DEFINE HIZART1 PORTC, 0
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
17/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
#DEFINE HIZAZ1 PORTC, 1
#DEFINE HIZART2 PORTC, 2
#DEFINE HIZAZ2 PORTC, 3
#DEFINE HIZART3 PORTC, 4
#DEFINE HIZAZ3 PORTC, 5
ORG 0x000
NOP
goto main
ORG 0x004
movwf w_temp
movf STATUS,wmovwf status_temp
movf PCLATH,w
movwf pclath_temp
movf pclath_temp, w
movwf PCLATH
movf status_temp, w
movwf STATUS
swapf w_temp, f
swapf w_temp, wretfie
LUKAP
ADDWF PCL,F
RETLW B'00111111'
RETLW B'00000110'
RETLW B'01011011'
RETLW B'01001111'
RETLW B'01100110'
RETLW B'01101101'RETLW B'01111101'
RETLW B'00000111'
RETLW B'01111111'
RETLW B'01101111'
RETLW B'10000110' ; 10 ise 1. eklinde grlecek.
GOSTERGE_GECIKME_TAMAMLAMA
MOVWF TEMP
MOVLW D'245'
ADDWF TEMP,F
GOTO $+1
NOP
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
18/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
INCFSZ TEMP
GOTO $-3
RETURN
ONMIKROGECIKMEMOVLW D'1'
MOVWF 0X74
DECFSZ 0X74
GOTO $-1
GOTO $+1
RETURN
BIRLER_GECIKME
MOVLW D'29'
MOVWF TEMPDECFSZ TEMP
GOTO $-1
GOTO BIRLER_GOSTER
GOSTERGEYE_YAZDIR
MOVWF TEMP ; Bu altprograma girdiimizde her seferinde W'da bir
; hz deeri bulunacaktr. Bunu TEMP deikenine
; atyoruz.
CLRF ONLAR_BAS ; Gerekli deikenler sfrlanyor.
CLRF BIRLER_BASMOVLW D'10' ; W'ya 10 deerini verdik.
SUBWF TEMP, F ; TEMP'ten 10 deerini karp TEMP'in iine
; yazyoruz. PIC'in komutlar arasnda blme
; ilemi olmad iin karma ilemini
; kullanarak blme yapyoruz diyebiliriz. Ka
; karma ileminde sonu pozitifse bu bize hz
; deikenlerimizin birisinin onlar basaman
; verecek.
BTFSS STATUS, C ; Sonu negatif mi?
GOTO $+3 ; Evet, 3 satr aadan devam et.INCF ONLAR_BAS ; Hayr, ONLAR_BAS deikenini bir artr.
GOTO $-4
ADDWF TEMP, W ; Son ilemde a saysndan 10 karnca sonu negatif
; olmutu. Demek oluyor ki a says 10'dan kk yani
; bizim birler basamamz. TEMP'te bulunan negatif
; sayya W'da bulunan 10'u eklersek birler basaman
; buluruz.
MOVWF BIRLER_BAS ; Birler basaman da BIRLER_BAS deikenine yazdk.
; Bu noktaya kadar gsterge hesaplamalarn yaptk.
; Grld gibi herhangi bir gsterme ilemi
; yaplmad. Sra ona geldi.
MOVFW ONLAR_BAS ; W'ya onlar basaman attk ve 2 komut satr aa
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
19/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
; indik.
CALL GOSTERGE_GECIKME_TAMAMLAMA
MOVFW ONLAR_BAS
GOTO $+2
BIRLER_GOSTER
MOVFW BIRLER_BAS ; Eer onlar basaman W'ya atmsak program bu satr
; okumayacak.
CALL LUKAP ; W'daki deer LUKAP tablosuna gnderildi.
MOVWF PORTB ; LUKAP tablosundaki deeri PORTB'ye yazdrdk.
GOTO GOSTERGEYE_DEVAM
KONTROL
BCF KONTROLTEMP, 0
BCF KONTROLTEMP, 1 ; Deerler sfrland.BTFSC STATUS, Z ; Kontrole gonderilen hz deeri sfr m?
BSF KONTROLTEMP, 1 ; Evet, KONTROLTEMP'in 1. bit'ini 1 yap.
SUBLW D'100'
BTFSC STATUS, Z ; Hz'dan 100 kar ve sfr m diye kontrol et.
BSF KONTROLTEMP, 0 ; Evet, KONTROLTEMP'in 0. bitini 1 yap. Yani hz
; 100'm
RETURN
HIZBUTONKONTROL
MOVFW HIZ1CALL KONTROL ; HIZ1'i kontrole gnderiyoruz (kontrole baknz).
BTFSC HIZART1 ; HIZ1'i arttr butonu basl deilse 1 satr atla,
; baslysa aadaki komutu ile.
BTFSC KONTROLTEMP, 0 ; HIZ1 100 m? 100 ise aadaki komutu ile,
; deilse bir satr atla.
GOTO $+2
INCF HIZ1 ; HIZ1 100 ise bu komut ilenmeyecek.
BTFSC HIZAZ1 ; HIZ1'i azalt butonu basl m?
BTFSC KONTROLTEMP,1 ; HIZ1 sfr m? Sfrsa bir aadaki satr; ile, deilse bir satr atla.
GOTO $+2
DECF HIZ1 ; HIZ1 sfrsa bu komut ilenmiyor.
MOVFW HIZ2
CALL KONTROL
BTFSC HIZART2
BTFSC KONTROLTEMP, 0
GOTO $+2
INCF HIZ2
BTFSC HIZAZ2
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
20/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
BTFSC KONTROLTEMP, 1
GOTO $+2
DECF HIZ2
MOVFW HIZ3CALL KONTROL
BTFSC HIZART3
BTFSC KONTROLTEMP,0
GOTO $+2
INCF HIZ3
BTFSC HIZAZ3
BTFSC KONTROLTEMP,1
GOTO $+2
DECF HIZ3NOP
RETURN
main
BCF STATUS, RP0
BCF STATUS, RP1
CLRF PORTA
CLRF PORTB
CLRF PORTC ; Portlar sfrland.BSF STATUS, RP0
CLRF TRISA
CLRF TRISB
CLRF TRISD
MOVLW D'255'
MOVWF TRISC ; Gerekli ynlendirmeler yapld.
MOVLW B'0111'
MOVWF ADCON1 ; PORTA varsaylan olarak analog giri olarak
; ayarl. PORTA'y k yaptktan sonra emn olmak
; iin A/D modln kapattk.BCF STATUS, RP0
BCF ADCON0, 0
MOVLW D'32'
MOVWF PORTD
MOVLW D'6'
MOVWF TEMP
MOVLW H'23'
MOVWF FSR
MOVLW D'50'
MOVWF INDF
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
21/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
INCF FSR
DECFSZ TEMP
GOTO $-4 ; Pepee birka deikene ayn deeri atamak gerekiyordu
; FSR'yi de programda kullanm olalm dedim.
MOVLW D'250'MOVWF GOSTERGE_SAYAC
MOVLW D'250'
MOVWF BUTONSAYACI
CLRF GOSTERGE_SIRASI
CLRF BIRLER_BAS
CLRF ONLAR_BAS
ANADONGU
; Bu anadng her tamamlandnda her koulda eit sre gemektedir. Bu sre
; 228us (4MHz kristal iin)'dir. Biraz sonra greceiniz BUTONSAYACI
; deikeni ka 228 mikrosaniyede bir butonlar kontrol edeceimizi
; belirlemeye yarar. Daha sonra greceiniz GOSTERGE_SAYAC deikeni de
; benzer bir ilem gerekletirmektedir.
DECFSZ BUTONSAYACI
GOTO $+5CALL HIZBUTONKONTROL ; (65 mikrosaniye) bu rutinde butonlar kontrol
; ediliyor. Aklamalar iin alt rutine baknz.
MOVLW D'250'
MOVWF BUTONSAYACI ; Sayaca tekrar deer verdik.
GOTO $+7 ; Ana dngye devam ediyoruz.
MOVLW D'5' ; Bu satra gelmesi demek butonlar kontrol etmemi
; olmamz demek. Ana dngnn her koulda eit sreyi
; vermesi iin buton kontrol ederek geirdiimiz sreyi
; butonlar kontrol etmediimiz zaman da harcamalyz.
; bu yzden bu noktaya gecikme koyuyoruz.MOVWF BUTONTEMP
CALL ONMIKROGECIKME
DECFSZ BUTONTEMP
GOTO $-2
GOTO $+1
; MOTOR RUTNLER
; Bir motorun PWM'n belirleyen motorun ak kalma ve kapal kalma
; sreleridir. Ak kalma sresi/tm sre bize motorun PWM'n verecektir.
; Ana dngnn bu noktaya srekli eit srede geleceini dnrsek ana
; dngnn att ka turda kapal, ka turda ak kald ayn ekilde bize
; PWM' verecektir. M1SURESI deikeni ana dng bu noktaya her geldiinde
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
22/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
; bir azalyor ve ka tur sonra girmesini istemisek o noktada sfrlanp
; motoru 1 yada 0 yapyor. Motoru 1 veya 0 yaptktan sonra motorun ak
; ya da kapal kalma sresine gre tekrar M1SURESI degiskenine say atyor.
; Ana dng gerekli sayda tur attktan sonra yukardaki ilem tekrarlanyor.
; Programn bu ksmnn da her koulda eit srede ilenmesi gerekmektedir.; Bunun iin gerekli yerlere gecikme yerletirdik.
MOTOR1ACKAPA
DECFSZ M1SURESI
GOTO MOTOR1ACKAPASONU ; Eer motorda deiiklik yaplmayacaksa burada
; harcayaca zaman geirmek zere gecikmeye
; gidecek.
MOVFW HIZ1 ; Hz orann W'ya attk.
BTFSC M1 ; Motorun durumunu kontrol ediyoruz. Eer motor aksa
; M1ACIKTA'ya kapalysa M1KAPALI satrlarna gidecek.GOTO M1ACIKTA
M1KAPALI
BTFSC STATUS, Z ; W'daki deeri yani hz orannn sfr olup olmadn
; kontrol ediyoruz. Eer sfrsa motoru ayoruz.
; Programn ilerleyen satrlarnda deilini
; alma (tersleme) ilemi yaptmz iin motoru
; ayoruz. 2 mikrosaniye sonra tekrar kapayacaz.
BSF M1 ; Motorun hz oran 0'sa deilini alma ileminde motorun
; sfr kalmas iin bu noktada motoru atk.
GOTO SON1 ; W'daki deerimiz HIZ1 iken SON1'e gidiyoruz.M1ACIKTA
SUBLW D'100' ; Motorun hz orannn 100 olup olmadn kontrol
; ediyoruz. Hz oran 100 ise yukardaki aklamaya
; benzer bir ekilde deilini alma ilemi ncesi
; motoru kapyoruz.
BTFSC STATUS, Z
BCF M1 ; W'daki deerimiz 100-HIZ1 iken SON1'e gidiyoruz
SON1
MOVWF M1SURESI ; W'daki deerimiz ya HIZ1'e yada 100-HIZ1'e eittir.
; Eer motorkapal ksmndan geliyorsak W'da HIZ1 (yani; ak olma oran); motor aktan geliyorsak 100-HIZ1
; (kapal olma oran) bulunuyor. Bu deerleri
; M1SURESI'ne atayarak motorun ana dngnn ka turunda
; 1 yada 0 olacan ayarlyoruz.
MOVLW B'1'
XORWF PORTA ; Motor 1'in bulunduu pin terslendi.
GOTO MOTOR2ACKAPA
MOTOR1ACKAPASONU
CALL ONMIKROGECIKME ; Eer motorda deiiklik yaplmayacaksa yukarda
; harcayaca zaman burada harcayacak.
NOP
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
23/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
MOTOR2ACKAPA
DECFSZ M2SURESI
GOTO MOTOR2ACKAPASONU
MOVFW HIZ2
BTFSC M2GOTO M2ACIKTA
M2KAPALI
BTFSC STATUS, Z
BSF M2
GOTO SON2
M2ACIKTA
SUBLW D'100'
BTFSC STATUS, Z
BCF M2
SON2MOVWF M2SURESI
MOVLW B'10'
XORWF PORTA
GOTO MOTOR3ACKAPA
MOTOR2ACKAPASONU
CALL ONMIKROGECIKME
NOP
MOTOR3ACKAPA
DECFSZ M3SURESIGOTO MOTOR3ACKAPASONU
MOVFW HIZ3
BTFSC M3
GOTO M3ACIKTA
M3KAPALI
BTFSC STATUS, Z
BSF M3
GOTO SON3
M3ACIKTA
SUBLW D'100'BTFSC STATUS, Z
BCF M3
SON3
MOVWF M3SURESI
MOVLW B'100'
XORWF PORTA
GOTO GOSTERGE
MOTOR3ACKAPASONU
CALL ONMIKROGECIKME
NOP
; Tek tek atmz iin gstergelere numara verdik.
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
24/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
; GOSTERGE_SIRASI = 0 ise HIZ1 onlar basama
; GOSTERGE_SIRASI = 1 ise HIZ1 birler basama
; GOSTERGE_SIRASI = 2 ise HIZ2 onlar basama
; GOSTERGE_SIRASI = 3 ise HIZ2 birler basama
; Yani GOSTERGE_SIRASI'nn 0. biti 0 ise onlar basama, 1 ise birler; basama gsteriliyor. 1. ve 2. bit ise hangi motor olduunu belirliyor.
GOSTERGE
DECFSZ GOSTERGE_SAYAC ; nce buton kontrolnde yaptmz gibi
; ana dngnn ka turda bir gsterge
; rutinine gireceini belirlemek iin
; GOSTERGE_SAYAC deikenini kullandk.
GOTO GOSTERGE_GECIKMESI ; Gsterge ilemlerini yapmayacaksa burada
; harcayaca sreyi gidip gecikmede
; harcayacak.BTFSC GOSTERGE_SIRASI, 0 ; Gsterge srasnn tek mi ift mi
; olduunu kontrol ediyoruz. Yukarda da
; denildii gibi tekse birler basama
; iftse onlar basama grntlenecek.
GOTO BIRLER_GECIKME ; Gerekli hesaplamalar onlar basaman
; grntlerken yapld iin birler basaman
; grntlemek daha ksa sryor. O yzden birler
; basaman grntlemeden nce araya gecikme
; koyuyoruz.
MOVFW GOSTERGE_SIRASI ; Eer onlar basaman grntleyeceksek; (yani gsterge sras iftse) gsterge srasn
; W'ya atyoruz.
ADDWF PCL ; Eer HIZ1 gorntlenecekse W'da 0, HIZ2 ise W'da 2,
; HIZ3 ise W'da 4 bulunacak. Pepee GOTO kullanmak
; yerine ADDWF PCL komutu ile gerekli dallandrma
; saland.
MOVFW HIZ1
GOTO GOSTERGEYE_YAZDIR ; HIZ1'i W'ya atayp yazdrma ilemine
; devam ediyoruz
MOVFW HIZ2GOTO GOSTERGEYE_YAZDIR
MOVLW D'250'
ADDWF GOSTERGE_SIRASI ; Gsterge srasn sfrlyoruz diyebiliriz.
; nk u anda gsterge srasnda 4 deeri var
; ve HIZ3 onlar basaman gsteriyoruz. Ana
; dng tekrar gsterge rutinine girince
; (HIZ3'n birler basaman grntlemek iin)
; GOSTERGE_SIRASI deikeni 5 olacak ama bu
; noktada 250 eklersek gstergeye tekrar
; girdiinde 255 olacak ve bir sonraki sefere de
; sfrlanacak.
MOVFW HIZ3
8/2/2019 11 Hiz Ayarli Coklu Dc Motor Kontrolu
25/25
HUNRobotX - Makaleler - Hz Ayarl oklu DC Motor Kontrol
GOTO GOSTERGEYE_YAZDIR ; Program yukarlarda bulunan
; GOSTERGEYE_YAZDIR'dan devam etmektedir.
GOSTERGEYE_DEVAM
RLF PORTD
MOVFW PORTDBTFSC PORTD,6
MOVLW D'1'
MOVWF PORTD
MOVLW D'255'
MOVWF GOSTERGE_SAYAC ; Ana dngnn ka turda gireceini belirleyen
; register (nceden aklamtk).
INCF GOSTERGE_SIRASI
GOTO ANADONGU
GOSTERGE_GECIKMESI
NOP ; Program gstergeye girmemise vakit harcamak iin gecikme
; program.
MOVLW D'36'
MOVWF TEMP
DECFSZ TEMP
GOTO $-1
GOTO ANADONGUEND