BÖLÜM 4 MİKRODENETLEYİCİLER - II Yağlıoğlu ÖRNEK PROBLEMLER: Aşağıda işlenen tüm konuları içerisine alan çözülmüş örnekler verilmiştir. Bu örneklerde esas amaç, gerçek hayattaki problemlerin mikroişlemciye uyarlanmasını sağlamaktır. Ayrıca bu örnekler programlamanın değişik durumlarını öğretmesi açısından faydalı olacaktır. ÖRNEKP ROBLEM 1: Bir süpermarkette kapıların otomatik çalışması istenmektedir. Bu iş için kullanılacak optik sensörler görüş açısındaki cismi algılayınca 1, boşta iken 0 vermektedirler. Bir kapının giriş-çıkış şeklinde çalışması için gerekli devreyi tasarlayınız. Kapı ortasında kimsenin sıkışmaması için gerekli tedbiri alınız. Çözüm: Burada en az 3 sensöre ihtiyaç olacaktır. Bunlar kapıda biri olduğunu algılayan sensör ile kapı tam açık ya da kapı tam kapalı şeklindeki değerleri veren limit switch şeklindeki kapı açık-kapalı sensörleridir. Bunlar olduğunda problem kapıda biri varsa ve kapı tam açık değilse kapı açma motorunu çalıştır. Kapıda kimse yoksa ve kapı kapalı değilse kapı kapatma motorunu çalıştır şeklinde düşünülür. ;Otomatik kapı sorusu çözümü ;RB0,RB1 uçlarında kapıda biri var işareti veren sensörler bağlı ;RB2 de kapı tam açık sensörü bağlı ;RB3 te kapı tam kapalı sensörü bağlı ;RA0 ucunda kapıyı açan motor bağlı ;RA1 ucunda kapıyı kapatan motor bağlı LIST P=16F84 EQU 3h PORTA EQU 5h PORTB EQU 6h STATUS 32 MİKRODENETLEYİCİLER - II Yağlıoğlu TRISA EQU 5h TRISB EQU 6h X1 org 0h goto START bsf STATUS,5 movlw h'FF' movwf TRISB movlw 00h movwf TRISA bcf STATUS,5 sil clrf PORTA kontrol movf PORTB,w andlw 03h ;sadece RB0 ve RB1 bilgilerini ayırmak için btfsc STATUS,2 ;kapıda biri yoksa ANDLW işleminin sonucu START ; Power on ; 0000 ;B portu giriş ;A portu çıkış ;0 dır ac kapat goto kapat btfsc PORTB,2 goto sil movlw 01h movwf PORTA goto kontrol btfsc PORTB,3 goto sil movlw 02h movwf PORTA goto kontrol END 33 MİKRODENETLEYİCİLER - II Yağlıoğlu ÖRNEKP ROBLEM 2: Bir süpermarkette iç ortam aydınlığının 100 Lüx’ün üzerinde ayarlanması isteniyor. Bu iş için aydınlık derecesini ölçmek amacıyla aşağıda değerleri verilen LDR kullanılmıştır. Ayrıca aydınlatma lambaları iki ayrı grup altında birleştirilmiştir. Buna göre, ışık miktarı 80 Lüx’den az iken her 2 grup lambanı yanması, 80-100 Lüx arasında ise 1 grup lambanın yanması isteniyor. Eğer, ışık miktarı 100 Lüxün üzerinde ise lambaların sönük olması isteniyor. Gerekli devreyi çiziniz ve programını yazınız. 80 Lüx’de LDR Direnci :100 K 90 Lüx’de LDR Direnci :90 K 100 Lüx’de LDR Direnci :80 K Çözüm : Yine ADC gerektiren bir örnek. Burada aydınlığı ölçecek LDR ile bir gerilim bölücü direnç kullanarak ve kritik aydınlık değerlerinde ADC’nin üreteceği sayı hesaplanarak, büyük-küçük kıyaslamaları ile problem çözülür. ;Market aydınlığını 100 lüxe ayarlama işlemi ;B portu giriş yapılıp ADC üzerinden aydınlık bilgisi okunacak ;LDR ile gerilim bölücü direnç 100 K bağlanmış olup ;80 Lüx de 128 sayısı, 100 Lüx de 113 sayısı B portundan okunuyor ;RA0 1. grup lamba kontrol çıkışı ;RA1 2. grup lamba kontrol çıkışı LIST P=16F84 STATUS EQU 3h PORTB EQU 6h TRISB EQU 6h PORTA EQU 5h TRISA EQU 5h da EQU 11h 34 MİKRODENETLEYİCİLER - II X1 org 0h goto START bsf STATUS,5 movlw h'FF' movwf TRISB movlw 00h movwf TRISA bcf STATUS,5 sil clrf da siyah movf PORTB,w sublw .128 btfsc STATUS,0 goto beyaz movlw 03h movwf da goto yaz movf PORTB,w sublw .113 btfss STATUS,0 goto gri clrf da goto yaz movlw 01h movwf da START beyaz gri Yağlıoğlu ; Power on ; 0000 ;B portu giriş ;A portu çıkış 35 MİKRODENETLEYİCİLER - II yaz movf da,w movwf PORTA goto sil Yağlıoğlu END ÖRNEKPROBLEM 3: Bir cam üretim tesisinde, hareketli bant sistemi üzerindeki ürünlerin kalitesi 4 ayrı noktadaki optik sensörlerle kontrol ediliyor. Bu sensörlerin her biri malzeme normal ise 0, problemli ise 1 veriyor. Her bir sensörün kendi yanında bir adet imha pistonu mevcut olup, herhangi bir sensörden hatalı imalat bilgisi gelirse, ona bağlı olan pistonun 1 mili saniye süreyle ileri gidip sonra tekrar geri gelmesi isteniyor. Bu işlem için gerekli devrenin prensip şemasını çiziniz ve programını yazınız. çözüm: ;Cam üretim tesisi problemi ;RA0 ,RA1,RA2,RA3 uçları hatalı üretim sensörleri ;RB0, RB1,RB2, RB3 uçları piston kontrol çıkışları LIST P=16F84 STATUS EQU 3h PORTB EQU 6h TRISB EQU 6h PORTA EQU 5h TRISA EQU 5h D0 equ 11h X1 org 0h goto START ;Zaman bekletme için değişken ; Power on ; 0000 36 MİKRODENETLEYİCİLER - II START bsf STATUS,5 movlw 00h movwf TRISB movlw 0Fh movwf TRISA bcf STATUS,5 sil clrf PORTB devam movf PORTA,w andlw 0Fh movwf PORTB call BEKLE goto sil Yağlıoğlu ;RB7,RB6,RB3,RB2,RB1,RB0 çıkış ;A portu giriş ;******************************************************** ; BEKLE 1 milisaniye Altprogramı ;******************************************************** BEKLE ZD movlw .40 movwf D0 decfsz D0,1 goto ZD return END ÖRNEKPROBLEM 4: Bir asansör sisteminin fazla yük konusundaki problemleri çözme konusu şu şekilde ayarlanıyor. Eğer asansördeki yük 3000 kilogramdan az ise tek motor devreye girerek asansörü çalıştırıyor. Eğer yük 3000-5000 kilogram arasında ise iki adet motor ile sistemin çalışması sağlanıyor. Eğer yük 5000 kilogramdan fazla ise, bu durumda asansörün hareket etmemesi ve aşırı yük alarmının devreye girmesi isteniyor. Bu problemin çözümü için kullanılan basınç sensörü hiç yük yokken değeri 1000 ohm olup elemanın direnç değeri her 1 37 MİKRODENETLEYİCİLER - II Yağlıoğlu kilogramda 1 ohm artmaktadır. Bu işlem için gerekli devrenin prensip şemasını çiziniz ve programını yazınız. çözüm: ;Asansör için aşırı yük koruma işlemi ;B portu giriş yapılıp ADC üzerinden ağırlık bilgisi okunacak ;Ağırlık sensörü ile gerilim bölücü direnç 6000 Ohm bağlanmış olup ;3000 kg da 102 sayısı, 5000 kg da 128 sayısı B portundan okunuyor ;RA0 1. motor kontrol çıkışı ;RA1 2. motor kontrol çıkışı ;RA3 alarm çıkışı LIST P=16F84 STATUS EQU 3h PORTB EQU 6h TRISB EQU 6h PORTA EQU 5h TRISA EQU 5h da EQU 11h X1 org 0h goto START bsf STATUS,5 movlw h'FF' movwf TRISB movlw 00h movwf TRISA bcf STATUS,5 START ; Power on ; 0000 ;B portu giriş ;A portu çıkış 38 MİKRODENETLEYİCİLER - II sil clrf da agır movf PORTB,w sublw .128 btfsc STATUS,0 goto orta movlw 04h movwf da goto yaz movf PORTB,w sublw .102 btfss STATUS,0 goto l1 movlw 01h movwf da goto yaz movlw 03h movwf da movf da,w movwf PORTA goto sil orta l1 yaz Yağlıoğlu END ÖRNEKPROBLEM 5: 60 saniye süre içerisinde, istenilen süreye ayarlanabilen ve ayarlanan süreden birer saniye aralıklarla geri sayarak süre tamamlandığında bir zili çalan kronometre (zaman rolesi) yapılmak isteniyor. Bu işlem için gerekli devreyi tasarlayınız ve programını yazınız. 39 MİKRODENETLEYİCİLER - II Yağlıoğlu çözüm: ;RA0 ucu ayar butonu her basışta 1 geri saydırır ;RA1 ucu zaman başlatma butonudur, basılınca sistem ;geri sayar ve diğer buton iptal olur ;Süre 0 olunca RA2 ucundaki zil çıkışı 1 olur ;B portunda 2 adet 4056 ile iki display bağlıdır LIST P=16F84 STATUS EQU 3h PORTB EQU 6h TRISB EQU 6h PORTA EQU 5h TRISA EQU 5h sayi EQU 0Ch ; PORTB'ye gönderilecek sayı D1 EQU 0Eh ; BEKLEME SAYACI 1 D2 EQU 0Fh ; BEKLEME SAYACI 2 X1 org 0h ; Power on goto START ; 0000 bsf STATUS,5 movlw 0h movwf TRISB movlw 03h movwf TRISA bcf STATUS,5 START movlw 60H movwf sayi TOP movf sayi,W movwf PORTB 40 MİKRODENETLEYİCİLER - II ayar ates say btfsc PORTA,0 goto eksil btfss PORTA,1 goto ayar movf sayi,w movwf PORTB call onluk sifir dur Yağlıoğlu BEKLE decf sayi,1 movf sayi,W andlw 0Fh sublw 0Fh btfss STATUS,2 goto sifir decf sayi,1 decf sayi,1 decf sayi,1 decf sayi,1 decf sayi,1 decf sayi,1 goto say movf sayi,W sublw 0h btfss STATUS,2 goto say bsf PORTA,2 goto dur 41 MİKRODENETLEYİCİLER - II eksil onluk2 sifir2 yaz Yağlıoğlu decf sayi,1 movf sayi,W andlw 0Fh sublw 0Fh btfss STATUS,2 goto sifir2 decf sayi,1 decf sayi,1 decf sayi,1 decf sayi,1 decf sayi,1 decf sayi,1 goto yaz movf sayi,W sublw 0h btfss STATUS,2 goto yaz goto TOP movf sayi,w movwf PORTB goto ayar ;******************************************************** ; BEKLETME ALT PROGRAMI ;******************************************************** BEKLE movlw .200 ;200*200 lük iki döngü yaklaşık 1 saniye movwf D1 ;kabul edilecektir. 42 MİKRODENETLEYİCİLER - II ZD1 ZD2 movlw .200 movwf D2 decfsz D2,1 goto ZD2 decfsz D1,1 goto ZD1 Yağlıoğlu return END ÖRNEKPROBLEM 6: Dönen platform şeklindeki bir alış-veriş reyonunda, kontrol sisteminin reyondaki malın çok azalması veya normalden fazla olması problemleri çözme konusu şu şekilde ayarlanıyor. Reyondaki yük 300 kilogramdan az ise tek motor devreye girerek reyonun dönmesini sağlıyor; eğer yük 300-500 kilogram arasında ise iki adet motor ile sistemin çalışması sağlanıyor. Şayet yük 500 kilogramdan fazla ise bu durumda sistemin hareket etmemesi isteniyor ve yük 700 kilogramdan fazla ya da 100 kilogramdan az ise yine sistemin çalışmayıp bir ikaz alarmının devreye girmesi isteniyor. Bu problemin çözümü için kullanılan basınç sensörü hiç yük yokken değeri 100 ohm olup elemanın direnç değeri her 1 kilogramda 1 ohm artmaktadır. Bu işlem için gerekli devrenin prensip şemasını çiziniz ve programını yazınız. çözüm: ;Dönen platform için aşırı yük koruma işlemi ;B portu giriş yapılıp ADC üzerinden ağırlık bilgisi okunacak ;Ağırlık sensörü ile gerilim bölücü direnç 600 Ohm bağlanmış olup ;300 kg da 102 sayısı, 500 kg da 128 sayısı ;700 kg da 146 sayısı B portundan okunuyor ;RA0 1. motor kontrol çıkışı ;RA1 2. motor kontrol çıkışı ;RA3 alarm çıkışı 43 MİKRODENETLEYİCİLER - II LIST P=16F84 STATUS EQU 3h PORTB EQU 6h TRISB EQU 6h PORTA EQU 5h TRISA EQU 5h da EQU 11h X1 org 0h goto START bsf STATUS,5 movlw h'FF' movwf TRISB movlw 00h movwf TRISA bcf STATUS,5 movlw 04 movwf da movf PORTB,w sublw .102 btfss STATUS,0 goto orta movlw 01h movwf da goto yaz START sil hafif Yağlıoğlu ; Power on ; 0000 ;B portu giriş ;A portu çıkış 44 MİKRODENETLEYİCİLER - II orta agir yaz movf PORTB,w sublw .128 btfss STATUS,0 goto agir movlw 03h movwf da goto yaz movf PORTB,w sublw .146 btfss STATUS,0 goto yaz movlw 00h movwf da movf da,w movwf PORTA goto sil Yağlıoğlu END ÖRNEKPROBLEM 7: Bir pic16f84 buton şeklinde çalışan bir algılayıcının önünden geçen parçaları sayan 0-F sayıcı şeklinde çalışıyor. Ayrıca sayıcı olarak çalışan bu pic16f84’ün 11h adresindeki sayıyı (bu sayı sayıcının ekranda gösterdiği sayıdır) bir butona basılınca diğer bir pic16f84’ün 12h adresineaktarılmasını sağlıyor. Diğer pic16f84 ise birinciden gelen sayıyı alıyor ve ekranda gösteriyor . Bu sistem için gerekli devreyi çiziniz ve her iki pic16f84’te olması gereken pogramları yazınız. (İpucu: Sayıcı kısmını, haberleşme kısmını ve sayıları ekranda gösterme kısmını ayrı alt programlar şeklinde tasarlayınız.) 45 MİKRODENETLEYİCİLER - II Yağlıoğlu çözüm: ;Pic1 programı ;Pic ler arası interrupt kullanarak iletişim örneği ;1 nolu pic RB1 ucundan gelen sinyalleri sayıyor ;ve RB2 ucundaki butona basılınca o andaki sayıyı ;RB4-7 üzerinden 2. PIC’e gönderiyor. ;RA0-3 üzerinde 4056 ile display bağlı list p=16f84 include "p16f84.inc" say equ 11h tmp equ 12h tmp2 equ 13h org 00h goto basla org 04h goto intprg bsf STATUS,5 clrf TRISA movlw b'00000111' movwf TRISB movlw b'01000000' movwf OPTION_REG bcf STATUS,5 movlw b'10010000' movwf INTCON clrf say clrf tmp basla sil ;Yükselen kenar tetiklemeli RB0 ;interruptlar açık, RB0 interrupt aktif 46 MİKRODENETLEYİCİLER - II sayar tus tus2 bekle intprg movf say,w movwf PORTA btfss PORTB,1 goto tus2 incf say,1 movf say,w sublw 0Fh btfss STATUS,2 goto sayar goto sil btfss PORTB,2 goto sayar swapf say,w movwf PORTB bsf PORTB,3 bsf tmp,0 btfsc tmp,0 goto bekle clrf PORTB goto sayar movwf tmp2 clrf tmp bcf INTCON,INTF movf tmp2,w Yağlıoğlu retfie end ******* 47 MİKRODENETLEYİCİLER - II Yağlıoğlu ;2 nolu pic programı ;PIC ler arası interrupt kullanarak iletişim örneği ;1 nolu PIC RB1 ucundan delen sinyalleri sayıyor ;ve RB2 ucundaki butona basılınca o andaki sayıyı ;RB4-7 üzerinden 2. PIC’e gönderiyor. ;RA0-3 üzerinde 4056 ile display bağlı list p=16f84 include "p16f84.inc" say equ 11h tmp equ 12h org 00h goto basla org 04h goto oku bsf STATUS,5 clrf TRISA movlw b'11110001' movwf TRISB movlw b'01000000' movwf OPTION_REG bcf STATUS,5 movlw b'10010000' movwf INTCON sil clrf say goster movf say,w movwf PORTA goto goster basla ;Yükselen kenar tetiklemeli RB0 ;interruptlar açık, RB0 interrupt aktif 48 MİKRODENETLEYİCİLER - II oku movwf tmp bcf INTCON,INTF Yağlıoğlu SWAPF PORTB,w andlw 0Fh movwf say bsf PORTB,3 movf tmp,w clrf PORTB retfie end Örnek Sorular: Aşağıda kendinizi geliştirebilmeniz için örnek birkaç soru verilmiştir. Örnek Soru 1: 7 segment display kullanarak bir display sistemi tasarlayınız ve bu sistemde istenilen bir kelimeyi ekranda gösterecek programı yazınız? Örnek Soru 2: Bir basketbol maçı için skorbord tasarlayalım. Öyle ki iki adet butondan birincisi her basışta ekrandaki sayıyı 1 artıracak. İkincisi her basışta sayıyı 1 azaltacak. Üçüncü bir buton ise sistemi başlangıca döndürecek olsun. Ayrıca artırma ve azaltma butonları basıldığı anda değil biraz basılı tutulunca artırma ve azaltma işlemini yerine getirsin. Başa alma butonu ise dokunulduğu anda sistemi başa alsın. Örnek Soru 3: Bir elektronik termometre tasarlayınız ve uygun programı yazınız? Örnek Soru 4: Bir ohmmetre tasarlayınız ve uygun programı yazınız? Örnek Soru 5: Bir şifreli kilit sistemi tasarlayınız? 49
© Copyright 2024 Paperzz