mikrodenetleyici uygulamalari 1

Embed Size (px)

Citation preview

T.C. MLL ETM BAKANLII

MEGEP(MESLEK ETM VE RETM SSTEMNN GLENDRLMES PROJES)

ENDSTRYEL OTOMASYON TEKNOLOJLER

MKRODENETLEYC UYGULAMALARI-1

ANKARA 2007

Milli Eitim Bakanl tarafndan gelitirilen modller; Talim ve Terbiye Kurulu Bakanlnn 02.06.2006 tarih ve 269 sayl Karar ile onaylanan, Mesleki ve Teknik Eitim Okul ve Kurumlarnda kademeli olarak yaygnlatrlan 42 alan ve 192 dala ait ereve retim programlarnda amalanan mesleki yeterlikleri kazandrmaya ynelik gelitirilmi retim materyalleridir (Ders Notlardr). Modller, bireylere mesleki yeterlik kazandrmak ve bireysel renmeye rehberlik etmek amacyla renme materyali olarak hazrlanm, denenmek ve gelitirilmek zere Mesleki ve Teknik Eitim Okul ve Kurumlarnda uygulanmaya balanmtr. Modller teknolojik gelimelere paralel olarak, amalanan yeterlii kazandrmak koulu ile eitim retim srasnda gelitirilebilir ve yaplmas nerilen deiiklikler Bakanlkta ilgili birime bildirilir. rgn ve yaygn eitim kurumlar, iletmeler ve kendi kendine mesleki yeterlik kazanmak isteyen bireyler modllere internet zerinden ulaabilirler. Baslm modller, eitim kurumlarnda rencilere cretsiz olarak datlr. Modller hibir ekilde ticari amala kullanlamaz ve cret karlnda satlamaz.

NDEKLERAIKLAMALAR ............................................................................................................... ii GR ..................................................................................................................................1 RENME FAALYET-1 .................................................................................................3 1. PIC16F877 LE LCD KONTROL .................................................................................3 1.1. PIC16F877 Mikrodenetleyici....................................................................................3 1.1.1. PIC16F877 Mikrodenetleyicinin zellikleri......................................................3 1.1.2. PIC16F877 Mikrodenetleyicinin Fiziksel ve D Yaps ................................5 1.1.3. PIC16F877 Mikrodenetleyici Hafza Organizasyonu.........................................9 1.2. LCD Yaps Ve Programlanmas.............................................................................16 1.2.1. LCD Yaps ....................................................................................................16 1.2.2. LCD Programlama..........................................................................................23 UYGULAMA FAALYET ..........................................................................................45 LME VE DEERLENDRME ................................................................................47 RENME FAALYET-2 ...............................................................................................48 2. SERVO MOTOR KONTROL .....................................................................................48 2.1. Servo Motorun Yaps ............................................................................................48 2.2. Src Devreleri ....................................................................................................52 2.1.1. Servo Motorun 555 Entegresi ile Kontrol ......................................................53 2.1.2. Servo Motorun PIC16F877 Mikrodenetleyici ile Kontrol ..............................55 UYGULAMA FAALYET ..........................................................................................59 LME VE DEERLENDRME ................................................................................61 RENME FAALYET-3 ...............................................................................................62 3. PWM KONTROL .......................................................................................................62 3.1. PWM Teorisi..........................................................................................................62 3.2. PIC16F877DE PWM zellii ...............................................................................64 3.2.1. PWM iin Kullanlan Yazmalar ....................................................................65 3.2.2. PWM Sinyalinin Donanmsal retimi.............................................................67 3.3. PIC16F877 ile Dc Motor Kontrol..........................................................................74 UYGULAMA FAALYET ..........................................................................................77 LME VE DEERLENDRME ................................................................................80 MODL DEERLENDRME...........................................................................................81 CEVAP ANAHTARLARI .................................................................................................83 KAYNAKA ....................................................................................................................97

i

AIKLAMALAR AIKLAMALARKOD ALAN DAL/MESLEK MODLN ADI MODLN TANIMI SRE N KOUL YETERLK 523EO0371 Endstriyel Otomasyon Teknolojileri Endstriyel Kontrol Teknisyenlii Mikrodenetleyici Uygulamalar 1 Bu modl ileri seviyede mikrodenetleyici uygulamalarn tantan ve rencilerin st dzey mikrodenetleyici sistem tasarmlarn gelitirmelerine ynelik bilgi ve becerilerin verildii renim materyalidir. 40/32 Mikrodenetleyici 6 modln alm olmak. Mikrodenetleyici ile ileri seviye uygulamas yapmak Genel Ama Mikrodenetleyici ile ileri seviye uygulamalarn hatasz olarak yapabileceksiniz. Amalar 1. Mikrodenetleyici ile LCD kontroln hatasz olarak yapabileceksiniz. 2. Mikrodenetleyici ile servo motor kontroln hatasz olarak yapabileceksiniz. 3. Mikrodenetleyici ile PWM motor kontroln hatasz olarak yapabileceksiniz. Ortam: Elektronik Laboratuvar Donanm: Mikrodenetleyici, mikrodenetleyici programlama kartlar, mikrodenetleyici uygulama devreleri, elektronik elemanlar, g kayna, osilaskop, sinyal jeneratr, RF Servo motor, DC motor, LCD, bread bord, el takmlar Her faaliyetin sonunda lme sorular ile renme dzeyinizi leceksiniz. Aratrmalarla, grup almalar ve bireysel almalarla retmen rehberliinde lme ve deerlendirmeyi gerekletirebileceksiniz.

MODLN AMACI

ETM RETM ORTAMLARI VE DONANIMLARI

LME VE DEERLENDRME

ii

GR GRSevgili renci, Mikrodenetleyici Uygulamalar-1 Modl ile LCD kontrol, RF Servo motor kontrol ve DC motor kontrol ile ilgili temel yeterlikleri kazanacaksnz. Kontrol sisteminde, daha nce rendiiniz PIC16F84 mikrodenetleyicisinden ok daha fazla zellikleri bulunan PIC16F877yi kullanacak ve kontrol programlarn da PIC-C dili ile gerekletireceksiniz. Bylece PIC ailesi ierisinde farkl bir mikrodenetleyiciyi ileri seviyede bir programlama dili ile programlamay reneceksiniz. Bu ereve altnda kontrol sistemlerinde bilgi paylam ilemlerinde nemli bir yere sahip olan LCD gstergenin programlanmasn, enerjiyi harekete eviren servo ve dc motorlarn ileri seviye kontrollerini de reneceksiniz. Tm bu yaplarn elektronik ve otomasyon dnyasnda ok nemli yerleri bulunmaktadr. Endstriyel Otomasyonun yer ald hemen hemen her yerde karlaabileceiniz bu sistemleri renerek ve kontrol uygulamas gerekletirerek ok deerli tecrbeler elde edecek ve st dzey tasarmlar gereletirebileceksiniz. Mikrodenetleyici Uygulamalar-1 Modl Mikrodenetleyici Uygulamalar Dersinin yedinci modldr. PIC16F84 mikrodenetleyicisinin temel zelliklerini, temel PIC komutlarn ve temel uygulamalar daha nceki modllerde renmitiniz. Bu modlde artk bilgilerinizi biraz daha ileri seviyeye tayacaksnz. Hazrlanan tm renme faaliyetleri birebir uygulamal bilgileri iermektedir. Bu modl ile farkl yapda tasarmlar gerekletirebilecek ve elektronik bilginizi gelitirebileceksiniz. Bu modlde verilen konular renirken internetten ve ilgili dier elektronik kitaplardan da faydalanmanz size deiik bilgiler ve bak alar kazandracaktr.

1

2

RENME FAALYET-1

RENME FAALYET-1AMAMikrodenetleyici ile LCD kontroln hatasz olarak yapabileceksiniz.

ARATIRMA PIC16F877 Mikrodenetleyici hakknda n aratrma yapnz. LCD eitleri ve yaplar hakknda n aratrma yapnz.

1. PIC16F877 LE LCD KONTROL1.1. PIC16F877 MikrodenetleyiciDaha nceki modllerde uygulama almalarnz PIC16F84 mikrodenetleyici ile gerekletirmitiniz. Bu modlde ise PIC ailesinin gelimi yelerinden biri olan PIC16F877 ile uygulamalar yaptrlacaktr. Bu nedenle ncelikle PIC16F877yi tanmak gereklidir. Bu ksmda PIC16F84 ile ortak olan zellikler zerinde ayrntl durulmayacak, aradaki farklar ortaya koyan bir yaklam tercih edilecektir. PIC16F877de PIC16F84de olduu gibi Harvard mimarisi kullanlmtr. Veri yolu 8 bit geniliindedir. Ayn anda veri belleine 8 bit geniliindeki bu yolla eriilirken; program belleine program yolu ya da adres yolu denilen 14 bit geniliindeki dier bir yolla eriilir. Bunun iin PIC 16F877de de komut kodlar 14 bittir. 14 bitlik program belleinin her bir adresi, bir komut koduna karlk gelir.

1.1.1. PIC16F877 Mikrodenetleyicinin zellikleri CPUsu azaltlm komut seti (RISC) temeline dayanr. Programlamada kullanlan 35 komut vardr ve her biri 14 bit uzunluktadr. Dallanma komutlar iki saykllk srede, dierleri ise bir saykllk srede uygulanr. lem hz 20 MHze kadar arttrlabilir. Veri yolu 8 bittir. 8 KB flash program bellei vardr ve yaklak 1 milyon kez programlanabilir. 368 Byte veri bellei (RAM) bulunmaktadr. 256 Byte EEPROM veri bellei vardr. Port A,B,C,D,E olmak zere 5 adet giri k portu bulunur.

3

54 adet SFR olarak adlandrlan zel ilem yazmac vardr ve bunlar statik RAM zerindedir. Pin klar PIC 16C73B/74B/76 ve 77 ile uyumludur. 14 kaynaktan kesme yapabilir. Power-on Reset (Enerji verildiinde sistemi resetleme zellii) bulunmaktadr. Power-up Timer (Power-up zamanlayc) bulunmaktadr. Osilatr Start-up Timer (Osilatr balatma zamanlaycs) bulunur. Watch-dog Timer (Beki kpei zamanlaycs) bulunur. Programla kod gvenliinin salanabilmesi zellii vardr. Devre ii Debugger (Hata ayklamakta kullanlabilecek modl) bulunur. Dk gerilimli ve sadece 2 pinle programlama zellii vardr. Enerji tasarrufu salayan uyku modu bulunmaktadr. Seimli osilatr zelliklerine sahiptir. 2.0 V 5.0 V arasnda deien besleme gerilimine sahiptir. 25 mAlik kaynak akm standardna sahiptir. Geni scaklk aralnda alabilme zellii vardr. Dk gle alabilme zellii vardr. TMR0 8 bitlik zamanlaycs 8 bit nblcl olarak kullanlabilir. TMR1 nblcl 16 bit zamanlayc ieririr. Uyuma modundayken kontrol edilebilir ve deeri arttrlabilir. TMR2 8 bitlik zamanlayc hem nblc hem de son blc sabitine sahiptir. ki adet Yakalama / Karlatrma / PWM modlne sahiptir. Yakalama ve karlatrma 16 bit, PWM ise maksimum 10 bit znrlkle yaplabilir. 10 bit ok kanall A/D eviriciye sahiptir. Ana Senkron seri port (MSSP) modl, SPI (Master mod) ve I2C (Master Slave) modlarnda kullanlabilir. Asenkron seri iletiim iin USART seri iletiim ara birimine sahiptir. Paralel haberleme iin 8 bit genilikte Paralel Slave Portu bulunur, bu port ile d RD, WR, CS kontrollerine sahiptir. BOR Reset (Brown Out Reset) zelliine sahiptir. PIC 16F84 ile PIC 16F877 mikrodenetleyiciler arasndaki farklar ekil 1.1de verilmitir.

4

ZELLKLERalma Hz st snr Program Bellei EEPROM Bellei Kullanc RAM Giri/k Port Says Zamanlayc A/D evirici Capture/Compare/PWM Seri evresel Arayz Paralel Uydu Port (PSP) USART/SCI 20MHz 8 KB Flash ROM

PIC16F877

PIC16F8420MHz 1 KB Flash ROM 64 Byte 68 Byte 13 Timer0

256 Byte 368 Byte 33 Timer0, Timer1, Timer2

8 Kanal, 10 Bit Yok 16 Bit Capture, 16 Bit Compare, 10 Bit PWM Yok znrlk SPI (Master) ve 12C (Master - Slave) modunda Yok SPI portu ve senkron seri port 8 Bit, harici, RD, WR ve CS kontroll 9 Bit adresli Yok Yok

ekil 1.1: PIC16F84 ile PIC16F877 arasndaki farklar

1.1.2. PIC16F877 Mikrodenetleyicinin Fiziksel ve D Yaps

ekil 1.2: PIC16F877 Mikrodenetleyici Ayak Balantlar

5

ekil 1.3: PIC16F877 Mikrodenetleyici i yaps

6

PN ADI OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp

PN NO 13 14 1

PN TP I O I/P

TAMPON TP ST/CMOS(4) ST

AIKLAMALAR Osilatr clock girii (kristal veya harici kaynak) Osilatr kristal k ucu Resetleme girii / Programlama annda programlama gerilimi girii (Mikrodenetleyicinin resetlenmesi iin bu pin lojik 0 yaplmaldr.) ift ynl giri/k.Analog giri 0. ift ynl giri/k. Analog giri 1. ift ynl giri/k.Analog giri 2. Negatif analog referans gerilimi. ift ynl giri/k.Analog giri 3. Pozitif analog referans gerilimi. ift ynl giri/k. Bu pin istenirse TMR0 iin bir clock girii olabilir. k modunda ak drain tipindedir. ift ynl giri/k. SSP iin slave seme pini. Analog giri 4. ift ynl giri/k. D kesme girii olarak seilebilir. ift ynl giri/k. ift ynl giri/k. ift ynl giri/k. Dk gerilimli programlamada da kullanlabilir. ift ynl giri/k. Portb kesme pini. ift ynl giri/k. Portb kesme pini. ift ynl giri/k. Portb kesme pini. Devre ii hata ayklama pini. Seri programlamada saat darbesi girii. ift ynl giri/k. Portb kesme pini. Devre ii hata ayklama pini. Seri programlamada veri girii.

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/ T0CKI RA5/SS/ AN4 RB0/INT

2 3 4 5 6

I/O I/O I/O I/O I/O

TTL TTL TTL TTL ST

7 33

I/O I/O

TTL TTL/ST(1)

RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC

34 35 36 37 38 39

I/O I/O I/O I/O I/O I/O

TTL TTL TTL TTL TTL TTL/ST(2)

RB7/PGD

40

I/O

TTL/ST(2)

ekil 1.4a: PIC16F877 Mikrodenetleyici pinlerinin fonksiyonlar

7

PN ADI RC0/T1OS0/T1CK 1 RC1/T1OS1/CCP2

PN NO 15 16

PN TP I/O I/O

TAMPON TP ST ST

AIKLAMALAR ift ynl giri/k. Timer1 osc. k veya Timer1 saat derbe girii. ift ynl giri/k. Timer1 osc. girii. Capture2 girii. Compare2 k. PWM2 k. ift ynl giri/k. Capture1 girii. Compare1 k. PWM1 k. ift ynl giri/k. SPI ve I2 C modlar iin senkron seri saat darbesi giri/k. ift ynl giri/k. SPI modda SPI veri girii veya I2C modda veri girii ya da k. ift ynl giri/k. SPI modda SPI veri k. ift ynl giri/k. USART asenkron gnderme veya senkron saat darbesi. ift ynl giri/k. USART asenkron alma veya senkron veri. ift ynl giri/k. Paralel Slave Port 0 (PSP0) ift ynl giri/k. PSP1. ift ynl giri/k. PSP2. ift ynl giri/k. PSP3. ift ynl giri/k. PSP4. ift ynl giri/k. PSP5. ift ynl giri/k. PSP6. ift ynl giri/k. PSP7. ift ynl giri/k. Analog giri 5. Paralel slave port iin okuma kontrol ucu. ift ynl giri/k. Analog giri 6. Paralel slave port iin yazma kontrol ucu. ift ynl giri/k. Analog giri 7. Paralel slave port iin seme kontrol ucu.

RC2/CCP1 RC3/SCK/SCL

17 18

I/O I/O

ST ST

RC4/SD1/SDA

23

I/O

ST

RC5/SDO RC6/TX/CK

24 25

I/O I/O

ST ST

RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 RE0/RD/AN5

26 19 20 21 22 27 28 29 30 8

I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O

ST ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3) ST/TTL(3)

RE1/WR/AN6

9

I/O

RE2/CS/AN7

10

I/O

ekil 1.4b: PIC16F877 Mikrodenetleyici pinlerinin fonksiyonlar

8

PN PN TAMPON AIKLAMALAR NO TP TP VSS 12, P Ground (toprak) ucu 31 VDD 11, P Pozitif kaynak ucu 32 I: Input (Giri) O: Output (k) I/O: Input/Output (Giri/k) P: Power (G) TTL: TTL Giri ST: Schimitt Trigger -: Kullanlmyor Not: 1. Bu tampon portb d kesme olarak dzenlendiinde Schimitt Trigger giriidir. 2. Bu tampon seri programlama modunda Schimitt Trigger giriidir. 3. Bu tampon genel amal giri-k olarak kullanldnda Schimitt Trigger girii ve PSP modunda TTL giriidir. 4. Bu tampon RC osilatr modunda Schimitt Trigger giriidir. Dier modlarda CMOS giriidir.ekil 1.4c: PIC16F877 Mikrodenetleyici pinlerinin fonksiyonlar

PN ADI

1.1.3. PIC16F877 Mikrodenetleyici Hafza OrganizasyonuPIC16F877 Mikrodenetleyici ierisinde Harvard mimarisine gre tasarlanm adet hafza blou vardr.

1.1.3.1. Program Hafza OrganizasyonuPIC16F877 ierisinde ekil 1.3te grld gibi 14 bitlik program yoluna bal 8KBlk flash eprom program bellei (8Kx14) bulunmaktadr ve 13 bitlik program sayac ile adreslenmektedir. Reset vektr 0000h ve kesme vektr de 0004hdir. ekil 1.5te program hafza haritas grlmektedir. Program kodlar 0000h ile 1FFFh arasna yazlr. PIC16F877 ilk almaya balad anda ya da herhangibir zamanda restlendii anda program hafzada 0000h adresine gidilir. Kesme sinyali alglandnda ise program sayac 0004h adresini retir ve 0004h adresi zerinden bir kesme alt program alr.

9

ekil 1.5: Program hafza haritas

1.1.3.2. Veri Hafza OrganizasyonuVeri hafzay RAM bellek ve Flash Eeprom bellek olmak zere iki ksmda inceleyebiliriz. a. Flash Eeprom Bellek 256 Byte kapasiteli flash eeprom veri bellei 8 bitlik veri yoluna baldr. Bu bellek kalc olarak veri kaydetmek amal olarak kullanlr. Elektrik enerjisi kesildiinde bile bu bilgiler bellekte saklanabilir ve daha sonra deitirilebilir. Normal alma srasnda veri eeprom bellee veri yazlabilir ya da eepromdan veri okunabilir. Bu bellek, dier veri bellei gibi dorudan adreslenemez. EEPROM veri belleine dolayl eriilir. Eeprom bellek kullanm ile ilgili alt adet zel fonksiyon yazmac (SFR) bulunmaktadr. Bunlar EEDATA, EEDATH, EEADR, EEADRH, EECON1 ve EECON2 yazmalardr. Bunlarla ilgili bilgi ilerleyen ksmlarda verilecektir. b. Ram Bellek 368 Byte ram bellek zerinde genel ve zel amal yazmalarn yer ald drt adet saklayc kmesi(bank) yer almaktadr. Status yazmacnn 5. ve 6. bitleri ile kme seimi yaplmaktadr. Her bank 128 baytdr ve dk kelime adreslerinde zel fonksiyon yazmalar yer almakta iken yksek adresli deerlerde genel amal yazmalar yer almaktadr. zel fonksiyon yazmalarnn bazlar daha hzl eriim iin birden fazla kmede yer almaktadr. ekil 1.6da PIC16F877 Mikrodenetleyicisinin RAM haritas grlmektedir.

10

ekil 1.6: PIC16F877 RAM Haritas

Aklamalar: * Fiziksel bir yazma deildir. 1. PIC16F876da kullanlmayan bir yazmatr. 2. Bu yazmalar kullanlamaz. Lojik-0 deerinde kalmaldr. ekil 1.6da grlen GPR blgesine dorudan ya da dosya seim yazmac (FSR) zerinden dolayl olarak ulalabilir. zel fonksiyon yazmalar mikroilemci ve evresel modller tarafndan zel ilemleri kontrol etmek iin kullanlr. Bu modlde gerektiinde uygulamalarda kullanlacak zel fonksiyon saklayclar ilgili bilgiler uygulama almalarnda verilecektir. Yazmalarn levleri: 1. PORTA PORTE Portlar mikrodenetleyicinin d dnyadan bilgi almas ve kendi dndaki devrelere veri aktarabilmesi amacyla kullanlr. PIC16F877nin be portu vardr. A portu 6 bit geniliindedir. B, C, D portlar 8 bit, E portu ise 3 bit geniliindedir. 2. TRISA TRISE

11

Portlarn ynn belirleyen yazmalardr. Eer portlarn herhangi bir pininden mikrodenetleyici dna veri gnderilecekse, nce ilgili portun yn yazmac ayn numaral biti lojik-0 yaplr. Eer herhangibir pinden mikrodenetleyiciye veri girilecekse, yine nceden, o portun yn yazmacnn ayn numaral biti lojik-1 yaplr. 3. TMR0, TMR1 ve TMR2 Mikrodenetleyici iinde bulunan zamanlayc ve saya olarak altrlan blm denetleyen yazmalardr. TMR1 16 bitlik bir zamanlaycdr. TMR1L ve TMR1H olmak zere iki adet 8 bitlik saklaycdan oluur. TMR0 ve TMR2 8 bitliktir. TMR2 PWM sinyalinini zamanlamasnda da kullanlr. 4. T1CON, T2CON ve PR2 Timer1 ve Timer2 zamanlayclarn kontrol etmek iin kullanlrlar. PR2 Timer2 zamanlaycsnn son sayma deerini dier bir deyile 00he dnd deeri saklar. 5. EEDATA ve EEDATH, EEADR ve EEADRH, EECON1 ve EECON2 Mikrodenetleyici iindeki EEPROM veri belleine ulamakta kullanlr. EEADR yazmacnda adres numaras bulunan veri, EEPROM veri belleinden okunarak EEDATA yazmacna getirilir. EEADR yazma eprom bellekte eriilmek istenen adresi tutar. EEDATA ise yazlmak ya da okunmak istenen veriyi tutar. EEADRH 13 bitlik adresin ve EEDATH 14 bitlik verinin yksek deerli bitlerini tutmak iin kullanlr. EECON1 yazmac eriimi balatmak ve ayarlamak iin kullanlan bir kontrol yazmacdr. EECON2 katalog bilgisinde fiziksel olarak kullanlmayan bir yazma olarak gemektedir. Donanmsal olarak yazma ilemi srasnda hatal yazm ilemlerinden korunma amal olarak kullanlmaktadr. 6. GPR Genel amal yazmalarn adresleri yukardaki izelgede verilmiti. Programc buradaki adresleri istedii gibi, kendi deikenleri iin kullanabilir. Bu adreslere isterse programn iinde zel adlar verebilir. 7. Durum Yazmac Durum(status) yazmac, aritmetik ve mantk biriminin(ALU), aritmetik ilem sonucundaki durumunu, merkezi ilem biriminin (CPU) test durumlarn ve veri belleine ait kme(bank) seme bitlerini tutar. Herhangi bir yazma gibi ierii okunabilir ve deitirilebilir. Ancak 3. ve 4. bitleri sadece okunabilir, deitirilemez. Eer, bu yazmacn ierii CLRF STATUS komutuyla, silinmek istenirse sadece st bit lojik-0 olur. Bu komut sonunda STATUSun ierii 000uu1uu deerini alr. Burada u:deimez (Unchangable) anlamndadr.

12

7 IRP R/W

6 RP1 R/W

5 RP0 R

4

3

2 Z R/W

1 DC R/W

0 C R/W

TOR

PDR/W

ekil 1.7: Durum yazmac

Bit 7: IRP: Yazma bank seme biti (dolayl adreslemede kullanlr) 0= Bank 0,1 (00h-FFh) 1= Bank 2,3 (100h-1FFh) Bit 6-5: RP1:RP0: Yazma bank seme biti (dorudan adreslemede kullanlr) 00= Bank 0 01= Bank1 10= Bank 2 11= Bank 3 Her bir bank 128 bytetr. Bit 4: TO : Time-out (sre am biti) 1= CLRWDT komutuyla veya SLEEPden g verme durumuna geirildiinde 1 olur. 0= WDT time-out (sre am) ilemi gereklemi ise 0 olur. Bit 3: PD : Power-down (G kesme) biti 1= CLRWDT komutu ile veya g verme durumunda 1 olur. 0= SLEEP komutu altrlnca 0 olur. Bit 2: Z: Zero (Sonu sfr) biti 1= Aritmetik veya lojik ilem sonucu 0 ise bu bit 1 olur. 0= Aritmetik veya lojik ilem sonucu 0 deil ise bu bit 0 olur. Bit 1: DC: Dijit elde (Digit Carry/Borrow) biti. (ADDWF, ADDLW komutlar iin.) 1= 8 Bitin dk ncelikli drtls, taarsa bu bit lojik 1 olur. 0= 8 Bitin dk ncelikli drtls tamazsa, bu bit 0 olur. Bit 0: C: Carry/Borrow biti (ADDWF ve ADDLW komutlar iin) 1= 7.bitten sonra tama olursa bu bit 1 olur. 0= 7.bitten sonra tama olmazsa bu bit 0 olur. 8. Option Register Option Register, okunabilir ve yazlabilir bir yazmatr. Kapsamnda TMR0 / WDT zamanlayclarnn konfigrasyon bitleri, d kesme (interrupt) denetim bitleri, TMR0

13

zamanlaycs kesme denetim bitleri ve PORTB iin yksee ekme (pull-up) direnlerinin kullanlmasn salayan bit bulunur. 9. INTCON INTCON okunabilir ve yazlabilir bir yazmatr. Kapsamnda TMR0 / WDT yazmac tama uyar bitleri, RB port deiim ve d kesme (RB0/INT pin interrupt) denetim bitleri, TMR0 kesme denetim bitleri bulunur. 10. PIE1 PIE1 evresel kesmelerle ilgili bitleri olan bir yazmatr. Bir evresel kesmenin olabilmesi iin, PIE1 (INTCON) biti de set edilmelidir. 11. PIR1 PIR1 evresel kesmelerle ilgili uyar bitlerini tayan yazmatr. 12. PIE2 PIE2 yazmac CCP2 (Capture/Compare/PWM2) evresel biriminin kesme bitlerini, SSP (Senkron Seri Port) veri yolu arpma bitini ve EEPROM yazma kesmesi bitini tar. 13. PIR2 PIR2 evresel kesmelerle ilgili dier uyar bitlerini tayan yazmatr.

14. PCON G kontrol yazmac olan PCON, yazlmda ve reset durumlarnda kullanlr. Reset durumlar; devrenin dardan MCLR ile, gerilim ya da akmn ar dme ve ykselmesi Brown-Out, Watch Dog Timer ve son olarak Power on reset durumlarnda kullanlabilir. BOR biti, Power on resette bilinemez. Bir sonraki BOR durumunun renilebilmesi iin reset sonrasnda lojik-1 yaplmaldr. 15. PCL ve PCLATH Program sayac (PC) olarak adlandrlan adresleme yazmac 13 bitliktir. Bunun dk deerlikli byte PCL yazmacndan gelir. stteki bitler ise PC arasndaki 5 bittir, bunlar PCLATH yazmacndan alnr. PCL okunabilir ve yazlabilir bir yazmatr. Ancak st bitleri (PCH) dorudan okunamaz. Dolayl olarak PCLath yoluyla yazlabilir veya okunabilir.

14

ekil 1.8: PC ve PCLATH Yazmalar

Call komutu, ynn her zaman en tepesine, PCL yazmacnn iindeki adres deerini yazar. Return, Retfie ve Retlw komutlar ise ynn en tepesindeki elemann ieriini PCLye aktarr. Saklayc kme numaralarnn PCLath yazmacndan PCye aktarlabildii program yazarken de unutulmamaldr. PCLATH yazmacnn ierii, alt programa girildikten sonra sabit kalr, bir return ya da retfie benzeri komut gelse de deimez. Programc, call veya goto komutlarndan nce, PCLATH yazmacn gncellemelidir. PCH daima PCLATH yazmac yoluyla gncellendiinden (tersi yaplamaz) alt program veya gidilen kesimin hangi kmede olduu, aadaki rnee benzer bir yolla belirtilmelidir. ORG 0x500 BCF PCLATH, 4 BSF PCLATH, 3 CALL SUB1_P1 . ORG 0x900 SUB1_P1 . RETURN 16. YIIN Blgesi Yn blgesi 8 yazmatan oluur. Her yazma 13 bitliktir ve donanmn bir parasdr. Veri veya program alanlarnda yer almaz. Yn gstergesi yazlabilir ve okunabilir deildir. Yn ilemi komutlar POP ve PUSHtur. Her PUSH ileminde ynn en tepesindeki adrese, PCn ierii yklenir. Her POP ileminde ynn en tepesindeki adres PCn iine geri yklenir. Yn, LIFO (Last In First Out) son giren ilk kar tekniiyle alr. ; Altprogram 800h ile FFFh aralna yerletirildi. ;Returnden sonra 0.sayfaya (000h-7FFh) dnlecek

;PCLATH yazmacnn 4.biti temizlendi ;PCLATHn 3.biti set edildi, 1.bank geildi ;(800h-FFFh adres aral) ;1.banktaki alt program arld ;Bank 1 (800h-FFFh)

15

17. INDF ve FSR INDF fiziksel bir yazma deildir. Mikrokontrolrdeki RAM adresini tutar. INDFe yazlan her veri, adresi FSR yazmacnda bulunan RAMa yazlr. INDFten okunan veriler de adresi FSRde bulunan RAMden okunmutur. 18. SSPBUF, SSPCON, SSPCON2, SSPSTAT ve SSPADD Senkron seri port alma ve verme srasnda veri SSPBUF yazmacna yazlr. SSPCON ve SSPCON2 ise senkron seri port haberlemesini kontrol eden yazmalardr. Senkron seri portun durum bitleri SSPSTAT yazmacnda kaytldr. SSPADD senkron seri port adres yazmacdr. Dolayl adreslemede INDF ile birlikte kullanlr. Mikrodenetleyicinin iindeki RAM adresinde yaplacak ilemlerde, RAM adresini tutar. Bu durumda INDFye yazlacak her veri, aslnda adresi FSRde bulunan RAMe yazlmtr. 19. CCPR1L, CCPR1H, CCP1CON, CCPR2L, CCPR2H ve CCP2CON Yakalama-Karlatrma-PWM ilemleri ile ilgili yazmalardr. Bu ilemler iin PIC16F877de iki ayr grup bulunmaktadr. CCP1CON ve CCP2CON yazmalar kontrol bitlerinin bulunduu yazmalardr. CCPR1L ve CCPR2L ilk 8 biti saklarlar. CCPR1H ve CCPR2H yksek deerli 8 biti saklar. 20. TXSTA, RCSTA, SPBRG, TXREG ve RCREG Bu yazmalar niversal asenron seri haberlemede kullanlr. TXSTA seri bilgi vermede durum ve kontrol bitlerinin yer ald yazmatr. RCSTA Seri bilgi almada durum ve kontrol bitlerinin yer ald yazmatr. SPRG ise baud hzn belirleyen yazmatr. TXREG USART bilgi vermede veri yazmac olarak kullanlr. RCREG ise USART bilgi almada veri yazmac olarak kullanlr. 21. ADRESH, ADRESL, ADCON0, ADCON1 ADRESH A/D evrim sonucunun yksek deerli 8 bitini, ADRESL ise dk deerli 8 bitini saklar. ADCON0 ve ADCON1 ise A/D evrimi kontrol eden saklayclardr.

1.2. LCD Yaps Ve Programlanmas1.2.1. LCD YapsBu ksmda paralel girili LCDnin yaps ve programlanmas verilecektir. LCD (Liquid Crystal Display)ler bilginin uygulan yntemine gre paralel ve seri girili olmak zere iki ksmda incelenebilmektedir. LCDnin kullanm amac elektronik sistemlerde bilgilendirme iin eitli karakterleri ve karakter topluluklarn gstermektir.

16

LCD ierisindeki hazr karakterler kullanlarak veya zel karakterler hazrlanarak zerinde anlaml grntler oluturulabilir. LCD dijital bilgi reten herhangi bir sistem ile kontrol edilebilir. Yaplmas gereken tek ey uygun komutlar katalogda gsterilen zamanlama dilimleri ile gndermektir. LCD bilgisayarla veya mikrodenetleyici ile kontrol edilebilir. LCDnin yaps iki ksmdan meydana gelir. Bunlar yaz ya da grafikleri gsteren sv kristal display ve bu displayde karakterleri meydana getiren src ilemcidir. LCD incelendiinde bir yznde LCD dier yznde de src ilemci grlr. lemci entegre grnmnde olabilecei gibi siyah epoksi damla eklinde de olabilir. ekil 1.9da HD44780 paralel girili LCD grlmektedir. HD44780 LCD devresinde yer alan epoksi damla olarak yerletirilmi src entegresidir. Bu ksmda piyasada bulunmas kolay ve kullanm alan geni olduundan dolay bu LCD ile ilgili bilgiler verilip uygulama yaplacaktr. HD44780 ilemci LCDler iin standart olmu bir ilemcidir. LCDnin arkasna baklp ilemci seri numaras okunabilir ve ilemcinin yaps kataloglardan renilebilir. Gnmzde birok firmann rettii LCD, HD44780 ile uyumludur. LCDler satr ve stun says ile tanmlanr. Satr uzunluklarna (stun saylarna) gre 8-16-20-24-32-40 karakterli olarak yaplr. Satr saysna gre ise 1, 2 ya da daha ok satrl olabilir. 2x8 denince 2 satrl 8 stunlu LCD akla gelmelidir. 2x8 ve 1x16 LCDde sadece bir ilemci kullanlrken, 2x16 ve 2x20 LCDlerde ilemcinin yan sra bir de hafza entegresi bulunur. Boyut arttka hafza kapasitesi de artar. Tm entegreler siyah epoksi damla eklinde veya entegre eklinde PCB zerine yerletirilir.

(a) n grn

(b) Arka grn ekil 1.9: HD44780 LCD Display

LCDlerde DDRAM ve CGRAM olmak zere iki adet RAM hafza hcresi yer alr. CGRAM karakter retici RAM bellektir ve 64 Baytlk bir hafzadr. zel karakterler retmek iin kullanlr. DDRAM ise display veri RAM belleidir ve 80 Baytlk bir hafzadr. LCDnin satr ve stunlarna karakter yazmak iin kullanlr. DDRAM ierii LCD ekrannda grlr, fakat grnen veri ancak LCDnin stun says ile snrldr. rnein 2x16lk bir LCDde ancak 16 karakter ekranda grlebilir. Dier kaytl veriler DDRAMda saklanmaya devam eder. ekil 1.11de DDRAM adreslerinin deiimi grlmektedir. LCDnin iinde bulunan dier hafza ise CGROMdur. Karakter retici ROM bellek olarak tanmlanr ve 192 Baytlk bir hafzadr. CGROM ierisinde ASCII karakter tablosunda yer alan standart karakterler kaytldr. Toplam karakter says 192dir. Bunlardan 64 tanesi genel olarak kullanlan ascii karakterleri, 64 tanesi Japon karakterleri ve 32 tanesi de zel yunan alfabesi karakterleridir. Bu karakterlerden genel olarak kullanlan 64 tane standart karakter ekil 1.10daki ASCII karakter tablosunda grlmektedir.

17

KOLON BTLERHEX 0 0 0 0 HEX Bit 7 0 1 Bit 6 Bit 5 Bit 4 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 Bit 3 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 Bit 2 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 Bit 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 Kontrol Fonksiyon NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US SP ! # $ % & ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ a b c d e f g h i j k l m n o } ~ DEL p q r s t u v w x y z { 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1

SATIR BTLER

2 3 4 5 6 7 8 9 A B C D E F

1

1

1

1

ekil 1.10: ASCII Karakter tablosu

18

1 satrl LCD DDRAM Uygulama Display 1*8 1*16 1*20 1*24 1*32 1*40 Karakter durumlar 00..07 00..15 00..19 00..23 00..31 00..39 DDRAM adres 0x00..0x07 0x00..0x0F 0x00..0x13 0x00..0x17 0x00..0x1F 0x00..0x27 2 satrl LCD DDRAM Uygulama Display Karakter durumlar DDRAM adres

2*162*20 2*24 2*32 2*40

00..1500..19 00..23 00..31 00..39

0x00..0x0F + 0x40..0x4F ( Kullandmz LCD )0x00..0x13 + 0x40..0x53 0x00..0x17 + 0x40..0x57 0x00..0x1F + 0x40..0x5F 0x00..0x27 + 0x40..0x67 4 satrl LCD DDRAM Uygulama

Display 4*16 4*20 4*40

Karakter durumlar 00..15 00..19 (00..39) (00..39)

DDRAM adres 0x00..0x0F + 0x40..0x4F + 0x14..0x23 + 0x54..0x63 0x00..0x13 + 0x40..0x53 + 0x14..0x27 + 0x54..0x67 (0x00..0x27 + 0x40..0x67) (0x00..0x27 + 0x40..0x67)

ekil 1.11: LCD Displayler ve DDRAM Adresleri

19

ekil 1.12: 2 Satrl ve 4 Satrl LCDler

ekil 1.11de eitli LCDlerdeki DDRAM adreslerinin satr saysna gre deiimi grlmektedir. Bu modlde baz alnan LCDnin DDRAM adresi 1. satr iin 0x00..0x0F ve 2. satr iin 0x40..0x4Fdir. LCDnin d dnya ile haberlemesi iin pinleri bulunmaktadr. HD44780 uyumlu LCDde 14 pin bulunmaktadr. Bu pinler 2erli 7 sra halinde olabilecei gibi 14l tek sra olabilir. Bu pinlerin fonksiyonlar ekil 1.14teki tabloda grlmektedir. LCD 4x40 ise ilave bir pini daha vardr. Ayrca baz LCDlerde klandrma amacyla 15. ve 16. pinlere de rastlanabilir. 15. ve 16. pinler yoksa LCD devresinde aydnlatma ularndan da balant yaplabilir. Bu ilave pinlerin karakter gsterilmesinde bir etkisi yoktur. HD44780 LCD klandrma balantlar ekil 1.13te grlmektedir.

ekil 1.13: HD44780 LCD displayde ekran balant ular

20

No 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Fonksiyonu Vdd (5V gerilim ucu) Vss (ase balant ucu) Vee (Kontrast gerilimi ucu) RS (Komut/Veri seim ucu) R/W (Yazma-Okuma ucu) E (Uygulama izin ucu) D0 (0. veri (LSB) ucu) D1 (1. veri ucu) D2 (2. veri ucu) D3 (3. veri ucu) D4 (4. veri ucu) D5 (5. veri ucu) D6 (6. veri ucu) D7 (7. veri (MSB) ucu)ekil 1.14: LCD Ayak balantlar

Aklamalar: a. Vdd ve Vss: LCD Vdd ucuna balanan 5V gerilim ile alr. Baland kontrol eleman ile ase balants Vss ile mutlaka yaplmaldr. b. Vee: Vee ucu ile 5V arasna 10K deerinde bir trimpot balanarak LCD ekrann kontrast seviyesi deitirilebilir. c. RS: RS ucu lojik-0 ise komut gnderiliyor, lojik-1 ise veri gnderiliyor anlamndadr. Kontol devresinden RS ucuna nce lojik-0 gnderilir. Sonra ilenecek olan komut veri ularna(D0..D7) yazlr. RS ucu lojik-1 yaplarak komutun ilevi ile ilgili veri dier bir deile ekranda gsterilecek olan veri ayn ulara gnderilir. d. R/W: 0 ise LCD hafza hcresine veri yazlr. 1 ise hafza hcresinden veri okunur. e. E: Gnderilen komutun uygulanmas iin veya verinin ilenmesi iin kontrol devresinden bu uca lojik-1den 0a den (den kenar) bir kare dalga sinyal gnderilir. f: D0..D7: Komut girii ve veri giri-k iin kullanlrlar. 8 bitlik modda tm kullanlrken 4 bitlik LCD almasnda D7..D4 ular kullanlr.

21

5V RV1 10K U113 14 1 2 3 4 5 6 7 8 9 10 OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T 0CKI RA5/AN4/SS RE0/AN5/RD RE1/AN6/WR RE2/AN7/CS RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RC0/T1OSO/T 1CKI RC1/T 1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/T X/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 1 2 3 4 5 6 7 8 9 10 11 12 13 14 VDD VSS VEE RS RW E D0 D1 D2 D3 D4 D5 D6 D7

HD44780

PIC16F877ekil 1.15: PIC16877-LCD Balants (8 bit Modu)

ekil 1.15te PIC16F877 ile LCD balants iin rnek bir devre grlmektedir. PortBnin ilk biti kontrol bitleri iin kullanlm, PortD ise veri bitleri iin kullanlmtr. RV1 potansiyometresi ile LCDnin kontrast ayarlanmaktadr. Bu balant ile LCD 8 bit modda kontrol edilebilir. Ancak yazlan programda program kodlar 8 bitlik almaya gre yazlmaldr. ekil 1.16da PIC16F877 mikrodenetleyicinin 4 bitlik moda LCDyi kontrol ettii rnek bir devre grlmektedir. Bu devrede LCDnin 4 bit modda balants iin sadece PortB kullanlmtr. Bylece mikrodenetleyicinin dier portlar farkl amalar iin kullanlabilir.

22

1.2.2. LCD Programlama 1.2.2.1. HD44780 Komut Seti5V RV1 10K HD44780

VDD VSS VEE

RS RW E 4 5 6

1 2 3

U113 14 1 2 3 4 5 6 7 8 9 10 OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/T HV RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T 0CKI RA5/AN4/SS RE0/AN5/RD RE1/AN6/WR RE2/AN7/CS RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RC0/T 1OSO/T 1CKI RC1/T 1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/T X/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30

PIC16F877

ekil 1.16: PIC16877-LCD Balants (4 bit Modu)

PIC-C ile LCDyi kontrol etmek ve veri alverii yapmak ok kolaylatrlmtr. PIC Assembly dili ile ok karmak olan programlar PIC-C ile balk ve src dosyalar sayesinde ok daha ksa ve anlalr biimde yazlabilir. Bu ksmda LCDnin alma mantn anlamak amacyla kataloglarda gsterilen fonksiyonlardan bahsedilecektir. ekil 1.17de LCD komutlarnn toplu olarak gsterildii tablo grlmektedir.

23

7 8 9 10 11 12 13 14

D0 D1 D2 D3 D4 D5 D6 D7

KOMUT Ekran temizle Baa Dn

KODRS R/ W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0

0 0

0 0

0 0

0 0

0 0

0 0

0 0

0 1 I/ D

1 *

Giri Kurulumu

0

0

0

0

0

0

0

1

S

Display A/Kapa

0

0

0

0

0

0

1

D

C

B

Kursr/Display Kaydr

0

0

0

0

0

1

S/ C

R/ L

*

*

Fonksiyon Kurulumu CGRAM Adresi kur DDRAM Adresi kur Megul bayra ve adresi oku CG/DD RAM adresine veri yaz CG/DD RAM adresinden veri oku

0

0

0

0

1

D L

N

F

*

*

0 0 0

0 0 1

0 1 BF

1

CGRAM adresi DDRAM adresi CGRAM veya DDRAM adresi

1

0

YAZILAN VER

1

1

OKUNAN VER

Aklama Tm ekran temizlenir. Kursr ekran bana dner. Kursr hareket ynn ve display kayma zelliini belirtir. Display ve Kursr on/off, karekter karartma yapar. S/C kursr hareketi ve display kaymasn, R/L kayma yn nayarlar. Data uzunluu, display satr says, karekter fontunu ayarlar. CGRAM adresi kurar. DDRAM adresi kurar. BF ve adres saycnn ieriini okur. CGRAM veya DDRAM adresine veri yazar. CGRAM veya DDRAMdan veri okur.

ekil 1.17: HD44780 LCD Komut seti

Tablo ile ilgili aklamalar: DDRAM: Display Data RAM CGRAM: Karakter retici RAM BF=1 ise komut kabul edilmez.LCD meguldur. BF=0 ise komut kabul edilir. N=0 ise 1 satr, N=1 ise 2 satr kullanlr. * nemsiz giri 1 ya da 0 F=1 5x10 karakter fontu, F=0 5x7 karakter fontu I/D=0 Kursr pozisyonunu 1 azalt, I/D=1 Kursr pozisyonunu 1 arttr. S=0 ise display kaymaz, S=1 ise display kayar.

24

C=0 ise kursr kapaldr, C=1 ise kursr aktr. R/L=0 ise sola kayma gerekleir, R/L=1 ise saa kayma gerekleir. DL=0 ise LCD 4 bit modda alr, DL=1 ise LCD 8 bit modda alr. S/C=0 ise kursr hareket eder, S/C=1 ise display hareket eder. B=0 ise kursr karartma kapal, B=1 ise kursr karartma ak. LCDnin yukardaki komutlar ilemesi iin ilgili ulara dijital bilgi uygulandktan sonra E ucundan 1den 0a den bir izin darbesi uygulanmaldr. Bu sinyal uygulanmadan LCD komutu ileyemez.

Komutlarn Ayrntl Aklamalar a. Display temizle RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 0 1 Tm ekran temizler ve kursr 0. adres olan balang adresine getirir. Display Data RAMdeki tm adreslere boluk koduna karlk gelen 20H yazlr. DDRAM iin adres sayac 0 yaplr. Eer kaydrlmsa displayi orijinal konumuna getirir. Herhangi bir karakter displayde grlmez ve kursr displayin bana gelir. Komut uygulama zaman: 82s-1.64ms (8bit modda) 120s- 4.9ms (4bit modda) b. Baa Dn RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 1 * Kursr displayin bana getirir. DDRAM iin adres sayacn 0 yapar. DDRAM ieriini etkilemez. * etkisiz giri anlamndadr. Display eer kaydrlm ise orijinal durumuna getirir. Komut uygulama zaman: 40s-1.64 ms (8bit modda) 120s-4.8 ms (4bit modda) c. Giri Kur RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 1 I/D S DDRAM adreslerinin artna ya da azalna gre kursr hareket ynn ayarlar. Bu almalar veri yazma ve okuma srasnda icra edilir. Bir karakter kodu DDRAMe yazldda ya da karakter kodu DDRAMden okunduunda; I/D=1 olduunda DDRAM adresi 1 arttrlr ve kursr saa hareket eder. I/D=0 olduunda DDRAM adresi 1 azaltlr ve kursr sola hareket eder.

25

Yukarda bahsedilen alma CGRAMden okuma ve CGRAMe yazma srasnda da geerlidir. S=0 ise kursrn saa ya da sola kaymasna izin verilir. S=1 yapldnda kursrn saa hareketi srasnda, displayi karakter says kadar komple sola kaydrr. Komut uygulama zaman: 40s (8bit modda) 120s (4bit modda) d. Display A/Kapa RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 D C B Displayi ve kursr ap kapatr, kursrn grnmn ayarlar. D=1 ise display alr. D=0 ise display kapanr. Kapalyken display verisi enerji olduu srece DDRAMde saklanr. C=1 ise kursr ekranda grntlenir. C=0 ise kursr ekranda grntlenmez. B=1 ise kursr ile gsterilen tm noktalar yanp sner. B=0 ise sadece kursr ekranda grlr. Kursr 5x7 dot karakterde 8. satrda, 5x10 dot karakterde 11. satrda grntlenir.

ekil 1.18: Kursr durumlar

Komut uygulama zaman: 40s (8bit modda) 120s (4bit modda) e. Kursr ve Display Kaydr RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 1 S/C R/L * * DDRAM ieriini deitirmeden kursor hareket ettirir ve displayi saa veya sola kaydrr. Bu fonksiyon display iin aratrma ve dzeltme ilemleri iin kullanlr. 2 satrl

26

displayde kursr 1. satrn 40. stununu getikten sonra 2. satra geer. 1. ve 2. satrlar ayn anda kayar. S/C R/L 0 0 Kursr sola kayar. Adres sayac 1 azalr. 0 1 Kursr saa kayar. Adres sayac 1 artar. 1 0 Tm display sola kayar. Kursr display ile birlikte kayar. 1 1 Tm display saa kayar. Kursr display ile birlikte kayar. Komut uygulama zaman: 40s (8bit modda) 120s (4bit modda) f. Fonksiyon Kur RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 DL N F * * Veri uzunluunu, display satr saysn ve karakter fontunu ayarlar. DL: Veri uzunluunu ayarlar. DL=1 ise gnderilen veya alnan veri 8 bit uzunluundadr (DB7-DB0). DL=0 ise gnderilen veya alnan veri 4 bit uzunluundadr (DB7-DB4). 4 bit veri uzunluu seilirse verinin nce st drt biti sonra da alt drt biti gnderilmelidir. N: Display satr saysn belirtir. F: Karakter fontunu ayarlar. Megul bayra ve adres okumann dnda herhangi bir komut uygulamadan nce programn banda fonksiyon kurulumu yerine getirilmelidir. N 0 0 1 F 0 1 * Satr 1 1 2 Font 5x 7 nokta 5x10 nokta 5x 7 nokta

5x10 noktal karakter fontu 2 satr displayde kullanlmaz. 5x10 noktay LCDnin desteklemesi gereklidir. Desteklemiyorsa 5x7 nokta ayarlanmaldr. Komut uygulama zaman: 40s (8bit modda) 120s (4bit modda)

27

g. CGRAM Adresi Kur RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 1 A A A A A A CGRAM adresini kurar. CGRAM verisi bu ayarlamadan sonra gnderilir. Adres sayacnda 6 bitlik CGRAM adresi oluur. Veri bundan sonra CGRAM iin mikroilemciden okunur veya mikroilemciye yazlr. Komut uygulama zaman: 40s (8bit modda) 120s (4bit modda) h. DDRAM Adresi Kur RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 1 A A A A A A A DDRAM adresini kurar. DDRAM verisi bu ayarlamadan sonra gnderilir. Adres sayacnda 6 bitlik DDRAM adresi oluur. Veri bundan sonra DDRAM iin mikroilemciden okunur veya mikroilemciye yazlr. 1 Satrl LCDde AAAAAAA adresi 00H - 4FH arasnda iken, 2x12 Satrl LCDde 1. satr iin AAAAAAA 00H 0FH arasndadr. 2. satr iin AAAAAAA 40H 4FH arasndadr. Mikrodenetleyiciden adres kurma komutu gnderirken DB7 biti lojik 1 olduu iin adres kurma komutu 1.satr iin 80H ile 8FH arasndadr. 2. satr iin bu aralk C0H ile CFH arasndadr. 0FH ile 40H aral LCD ekrannda grntlenemez. Komut uygulama zaman: 40s (8bit modda) 120s (4bit modda) i. Megul Bayra ve Adresi Oku RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 1 BF A A A A A A A LCD ierisinde bir almann olduunu ifade eden megul bayran okur. Dier grevi de adres sayacnn ieriini okumaktr. BF=1 okunuyorsa LCDnin megul olduu anlalr. BF=0 olmadan yeni bir komut LCD tarafndan kabul edilmez. BF durumu bir sonraki komut gnderilmeden nce kontrol edilmelidir.

28

Ayn zamanda 7 bitlik adres sayac deeri bu komut ile okunur. Adres sayac hem CGRAM hem de DDRAM adresleri iin kullanlr. O andaki kullanm bir nceki komuta baldr. Komut uygulama zaman: 0-1s (Her iki modda) j. CG/DD RAM Adresine Veri Yaz RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 0 D D D D D D D D DDRAM veya CGRAMa 8 bitlik veri yazar. CGRAM veya DDRAM ile ilgili bu ilemler daha nce yaplan tanmlama ve adres kurma ile belirlenir. rnein yazma ileminden sonra adresin 1 artmas veya azalmas giri kur komutuna gre gerekleir. Giri kurma ayn zamanda display kaymasn da belirler. Komut uygulama zaman: 40s (8bit modda) 120s (4bit modda) k. CG/DD RAMden Veri Oku RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 1 1 D D D D D D D D CGRAM veya DDRAMdan 8 bitlik formatta veri okur. Daha nceki komut uygulamalar ile CGRAMn ya da DDRAMn okunaca belirlenir. Okuma komutuna balamadan nce ya CGRAM ya da DDRAM iin adres kurma komutu uygulanmaldr. Eer bu yaplmazsa ilk okuma verisi iptal olacaktr. Okumadan sonra giri moduna bal olarak adres otomatik olarak 1 arttrlr veya azaltlr. Komut uygulama zaman: 40s (8bit modda) 120s (4bit modda)

1.2.2.2. LCDyi Kullanma HazrlamaHD44780 LCD 8 bitlik ve 4 bitlik moda gre alabilir. PIC16F877 ile LCD kontrol gerekletirmek istenirse, 8 pin veri iin(D0dan D7ye) ve 3 pin de kontrol iin olmak zere toplam 11 pin kullanlmaldr. st dzey uygulamalarda mikrodenetleyicinin bacak says yetmeyebileceinden 8 bit modunu kullanmak uygun olmayabilir. Bu nedenle LCDyi 4 bit modunda kullanmakta fayda vardr. 4 bit ile kontrolde 4 pin veri iin(D4den D7ye), 3 pin de kontrol iin olmak zere sadece 7 pin kullanlmas yeterli olacaktr. Her iki alma modunda da LCD zerinde karakterler gstermeden nce yaplmas gereken birtakm ilemler vardr. Bunlar srasyla aada verilmitir.

29

a. Enerjinin Gelmesi ve Resetleme HD44780 LCDye enerji uyguland zaman dahili reset devresi alr. Enerji verildikten yaklak 10 msn sonra megul bayra (BF) lojik-1 olur. BF bayra ilk kullanma hazrlama ilemlerinin sonuna kadar otomatik olarak megul durumda kalr. Programda yaplmas gereken ilk kullanma hazrlama temel ilemleri aada verilmitir. LCDye enerji geldii zaman mikrodenetleyici programnn ilk balangta en az 40 ms beklenmesinde fayda vardr. Kullanlan gerilim kayna yeterli akm veremiyorsa ya da kalitesiz ise sistemde hata oluabilir. Gerilim kayna lojik ykselme zaman 10 msnden daha fazla ise LCD i reset devresinin almasnda problem kabilir. Bu nedenle gerilim kayna zenle seilmelidir. Portlarn giri k ilemleri iin kurulumu srasnda belirli bir zaman getiinden dolay port kurulumu iin bekleme yapmakta fayda vardr. Programda ilk ilem olarak LCD fonksiyon kurma komutunun yksek drt biti ile resetlenmelidir. Bu amala 8 bitlik alma modunda arka arkaya 3 defa 30h komutu gnderilir. 4 bitlik modda ise arka arkaya 3 defa 20h komutu gnderilir. Megul bayra kullanlmyorsa her komut arasnda 1 mslik gecikme yaplmaldr. b. Display Temizleme Yazlan programda display temizle komutu ile ekran temizleme ilemi gerekleir. c. Fonksiyon Kurulumu Fonksiyon kurma komutu ile veri uzunluu, display satr says ve karakter fontu ayarlanr. d. Displayin Almas Display A/Kapa komutu ile display alr. e. Giri Modu Kurulumu Giri Kurulumu komutu ile kursrn saa veya sola hareketi ve displayin kayma izin ayar yaplr. f. Adres Kurulumu LCDye veri yazlmak istenen adres, adres kurma komutu ile LCDye gnderilmelidir. Btn bu temel hazrlk ilemlerinden sonra displaye yazma ilemi veya okuma ilemi gerekletirilebilir.

30

1.2.2.3. LCD Kontrolde Dikkat Edilecek HususlarMikrodenetleyici ile LCD kontrolnde birtakm unsurlara dikkat edilmelidir. RS, R/W ve E ularna uygun lojik deerler uygulanmaldr. LCDye veri veya komut gnderilecekse R/W ucu lojik-0 olmal, LCDden bir veri okunacaksa R/W ucu lojik-1 yaplmaldr. Eer komut gnderilecek ise nce RS ucu lojik-0 yaplmal sonra komut gnderilmelidir. Veri gnderilecek ise RS ucu lojik-1 yaplmaldr. Bir komutun veya verinin LCD ierisinde ileme konmas iin E ucuna den kenarl bir izin darbesi uygulanmaldr. Komut uygulama zamanlarna dikkat edilmelidir. Bir komut uygulandktan sonra daha nce belirtilen komut icra sreleri kadar bekleme yapmak gereklidir. En kesin zm LCDnin megul olup olmadn kontrol etmektir. BF megul bayra daha nce anlatld gibi kontrol edilerek bu gerekleir. Bylece en ksa zaman gecikmesi elde edilir.

1.2.2.4. PICC Dili ile LCD ProgramlamaCCS C derleyici yamas bilgisayara yklenip MPLAB programna balandnda PICC dili ile program yazlp derlenebilir. Tabi istenirse baka programlar ve yamalar kullanlabilir. Bilgisayardaki PICC klasr incelendiinde iki alt klasr gze arpar. Bunlar Devices ve Drivers klasrleridir. Devices klasr ierisinde mikrodenetleyicilerin donanm tanmlarnn yer ald balk dosyalar yer almaktadr. Bu dosyalarn uzants .h ile biter. Programda PIC16F877 entegresi ile ilgili donanm kullanlacandan dolay #include komutu programn en banda kullanlmaldr. Aslnda 16F877.h dosyas C dili ile yazlmtr. ncelendiinde PIC16F877 mikrodenetleyicisinin donanm kullanmna ynelik ifadeler ve fonksiyonlar gze arpar. 16F877 balk dosyas programn banda tanmlandnda balk dosyasnda tanmlanan fonksiyonlar ve ifadeler yazlan PIC-C programnda kullanlabilir. 16F877.h balk dosyasn inceleyiniz. Drivers klasr ierisinde eitli elektronik yaplarn src dosyalar yer almaktadr. Burada yer alan dosyalarn uzantlar .C ile biter. Bu klasrde LCDye zel LCD.C dosyas vardr ve bu dosya ierisinde LCD kulanm iin fonksiyonlar yer almaktadr. Eer LCD kullanlmak isteniyorsa LCD.C src dosyas programn banda tanmlanmaldr. Bu amala #include komutu kullanlr. Aada CCS C derleyicisi ilk kurulduunda LCD.C dosyasnn ieriinden bir ksm grlmektedir. Aada grld gibi, srcnn en banda src tanmlandnda kullanlabilecek fonksiyonlar gsterilmitir.

31

LCD.C src dosyasn inceleyiniz. //// LCDD.C //// //// Driver for common LCD modules //// //// //// //// lcd_init() Must be called before any other function. //// //// //// //// lcd_putc(c) Will display c on the next position of the LCD. //// //// The following have special meaning: //// //// \f Clear display //// //// \n Go to start of second line //// //// \b Move back one position //// //// //// //// lcd_gotoxy(x,y) Set write position on LCD (upper left is 1,1) //// //// //// //// lcd_getc(x,y) Returns character at position x,y on LCD //// //// //// // As defined in the following structure the pin connection is as follows: // D0 enable // D1 rs // D2 rw // D4 D4 // D5 D5 // D6 D6 // D7 D7 // // LCD pins D0-D3 are not used and PIC D3 is not used. // Un-comment the following define to use port B //#define use_portb_lcd TRUE struct lcd_pin_map { BOOLEAN enable; BOOLEAN rs; BOOLEAN rw; BOOLEAN unused; int data : 4; } lcd; // This structure is overlayed // on to an I/O port to gain // access to the LCD pins. // The bits are allocated from // low order up. ENABLE will // be pin B0.

LCD.C srcs HD44780 temelli tm LCDler iin kullanlabilen bir dosyadr. lk balang deeri 4 bitlik alma modu iin uygundur. Fakat bu haliyle programda kullanlmaz. ncelikle kullanlacak donanma uyup uymad incelenmelidir. Bu haliyle LCDnin PortDye balanmas gereklidir. Ancak bu modlde rnek olarak ekil 1.16daki devreye gre programlar yazlacaktr. Bu devrede LCD PortBye balanmtr. Bu nedenle LCD.C dosyas ncelikle almal, yukarda ok ile gsterilen ksmda gerekli donanm deiiklikleri yaplmal ve dosyann orjinalliini bozmamak iin farkl adla kaydedilmelidir.

32

Yukardaki tanmlamalarda ncelikle portb kullanm aktif hale getirilmelidir. Bu modlde 4 bitlik uygulama devresinde LCD PortBye bal olduundan aadaki dzeltme gerekletirilir. //#define use_portb_lcd TRUE #define use_portb_lcd TRUE satr yaplr.

Yukardaki komut topluluunda lcd_pin_map yapsna bakldnda 0.bit (D0) izin ucu, D1 rs ucu, D2 ise rw ucu olarak tanmlanmtr. PortBnin 3. biti (D3) kullanm ddr(unused). Lcd.data 4 bit olarak yap iersinde belirtilmi ve bylece 4 bitlik alma tanmlanmtr. ncelikle burada yaplan donanm yaps deitirilmelidir. LCD.C dosyasnda aadaki deiiklik yaplp LCD2.C olarak kaydedilmelidir. struct lcd_pin_map { BOOLEAN unused; BOOLEAN rs; BOOLEAN rw; BOOLEAN enable; int data : 4; } lcd; Bu modlde kullanlan LCD kontrol devresine gre PB.0 kullanlmamaktadr. Bu nedenle yukardaki yapda unused deiken ad ile ifade edilmitir. Srasyla PB.1 rs ucuna, PB.2 rw ucuna, PB3de E izin ucuna balanmlardr. PB.4 ile PB.7 bitleri 4 bitlik data iin kullanlmaktadr. LCD.C srcs kullanlarak aadaki hazr fonksiyonlar PIC-C program ierisinde kullanlabilir. Src programn banda tanmlanmazsa program derlemesi srasnda hata meydana gelecektir. Hazr fonksiyonlar ve grevleri aada verilmitir. 1. lcd_init() LCDyi hazrlamak iin mutlaka ncelikle kullanlmaldr. 2. lcd_putc(c) LCD ekrannda istenilen koordinata c ile ifade edilen karakteri veya karakter dizisini yazar. Bu fonksiyon ile yardmc anahtarlar kullanlabilir. \f : Ekran temizler ve kursr 1. satrn 1.stununa alr. \n : Kursr 2. satrn bana getirir. \b : Kursr 1 adm geriye hareket ettirir. 3. lcd_gotoxy(x,y) LCD ekrannda yazma koordinatn ayarlar. X stun numarasn, Y ise satr numarasn temsil eder. LCD ekrannda sol st kenin koordinat (1,1)dir.

33

4. lcd_getc(x,y) (x,y) ile ifade edilen koordinattaki karakteri fonksiyon zerinden dndrr. Dier bir ifade ile istenen koordinattaki karakteri okur. Aada ekil 1.16daki devre baz alnarak LCD.C srcs ve hazr fonksiyonlar kullanlmadan gerekletirilen bir LCD kontrol program grlmektedir. rnek 1: //LCD KONTROL PROGRAMI-LCD1_1.C //LCD ekrannda 80H adresine L harfi yazdrma //PB0-X / PB1-RS / PB2-RW / PB3-E / PB4...PB7 - 4 bit data #include #use delay(clock=20000000) //Devrede 20Mhzlik krsital kullnlyor #fuses hs,NOWDT,NOPROTECT,NOLVP #byte port_b=6 // port_b nin adresi #define RS #define RW #define E #define PB4 #define PB5 #define PB6 #define PB7 PIN_B1 PIN_B2 PIN_B3 PIN_B4 PIN_B5 PIN_B6 PIN_B7

io_setout() { set_tris_b(0x00); } komutyaz() { Output_Low(RS); Output_Low(RW); } veriyaz() { Output_High(RS); Output_Low(RW); }

// port_b = k

// RS=0 Komut geliyor. // R/W=0 Yazma modu

// RS=1 veri geliyor. // R/W=0 Yazma modu

uyg()

34

{ Output_High(E); // Uygulamadan nce portlarn kurulmas iin 1 ms ile beklenir delay_ms(1); // Kullanlmazsa LCD almas kitlenmektedir. Output_Low(E); delay_ms(1); } clrdsply() { komutyaz(); port_b=0x00; uyg(); port_b=0x10; uyg(); } dsplay_on() { komutyaz(); port_b=0x00; uyg(); port_b=0xC0; uyg(); }

//01H ekran temizleme komutu gnderiliyor.

//0CH Display ama komutu gnderiliyor.

lcdreset() { komutyaz(); port_b=0x20; // 2 deeri porb7-4'e gnderiliyor. uyg(); port_b=0x20; uyg(); port_b=0x20; //4 bit modda resetleme iin 3 defa 20h PB7-4'e uygulanyor. uyg(); } lcdkur() { komutyaz(); port_b=0x20; // 2 deeri porb7-4'e gnderiliyor. uyg(); port_b=0x80; // 8 deeri porb7-4'e gnderiliyor. uyg(); // 28h komutu uyguland. 4 bit modu 2 satr 5*7 fontu kuruldu. } adreskur() { komutyaz();

35

port_b=0x80; uyg(); port_b=0x00; uyg(); } verigonder() { veriyaz(); port_b=0x42; uyg(); port_b=0xC2; uyg(); } giriskur() { komutyaz(); port_b=0x00; uyg(); port_b=0x60; uyg(); }

// 80H PortB'den gnderiliyor. // DDRAM adresi 00h olarak kuruluyor. 1.satr 1.stun

// RS'nin 1'de kalmas salanyor. // Bu nedenle 42 ve C2 verileri gnderiliyor. // 4CH verisi gnderildi. // DDRAM adresi zerinden L harfi(4Ch) 1.satr 1.stuna yazld.

// 06H PortB'den gnderiliyor. Giri modu saa hareket

void main() { io_setout(); lcdreset(); clrdsply(); lcdkur(); dsplay_on(); giriskur(); adreskur(); verigonder(); } rnek-1deki program ekil 1.16daki devre zerinde altrldnda LCD ekrannda ekil 1.19daki kt elde edilir.

ekil 1.19: rnek-1 iin LCD grnts

36

Aadaki rnekte ise LCDdrv.C adl bir src oluturulmu ve programda bu src kullanlarak 4Fh adresine L harfi yazdrlmtr. rnek 2: //LCD KONTROL PROGRAM-src dosyal //LCD ekrannda 2. satr 16. stuna (4Fh) L harfi yazdrma //PB0-X / PB1-RS / PB2-RW / PB3-E / PB4...PB7 - 4 bit data #include //Gerekli tm tanmlamalar srcde mevcuttur #fuses hs,NOWDT,NOPROTECT,NOLVP void main() { io_setout(); clrdsply(); lcdreset(); lcdkur(); dsplay_on(); giriskur(); adreskur(); verigonder(); } LCDdrv.c src program aada grlmektedir. //LCD SRC-LCDdrv.c //PB0-X / PB1-RS / PB2-RW / PB3-E / PB4...PB7 - 4 bit data #include #use delay(clock=20000000) #byte port_b=6 // port_b nin adresi #define RS PIN_B1 #define RW PIN_B2 #define E PIN_B3 #define PB4 PIN_B4 #define PB5 PIN_B5 #define PB6 PIN_B6 #define PB7 PIN_B7 io_setout() { set_tris_b(0x00); } komutyaz() { Output_Low(RS);

// port_b = k

// RS=0 Komut geliyor.

37

Output_Low(RW); } veriyaz() {Output_High(RS); Output_Low(RW); } uyg() {Output_High(E); delay_ms(1); Output_Low(E); delay_ms(1); } clrdsply() {komutyaz(); port_b=0x00; uyg(); port_b=0x10; uyg(); } dsplay_on() {komutyaz(); port_b=0x00; uyg(); port_b=0xC0; uyg(); }

// R/W=0 Yazma modu

// RS=1 veri geliyor. // R/W=0 Yazma modu

//Portlarn kurulmas buradaki 1 ms ile bekleme

//01H ekran temizleme komutu

//0CH Display ama komutu

lcdreset() { komutyaz(); port_b=0x20; // 2 deeri porb7-4'te uyg(); port_b=0x20; uyg(); port_b=0x20; //4 bit modda resetleme iin 3 defa arka arkaya 20h uyg(); } lcdkur() { komutyaz(); port_b=0x20; // 2 deeri porb7-4'te uyg(); port_b=0x80; // 28h 4 bit modu 2 satr 5*7 fontu uyg();

38

} adreskur() { komutyaz(); port_b=0xC0; uyg(); port_b=0xF0; uyg(); } verigonder() { veriyaz(); port_b=0x42; uyg(); port_b=0xC2; uyg(); } giriskur() {komutyaz(); port_b=0x00; uyg(); port_b=0x60; uyg(); }

// DDRAM adresi 4Fh 2.satr 16.stun

// DDRAM adresine L harfi(4Ch) 2.satr 16. stuna yazlyor.

//06H PortB'den gnderiliyor. Giri modu saa hareket

rnek-2 program ile src dosyas mant da anlalmaktadr. Ana LCD kontrol programnda include komutu ile src dosyas tanmlanrsa src program ile ana program birlikte derlenir. Bylece src programdaki fonksiyonlar ana programda kullanlabilirler. Ayn alma ekli Lcd.c srcs iin de geerlidir. rnek-2deki programn kts ekil 1.20de grlmektedir.

ekil 1.20: rnek-2 iin LCD grnts

Aadaki rnekte PIC-C klasrnde oluturulan LCD2.c srcs kullanlarak 80h adresine L harfi yazan program grlmektedir. Ayn almay gerekletiren program rnek-1de src kullanlmadan daha nce yazlmt. rnek-1 ve rnek-3 karlatrnz.

39

rnek-3 //Lcdye Lcd2.c srcs ile L harfinin yazlmas// #include #use delay(clock=20000000) #include #fuses hs,NOWDT,NOPROTECT,NOLVP void main() { lcd_init(); //LCD'yi ilk kullanma hazrlyor. lcd_putc("\fL"); //Ekran temizlenip L harfi 1.satr 1.stuna yazlyor. } Aadaki rnekte ise 2 satr kullanlm ve LCD kelimesi aa ve yukar srekli hareket ettirilmitir. rnek-4 //Yaznn yukar ve aa srekli yazlmas ve hareket ettirilmesi #include #use delay(clock=20000000) #include #fuses hs,NOWDT,NOPROTECT,NOLVP void main() { int a=1,b=1; lcd_init(); // LCD'yi ilk kullanma hazrlyor. While(1) //Sonsuz dng { lcd_putc("LCD"); // LCD'ye LCD ifadesini yazyor. delay_ms(200); // 200ms gecikme lcd_putc("\f"); // LCD temizleniyor lcd_gotoxy(1,2); // 2.satr 1. stuna geiliyor. lcd_putc("LCD"); delay_ms(200); lcd_putc("\f"); //Ekran temizlenip 1. satra geiriliyor. } }

1.2.2.5. LCDde Karakter OluturmaLCDnin CGRAM bellei kullanlarak ekil 1.10da grlen ASCII tablosundaki karakterlerin dnda zel karakterler gerekletirilebilir. rnein Trke karakterler ASCII tablosuna gre LCDye yazdrlamaz. Ayn ekilde yukar ok, drtgen, aa figr gibi karakterler iin hazr bir kod mevcut deildir. Bunlar gibi zel karakterleri LCD ekranna getirmek iin CGRAM kullanlr. Ancak LCD enerjisi kesildiinde CGRAMda oluturulan karakter de silinir. CGRAMin yaps ve kullanm ekil 1.21 ile anlalabilir.

40

Komut Adres

40 0

48 8

50 10

58 18

60 20

68 28

70 30

78 38

ekil 1.21: CGRAM Yaps

CGRAMde toplam 8 adet zel karakter oluturulabilir. Bu amala yukarda 0-7 aralnda gsterilen 8 adet karakter kmesi kullanlr. Her kmenin bir adresi vardr ve CGRAMdeki karakter bu adresle DDRAMe aktarlr ve ekranda gsterilir. Yukardaki ekilde kme adreslerine ulamak iin gerekli komutlar grlmektedir. rnein 4. kmeye ulamak iin 60H komutu kullanlmaldr. Daha nce anlatld gibi DB6 biti CGRAM kurma komutunu bildirir. DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 1 A A A A A A Yukarda grld gibi aslnda adres sayacnda 6 bitlik CGRAM adresi oluur. rnein 60H komutu ile CGRAM adresi 20H (32D) yaplr. Kmedeki 1. piksel satrnn adresi kme adresinin kendisidir. Bundan sonra her piksel satrnn adresi birer birer artar. rnein 0. kmenin ilk satr adresi 0h ve bu adrese ulamak iin gereken komut da 40Hdir. Sonraki adresler 1H, 2H,3H,4H,5H,6H ve 7Hdir. 7H adresli piksel satrna ulamak iin gereken komut ise 47Hdir. CGRAM adresinin kurulmasndan sonra karakter verileri tek tek her satra yerletirilir. Temel karakter hcrelerinin gerekte, sekiz piksel yksekliinde ve be piksel geniliinde olduu grlebilir, ancak karakterlerin ou iin sadece st yedi satr kullanr. Alttaki sra, genellikle alt izgi imleci (kursr) iin kullanlr. Her karakter sadece be piksel geniliinde olduundan, sadece D0dan D4e kadar olan veri bitleri kullanlr, sol taraftaki D7, D6 ve D5 bitleri ihmal edilir. CGRAM kullanm iin gereken ilem basamaklar aada srasyla verilmitir. 1. lk kurulum ilemleri srasnda giri modu karakter oluturma ilemine uygun olarak kurulur. nk I/D=1 ise CGRAM adresi 1 artar, 0 ise 1 azalr. 2. ncelikle zel karakteri oluturmak iin seilen kmedeki piksel satrlarnda hangi piksellerin dolu(1) hangilerinin bo(0) olacana kat zerinde karar verilir ve piksel satr verileri kartlr. 3. CGRAMdeki kme adresine ulamak iin uygun komut LCDye gnderilir. 4. R/W=0 ve RS=1 yaplr. 5. CGRAMe ilk piksel satr verisi gnderilir. Bu ilemden sonra CGRAM adresi otomatik olarak bir artar. (Giri modu I/D=0 ise 1 azalr) 6. RS=0 yaplr ve DDRAM adresi kurulur.

41

7. 4 bit modda D7-D4 aras, 8 bit modda ise D2-D0 aras bitlere, hangi kmedeki karakter ekrana yazdrlacak ise o bilgi girilir. rnein 0. kme iin 000 bilgisi en dk bite yazlr. 8. RS=1 yaplr. 8 bit modda bir kere E izin darbesi, 4 bit modda ise 2 defa E izin darbesi uygulanr. Bu ilemlerden sonra zel olarak retilen karakter LCD ekrannda grntlenir. Aada CGRAMde yukar ok karakterinin oluturulmas ve LCD ekrannda gsterilmesi ile ilgili rnek verilmitir. Programn sadece daha nceki programlardan fark yazlmtr. --- ile belirtilen yerlere gerekli olan dier fonksiyonlar da yazlmaldr. Programda dsplay_on() fonksiyonunda kursr aktif yaplmtr. 0x0C yerine 0x0E komutu uygulanmtr. //LCD KONTROL PROGRAMI- CGRAM karakteri oluturma //PB0-X / PB1-RS / PB2-RW / PB3-E / PB4...PB7 - 4 bit data ----cgram() { komutyaz(); port_b=0x40; uyg(); port_b=0x00; //CGRAM adresi 40h yapld. uyg(); //0. kmenin adresi ile 0. piksel satrna ulalyor. veriyaz(); //R/W=0 ve RS=1 yapld.Veri yazlacak.

port_b=0x02; uyg(); port_b=0x42; uyg(); port_b=0x02; uyg(); port_b=0xE2; uyg(); port_b=0x12; uyg(); port_b=0x52; uyg(); port_b=0x02; uyg(); port_b=0x42; uyg();

// 0. piksel satr 04h // **Alt drt bite 2 yazlmal. // RS=1 kalmal

00100

//1. piksel satr 0Eh

01110

//2. piksel satr 15h10101

//3. piksel satr 04h00100

42

port_b=0x02; uyg(); port_b=0x42; uyg(); port_b=0x02; uyg(); port_b=0x42; uyg(); port_b=0x02; uyg(); port_b=0x42; uyg();

//4. piksel satr 04h00100

//5. piksel satr 04h00100

//6. piksel satr 04h00100

port_b=0x02; //7. piksel satr 00h uyg(); port_b=0x02; uyg(); // 7. piksel satr kursr kullanm iin bo brakld. // CGRAM'a 5x7 fontunda yukar ok karakteri yazlm oldu. } --------verigonder() { port_b=0x00; veriyaz(); uyg(); uyg(); } ------//ANA PROGRAM void main() { io_setout(); lcdreset(); clrdsply(); lcdkur(); dsplay_on(); giriskur(); cgram(); adreskur(); verigonder(); }

00000

//D7-D4e 0000 yazld. Bylece 0. kme ayarlanm oldu //CGRAM okunup DDRAM'a yazlacak. //4 bit mod almas iin 2 defa E darbesi

43

Programn yazlmas ve altrlmas ile elde edilen grnt aada verilmitir. Grld gibi kursr zel karakterin yazlmas ile saa kaymtr.

ekil 1.22: LCDye Ok karakterinin yazdrlmas

Ayn program, , gibi Trke karakterleri CGRAMda oluturup yeniden yaznz.

44

UYGULAMA FAALYET UYGULAMA FAALYETKullanlan Malzeme ve Ara-Gere 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 1 adet PIC16F877 1 adet 40 bacakl entegre soketi 1 adet HD44780 ilemcili LCD 1 adet LCD iin uygun 14l soket 1 adet 20 MHz kristal 2 adet 22pF kondansatr 10KOhm diren ve 10 KOhm trimpot 1 adet buTon PIC programlayc devresi 5V DC gerilim kayna 1 adet deney bordu Yeterli sayda zil teli Yankeski ve kargaburunV CC RV1 10K VCC X1 20MHzVDD VSS VEE RS RW E 4 5 6 D0 D1 D2 D3 D4 D5 D6 D7 GND 7 8 9 10 11 12 13 14

HD44780

R1 10k

U113 14 1 2 3 4 5 6 7 8 9 10 OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4/SS RE0/AN5/RD RE1/AN6/WR RE2/AN7/CS RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SCL RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30

RST

C1 22pF

C2 22pF

PIC16F877

ekil 1.23: renme Faaliyeti-1 uygulama devresi

45

1 2 3

ekil 1.24: reneme Faaliyeti-1 uygulama kts

LEM BASAMAKLARI ekil 1.23teki devre iin gereken malzemeleri ve ara gereci hazrlaynz. PIC16F877nin ve HD44780 LCDnin katalog bilgilerini inceleyiniz. Devreyi kurunuz. ekil 1.24teki grnty LCD ekrannda veren program MPLAB editrnde LCD srcs kullanarak yaznz. PIC16F877 entegresine program ykleyiniz. Program ekil 1.23teki devrede altrnz. Ayn program LCD srcs kullanmadan yaznz. PIC16F877 entegresine program ykleyiniz. Program ekil 1.23teki devrede altrnz. Src kullanmadan yazdnz programda deiiklik yaparak ayn yazy 2. satrda yazdrnz. Src kullanmadan yazdnz programdaki yazy 1 sn aralklarla 1. ve 2. satr arasnda srekli hareket ettiren deiiklii yapnz.

NERLER 5V gerilim kayna kaliteli bir kaynak olmaldr. Entegrenin ve LCDnin almasn, karakteristik zelliklerini inceleyiniz Enerji vermeyiniz. Devrenizi nce retmeninize kontrol ettiriniz. PIC-C srcsn uygulama devresine uygun hale getirmelisiniz. Grnt koordinatlar (1,1)dir. Entegrenin bacaklarna sokete karp takarken dikkat ediniz. LCDdeki yaznn istediiniz koordinata geldiinden emin olunuz. Daha nce anlatlanlardan yola karak orijinal fikirler gelitiriniz. Entegrenin bacaklarna sokete karp takarken dikkat ediniz. LCDdeki yaznn istediiniz koordinata geldiinden emin olunuz. Stun numaras sabit kalmaldr. Yaz 1 sn 1. satrda 1 sn 2. satrda kalacaktr. Srekli bir dng gerekletirilecektir.

ekil 1.25: renme Faaliyeti-1 uygulama ilem basamaklar

46

LME VE DEERLENDRME LME VE DEERLENDRMEOBJEKTF TESTLER (LME SORULARI) 1. PIC16F877 mikrodenetleyicinin program bellei ka KBdr? A) 8 B) 16 C) 24 D) 32 2. PIC16F877 mikrodenetleyicide ka adet port bulunmaktadr? A) 3 B) 4 C) 5 D) 6 3. PIC16F877de bank seimi iin hangi yazma kullanlr? A) Option B) Intcon C) Status D) PIR1 4. LCDde dardaki elektronik birimlerle haberleen, bu birimlerin gnderdii kodlar uygulayan birime ne ad verilir? A) DDRAM B) CGRAM C) Mikroilemci D) Sv kristal ekran 5. LCD ekrannda grntlenecek karakterin kaytl olduu bellek hangisidir? A) CGROM B) CGRAM C) Mikroilemci D) DDRAM 6. Aadakilerden hangisi ASCII tablosu verilerini saklar? A) CGRAM B) DDRAM C) CGROM D) DDROM 7. LCDden veri okumak iin aadakilerden hangisi kesinlikle yaplmaldr? A) RS=0, E=1 B) RS=1, E=1 C) RS=0, R/W=0 D) RS=1, R/W=1 8. LCDyi resetlemek iin aadakilerden hangisi 4 bitlik moda 3 kere uygulanmaldr? A) 5H B) 10H C) 15H D) 20H 9. LCD.C srcs kullanldnda aadakilerden hangisi LCDyi ilk kullanma hazrlar? A) Kur() B) Lcd_lur() C) Lcd_init() D) Dsply_kur() 10. Lcd_gotoxy(10,2) komutu ile LCD ekrannda hangi fiziksel adrese ulalr? A) 12 B) 49 C) 4A D) CA DEERLENDRME Cevaplarnz cevap anahtarlaryla karlatrnz. Yanl cevaplarnz iin faaliyetin ilgili konularn tekrar ediniz.

47

RENME FAALYET-2

RENME FAALYET-2AMAMikrodenetleyici ile servo motor kontroln hatasz olarak yapabileceksiniz.

ARATIRMA Servo motor eitleri ve yaplar hakknda n aratrma yapnz.

2. SERVO MOTOR KONTROLOtomasyon sistemlerinde retimin otomatik olarak gereklemesi iin elektrik enerjisinin harekete evrilmesi gerekmektedir. Hareket elde etmek iin kullanlan en nemli elemanlar motorlardr. Daha nceki modllerde doru akm motoru ve adm motorunu renmitiniz. Bu renme faaliyetine balamadan nce bu motorlarn yapsn incelemenizde fayda vardr. Doru akm motoru ve adm motoru ile hassas alara dnme hareketi yapmak zordur. zellikle robot sistemlerinde belirli alarla dnme hareketi yaplmaldr. Bu nedenle doru akm motorlar gelitirilmi ve servo motor ortaya kmtr. Servo-motorlar, verilen girie gre istenen asal konuma gelen motorlardr. Gnmzde ac veya dc gerilimle alabilen, eitli glerde ve ebatlarda servo motorlar mevcuttur. Servo motorlarn ok eitli uygulamalarda kullanlmasn nedenleri; Gvenilir olmas Yksek tork deerlerine sahip olmas Konumlamada yksek doruluk gstermesi Kolay kurulum ve balant zellii Kontrol kolayl Ekonomik oluu olarak verilebilir. Bu renme faaliyetinde literatrde RF Servo Motor ya da RC Servo Motor olarak da geen DC Servo Motorun temel yaps incelenecektir.

2.1. Servo Motorun YapsSahip olduu bir mil zerinden gcn darya aktarabilen mekanizmaya Servo ad verilir. Bu mekanizmaya zel olarak tasarlanm motor birimi ve dili kutusunun ilave edilmesiyle servo motorlar retilirler. Hobi amal kullanlan kk apl robotlarda ve oyuncak arabalarda kullanlan servo motorlar iin RF(RC) Servo Motor kavram kullanlr.

48

Uzaktan kumandal uak, araba vs gibi hobi aralarnn ynlendirme mekanizmalarnn harekete geirilmesi, radyo kontroll gemiler ve kuklalar dier kullanm alanlarnn banda gelir. Mil hareket edebildii aralkta belirli bir pozisyona, servoya gnderilen kodlu bir sinyale uygun olarak getirilebilir. Kodlu sinyal servonun giri ucunda bulunduu srece konum aynen korunacaktr. Sinyaldeki deiimlere gre milin as da deiecektir.

ekil 2.1: Servo motorlar

Servo motor robot kontrolnde son derece kullanll bir motordur. ekil 2.1de grld gibi kk boyutlu olmasna ramen ok gldr ve ok az akm eker. Bunun yan sra yksek dndrme momentlerine(tork) sahiptirler. Servo-motorlar 4,7 ile 7 Volt besleme gerilimleri arasnda alabilirler, kontrol sinyali gerilimi TTL seviyesinde olmaldr. Servo motorlar yksek g ve uygun sinyal tepkileri iin genellikle 5V'a yakn gerilimlerde altrlr. ekil 2.2de servo motor i yapsnda bulunan paralar grlmektedir. Elektronik kumanda devresi, geri besleme potansiyometresi, dc motor, dili grubu ve dili kutusu servo motoru meydana getirir. DC motor ift mknatsl bir stratora ve fral rotora sahiptir. Motor mili belirli bir dnme oranna sahip dili sistemine baldr. Bylece yksek bir tork deerine ulalr. Dili sisteminin knda geri besleme potansiyometresi mil konumunu elektronik kumanda devresine iletir. Kumanda devresinin grevi, mil konumunun Ton sresi ile ifade edilen aya gelmesi iin motoru dndrmek ve a noktasnda durdurmaktadr. Dardaki kontrol devresinden teorik olarak 1 ile 2 milisaniye arasnda Ton sresi deien bir kontrol sinyali her 20 milisaniyede bir servoya gnderilir. Ton sresi 1,5 ms olduunda servo motor mili balang pozisyonundadr. Ton sresi 1 milisaniye ise motor

49

mili balang pozisyonuna gre 90 derece bir yne, 2 milisaniye ise -90 derece zt yne konumlanr. 1-2 ms arasnda herhangibir zamanlama ile de -90 ve +90 derecelik alarn arasndaki herhangibir aya konumlanabilir. Ancak bu a aral pratikte 1-2 ms olmayabilir. Servo kontrol devresi tasarm iin ncelikle kataloglara bavurulmal ve motor milinin konumlanaca yn ve sreler denenmelidir. Uygun zamanlama sinyalleri servoya uygulandnda, ierideki elektronik kumanda devresi, ilk nce gelen darbelerin darbe geniliini ler, daha sonra geri besleme potansiyometresinin konumuna bakar ve kendi darbe osilatrnn darbe genilii gelen darbelerle eitleninceye kadar motoru hareket ettirir. Servo motor ierisinde yer alan elektronik kumanda devresi ve geri besleme potansiyometresi ok nemli yaplardr. ekil 2.2de potansiyometre motorun hemen yannda grlmektedir. Geri besleme potansiyometresi lineer deien kaliteli bir potansiyometredir ve mile dorudan baldr. Mille birlikte dnme hareketi yapar. Bylece diren deeri deiir. Potansiyometrenin kullanm amac milin pozisyonunun doru deerde olup olmadn anlamaktr. Mil gereken aya gelmise potansiyometre bunu alglar ve motor durur. Kontrol devresine gelen dn as bilgisi yanl ise motor doru ay bulana kadar dndrlr. Servomotor milinin tarad a teorik olarak maksimum 180dir. Baz servo motor modellerinde maksimum tarama as 210 ye kadar artabilmektedir. Maksimum tarama as kataloglardan ve deneme yanlma yoluyla bulunabilir. Servo motorlarn i yapsnda yer alan mekanik snrlama nedeniyle servo motor mili bu sprme aralnn dna kamaz.

ekil 2.2: Servo motor i yaps

ekil 2.3te 3 adet kablo grlmektedir. Bunlar servo motorun dardaki elektronik sistemlerle balantsn salarlar. Bunlardan krmz olan +5V gerilim iin, siyah olan ase balants iin ve yeil olan da servo kontrol siyali iin kullanlr. Baz servolarda kontrol sinyali iin kullanlan kablonun rengi beyaz veya turuncu olabilmektedir.

ekil 2.3: Servo motor balant kablolar

50

Elektronik kumanda devresince motora uygulanan g katedilmesi gereken mesafe ile doru orantldr. Eer motor milinin geni bir ay katetmesi gerekiyorsa motor tam hzda altrlr. Eer kk bir ada dnme gerekiyorsa motor hz kumanda devresince drlr. Bu alma iin kumanda devresinin kulland kontrol yntemi oransal kontrol yntemidir. Oransal kontroln gereklemesi iin bir kontrol sinyaline ihtiya vardr. Bu kontrol sinyali daha nce anlatld gibi servo motora milin konumlanmas gereken ay bildirir. Darda mikroilemci tabanl bir sistem rnein PIC16F877 servo motorun kontrol bilgisini ok rahat retebilir. Milin konumlanaca a, bu balant zerinden gnderilen bir sinyalin lojik-1 seviyesinde kalma sresi (Ton) ile belirlenir. Ton sresi darbe genilik modlasyonu (PWM) ile ayarlanr. Yatay eksen referans alndnda, servo motor milinin 90lik a pozisyonuna ntr pozisyon da denilebilir ve a zamanlamas hesabnda 0 noktas olarak alnr. Ntr pozisyonun solunda kalan alar saat ynnn tersine artacak ekilde negatif, sanda kalan alar da saat ynnde artacak ekilde pozitif olarak dnlebilir. Ntr pozisyon iin gereken Ton sresinin 1,5 ms olduu varsaylrsa, eer Ton sresi 1.5 ms den ksa sreli ise mil konumu -90 ye doru, 1.5ms den uzun ise mil +90 ye doru ilerleyecektir. Ton sresi 1 ms ise servo mili balang pozisyonuna gre -90 dereceye, 2 ms ise +90 dereceye konumlanr. Bu dnce ekli servo motor milinin konumlanaca alar anlayabilmek asndan tasarmcya yarar salar. Bu anlatlanlardan farkl dnce ekilleri de retilebilir. ekil 2.4te rnek olarak bir servo motorun kontrol sinyallerine gre ulat konumlar gstermektedir.1 0 1 ms 1 0 1,5 ms 1 0 2 ms ekil 2.4: Kontrol sinyallerinin servo motora etkisi

-90 derece

Balang Pozisyonu

+90 derece

51

ekil 2.4te grld gibi Ton sresi milin konumlanaca ay belirler. Ton sreleri ve mil sapma ynleri reticiden reticiye farkllk gsterebilir. Ancak servo motorlarn zamanlama prensipleri ayndr. Servo motorlu bir sistem tasarlanmak istendiinde katalog bilgilerine bavurulmal ve servo karakteristikleri n uygulamalarla belirlenmelidir.

2.2. Src DevreleriServo motoru kontrol etmek iin besleme gerilimi ve bir kontrol sinyalinin gerektiini daha nce belirtmitik. Servo motoru kontrol etmek iin elektronik bir devre tasarlanmaldr. Bu elektronik devrenin mikrodenetleyici tabanl olmasnda fayda vardr. Bir servo motoru srmek iin tasarlanan elektronik devrenin g ksm "servo src" olarak adlandrlr. Endstriyel robotlarda ve dier nmerik olarak kontrol edilen ekipmanlarda servo srcler geni lde kullanlr. Servo srcnn kullanm amac yksek g gerektiren servo motorlara gerekli akm ve gerilimi salamaktr. Servo srcye servo motorun hareketi iin uygun kontrol sinyalleri uygulanr. PWM sinyali uygulanan servo srclere PWM servo srcler ad da verilir. PWM modlasyonu ile transistr veya mosfetler anahtarlanarak servo motora daha yksek g aktarlabilir. Transistorl devrelerde, zellikle transistorlerin lineer alma blgesinde s eklinde ortaya kan bir g harcanr. Bu nedenle g kayb meydana gelir. Transistrlerdeki g kaybn azaltmak ve servo srclerin verimini iyiletirrnek iin DC konvertrlerde olduu gibi darbe genilik modulasyon teknii kullanlr. Bir PWM srcde, transistr ya doyum blgesinde yada kesim blgesindedir. Bylece kaybedilen g azalr ve servo motora daha yksek g aktarlr. Servo motor kontrol sinyalinin uygulanmas ile hareket ettiinde hareketini gerekletirmek iin besleme kaynandan akm eker. Kontrol devresi ve servo motor ayn besleme kaynandan akm ektiinde istenmeyen parazit sinyaller ve gerilim dalgalanmalar oluabilir. Bu durum eer g kayna kalitesiz ise mikrodenetleyicinin almasn etkiler. Dk gl servo motorlar mikrodenetleyici portuna bir led diyot gibi dorudan balanabilirler. Ancak karmak sistem tasarmnlarnda servomotorun mikrodenetleyici ile ayn kayna kullanmas zellikle motorun dn hareketleri srasnda program almasn etkileyebilir. Servomotorun gcn arttrmak iin kondansatr kullanlabilir. Kondansatr dearj akm servo motora takviye yaparak gcn arttrr. En etkin zm servo motor ile mikrodenetleyici arasnda tampon bir eleman kullanmaktr. rnein ekil 2.6da grld gibi mosfet kullanlarak kontrol entegresinin ve motorun besleme kaynaklar ayrlabilir. Src tasarmnda dier nemli bir nokta da servomotorlarn boyutlar ve zelliklerinin farkl olabilecei gereidir. Bu balamda kataloglara bavurularak karakteristik zelliklerine ve kablo renklerine dikkat etmek gerekir. Yazlan programda ya da saysal k reten devrede servonun kontrol giriine uygun bir kare dalga sinyal tasarlanr. Eer bir mikrodenetleyici program yazlyorsa +90 ve -90 derecelik alar iin gereken Ton zaman deerleri arasnda bir lojik-1 sresi ayarlanmaldr.

52

Her lojik-1 darbesi arasnda 10-18 ms lojik-0 ile bekleme yaplmaldr. Aslnda her Ton sresi arasnda 10 mslik Toff sreleri servo motorun hareket etmesi iin yeterli olacaktr. Servo motora kontrol sinyali uygulanmazsa mil bota kalr ve el ile bile dndrlebilir. Servonun konumunu korumas iin srekli olarak kontrol sinyalinin uygulanmas gerekir. Ton sresi deitiinde servo motor mili yeni a konumuna hareket eder. Aada periyotu 20 ms olan bir kontrol sinyali grlmektedir.

2ms

18 ms

20 ms ekil 2.5: rnek kontrol sinyali

ekil 2.5te servo motor milini teorik olarak 90 derecelik konuma getiren kontrol sinyali grlmektedir. Sinyal eklinde grld gibi Ton darbesi 18 ms aralklarla srekli verilmektedir. Sreklilik salanmazsa mil bota kalr. Eer mile bal bir robot kolu varsa arlk nedeniyle mil konum deitirebilir ve istenmeyen durumlarla karlalabilir. Daha nce belirtildii gibi servo motor mili tam tur atamaz. Servo motorun ierisinde mekanik olarak snrlama yaplmtr. Servo motoru ekil 2.5te grld gibi 2 ms Ton sreli sinyaller ve 10-18 mslik bekleme aralklarn tekrarlayarak konumlayabiliriz. Daha sonra servo motoru bir u konumdan dier u konuma tam tersi ynde konumlandrmak iin de 1 msn. sinyal ve 10-18 mslik bekleme srelerinden oluan bir dizi sinyal gerekir. Kontrol sinyali arka arkaya uyguland zaman aftn yeni konumuna ulamas iin bir sre geer. Servo motorun i devresinin kontrol sinyaline kar olan tepki sresi de nemlidir. Sinyali reten devrenin tasarmnda tepki sresi ve yeni konuma ulama sresi de gz nne alnmaldr.

2.1.1. Servo Motorun 555 Entegresi ile KontrolKonum bilgisini veren kontrol sinyalini retmek iin eitli devreler tasarlanabilir. Darbe reteci olarak sinyal jeneratr, zel tasarlanm osilatrler veya dijital devreler kullanlabilir. ekil 2.6da 555 osilatr entegresi ile yaplan bir src devresi grlmektedir.

53

VCC

R4 1k R1 220k U1 Q DC 3 7 VCC 4 R3 10k P1 10k R2 15k Q1 IRF640 8+88.8

R

5

CV GND 6

2 C1 100nF

TR

C2 100nF

ekil 2.6: 555 Entegresi ile yaplan src devresi

Devrede 555 knda PWM sinyali elde edilmektedir. P1 potansiyometresi ile Ton sresi ayarlanr. Servomotor dorudan 555 kna balanamaz. Dorudan balandnda entegre almasnda kararszlklar meydana gelebilir. Servo motorun verimli bir ekilde srlebilmesi ve kararszlklar nleyerek kaliteli bir kontrol sinyali elde edilmesi iin mosfet kullanlr. Mosfet kap giriine gelen kare dalga sinyal ile mosfet ms baznda alp kapatlr. Mosfetin tampon olarak kullanld bu devrede servo motor Vcc kaynandan ihtiyac olan akm eker.

a. Mosfet giri sinyali

1

TH 555

b. Mosfet k sinyali

ekil 2.7: 555 Servo src devresi sinyalleri Time/Div=5ms Volt/Div=2V

54

ekil 2.7deki sinyallerde grld gibi mosfet kndaki sinyalin Ton zaman yaklak 1,5 msdir. Tepe deeri de 5Vtur. Servo motor mili balang pozisyonuna gelir. Burada mil hareketsiz bekler. Ton zaman deiirse yeni konumuna dn yapar. Sinyal ekillerinde grld gibi mosfet knda mosfet giri sinyalinin 180 derece faz farkl versiyonu elde edilmitir. Mosfet giri sinyali lojik-1 iken mosfet iletime geer. Aka ucu lojik-0 (ase) potansiyeline gelir. Giri sinyali lojik-0 iken mosfet yaltmdadr. Bu durumda aka ucu lojik-1 potansiyeline ular. ekil 2.7de grld gibi mosfet uzun sreler iletimde kalmaktadr. Bu durumda mosfet daha fazla g harcayacaktr. Mosfetin iletimde kalma sresini ksaltmak iin servo kontrol sinyali k mosfetin kaynak ucundan alnabilir. Bu durumda k ile giri ayn fazl olur ve mosfet sadece servo motorun iletimde kalmas gereken zamanlarda g harcar. Bu amala kullanlabilecek mosfet balant rnei ekil 2.9da grlmektedir.

2.1.2. Servo Motorun PIC16F877 Mikrodenetleyici ile KontrolPIC16F877 mikrodenetleyici kullanarak ok kaliteli zamanlama sinyalleri elde edilebilir ve servo motor hassas alarla hareket ettirilebilir. Bu balamda program ierisinde PIC-C dilinin avantajarn kullanmak gerekir. rnein 1 mslik bir zamanlama iin delay_ms(1) komutunu kullanmak yeterlidir. ekil 2.8de servo motoru kontrol etmek iin gereken ak diyagram grlmektedir. PIC16F877yi ilk kullanma hazrladktan sonra servonun konumlanaca ay bildiren zamanlama sinyali oluturulur. Bu sinyal alt program yardmyla da oluturulabilir. ncelikle servo motorun kontrol ucuna bal port biti lojik-1 yaplr. Kullanlan servo motorun karakteristiine gre Ton sresi ayarlanr ve bu sre kadar bekleme yaplr.Bylece kontrol ucuna a kontrol bilgisi ulam olur. Lojik-1 seviyesindeki beklemeden sonra PIC ucu lojik-0 yaplr. Ayn ekilde 10-18 ms lojik-0da bekleme yaplr. Bu ilemler srekli tekrarlanrsa motor mili bota kalmadan srekli a pozisyonunu korur. Bala

Tanmlamalar

Ton sinyali 1-2 ms

Toff sinyali 10-18 ms

Durekil 2.8: Src sinyali ak diyagram

55

ekil 2.9da PIC16F877li bir servo src devresi rnei grlmektedir. rnek devrede grld gibi PIC ile servo motor arasna n kanal bir mosfet balanmtr. Servo motor dn hareketi yapmaya baladnda gerilim kaynandan akm eker. Akm ekilmesi esnasnda gerilim kaynandaki dalgalanma mikrodenetleyiciyi etkiler. Mosfet kullanlmadan da 5Vluk servo motorlar dorudan mikrodenetleyici portuna balanarak dnme hareketi yapabilir. Ancak mosfet gibi arada bir tampon eleman kullanp servo motor iin ikinci bir besleme kayna kullanmak src devrenin ve tm sistemin ok daha kaliteli ve gvenilir olmasn salayacaktr. zellikle servo motor bir yk hareket ettirdii zaman daha fazla akma ve dolaysyla gce ihtiya duyacandan harici besleme kayna yararl olacaktr. Harici besleme kaynann kullanlp kullanlmayaca yaplan sisteme gre tasarmcnn karar verecei bir problemdir. ekil 2.9da mosfet ve servo motor iin ikinci besleme kayna(Vcc) kullanlmtr.VCC

U1 13 14 1 2 3 4 5 6 7 8 9 10 OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30+88.8

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4/SS RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RE0/AN5/RD RC2/CCP1 RE1/AN6/WR RC3/SCK/SCL RE2/AN7/CS RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

Q1 IRF640

R6 3.3k R3 1k

ekil 2.9daki devrede mosfet kullanldndan ve k kaynak (source) ucundan alndndan zamanlama sinyalleri mikrodenetleyici k ile ayn fazl olarak retilmitir. rnek-1de basit bir servo motor program grlmektedir. //SERVO MOTOR KONTROL PROGRAMI- ORNEK-1 //PD0: Servo kontrol sinyali iin kullanlacak #include #use delay(clock=20000000) #fuses HS,NOWDT,NOPROTECT,NOLVP #byte port_d=8 //portd'nin adresi #define CNT PIN_D0 io_setout() {

PIC16F877 ekil 2.9: PIC16F877li Servo src devresi Sinyalleri

56

set_tris_d(0x00); } void main() {io_setout(); while(1) { Output_High(CNT); delay_us(1750); Output_Low(CNT); delay_us(18250); } }

// port_d = k

// Lojik-1 sresi 1,75 ms // Lojik-0 sresi 18,25 ms // Periyot 20 ms

ekil 2.10da N kanal mosfet k grlmektedir. Mosfet k ile mikrodenetleyici k ayn fazldr. Mosfet kap giriine lojik-1 seviyeli sinyal geldiinde mosfet iletime geer. Kaynaktaki R3 direncinin st ucu lojik-1 olur. Bylece giri lojik-1 iken k da lojik1dir. Tam tersi bir ekilde kap giriine lojik-0 seviyeli sinyal geldiinde mosfet yaltmdadr. Bu durumda mosfet yaltmda olduu iin R3 direncinin st ucu ase potansiyelindedir, dier bir deyile lojik-0dr. Sonu olarak girideki zamanlama sinyalinin ayns kta elde edilir. Mosfet sayesinde servo motor kendisi iin gereken akm gerilim kaynandan eker. Mosfet kndaki sinyalin Ton sresi 1,75 ms, Toff sresi de 18,25 msdir. Mosfet kndaki sinyalin periyotu ise; T=Ton+Toff formlne gre T=1,75+18,25=20 ms bulunur. Zamanlama sinyaline gre servo motor 1,75 ms ile ifade edilen aya doru dn yapar ve bu ada bekler.

ekil 2.10: Servo src devresi mosfet k Time/div=5 ms Volt/div=2V

57

Servo motor milinin ntr pozisyonu 1,5 ms, + 90 derece iin Ton sresi 2 ms ve - 90 derece iin Ton sresi 1 ms ise 1,75 mslik Ton sresi yaklak ka derecelik aya karlk gelir? Soruda verilen karakteristie sahip servo motorda 1 derecelik dn iin gereken Ton sresini yaklak olarak bulabiliriz. Buna gre; Balang pozisyonuna 0 derece dersek, 0 dereceden +90 dereceye kadar olan zaman fark= 2ms-1,5ms=0,5 ms (500 s ) bulunur. Derece bana den zaman=500 s /90=5,55 s dir. Servo motorun +45 derecelik konuma gitmesini istiyoruz. +45 derece iin gereken Ton zaman farkn bulmak iin; Ton=45.(5,55 s )=250 s bulunur.Balang Pozisyonu1,5 ms

45 1 ms 2 ms

-90 ekil 2.11: Servo motor a ve zaman durumlar

+90

Bulunan zaman fark programda belirlenecek Ton sresi iin kullanlacaktr. Motor mili 1,5 mslik balang konumundan saat ynnde + 45 derece ilerleyecekse 1,5 msnin zerine 250 s eklenir. rnek-1 programnda 45 derecelik a iin gereken zamanlama tasarlanmtr. 45 derece iin gereken Ton sresi Ton=1,5ms+0,25 ms=1,75 ms bulunur. ekil 2.9daki mosfet kndaki sinyalin Ton sresinin 1,75 ms olmas bu yzdendir.

ekil 2.12: Servo motorun 45 dereceye konumlanmas

58

UYGULAMA FAALYET UYGULAMA FAALYETKullanlan Malzeme ve Ara-Gere 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 1 adet PIC16F877 1 adet 40 bacakl entegre soketi 1 adet RC Servo Motor 1 adet 20 MHz kristal 2 adet 22pF kondansatr 3x10KOhm direnler 3 adet buTon PIC programlayc devresi 5V DC gerilim kayna 1 adet deney bordu Yeterli sayda zil teli Yankeski ve kargaburunC1 22pF C2 22pF

X1 20 MHz13 14 1 2 3 4 5 6 7 8 9 10

U1OSC1/CLKIN OSC2/CLKOUT MCLR/Vpp/THV RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD 33 34 35 36 37 38 39 40 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30

Vcc

Vcc

Vcc

R3 10k

R1 10k

R2 10k

RA0/AN0 RA1/AN1 RA2/AN2/VREFRA3/AN3/VREF+ RA4/T0CKI RA5/AN4/SS RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RE0/AN5/RD RC2/CCP1 RE1/AN6/WR RC3/SCK/SCL RE2/AN7/CS RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7

Vcc

+88.8

RST

B1

B2

PIC16F877

ekil 2.13: renme Faaliyeti-2 uygulama devresi

59

Devrenin almas: Devreye ilk enerji verildiinde servo motor balang pozisyonunda olacaktr. Bu aamadan sonra B1 buTonuna basldnda motor mili -90 dereceye gelecek, B2 buTonuna basldnda ise +90 dereceye dnecektir. alma srekli +90 ve -90 derece arasnda gerekleecektir. lem Basamaklar ekil 2.13teki devre iin gereken malzemeleri ve ara gereci hazrlaynz. PIC16F877 mikrodenetleyicinin ve kullandnz servo motorun katalog bilgilerini inceleyiniz. Servo motorun 0, +90, -90, +max vemax alar iin gereken Ton sinyallerini deneme yanlma yaparak bulunuz. Devreyi kurunuz. Devrenin almas iin gereken program yaznz. PIC16F877 entegresine program ykleyiniz. Program ekil 2.13teki devrede altrnz. Balang deerindeki kontol sinyalini osilaskop ile lnz. Servo motorun pozisyonunu iziniz. B1 butonuna basnz. Motor milinin yeni konumundaki osilaskop grntsn ve servo milinin pozisyonunu iziniz. B2 butonuna basnz. Motor milinin yeni konumundaki osilaskop grntsn ve servo milinin pozisyonunu iziniz. RST butonuna basnz ve motor milinin durumunu gzleyiniz ve iziniz. neriler 5V gerilim kayna kaliteli bir kaynak olmaldr. almalarn ve karakteristik zelliklerini inceleyiniz Butonlar gz nne almadan servoyu dorudan kontrol eden basit bir programla a srelerini bulabilirsiniz. Enerji vermeyiniz. Devrenizi nce retmeninize kontrol ettiriniz. Ak emasn oluturmanz size kolaylk salayacaktr. Entegrenin bacaklarna sokete karp takarken dikkat ediniz. Servo motorun balang asn kontrol ediniz. Motor miline dz bir ubuk takmanz a kontroln kolaylatracaktr. Balang noktasnndaki motor milini yatay eksene dik olacak pozisyona getirmeniz alar takip etmenizi kolaylatrr. Motor milinin yeni pozisyonunu balang noktasn referans alarak iziniz. Motor milinin yeni pozisyonunu balang noktasn referans alarak iziniz. RST butonuna basmadan nce motorun konumunun ne olabileceini dnnz.

* +max saat ynnde motor milinin ulat maksimum a deeridir. max motor milinin saat ynnn tersine ulat maksimum a deeridir.ekil 2.14: renme Faaliyeti-2 uygulama ilem basamaklar

60

LME VE DEERLENDRME LME VE DEERLENDRMEOBJEKTF TESTLER (LME SORULARI) 1. stenilen bir aya dorudan konumlanabilen motor tr aadakilerden hangisidir? A) Step motor B) DC motor C) AC motor D)Servo motor 2. Sahip olduu bir mil zerinden gcn darya aktarabilen elemana ne ad verilir? A) Kam B) Servo C) ark D) aft 3. Servo motora uygulanan sinyalin Ton sresinin deimesi sonu olarak aadakilerden hangisini dorudan deitirir? A) A B) Hz C) vme D) Tork 4. Servo motor i yapsnda tork deerini arttran yapya ne ad verilir? A) Mknats B) Mil C) Dili kutusu D) Rotor 5. Servo motorun dnme as hangi eleman ile alglanr? A) Kumanda devresi B) Geri besleme potansiyometresi C) Motor mili D) Strator 6. Aadakilerden hangisi motor milinin istenenen a deerine ayarlar? A) Rotor B) Geri besleme potansiyometresi C) Motor bobini D) Kumanda devresi 7. Kontrol sinyali Ton sresi 1,25 ms ise motor milinin katedecei a teorik olarak aadakilerden hangisidir? A) -30 B) -45 C) +30 D) +45 8. +60 derecelik a hareketi iin Ton sresi teorik olarak ne olmaldr? A) 1,5 ms B) 1,6 ms C) 1,8 ms D) 2 ms 9. Periyot sabit kalmak artyla Ton sresinin deimesi ile elde edilen sinyal modlasyon tekniine ne ad verilir? A) FM B) AM C) PCM D) PWM 10. Bir servo motoru srmek iin tasarlanan elektronik devrenin g ksmna ne ad verilir? A) Kumanda devres