11 Hiz Ayarli Coklu Dc Motor Kontrolu

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.pdf
  • 8/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