pic ile çamaşır makinesi - Fikir Elektronik Teknik
Transkript
pic ile çamaşır makinesi - Fikir Elektronik Teknik
Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı T.C Niğde Üniversitesi Mühendislik Mimarlık Fakültesi Elektrik Elektronik Mühendisliği Bölümü BİR ÇAMAŞIR MAKİNASI SİMÜLATÖRÜNÜN BİR PIC MİKRODENETLEYİCİSİ KULLANARAK KONTROLÜ Hazırlayan Durmuş GÖKÇEBAY BİTİRME ÖDEVİ Danışman Yrd. Doç. Dr. Murat UZAM 1 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı NİĞDE 2002 T.C. NİĞDE ÜNİVERSİTESİ MÜHENDİSLİK-MİMARLIK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ BİTİRME ÖDEVİ DERSİ SINAV TUTANAĞI ÖĞRENCİNİN: Adı ve Soyadı :……………………………………………………… Sınıf ve Numarası : ……………………………………………………… Bitirme Ödevinin Adı : ……………………………………………………… ……………………………………………………… Bitirme Ödevini Yöneten Öğretim Elemanın Adı ve Soyadı : ……………………………………………………… BİTİRME ÖDEVİ SINAV JURİSİ Başkan :……………………………………………………… Üye : ……………………………………………………… Üye : ……………………………………………………… Bu çalışma ….. /….. / 2002 tarihinde yapılan sınav sonucunda jürimiz tarafından oy birliği / çokluğu ile başarılı / başarısız bulunmuştur. UYGUNDUR …../…../2002 Doç. Dr. Saadetdin HERDEM Bölüm Başkanı 2 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı ÖZET BİR ÇAMAŞIR MAKİNASI SİMÜLATÖRÜNÜN BİR PIC MİKRODENETLEYİCİSİ KULLANARAK KONTROLÜ Bu çalışmada, Niğde Üniversitesi, Mühendislik Mimarlık Fakültesi, Elektrik Elektronik Mühendisliği Bölümü, Mikroişlemciler Labaratuvarında bulunan bir çamaşır makinesi simülatörünün kontrolü gerçekleştirilmiştir. Çalışmada kullanılan çamaşır makinası simülatörü, bir çamaşır makinesinin yapacağı işlerin temsili şekilde gerçekleştirilebildiği bir sitemdir. Çamaşır makinası simülatörünün farklı çalışma senaryoları için sekiz ayrı program yazılmıştır. Yazılan bu programlar, sonuçta tek bir entegre devre ( PIC16F877 mikrodenetleyicisi ) içerisine yüklenmiştir. Kontrol işleminin PIC16F877 mikrodenetleyicisi ile gerçekleştirilmesi ekonomi ve basitlik anlamında pek çok avantajlar sağlamıştır. Ayrıca bir çok endüstriyel sistemin kontrolünün nasıl yapılabileceğine dair fikirler zihnimizde daha net bir şekilde oluşmuştur. 3 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı TEŞEKKÜR Bu çalışmayı yöneten, uygulamaların yürütülmesi ve tez çalışmasının bu aşamaya kadar gelmesinde yardımlarını esirgemeyen danışmanım Yrd. Doç. Dr. Murat UZAM’a, Arş. Gör. M. Kürşat YALÇIN’a ve bütün bölüm hocalarıma teşekkürü bir borç bilirim. Ayrıca bu çalışma esnasında maddi ve manevi desteklerini esirgemeyen bütün dostlarıma teşekkür ederim. 4 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı İÇİNDEKİLER Sayfa No ÖZET…………………………………………………………………………………..…..iii TEŞEKKÜR………………………………………………………………………………..iv İÇİNDEKİLER DİZİNİ…………………………………………………………………….v ÇİZELGELER DİZİNİ…………………………………………………………………….ix ŞEKİLLER DİZİNİ…………………………………………………………………………x SİMGE VE KISALTMALAR……………………………………………………………..xi BÖLÜM I GİRİŞ …..………………………………………………………………….……1 BÖLÜM II. TEMEL BİLGİLER…….………...…………………………………………...4 2.1. Mikrodenetleyiciler….………………………...……………………………….......4 2.2. PIC Mikrodenetleyicisi…………..………………………………………………...5 2.2.1. PIC mikrodenetleyici tercih nedenleri……..……………………………...….7 2.2.2. PIC programlamak için ……………………………………………...……….8 BÖLÜM3.PIC16F877’NİN KULLANILMASI ………..…………………..………….......9 3.1. PIC16F877’nin Özellikleri ……………………………….…………………..……9 3.2. PIC16F877 Portlarının Fonksiyonları …………..…………………………………9 3.2.1. Port a …….…………………………………………………………………...9 3.2.2. Port b……………………………………………………………………..…10 3.2.3. Port c………………………………………………………………………..11 3.2.4. Port d..............................................................................................................11 3.2.5. Port e………………………………..……………………………………….12 3.3. Program ve Kullanıcı RAM Bellek Organizasyonu...............................................12 3.4. Özel Fonksiyonlar…………………………..……….............................................13 3.4.1. Paralel Slave Port...........................................................................................13 3.4.2. Usart..........................................................................................…………….13 5 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 3.4.3.Master synchronous serial port (MSSP)..........................................................14 3.4.4. Analog sayısal çevirici modülü......................................................................14 3.4.5. Capture compare pwm modülü......................................................................15 3.5. Ram Bellek………………………………………………………………………..15 3.6. PIC16F877’nin Besleme Uçları ve Beslenmesi…………………………………..16 3.7. PIC16F877’nin Reset Uçları……………………………………………………...17 3.8. PIC16F877’nin Clock Uçları ve Osilatör Tipleri…………………………………17 3.8.1. Kristal osilatör / seramik rezonatör………………………………………....18 3.8.2. RC osilatör………………………………………………………………….18 3.9. Kesmeler (Interrupts)……………………………………………………………..18 3.9.1. INTCON register……………………………………………………………19 3.9.2. Kesme kaynakları…………………………………………………………...21 3.9.3.TMRO sayıcsı zamanlayıcısı………………………………………………...21 3.9.4. OPTION register……………………………………………………………21 3.9.5. Prescaler kullanımı………………………………………………………….22 BÖLÜM IV BYTRONIC ÇAMAŞIR MAKİNASI SİMÜLATÖRÜ ................................25 4.1. Giriş………….........................................................................................................25 4.2. Başlangıç ……........................................................................................................25 4.2.1.Çamaşır makinesinin ibm ya da uygun bir donanıma bağlanması..................26 4.2.1.1. Ibm iç arabağı için (MPIBM1) çamaşır makinası……………..….26 4.2.1.2. Ibm dış arabağı için (mpibm2) için çamaşır makinası .................26 4.2.1.3. Çamaşır makinasının 8051 mikro denetleyiciye bağlanması……..27 4.2.1.4. Çamaşır makinasının bir programlanabilir lojik denetleyiciye bağlanması………………………………………………………...27 4.2.1.5. Güç kaynağının bağlantısı .……………………………………….27 4.3. Bytronic Çamaşır Makinası Simülatörünün Özellikleri……………..……………27 4.4. Çamaşır Makinası Elektroniği…………………………………………………….28 4.4.1. Yedi parçalı display sürücü………………………………………………....29 6 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 4.4.2. Motor sürüşü ve yön kontrolü………………………………………………30 4.4.3. Buzzer………………………………………………………………………31 4.4.4. Anahtar girişi set / reset mandallı devreler……………………………..…..31 4.4.5. Kızıl ötesi hız sensörü ……………………………………………….……..33 4.5. Anahtarlama Hataları……………………………………………………………..34 4.6. Labaratuvar Çalışması Yazılımları…………………………………………….…35 4.6.1. Labaratuvar çalışması-1 (digital çıkışların kontrolü)……………………….35 4.6.2. Labaratuvar çalışması-2 (yedi parçalı displayın kontrolü)……………….....36 4.6.3. Labaratuvar çalışması-3 (program seçici anahtarları okuma)………………36 4.6.4. Labaratuvar çalışması-4 (dc motorun açık / kapalı kontrolü)……………….37 4.6.5. Labaratuvar çalışması-5 (açık döngüde dc motorun hız kontrolü)………….38 4.6.6. Labaratuvar çalışması-6 (motor hız geri beslemesini okumak)……………..40 4.6.7. Labaratuvar çalışması-7 (renkli yıkama program devri)…………………....41 4.6.8. Labaratuvar çalışması-8 (dc motorun kapalı döngü kontrolü)……………...41 4.6.8.1. Orantılı kod modu……………………………………………...….43 4.6.8.2. Toplam kontrol modu……………………………………………..44 4.6.8.3. Fark kontrol modu……………………………………….………..44 4.7. Kontrol Listeleri……………………………………………………………..……45 4.8. Ekler………………………………………………………………………...…….46 4.8.1. Ek-1 ibm bağlantı (header) konfigürasyonları…………………………..….46 4.8.2. Ek-2 mikro bilgisayar kontrol port adresleri………………………………..48 4.8.3. Ek-3 kızıl ötesi hız sensörünün kalibrasyonu…………………………….…48 4.8.4. Ek-4 Ibm 8253 sayıcı / zamanlayıcı arabağının işlevi…………………...….49 4.9. 8253 CTC’yi Kullanarak Dc Motor Kontrol Etmek…………………………...…50 4.9.1. Geri besleme darbelerini saymak için 8253 CTC kullanımı………………..51 BOLÜM V PIC BASIC PRO İLE PROGRAMLAMA……………………………….…..55 5.1. Pic Basic Pro Hakkında……………………………………………….………….55 5.2. Pic Basic Pro Komut Seti……………………………………….………….…….55 5.2.1. Değişkenler (Variables)………………………………………………….….55 5.2.2. Etiketler (Labels)……………………………………………………..….….56 5.2.3. Nümerik sabitler (Nümerik constants)…………………………………...…57 7 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 5.2.4. Portlar……………………………………………………………………….57 5.2.5. Zaman gecikmesi (Pause)……………………………………………...……58 5.2.6.Döngü düzenlemek (For…Next)………………………………………….…59 5.2.7.Kontrol yapmak (If…Then)…………………………………………..….….59 5.3. Kesmeler (Interrupts)……………………………………………………….…….60 5.4. Pic Basic Pro Komutları…………………………………………………….…….61 5.5. Microcode Studio Programı………………………………………………………63 5.6. Propic Programı ……………………………….……………………………........63 BÖLÜM VI ÇAMAŞIR MAKİNASI SİMÜLATÖRÜ KONTROL PROGRAMI ..……..65 6.1. Çamaşır Makinası Simlatörü Kontrol Devresi .…………………………………..65 6.2. Çamaşır Makinası Simlatörü Kontrol Programı ………………………………….66 BÖLÜM VII SONUÇ VE ÖNERİLER …………………………………………………..79 KAYNAKLAR ……………………………………………………………………………80 8 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı ÇİZELGELER DİZİNİ Çizelge 1 PIC16FF877 ile PIC16FF84’ün karşılaştırılması…………………..……….......10 Çizelge 2. Status Registeri…………………...………………………....………………….13 Çizelge 3. Status Register Bank Seçme Bitleri …………………………………………...13 Çizelge 4. Osilatör Çeşitleri……………………………………...……..…………………17 Çizelge 5. Frekansa Göre Kondansatör Seçimi……………………....………….………..18 Çizelge 6. Intcon Register……………….……………………………….....……….…….20 Çizelge 7. Option Register ….……………………………………....…………………….22 Çizelge 8. Prescaler Değerleri .……………………………………....………….………...23 Çizelge 9. 74LS279 Set / Reset lojik………………………………....……………………32 Çizelge 10. Anahtarlama Hataları Listesi ve Etkileri……………………………....……...35 Çizelge 11. Kontrol Listeleri…………………………………………………....…………45 Çizelge 12.Çamaşır Makinası 26 Yollu Header……………………………...……………47 Çizelge 13. Çamaşır Makinası 40 Yollu Header………………………..…………………47 Çizelge 14. Sayıcı Modeller…………………………………………………...…………..50 Çizelge 15. Pic Basic Pro Komut Seti………………..………………………..………….56 Çizelge 16. Programlar İçin Switch Konumları …………………………………………..65 9 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı ŞEKİLLER DİZİNİ Şekil 1.1. Çamaşır Makinası Simülatörünün Genel Görünüşü……………………………..2 Şekil 1.2. Simülatörün Uygulama Devresine Bağlanmasına Ait Blok Diyagram………….3 Şekil 1.2. Simülatörün Uygulama Devresi ve Güç Kaynağına Bağlanması ……………….3 Şekil 2.1. Mikrodenetleyicili Bir Sisteme Ait Blok Diyagram…………………….……….5 Şekil 3.1. PIC16F877’nin RAM Bellek Haritası………...…………………………...……16 Şekil 3.2. Kesme Olayı…………………………………………………………………….19 Şekil 4.1. 7 Parçalı Display Sürücü………………………………………………………..29 Şekil 4.2. 7 Parçalı Display Kontrol Kodları………….…………………………………...30 Şekil 4.3. Motor Sürüş Devresi…….………………..……….……………………….…...30 Şekil 4.4. Set / Reset Anahtarlamalı Devre…………………………………………….…32 Şekil 4.5. Kızıl Ötesi Hız Sensörü………………………………………………………..33 Şekil 4.6. Labaratuvar Çalışması-1 Akış Diyagramı…………………………………..….36 Şekil 4.7. Labaratuvar Çalışması 2 – Akış diyagramı………………..…………….…...…37 Şekil 4.8. Labaratuvar Çalışması 3 – Akış diyagramı………………………..……………38 Şekil 4.9. Labaratuvar Çalışması 4 – Akış Diyagramı………………………………….…39 Şekil 4.10. Darbe Genişlik Modüleli Sinyal………………………………………………40 Şekil 4.11. Labaratuvar Çalışması 7 – Akış diyagramı………………….……………...…42 Şekil 4.12. DC Motor Kontrol Sistemi…………..……………………………………...…43 Şekil 4.13. Port Adresleri………………………………………………………………….48 Şekil 4.14. Sayıcı / Zamanlayıcı Kanallar 1 ve 2’nin Konfigürasyonu………………..…51 Şekil 4.15. CTC Kanallar 1 ve 2’nin Zamanlama Diyagramı…………………………….52 Şekil 4.16. Sayıcı / Zamanlayıcı Kanal 0’ın Konfigürasyonu……………………………52 Şekil 4.17. CTC Hız Ölçümü İçin Akış diyagramı………………….…….………………54 Şekil 5.1. Microcode Studio Ana Sayfası………………………..…………………...……64 Şekil 5.2. Propic Programı Ana Menüsü ………………………………………………….64 Şekil 6.1. Çamaşır Makinası Simülatörü Kontrol Devresi ………………………………..66 10 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı SİMGE VE KISALTMALAR Ms, Mili saniye µs, Mikro saniye V, Volt >, Büyük <, Küçük Mhz, Mega hertz Kb, Kilo byte Kohm, Kilo ohm Mohm, Mega ohm RAM, Rastgele erişimli hafıza PLC, Programlanabilir lojik denetleyici DC, Doğru akım ma, Mili amper F, File register W, Working register k, Sabit sayı veya etiket d, Komut ardından işlem sonucunun kaydedileceği yer ‘ veya ; Program açıklama satırları 11 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı BÖLÜM I GİRİŞ Bu tez çalışmasında, Niğde Üniversitesi, Mühendislik Mimarlık Fakültesi, Elektrik Elektronik Mühendisliği Bölümü, Mikroişlemciler Labaratuvarında bulunan bir çamaşır makinesi simülatörünün kontrolü gerçekleştirilmiştir. Bu işlemin gerçekleştirilebilmesi için, bir PIC16F877 mikrodenetleyicisi kullanılmıştır. Bu çalışmada, bir PIC (Peripheral Interface Controller) mikrodenetleyicisi için program hazırlanması, hazırlanan programın mikrodenetleyiciye yüklenmesi ve uygulama devresi ile birlikte çalışmasına kadar olan aşamalar, detaylı olarak anlatılmıştır. PIC mikrodenetleyicisinin böyle bir uygulamada kullanılması ile birlikte, PLC ve diğer kontrol elemanlarına oranla daha ucuz ve daha az yer kaplayan, kullanılması kolay bir yapı meydana gelmektedir. Bu çalışmada bir PIC mikrodenetleyicisi için program yazmak üzere “PIC BASIC” dili kullanılmış olup, zaman zaman “PIC ASSEMBLY” dilinden de faydalanılmıştır. Şekil 1.1’de bu tez çalışmasında kontrol edilen simülatörün bir resmi görülmektedir. Yapılan çalışmalarda öncelikle çamaşır makinesi simülatörü için önceden tanımlanmış 8 farklı deney çalışması için problem tanımlanmış ve problemlerin çözümüne ilişkin akış şemalarından faydalanarak programlar yazılmıştır. Hazırlanan her program, PROPIC yazılımı ile çalışan programlama devresi kullanılarak PIC16F877 mikrodenetleyicisine yüklenmiştir. Programlanan PIC16F877 mikrodenetleyicisi Şekil 1.2’de ve 1.3’de görüldüğü gibi uygulama devresine bağlanarak çamaşır makinesi simülatörünün kontrolü sağlanmıştır. Bu bitirme ödevinin bundan sonraki kısımları şu şekilde düzenlenmiştir. BÖLÜM II’de, mikrodenetleyiciler ve PIC mikrodenetleyicilerine ait temel bilgiler verilmiş ve özellikleri hakkında detaylı açıklamalar yapılmıştır. BÖLÜM III’de, PIC16F877 mikrodenetleyicisinin karakteristik özelliklerine, port fonksiyonlarına, RAM bellek organizasyonuna ve özel fonksiyonlara ait açıklamalar yapılmıştır. 12 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı BÖLÜM IV’de, Bytronic çamaşır makinesi simülatörüne ait tüm kısımlar ve sistemin çalışmasına ilişkin bilgiler detaylı olarak verilmiş ve yazılacak programlara değinilmiştir. BÖLÜM V’de, PIC BASIC ile programlama, pic basic komut seti, değişkenler, etiketler, nümerik sabitler, portlar, zaman gecikmeleri, döngü düzenlemek, kontrol sağlamak, kesmeler, intcon register, option register, tmr0, prescaler kullanımı ve microcode studio programından bahsedilmiştir. BÖLÜM VI’da çamaşır makinası simülatörü kontrol devresi ve bu çalışmaya ait Pic Basic Pro kodları bulunmaktadır. BÖLÜM VII’de ise sonuç ve öneriler bulunmaktadır. Şekil 1.1 Çamaşır Makinesi Simülatörünün Genel Görünüşü 13 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Çamaşır Makinası Simülatörü 40 Yollu IDE Kablosu PIC16F877 Mikrodenetleyicili Kontrol Devresi Şekil 1.2 Simülatörün Uygulama Devresine Bağlanmasına Ait Blok Diyagram Şekil 1.3 Simülatörün Uygulama Devresi ve Güç Kaynağına Bağlanması 14 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı BÖLÜM II TEMEL BİLGİLER 2.1. Mikrodenetleyiciler Bir mikrodenetleyici karmaşık lojik fonksiyonları tek bir entegrede toplayıp sunan bir cihazdır denilebilir. Genelde başlı başına bir sistem olmayıp, başka bir sistemi yönetmek amacıyla kullanılır. MCU'larda (Micro Control Unit) klasik mikroişlemcili sistemlerden farklı olarak program belleği, RAM, I/O ve CPU bir aradadır. Bu çalışmamda bir çamaşır makinesi similatorünün (maket model) kontrolünü bir mikrodenetleyici ile gerçekleştirilmiştir. Mikrodenetleyici olarak microchip firmasının PIC16F877 adlı mikrodenetleyicisi kullanılmıştır. Bir mikrodenetleyici kabaca, bilgisayar içerisinde bulunması gereken temel bileşenlerden RAM, I/O gibi bileşenleri içerisinde barındıran tek bir chip mahiyetindedir. Böyle olunca bilgisayar kontrolü gerektiren elektronik uygulamalarda mikrodenetleyici kullanma eğilimi artmaktadır. Çünkü bir mikroişlemci ile kontrol edilecek bir sistemi kurmak için, CPU, RAM, I/O ve bu birimler arasındaki veri alış-verişini sağlayacak baskılı devreyi kurmak gerekmektedir. Oysa aynı iş için bir mikrodenetleyici ve birde devre kartı kullanmak yeterli olmaktadır. Bu da maliyet ve kolaylık anlamında bir mikrokontrolörün seçiminde etkili olmaktadır. Günümüzde mikrodenetleyciler kameralarda, otomobillerde, fax cihazlarında, fotokopi, radyo, cep telefonları, tv, bazı oyuncaklar ve daha bir çok bilgisayar teknolojisi gerektiren alanlarda kullanılmaktadır. Şekil 2.1’te bir mikrodenetleyiciye verilmiştir. 15 ait blok diyagram Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Çeşitli firmalar tarafından üretilmiş birbirinden farklı mikrodenetleyiciler bulunmaktadır. Bunlar arasında yapısal olarak küçük farklar olmasına karşın genel olarak aynı işi gerçekleştirmektedirler. Çevresel üniteler Lamba,motor,ısı, ışık sensörü gibi… Mikrodenetleyici I/O Şekil 2.1 Mikrodenetleyicili Bir Sisteme Ait Blok Diyagram Bir mikrodenetleyicinin seçiminde hangi özelliklerin olması isteniyorsa önceden bunların tespit edilmesi gerekir. Bu özellikler şu şekilde olabilir. • Programlanabilir dijital paralel giriş / çıkış • Programlanabilir analog giriş / çıkış • Seri giriş / çıkış • Motor veya servo kontrol için pals sinyali çıkışı • Harici giriş vasıtasıyla kesme • Timer vasıtasıyla kesme • Harici bellek arabirimi • Harici bus arabirimi • Dahili bellek tipi seçenekleri • Dahili RAM seçeneği • Kayan nokta hesaplaması 2.2. PIC Mikrodenetleyicisi PIC Serisi mikroişlemciler MICROCHIP firması tarafından geliştirilmiş ve üretim amacı, çok fonksiyonlu lojik uygulamalarının hızlı ve ucuz bir mikroişlemci ile yazılım yoluyla karşılanmasıdır. 16 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı PIC’in kelime anlamı PERIPHERAL INTERFACE CONTROLLER’dur.(çevresel birimleri denetleyici). İlk olarak 1994 yılında 16 bitlik ve 32 bitlik büyük işlemcilerin giriş ve çıkışlarındaki yükü azaltmak ve denetlemek amacıyla çok hızlı ve ucuz bir çözüme ihtiyaç duyulduğu için geliştirilmiştir. Çok geniş bir ürün ailesinin ilk üyesi olan PIC16C54 bu ihtiyacın ilk meyvesidir. PIC işlemcileri RISC benzeri işlemciler olarak anılmaktadır. PIC16C54 12 Bit komut hafıza genişliği olan 8 bitlik CMOS bir işlemcidir.18 bacaklı dip kılıfta 13 I/O bacağına sahiptir ve 20 Mhz osilator hızına kadar kullanılabilir. 33 adet komut içermektedir. 512 byte program epromu ve 25 byte RAM`i bulunmaktadır. Bu hafıza kapasitesi birçok insanı güldürmüştür ama bir risc işlemci olması birçok işin bu kapasitede uygulanmasına olanak vermektedir. PIC serisi tüm işlemciler herhangi bir ek bellek veya giriş/çıkış elemanı gerektirmeden sadece 2 adet kondansatör, 1 adet direnç ve bir kristal ile çalıştırılabilmektedir. Tek bacaktan 40 mA akım çekilebilmektedir ve entegre toplam olarak 150 mA akım akıtma kapasitesine sahiptir. Entegrenin 4 Mhz osilator frekansında çektiği akım çalışırken 2 mA stand-by durumunda ise 20uA kadardır. PIC 16C54 ‘un mensup olduğu işlemci ailesi 12 Bit core PIC16C5X olarak anılır. Bu gruba temel grup adı verilir. Bu ailenin üyesi diğer işlemciler PIC16C57, PIC16C58 ve dünyanın en küçük işlemcisi olarak anılan 8 bacaklı PIC12C508 ve PIC 12C509’dur. Interrupt kapasitesi ilk işlemci ailesi olan 12 Bit core PIC16C5X ailesinde bulunmamaktadır. Daha sonra üretilen ve orta sınıf olarak tanınan 14Bit core- PIC16CXX ailesi birçok açıdan daha yetenekli bir grup işlemcidir. Bu ailenin temel özelliği interrupt kapasitesi ve 14 bitlik komut işleme hafızasıdır. Bu özellikler PIC’i gerçek bir işlemci olmaya ve karmaşık işlemlerde kullanılmaya yatkın hale getirmiştir. PIC16CXX ailesi en geniş ürün yelpazesine sahip ailedir. PIC16CXX ailesinin en önemli özellikleri seri olarak devre üstünde(ICSP) dahi programlanmasıdır. Bu özellik PIC16C5x de epey karmaşıktır , paralel programlanabilmektedir, interrupt kabul edebilmektedir, 33 I/O,AD Converter, USART, I2C, SPI gibi endüstri standardı giriş çıkışları kabul edecek işlemcilere ürün yelpazesinde yer vermektedir. 17 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı PIC 16CXX ailesi amatör elektronikçiler arasında en çok bilinen işlemci ailesidir ve dünyada üzerinde pek çok proje üretilmiştir. İnternetin gözdesi olan bireyi PIC16C84 veya yeni adıyla PIC16F84’dür. PIC 16F84’ün bu kadar popüler olması onun çok iyi bir işlemci olmasından ziyade program belleğinin Eeprom - Elektrikle silinip yazılabilen bellek olmasından kaynaklanmaktadır. Seri olarak dört adet kabloyla programlanması da diğer önemli avantajıdır. Bugüne kadar amatörce bir işlemciyle uğraşmış herkesin en büyük sıkıntısı eprom veya eprom tabanlı işlemcileri programladıktan sonra UltraViole ışık kaynağı ile silip tekrar programlamaktır. Bu çok zahmetli ve bir amatör için ekipman gerektiren yöntem olmuştur. Evde üretilmesi zor olan özel bir programlayıcı da madalyonun diğer yüzüdür. PIC gerçekten de çevresel üniteler adı verilen lamba, motor, röle, ısı ve ışık sensörü gibi I/O elemanlarının kontrolünü yapabilmektedir. Bunun yanında bir PIC’i programlamak için kullanılacak olan komutlar oldukça basit ve sayı olarak da azdır. 2.2.1. PIC mikrodenetleyici tercih nedenleri PIC Mikrodenetleyicilerinin tercih nedenleri şunlardır: • Maliyetinin oldukça ucuz olması. • Yüksek frekanslarda çalışabilmesi. • Standby durumunda çok düşük akım çekmesi. • Aynı anda birçok işlemi kod sıkıştırma özelliği sayesinde yapabilmesi. • Yazılımın internetten ücretsiz temin edilebilmesi. • Çok az donanıma ihtiyaç duyması. • Kullanıcı kesiminin fazla olması. • PIC’e göre diğer mikrodenetleyicilerde veriyi taşıyan bir tek bus bulunması, dolayısıyla diğer mikrodenetleyicilerden iki kat daha hızlı olması. • İnterrupt kapasitesi ve 14 bit komut işleme hafızasına sahip olmasıdır. Ayrıca bunun yanında birçok PIC mikrodenetleyicisinin program belleği FLASH teknolojisi ile üretilmektedir. FLASH MEMORY teknolojisi ile üretilen bir belleğe yüklenen program entegreye uygulanan enerji kesilse dahi silinmemektedir. Yine 18 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı istenirse bu tip belleğe eski program silinip yeniden program yazılabilmektedir. FLASH bellekler bu özelliği gereği EEPROM ile aynı görünmektedir. Bazı üreticiler EEPROM belleğe FLASHROM da demektedirler. Bu özellik kullanıcı açısından çok büyük kolaylıklar sağlamaktadır. Böylece programlamaya yeni başlayanlar yaptığı hatalardan dolayı entegreyi atmak zorunda kalmamaktadırlar. 2.2.2. PIC programlamak için PIC programlamak için gerekli olan donanım ve yazılımlar şu şekildedir: • IBM uyumlu bir bilgisayara sahip olmak ve temel kullanımlarını bilmek • Bir metin editörü kullanmasını bilmek. • PIC assembler derleyicisine sahip olmak • PIC programlayıcı donanımına sahip olmak. • Pic programlayıcı yazılımına sahip olmak. • PIC mikrodenetleyicisine sahip olmak. • Breadboard, güç kaynağı ve çeşitli elektronik elemanlara sahip olmak gerekmektedir. 19 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı BÖLÜM III PIC16F877’NİN KULLANILMASI 3.1. PIC16F877’nin Özellikleri PIC16F877, belki en popüler PIC işlemcisi olan PIC16F84’ten sonra kullanıcılarına yeni ve gelişmiş olanaklar sunmasıyla hemen göze çarpmaktadır. Program belleği FLASH ROM olan PIC16F877’de, yüklenen program PIC16F84’te olduğu gibi elektriksel olarak silinip yeniden yüklenebilmektedir. Çizelge 1’de PIC16F877 ve PIC16F84 işlemcileri arasında özellik karşılaştırması yapılmıştır. Özellikle PIC16C6X ve PIC16C7X ailesinin tüm özelliklerini barındırması, PIC16F877’yi kod geliştirmede de ideal bir çözüm olarak gündeme getirmektedir. Konfigürasyon bitlerine dikkat etmek şartıyla C6X veya C7X ailesinden herhangi bir işlemci için geliştirilen kod hemen hiçbir değişikliğe tabi tutmadan F877’e yüklenebilir ve çalışmalarda denenebilir. Bunun yanı sıra PIC16F877, PIC16C74 ve PIC16C77 işlemcileriyle de bire bir bacak uyumludur. 3.2. PIC16F877 Portlarının Fonksiyonları 3.2.1. Port a : Her bir biti bağımsız olarak giriş veya çıkış olarak tanımlanabilmektedir. 6 bit genişliğindedir (PICF84’de 5 bittir). RA0, RA1, RA2, RA3, RA4 ve RA5 bitleri analog / sayısal çevirici olarak konfigüre edilebilmektedir. Buna ek olarak RA2 ve RA3 gerilim referansı olarak da konfigüre edilebilmektedir. (bu durumda bu bitler aynı anda A / D çevirici olarak kullanılamamaktadır) . İlgili registerlar ve adresleri aşağıdaki gibidir. 20 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı PORTA 0x05 TRISA 0x85 ; giriş / çıkış belirleme registeri ADCON1 0x9F ; RA portlarının A / D, referans gerilimi veya sayısal giriş / çıkış olarak seçiminde kullanılmaktadır. Çizelge 1. PIC16F877 ile PIC16F84’ün karşılaştırılması ÖZELLİKLER PIC16F877 PIC16F84 Çalışma hızı DC-20Mhz DC-10Mhz Program belleği 8K×14 word Flash ROM 1K×14 word Flash ROM EEPROM Veri belleği 256 byte 64 byte Kullanıcı RAM 368×8 byte 68×8 byte Giriş / Çıkış port sayısı 33 13 Timer Timer0, Timer1, Timer2 Timer0 A/D çevirici 8 kanal 10 bit YOK 16 bit Capture Capture / Comp./ PWM 16 bit Compare YOK 10 bit PWM çözünürlük SPI(Master) ve Seri çevresel arayüz 12C(Master/Slave) modunda SPI portu YOK (senkron seri port) Paralel slave port USART/SCI 8 bit, harici RD,WR ve CS kontrollü 9 bit adresli YOK YOK İşlemciye ilk defa gerilim uygulandığında RA4 hariç diğer beş PORTA biti A / D çeviricidir. Eğer RA portunun bazı bitlerini sayısal giriş / çıkış olarak kullanmak istersek ADCON1 registerında değişiklik yapmamız gerekmektedir. 3.2.2. Port b: Her bir biti bağımsız olarak sayısal giriş veya çıkış olarak tanımlanabilmektedir. 8 bit genişliğindedir. B portunun her bacağı dahili bir dirençle VDD’ye bağlıdır. ( weak pull21 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı up). Bu özellik varsayılan olarak etkin değildir. Ancak OPTION registerinin 7.bitini 0 yaparak B portunun bu özelliğini etkinleştirilebilir. RB4-RB7 bacakları aynı zamanda bacakların sayısal durumlarında bir değişiklik olduğunda INTCON registerının 0. biti olan RBIF bayrağını 1 yaparak kesme oluşturmaktadır. Bu özelliği, işlemci SLEEP konumundayken, devreye bağlı tuş takımının her hangi bir tuşa basıldığında işlemcinin yeniden etkinleşmesi için kullanabilir. Bütün bunların yanı sıra RB6 ve RB7 yüksek gerilim programlama, RB3 ise düşük gerilim programlama modlarında da kullanılmaktadır. İlgili registerlar ve adresleri aşağıdaki gibidir. PORTA 0x06 TRISB 0x86 ; giriş / çıkış belirleme registeri OPTION_REG 0x81 , 0x181 3.2.3. Port c : Her bir biti bağımsız olarak sayısal giriş veya çıkış olarak tanımlanabilmektedir. 8 bit genişliğindedir. Tüm port bacakları Schmitt Trigger girişlidir. TRISE registerının 4. biti olan PSPMODE bitini 1 yaparak “parallel slave mode” da kullanılabilir. Bu fonksiyon aracılığıyla 8 bit genişliğindeki her hangi bir mikroişlemci bus’ına bağlanabilir. İlgili registerlar ve adresleri aşağıdaki gibidir. PORTC 0x07 TRISC 0x087 ; giriş / çıkış belirleme registeri 3.2.4. Port d : Her bir biti bağımsız olarak sayısal giriş veya çıkış olarak tanımlanabilmektedir. 8 bit genişliğindedir. Tüm port bacakları Schmitt Trigger girişlidir. TRISE registerının 4.biti olan PSPMODE bitini 1 yaparak “parallel slave mode”da kullanılabilir. Bu fonksiyon aracılığıyla 8 bit genişliğindeki herhangi bir mikroişlemci bus’ına bağlanabilir. 22 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı PORTD 0x08 TRISD 0x88 TRISE 0x89 3.2.5. Port e : Her bir biti bağımsız olarak giriş veya çıkış olarak tanımlanabilmektedir. 3 bit genişliğindedir. RE0, RE1 ve RE2 bacaklarında Schmitt Trigger giriş tamponları vardır. Her bir bacak analog / sayısal çevirici olarak konfigüre edilebilmektedir. Eğer PORTD paralel slave port olarak konfigüre edilirse, RE0, RE1 ve RE2 bacakları PORTD’nin bağlandığı mikroişlemci bus’ına sırasıyla READ, WRITE ve CHIP SELECT kontrol girişleri olarak kullanılabilmektedir. Bunun için TRISE uygun biçimde ayarlanmalıdır. İlgili registerlar ve adresleri aşağıdaki gibidir. PORTE 0x09 TRISE 0x89 ; giriş / çıkış belirleme registeri ADCON1 0x9F ; RE portlarının A / D veya sayısal giriş / çıkış olarak seçiminde kullanılmaktadır. İşlemciye ilk defa gerilim uygulandığında üç PORTE biti de A / D çeviricidir. Eğer RE portunun bazı bitlerini sayısal giriş / çıkış olarak kullanmak istenirse ADCON1 registerında değişiklik yapılması gerekecektir. 3.3. Program ve Kullanıcı RAM Bellek Organizasyonu PIC16F877’de üç bellek bloğu bulunmaktadır. Program ve kullanıcı veri belleği ayrı bus yapısına sahiptir ve aynı anda erişilebilmektedir. F877’de 13 bitlik bir program sayacı vardır ve 8Kx14 word adreslemeye yeterlidir. Reset vektörü 0x00’da kesme vektörüyse 0x04’de yer almaktadır. Kullanıcı veri belleği birden fazla register bankasına bölünmüştür. Bu register banklarında hem genel amaçlı registerlar hem de özel fonksiyon registerları (SFR) bulunmaktadır.Register bankasını seçmek için STATUS registerındaki RP1 ve RP0 bitleri 23 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı kullanılmaktadır. F84’de iki register bankası olduğunu ve yalnızca RP0 bitini ayarlamak suretiyle ilgili register bankasının seçildiğine dikkat edilmelidir. ( Çizelge 2 ). Çizelge 2. Status registerı IRP RP1 RP0 TO PD Z DC Bit7 C bit0 < RP1, RP0 > bitleri aşağıdaki gibi ayarlanarak istenilen register bankasına erişebilmektedir. Her register bankası 128 byte genişliğindedir. ( 7Fh ). Çizelge 3. Status Register Bank Seçme Bitleri 00 Bank 0 01 Bank 1 10 Bank 2 11 Bank 3 3.4. Özel Fonksiyonlar 3.4.1 Paralel slave port: TRISE registerının PSPMODE biti 1 yapıldığında PORTD 8 bit genişliğinde mikroişlemci portu olarak kullanabilir. Bu arada RE0, RE1 ve RE2’yi, TRISE ve ADCON1 registerlarında ilgili ayarları yaparak sayısal giriş olarak da tanımlamak gerekmektedir. Böylece harici bir mikroişlemci, RE0, RE1 ve RE2’yi kontrol olarak kullanarak 8 bitlik veri bus’ına bağlı PIC16F877’nin PORTD’sine hem veri yazabilmekte, hem de okuyabilmektedir. 3.4.2. Usart : USART , yani senkron / asenkron alıcı verici PICF877’deki iki seri giriş / çıkış modülünden biridir. Seri iletişim arayüzü ( SCI:serial comm.interface ) olarak da bilinen USART, monitör veya PC gibi aygıtlara tam çift yönlü asenkron bağlantıda kullanılmak 24 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı üzere konfigüre edilmiştir. A / D veya D / A arayüzlerine, seri kullanılmak üzere konfigüre edilebilmektedir. USART aşağıdaki gibi konfigüre edilebilmektedir. • Asenkron : Tam çift yönlü ( full duplex ) • Senkron : Master, yarım çift yönlü ( half duplex ) • Senkron : Slave, yarım çift yönlü RC6 verici, RC7 ise alıcı port olarak kullanılmaktadır. RCSTA ( 0x18 ) ve TXSTA ( 0x98) registerları da konfigürasyonda kullanılmaktadır. 3.4.3. Master synchronous serial port (MSSP) MSSP modülü, diğer çevre birimleri veya mikroişlemcilerle seri iletişimde kullanılmaktadır. Bu çevre birimleri seri EEPROM, kaydırmalı registerlar ( shift register ), gösterge sürücüleri, A / D çeviriciler vb. olabilir. MSSP modülü aynı anda aşağıdaki iki moddan birine konfigüre edilebilir. RC5: Seri veri çıkışı (SDO:Serial data out) RC4: Seri veri girişi (SDI: Serial data in) RC3: Seri saat(SCK:Serial clock) Bu modlardan birine göre konfigüre etmek içinse SSPSTAT (senkron seri port durum registerı, 0x94), SSPCON (senkron seri port kontrol registerı, 0x14) ve SSPCON2 (senkron seri port kontrol registerı 2,0x91) registerları ayarlanmalıdır. 3.4.4. Analog / sayısal çevirici modülü: A / D modülü 16C7X ailesinden farklı olarak 10 bittir. Toplam 8 A / D kanal bulunmaktadır. F877’nin güzel bir özelliği de işlemci SLEEP modundayken bile A / D çeviricinin geri planda çalışmasıdır. A / D kanalları için RA4 hariç diğer RA portları ve RE portları kullanılabilir. Aşağıda ilgili registerlar ve adresleri gösterilmiştir. ADRESH 0x1E ; A / D sonuç registerı (high register) 25 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı ADRESL 0x9E ; A / D sonuç registerı (low register) ADCON0 0x1F ; A / D kontrol registerı 0 ADON1 0x9F ; A / D kontrol registerı 1 3.4.5. Capture / compare ve pwm modülü: Her capture /compare ve pwm modülü 16 bitlik yakalama (capture registerı, 16 bitlik karşılaştırma ( compare ) registerı veya 16 bitlik PWM (darbe genişlik modülayonu) registerı olarak kullanılmaktadır. Yakalama (capture) modunda, TMR1 registerının değeri, RC2 / CCP1 bacağının durumunda bir gelişme olduğunda CCPR1H:CCPR1L registerlarına yazılmakta ve PIR1 registerının 2. biti olan CCP1IF kesme bayrağı 1 olmaktadır. RC2 bacağının durumu, her düşen kenarda, her yükselen kenarda, her yükselen 4. veya 16. kenarda kontrol edilecek şekilde CCP1CON registerı aracılığıyla ayarlanarak konfigüre edilebilir. Karşılaştırma (compare) moduysa CCPR1 registerındaki 16 bitlik değer düzenli olarak TMR1 register değeriyle karşılaştır ve bir eşitlik olduğunda RC2 / CCP1 bacağı CCP1CON registerında yaptığımız ayara göre 1, 0 olur veya durumunu korur. PWM modundaysa RC2 / CCP1 bacağı 10 bit çözünürlükte darbe genişlik modülasyonlu bir sinyal üretecek şekilde konfigüre edilebilir. PR2 registerı darbe genişlik periyodunun tayininde kullanılmaktadır. Aşağıda ilgili registerlar ve adresleri gösterilmiştir. CCPR1H 0x16 ; Yakalama / karşılaştırma registerı ( High register ) CCPR1L 0x15 ; Yakalama / karşılaştırma registerı ( Low register ) CCP1CON 0x17 ; Kontrol registerı PR2 0x92 ; PWM çıkış registerı TMR1L 0x0E ; TMR1 registerı ( High register ) TMR1H 0x0F ; TMR1 registerı ( Low register ) 26 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 3.5. RAM Bellek PIC16F877’nin 0x00~7Fh adres aralığına ayrılmış olan RAM belleği vardır. Bu bellek içerisindeki file registerleri içerisine yerleştirilen veriler PIC CPU’sunun çalışmasını kontrol etmektedir. File register adı verilen özel veri alanlarının dışında kalan diğer bellek alanları, normal RAM bellek olarak kullanılmaktadırlar. Şekil 3.1’de PIC16F877’nin kullanıcı RAM bellek haritası görülmektedir. Şekil 3.1.PIC16F877’nin RAM Bellek Haritası 27 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 3.6. PIC16F877’nin Besleme Uçları ve Beslenmesi PIC16F877’nin besleme gerilimi 11, 12 ve 31, 32 numaralı pinlerden uygulanmaktadır. 11 ve 32 numaralı Vdd ucu +5 V’a ve 12, 31 numaralı Vss ucu toprağa bağlanır. PIC’e ilk defa enerji verildiği anda meydana gelebilecek gerilim dalgalanmaları nedeniyle, oluşabilecek istenmeyen arızaları önlemek amacıyla 100nF’lık dekuplaj kondansatörünün devreye bağlanması gerekmektedir. PIC’ler CMOS teknolojisi ile üretildiklerinden 2 ila 6 volt arasında çalışabilmektedirler. +5 V’luk bir gerilim ise ideal bir değer olmaktadır. 3.7. PIC16F877’nin Reset Uçları Kullanıcının programı kasti olarak kesip başlangıca döndürebilmesi için PIC’in 1 numaralı ucu MCLR olarak kullanılmaktadır. MCLR ucuna 0 Volt uygulandığında programın çalışması başlangıç adresine döner. Programın ilk başlangıç adresinden itibaren tekrar çalışabilmesi için, aynı uca +5 v gerilim uygulanmalıdır. 3.8. PIC16F877’nin Clock Uçları ve Osilatör Tipleri PIC16CXX mikrodenetleyicilerinde 4 çeşit osilatör bulunmaktadır. Kullanıcı bu 4 çeşitten birini seçerek iki konfigürasyon bitini (FOSC1 ve FOSC2) programlayabilir. Bu osilatör çeşitleri çizelgede verilmiştir. PIC16F877’de clock uçları 13 ve 14 nolu pinlerdir. Hazırlanacak olan PIC programlarında kullanılan osilatör tipi PIC programının çalışma hızını ve hassasiyetini etkileyeceğinden dolayı amaca uygun bir osilatör devresi kullanılmalıdır. Çizelge 4’de farklı osilatör çeşitleri ve özellikleri görülmektedir. Osilatör tipinin seçiminde dikkat edilecek bir başka nokta ise, seçilecek olan osilatörün kullanılan PIC’in özelliğine uygun olarak seçilmesidir. Örnek verecek olursak 10MHz çalışma frekansına sahip bir PIC16F877 için 20MHz’lik bir osilatör kullanmak doğru olmaz. Fakat daha düşük bir frekans değeri ile çalışan bir osilatör devresi kullanılabilir. Çizelge 4. Osilatör çeşitleri Osilatör Tipi Tanımı Özelliği Frekansı LP Kristal osilatör veya seramik rezonatör Asgari akım 40KHz XT Kristal osilatör veya seramik rezonatör Genel amaçlı 4MHz HS Kristal osilatör veya seramik rezonatör Yüksek hız 20MHz RC Direnç / Kapasitör zaman sabitli 28 Düşük maliyet 4MHz Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 3.8.1. Kristal osilatör / seramik rezonatör XT, LP ve HS modları, RC osilatörlere nazaran çok daha hassastırlar. Bu modlar, kristal osilatör veya rezonatörlerin, OSC1 / CLKIN ve OSC2 / CLKOUT uçlarına bağlanmalarıyla kurulmaktadır. Çizelge 4’te hangi frekansta kaç pF’lık kondansatör kullanılması gerektiği belirtilmiştir. Çizelge 5. Frekansa Göre Kondansatör Seçimi OSİLATÖR TİPİ FREKANS KONDANSATÖR LP 32KHz 33-68pF 200 KHz 15-47pF 100KHz 47-100pF 500KHz 20-68pF 1MHz 15-68 pF 2MHz 15-47 pF 4MHz 15-33 pF 8MHz 15-47 pF 20MHz 15-47 pF XT HS 3.8.2. RC osilatör Zamanlamanın çok hassas olmadığı durumlarda RC ikilisi osilatör kaynağı olarak kullanılmaktadır. RC osilatör, maliyetin azaltılmasını sağlamaktadır. Kullanıcı dış R ve C elemanlarının toleransı nedeniyle meydana gelen değişiklikleri de dikkate almalıdır. Direncin değeri 3 ila 100Kohm arasında seçilmelidir. 1Mohm gibi yüksek direnç değerleri osilatörü gürültü ve nem gibi çevresel etkilere karşı duyarlı hale getirir. 2, 2 Kohm değerinin altında ise, osilatör kararsız hale gelebilmekte, hatta tamamıyla durabilmektedir. 3.9 Kesmeler ( Interrupts ) PIC’in port girişlerinden veya donanım içerisindeki bir sayıcıdan gelen sinyal nedeniyle belleğinde çalışmakta olan programın kesilmesi olayına kesme denir. Programın kesildiği 29 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı andan itibaren önceden hazırlanan bir alt program çalışır. Alt program işlevini bitirdikten sonra ana program kaldığı yerden itibaren çalışmasına devam etmektedir. Netice olarak bir kesme, ana program çalışmasını sadece duraklatır ama hiçbir zaman işlevini devam ettirmesini engellemez. Interrupt alt programları kullanarak, program içerisinde kullanılacak komut sayısı azaltılır ve bir sürü mantıksal karışıklıklar önlenir. Kesme olayı sırasında meydana gelecek olan olayları sıralayacak olursak; 1. Kesme olayı meydana geldiğinde STACK registerin olduğu adrese (h’23F’) atlanır. 2. Ana programın kaldığı adresi stack registere yazılır. 3. Kesme alt programı çağrılır. 4. Kesme alt programının olduğu adrese atlanır. 5. Kesme alt programı çalıştırılır. 6. STACK (Yığın) registerin bulunduğu adrese gidilir. 7. Ana programa dönüş adresini alınır. 8. Ana programın kesildiği yerdeki adresten bir sonraki adrese gidilir ve devam edilir. Bunu şematik olarak ifade etmek gerekirse aşağıdaki gibi olur. Şekil 3.2. Kesme olayı 30 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 3.9.1. INTCON register INTCON (Interrupt Control) registeri RAM bellekte h’18B’ adresinde bulunan özel bir registerdir. Bu register içerisinde her bir kesme kaynağı için bir flag ve bir de global kesme flagi bayrağı bulunmaktadır. Çizelge 6. Intcon register 7 GIE GIE 6 EEIE 5 TOIE 4 INTE 3 2 1 RBIE TOIF INTF : Tüm kesme işlemlerini iptal etme bayrağı 0: Tüm kesmeler geçersiz 1: Aktif yapılmış olan tüm kesmeler geçerli EEIE : EEPROM belleğe yazma işlemi tamamlama kesmesi 0: Geçersiz 1: Geçerli TOIE : TMR0 sayıcı kesmesini aktif yapma bayrağı 0: Geçersiz 1: Geçerli INTE : Harici kesmeyi aktif yapma bayrağı 0: Geçersiz 1: Geçerli RBIE : PORTB(4, 5, 6, 7.bitleri) değişiklik kesmesini aktif yapma bayrağı 0: Geçersiz 1: Geçerli TOIF : TMR0 sayıcısı zaman aşımı bayrağı 0: Zaman aşımı yok 1: Zaman aşımı var INTF : Harici kesme bayrağı 0: Harici kesme oluşmadığında RBIF : PORTB değişiklik bayrağı 0: RB4~RB7 uçlarında değişiklik yok 1: RB4~RB7 uçlarından en az birisinde değişiklik var. 31 0 RBIF Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Tüm kesme işlemlerinin kontrolü bu register aracılığı ile yapılır. Çizelge 6’da intcon registerin her bir bitinin ne işe yaradığı gösterilmiştir. 3.9.2. Kesme kaynakları Kesme birkaç yoldan yapılabilmektedir. Bunlardan bazıları: • Harici(external) kesmeler. • TMR0 sayıcısında oluşan zaman aşımı kesmesi. • PORTB(4, 5, 6, 7 bitler)’deki lojik seviye değişikliğinden kaynaklanan kesmeler. • EEPROM belleğe yazma işleminin tamamlanmasında meydana gelen kesmeler. Bu çalışmada kullanılan kesme portb.0’da oluşan kesmedir. 3.9.3. TMR0 sayıcısı / zamanlayıcısı PIC16F877’nin RAM belleğinin h’101’ adresinde TMR0 adı verilen özel bir register bulunmaktadır.(TMR0) TMR0 programlanabilen bir sayıcıdır. Yani saymaya istenilen bir değerden veya baştan başlatılabilir. Herhangi bir anda içeriği sıfırlanabilir. Belli başlı özellikleri şunlardır. • 8-bit bir sayıcıdır. • Yazılabilir / okunabilir. • Programlanabilen frekans bölme değeri ( prescaler value ) vardır. • Sayı artışı harici veya dahili clock saykılı ile yapılabilir. • Düşen ve yükselen kenar tetiklemesi ( harici olarak ) • Sayıcı değeri artan yöndedir. • TMR0’ın değeri h’FF’den h’00’a gelince ilgili flag’i “1” yaparak kesme oluşturur. TMR0 sayıcısının önemli özelliklerinden biri de ana program veya kesme alt programları çalışırken sayma işlemini durdurmamasıdır. 32 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 3.9.4. OPTION register OPTION register, RAM belleğin h’81’adresinde bulunan özel bir registerdir. TMR0 sayıcısının kontrolünde kullanılmaktadır. Çizelge 6’de bu registerin her bir bitinin ne görevler yaptığı açıklanmıştır. Çizelge 7. Option register RBPU 7 INTEDG TOCS 6 TOSE 5 PSA 4 PS2 3 PS1 2 PS0, PS1, PS2 :Frekans bölme sayısı PSA :Frekans bölücü seçme biti 0:Frekans bölme sayısı TMR0 için geçerli 1:Frekans bölme sayısı WDT için geçerli TOSE :TMR0 sinyal kaynağı kenar seçme biti 0:RA4/TOCKI ucundan düşen kenar tetiklemesi 1: RA4/TOCKI ucundan yükselen kenar tetiklemesi TOCS :TMR0 sinyal kaynağı seçme biti 0:Dahili komut saykılı seçilir 1:Harici dijital sinyal(RA4/TOCKI ucu) INTEDG :Harici kesme sinyali kenar seçme biti 0:RB0/INT ucundan düşen kenarda tetikleme 1: RB0/INT ucundan yükselen kenarda tetikleme RBPU :PORTB pull up geçerli yapma biti 0:PORTB uçlarındaki pull-up’lar iptal edilir. 1: PORTB uçlarındaki pull-up’lar geçerli yapılır 33 1 PS0 0 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 3.9.5 Prescaler kullanımı Option registerin 0, 1, 2. bitleri (PS0~PS2) içerisine yerleştirilen sayılar, TMR0 veya WDT’ye uygulanan sinyali bölmektedir. Böylece sayma hızları değiştirilebilir. Üç bitlik bu sayı TMR0 veya WDT’de birbirinden farklı 8 farklı oran seçme olanağı oluştururmaktadır. Çizelge 8’de prescaler değerleri görülmektedir. Çizelge 8. Prescaler Değerleri Frekans TMR0 WDT bölme sayısı oranı oranı 000 1/2 1/1 001 1/4 1/2 010 1/8 1/4 011 1/16 1/8 100 1/32 1/16 101 1/64 1/32 110 1/128 1/64 111 1/256 1/128 TMR0 veya WDT sayıcılarının kaç dahili komut saykılında bir defa bir üst sayıya geçişini belirleyen orandır. Örneğin; TMR0 oranı 1/2 ise, 2 komut saykılında bir defa üst sayıya geçiş olmaktadır. TMR0 oranı 1/8 ise, 8 komut saykılında bir defa üst sayıya geçiş olmaktadır. Program belleğine yerleştirilen komutların çalışabilmesi için harici bir osilatörden clock sinyali ( fosc ) uygulanması gerekmektedir. Bu frekans PIC tarafından 4’e bölünerek OSC2 ucundan dışarıya verilir. İşte 4’e bölünen bu frekansın bir saykılı bir komutun icrası için geçen süredir. Bu çalışmamızda 4 MHz’lik bir kristal osilatör kullanılmıştır. Bu frekanstaki dahili komut saykılı 1MHz’dir. Peryodu ise 1µs’dir. Yani dahili komut saykılı 1 µs’dir. Bir 34 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı komut 1 µs’lik bir sürede icra edilmektedir. Prescaler değeri ile TMR0 sayıcısının kaç µs aralıklarla saydığını veya kaç µs aralıklarla kesme verdiğini belirlenmektedir. Örneğin, bu çalışmada prescaler değeri b’111’ seçilmiştir. Prescaler b’111’ olduğunda TMR0 oranı 1/256 olmaktadır. fosc değeri 4MHz olduğundan, komut saykılı 1µs olur. Buradan TMR0 sayıcısının 256 dahili komut saykılında 1 defa arttığı anlaşılır. TIMER0 sayma aralığı bu çalışma için 256 µs’dir. TMR0 saymaya başladığında ilk sayı h’00’ olduğundan TIMER0 256 µs x 256 = 65536 µs(65.5ms) aralıklarla kesme sinyali verecektir. 35 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı BÖLÜM IV BYTRONIC ÇAMAŞIR MAKİNASI SİMÜLATÖRÜ Bu bölümde, çamaşır makinesi simülatörüne ait kullanım kılavuzunun tercümesi verilmiştir. 4.1. Giriş Mikroişlemcili kontrol sistemlerinin kullanımı, üretkenliğin ve etkinliğin artırılmasında önemli fikirler olarak kabul edilmektedir. Bytronic çamaşır makinası simülatörü gerçek bir çamaşır makinasını temsil edecek şekilde, özel olarak dizayn edilmiştir. Ünite IBM uyumlu bir bilgisayara kolayca bağlanır. BBC mikrobilgisayar ya da Bytronic 8051 tek çip mikrobilgisayar, TTL portların iki 8 bit seçimlerini denetleyicidir. Çamaşır makinası simülatörünün elektronik kontrol devresi olayca anlaşılabilmektedir ve tamamıyla etiketlenmiştir. Anahtarlama hatalarına, sistem için kabul edilebilen genel hatalar çerçevesinde müsaade edilmiştir. Öğrenciler hataları iyi belirlemeli ve bu nedenle devrelerin standart test elemanlarıyla kullanımını iyi bilmelidirler. 4.2. Başlangıç Bytronic çamaşır makinası simülatorü (WMS) iki ya da daha fazla 8 bit TTL giriş/çıkış portlu mikroişlemci tabanlı denetleyicilere bağlanabilir. Uygun arabağı, kablo bağlantıları ve yazılım aşağıdaki mikrobilgisayarlara bağlanabilir. a) IBM XT/ AT / uyumlu donanım b) BBC Mikrobilgisayar c) Z80 Tabanlı Becca / Becca+Mikrodeneyiciler d) Bytronic 8051 tek çip mikro denetleyici Alternatif olarak, çamaşır makinası Bytronic genel PLC arabağını (MPPL1) kullanan bazı PLC’lere bağlanabilmektedir. 36 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 4.2.1 Çamaşır makinasının bir ibm ya da uygun donanıma bağlanması Genel olarak, basit IBM ya da uygun donanımlı bir mikrobilgisayar, giriş/çıkış kolaylığına (kabiliyetine) sahip değildir. Bytronic üç tane 8 bit I/O portu ve üç sayıcı / zamanlayıcı kanalları sağlayan bir I/O kartı (MPIBM1) sunmaktadır. Extra bir seçim gibi, bağlantı seçimlerinin sırasına ve led port çıkışına sahip bir IBM dış arabağı kartı (MPIBM2) olarak da kullanılabilir. Çamaşır makinası direk olarak iç karta ya da opsiyonel IBM dış karta bağlanabilir. Diğer bir durum, port işlevleri Ek 4.1’de listelendiği gibidir. 4.2.1.1. IBM iç arabağı (MPIBM1) için çamaşır makinası BİLGİSAYARI ÇALIŞTIRMADAN ÖNCE, ÇAMAŞIR MAKİNASI VE BİLGİSAYAR ARASINDAKİ BAĞLANTILAR VE ÇAMAŞIR MAKİNASI İLE GÜÇ KAYNAĞI ARASINDAKİ BAĞLANTILARIN TAMAMLANMASINA LÜTFEN DİKKAT EDİNİZ. Çamaşır makinasının IBM iç arabağına bağlantısı, mikrobilgisayarın arkasında bulunan 40 yollu IBM iç arabağı kablosu ile sağlanmaktadır. 4.2.1.2.Ibm dış arabağı (mpibm2) için çamaşır makinası Çamaşır makinasının IBM dış arabağına bağlantısı MPCT2 IDC bağlantı kablosu ve iç saat bağlantılarını sağlayan iki kablo iledir. MPCT2 bağlantı kablosu 26 yolun her birinin sonu IDC konnektör ile bağlanmış 26 yollu, şeritli bir kablodur. Bu fişler doğruca çamaşır makinası üzerine düzgünce monte edilmiş 26 yollu konnektöre girmektedir. Kablonun diğer ucu dış arabağı üzerinden 26 yollu konnektöre bağlıdır. Sayıcı / zamanlayıcı bağlantısı, dış arabağındaki pervane terminal bloğuna uygunluk için, çamaşır makinasındaki pervane terminal bloğundan bağlanan iki kablo ile yapılır. 37 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Çamaşır makinasındaki pervane terminal bloğu düzgünce monte edilmiştir ve kutunun sol arka tarafında bulunmaktadır. Birinci kablo, dış arabağındaki “CKO” olarak belirtilen terminale bağlanabilir ve terminal çamaşır makinasında “CKO” olarak belirtilmiştir. İkinci kablo, dış arabağındaki “OP1” olarak belirtilen terminale bağlanacaktır ve terminal çamaşır makinasında “OP1” olarak belirtilmiştir. 4.2.1.3. Çamaşır makinasının bytronic 8051 mikro denetleyiciye bağlanması 8051 tek çip mikrobilgisayar bugünkü ticari çamaşır makinalarında kullanılan kontrol tiplerinden biridir. Bu onun düşük fiyatı, yerleşik giriş / çıkış portlarından ve iyi dizaynından dolayıdır. Çamaşır makinası simülatörü Bytronic 8051 geliştirme borduna ya da 26-26 yol bağlantı kablosu kullanan hedef borda bağlanabilmektedir. 4.2.1.3.Çamaşır makinasının bir programlanabilir lojik denetleyiciye bağlanması Çamaşır makinası simülatörü AC çıkışlı tiplerden başka bir Bytronic genel PLC arabağı (MPPL1) ve bir 20-26 yollu bağlantı kablosu (MPCT1) kullanılarak hemen hemen bütün programlanabilir lojik denetleyicilere (PLC) bağlanabilir. PLC arabağı kurulumu için genel arabağı dökümanları kullanılabilir. 4.2.1.5 Güç kaynağının bağlantısı • Bytronic WMS 5V@400mA DC bir güç kaynağına ihtiyaç duyar. • Gücü kesmeden iki güç hattını bağlarken verilebilecek zararlardan lütfen sakınılmalıdır. • Güç kaynağını açmadan önce bağlantıları kontrol ediniz. • Güç kaynağı ve sonra bilgisayar açılmadan önce, bütün bağlantıların bir defa daha kontrol edilmesi gerekmektedir. 4.3. Bytronic Çamaşır Makinası Simülatörünün Özellikleri Bytronic çamaşır makinası simülatörü iki kısıma bölünmüş çift taraflı basılmış bir devre bordudur. Devre bordunun birinci yarısı elektronik devreyi içerir, diğeri bir çamaşır 38 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı makinası kopyası olarak yapılmıştır. Çamaşır makinası simülatörünün elektroniği detaylı olarak 4. kısımda anlatılmıştır. Çamaşır makinası simülatörü aşağıdaki özelliklerle dizayn edilmiştir. • Mikrobilgisayar yazılımıyla tanımlanan 6 yıkama programlı yıkama devir tablosu. Seçilen program 3 ledle gösterilmiştir. • Program seçici, kabul ve iptal anahtarları program tablosundan bir yıkama devri seçebilecek mandallı anahtarlardır. Eğer program doğru olarak seçilmediyse, o zaman iptal girişi bütün anahtarları temizlemek için reset çıkış hattını kullanabilir. Alternatif olarak, kabul girişi geçerli bilgi ile set edilmiş 3 program seçiciyi gösterecek ve bundan dolayı yıkama program devrini seçmek için mikrobilgisayardan okuma yapabilecektir. • Yıkama program durumu 7 parçalı displayde gösterilebilir. Daha fazla açıklama kısım 4.4.1 de verilmiştir. • Bir DC motor yıkama kazanını temsil eden bir plastik diske bağlanmıştır. Motorun yönü ve hızı mikrobilgisayar tarafından kontrol edilebilir. Motor hızı dört slotlu plastik diskten yansıtan bir kızıl ötesi sensör kullanılarak bulunmaktadır. • Led göstergeli mekanik mandallı bir anahtar çamaşır makinasının açık-kapalı olmasını temsil eder. Bu bir alarm durumunu oluşturan bir kontrol programı ile birleştirilerek kullanılabilir.(ideal kesim girişi) • Anahtar işlemlerinin işitilebilir belirtileri ve meydana getirilebilecek alarmlar bir buzzer ile sağlanabilmektedir. 4.4. Çamaşır Makinası Elektroniği Çamaşır makinası devresi her devre görünüşü ayrılmış ve bütün elemanları açıkça etiketlenmiş çift taraflı bir PCB’dir. Devrenin başlıca özellikleri; a) 7 parçalı display sürücü b) Motor sürüşü ve yön kontrolü c) Buzzer d) Anahtar girişi SET / RESET mandallı devreler e) Kızıl ötesi hız sensörü Yukarıdaki maddeler ilerki kısımlarda daha detaylı olarak incelenmiştir. 39 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 4.4.1 Yedi parçalı display sürücü Çamaşır makinası simülatöründe kullanılan display ortak anodlu bir displaydir. Bu her parçanın(segmentin) anadun bir genel pin ile pozitif güce bağlanacağını göstermektedir. Displaydeki herhangi bir parçayı aktif etmek için, bir düşük lojik seviye ya da sıfır (0V) volt sinyal akım sınırlayıcı bir direnç ile parçaların katoduna uygulanmalıdır. Bu yolla, numaralar 0V için bağlanan uygun ferdi pinler ile oluşturulabilir. Displayın her parçası için bir çıkış port biti kullanılacağından, bu sistem için etkisizdir. Bu kontrol yükünü azaltmak için özel display sürücü tümleşik devreleri (IC’s) mevcuttur. Çamaşır makinası simülatöründe kullanılan IC, ikili kodlanmış onlukları (BCD) 7 parçalı display sürücüye çeviren bir 74LS47 ‘dir. Devre diyagramı Şekil 4.1’de gösterilmiştir.Bu display numaraları için ikili kodun 4 kontrol hattından verildiğini ve 74LS47 nin 7 parçalı display için doğru çıkışı sağladığını gösterir. Şekil 4.1 Parçalı Display Sürücü. İkili kodlar A, B, C ve D Şekil 4.2’da gösterilen numaraları üreteceklerdir. 40 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Şekil 4.2 Yedi Parçalı Display Kontrol Kodları 4.4.2 Motor sürüşü ve yön kontrolü Şekil 4.3 Motor Sürüş Devresi 41 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Şekil 4.3’de görülen devre DC motor kontrolü için kullanılmıştır. Motor anahtarlanarak tam hızda çalıştırılabilir ya da motor hızının kontrolü için darbe genişlik modüleli bir sinyal ile tetiklenebilmektedir. Bu sinyal mikrobilgisayar port bitinden sağlanmaktadır ve güç transistörü TR3:BFY51 ile anahtarlanmaktadır. Güç transistörü açık ya da kapalı iken akım akışını, transistör ve motor üzerinden sürdürmektedir. Bir PWM sinyal kullanıldığında ON/OFF oranı ya da mark/space oranı motorun hızını belirlemektedir(sınırlayacaktır). Yön kontrol biti bir 74LS244 ve TR3:BCI82L genel amaçlı bir transistör kullanılarak sağlanmaktadır. Transistör kontaklar üzerinde değişen iki kutupu aktif eden röle bobin akımını tetiklemek için kullanılmakta, böylece motor yönü değişmektedir. 4.4.3 Buzzer Buzzer aslında genel olarak iki tipli bir piezo ses üreticisidir. Tip A: Bunlar özel bir dalga formunun bağımsızca bir sesini meydana getirebilirler, onlar sadece titreşimi sağlayan bir güç voltajına ihtiyaç duymaktadırlar. Tip B: Bunlar bir ses meydana getiren transducerleri titreştirmek için bir darbeye ihtiyaç duymaktadırlar. Çamaşır makinası simülatöründe IC buffer 74LS244 ve transistör TR3:BC182L vasıtasıyla kolayca buzzeri öttüren bir ses meydana getirmek için mikro denetleyiciye müsaade eden Tip A kullanılmıştır. 4.4.4 Anahtar girişi set / reset mandallı devreler Program seçici, geçici temaslı bütün anahtarları kabul ve iptal etmektedir. Bu yüzden mikrodenetleyici sabit I/O port bilgilerini okuyabilir. Şekil 4.4’de gösterilen devre diyagramında, geçici sinyaller bir set / reset mandallama devresiyle mandallanmıştır. Mikrobilgisayardan gelen reset hattı normalde lojik “1” olmalıdır. Ani temaslı anahtar normal açık temas durumunda olduğunda, 10 k’lık pull-up direnci ile girişi set etmek için 42 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı bir lojik “1” seviyesine başvurulur. Şekil 4.4’deki referansla iki lojik “1” giriş bir mandallanmış çıkış üretmektedir. Bir anahtara basıldığında, Çizelge 8’deki Q çıkışının set durumundan, bir lojik “0” ın girişi set yapmaya başvuracağı anlaşılmaktadır. S-R latch’in Q çıkışı mikrobilgisayarın giriş portuna bağlanır ve program seçici ledleri sürmek için kullanılır. Şekil 4.4. Set / Reset Anahtarlamalı Devre(74LS279 aktive low girişlidir) 74LS279 set / reset mandal için doğruluk tablosu Çizelge 9’ da verilmiştir. Çizelge 9. 74LS279 Set / Reset lojik SET RESET Q ÇIKIŞI 0 0 TOGGLE 0 1 1 1 0 0 1 1 LATCH 43 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Mikrobilgisayarların beş geçici anahtarındaki bilgileri resetlemek için düşük reset hattı toggle olmalıdır. 4.4.5 Kızıl Ötesi Hız Sensörü Devre, kızıl ötesi (IR) sabit akımlı bir kızıl ötesi ışık yayan diyottan ibaret olan kızıl ötesi yansıtıcı bir sensörden oluşur. Bir yansıtıcı yüzey emiş menzilindeyse, IR alıcı transistör üzerinden geri döner. IR sensör diyagramı ve devresi Şekil 4.5’da gösterilmiştir. Şekil 4.5. Kızıl Ötesi Hız Sensörü 44 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Çamaşır makinası kazanı simülatörde dört parçalı bir diskle temsil edilmiştir.Yansıtıcı yüzey sensör yüzeyinin üzerine gelince transistör iletime geçmekte, karşılaştırıcı girişine 0V luk bir sinyal sağlamaktadır. Bunun yanı sıra bir slot göründüğünde, transistör kesime dönünce yansıma kesilmektedir. Böylece komparatör girişi, duyarlılık için kontrollü pozitif bir potansiyel “1” (set) e çekilir. Karşılaştırıcı IR sensör sinyali ile R7 ve R8 ile belirli sabit bir voltajı karşılaştırır. Karşılaştırıcı çıkışı SW2’yi kullanarak, diğer bir giriş portu ya da bir sayıcı / zamanlayıcı kanal girişini tetikleyebilecek, her devirde dört darbeli TTL uygun bir sinyaldir.Giriş portunun bir sayıcı / zamanlayıcı kanal gibi kullanımı daha detaylı olarak kısım 6’da incelenmiştir. 4.5 Anahtarlama Hataları Mikro çip teknolojisi ve denetleyici uygulamalarıyla yeni kullanışlı sistemler meydana gelmiştir. Bunun yanında bireysel hata bulma becerisine sahip olmak bir ihtiyaç haline gelmiştir. Bu becerileri geliştirmek için, çamaşır makinası simülatörü gerçek bir endüstriyel uygulamada bulunacak tipte, dört anahtarlama hatasıyla dizayn edilmiştir. Genel olarak bir elektriksel hata aşağıdaki maddelerde gösterildiği gibidir: 1. Kaynağın elektriksel kısa devresi 2. Toprağın elektriksel kısa devresi 3. Bir kısa devre ya da yanlış görevlendirmeden dolayı çapraz bağlanmış sinyal kabloları 4. Kopuk bir kablo, zarar görmüş devre yolu ya da kötü bir bağlantıdan dolayı açık devre Öğrenciler çamaşır makinası simülatörünün doğru uygulamasını kolayca yerine getirerek hata bulma tablosunu düzeltebilirler. Anahtarlama, bazı hataların (16’nın dışında) birleştirilmesidir. Test elemanlarının bir kitini kullanarak, devre diyagramı ile temasla, hatalar başarılı bir şekilde teşhis edilebilmektedir. Anahtar hataları listesi ve etkileri Çizelge 10’da gösterilmiştir. 45 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Çizelge 10. Anahtarlama Hataları Listesi ve Etkileri HATA NO HATA ETKİ 1. IC yi bozmak(kırmak) Bütün kuvvetlendirilmiş IC2:74LS244 sinyaller izole edilir. Pin 13 ü kırmak Anahtar reset hattı yok 2. IC2:74LS244 3. 7 parçalı displayın “e” parçasını +5V’la kısa devre yapmak 4. Motor bağlantılarını kırmak “e” parçası etkin değil. Motor etkin değil. 4.6 Labaratuvar Çalışmaları Yazılımları Devam eden bölüm tam bir kontrol programının geliştirilmesine kılavuzluk eden, gitgide kompleksleşen ve düzenli bir formda hazırlanmış labaratuvar çalışmalarının bir sıralamasını içermektedir. Bytronic IBM arabağı, 8051 tek çip mikro denetleyici geliştirme sistemi ve BBC mikrobilgisayar için port adreslerindeki teknik bilgi ek-2 de verilmiştir. Çamaşır makinası simülatörü giriş / çıkış yerleri ek-1 de verilmiştir. 4.6.1 Labaratuvar çalışması-1 ( dijital çıkışların kontrolü ) Amaç : Bu labaratuvar çalışmasının amacı, bir anahtara basıldığını ya da seçilmiş çıkış kanalını aktif eden dijital bir girişi algılayan bir program yazmaktır. İşlem : Bu programın tipik bir akış diyagramı Şekil 4.6’da verilmiştir. 46 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Şekil 4.6. Labaratuvar Çalışması-1 Akış Diyagramı 4.6.2 Labaratuvar çalışması-2 (7 parçalı displayın kontrolü ) Amaç : Bu labaratuvar çalışmasının amacı, her üç saniyede bir karakteri değiştiren, displayı 0 dan 9 a kadar saydıran bir program yazmaktır. İşlem : Bu programın tipik bir akış diyagramı Şekil 4.7’de verilmiştir. Labaratuvar Çalışması-3 (program seçici anahtarı okuma ) Amaç : 47 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Program seçici anahtarlardan okuyan bir program yazmak, eğer iptal anahtarına basılırsa buzzer 0.5 saniye aralıklarla 5 saniye ötecektir. Bir program seçildiğinde program numarası 7 parçalı displayda görülecektir. Şekil 4.7. Labaratuvar Çalışması 2 – Akış diyagramı İşlem : Bu programın tipik bir akış diyagramı Şekil 4.8’de verilmiştir. 4.6.4 Labaratuvar çalışması-4 (dc motorun açık / kapalı kontrolü ) Amaç : 48 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Bu labaratuvar çalışmasının amacı, bir mikrodenetleyicinin çıkış portunu kullanarak motoru çalıştıran bir program yazmaktır. Motor, kapı açma kapama anahtarı ile kilitlenebilir. Pervane dönüyorsa ve kapı anahtarı açıksa, buzzer 0.5 saniye aralıklarla 10 saniye ötecektir. İşlem : Bu programın tipik bir akış diyagramı Şekil 4.9’de verilmiştir. Şekil 4.8. Labaratuvar Çalışması 3 – Akış diyagramı 4.6.5 Labaratuvar çalışması-5 (açık döngüde dc motor hızının kontrolü ) Amaç : 49 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Bu labaratuvar çalışmasının amacı, diğer bir dijital çıkış portu ya da bir sayıcı / zamanlayıcı kanalı yoluyla meydana getirilen darbe genişlik modüleli (PWM) bir sinyal ile DC motor hızını kontrol etmektir. Arka plan : Darbe genişlik modüleli bir sinyal sabit frekanslı bir kare dalga darbesidir. Motor sürülürken ON (Mark) veya OFF (Space) zamanlarına bağlı olan bir ortalama akımı görmesi gerekir. Bundan dolayı eğer Şekil 4.10’da anlatıldığı gibi ON/OFF (Mark / Space) oranları değişirse motor yükü sabit farz edildiğinden, motor hızlanacaktır. PWM sinyal, iki yazılım zamanlı döngü ile oluşturulabilir. Birincisi, periyodun kontrolü ve diğeri mark ya da space’dir. Sonuç bir port vasıtasıyla çıkıştan alınabilir. Bunun yanı sıra, PWM frekansı yüksek ise o zaman mikrodenetleyicinin hızı ve yazılımı kontrol etkisinde önemli olmaktadır. 50 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Şekil 4.9. Labaratuvar Çalışması 4 – Akış Diyagramı Daha iyi bir çözüm, mikrodenetleyici için zaman detayları ile bir defa yüklenmiş bir donanım sayıcı / zamanlayıcı kanalı kullanmaktır. Sayıcı / zamanlayıcının özel detayları 51 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı mikroişlemci sisteme bağlıdır. Bytronic IBM iç 8253 CTC tümleşik devresinin özellikleri kullanım kılavuzunda verildi ve ek-4 te özetlenmiştir. NOT:Bytronic interaktif programı 100 Hz PWM frekansı kullanmaktadır. Şekil 4.10. Darbe Genişlik Modüleli Sinyal 4.6.6 Labaratuvar çalışması-6 ( motor hız geri beslemesini okumak ) Amaç : Bu labaratuvar çalışmasının amacı, her dönüşünde 4 darbe sağlayan motor diskinin kızıl ötesi (IR) darbe deneyiciyle her dakikadaki motor (rpm) hızını ölçmektir. İşlem : Motor hız bir uygun zaman peryodunda alınan IR darbelerin numaralarının sayımı ile azaltılabilir. Mesela, her saniyedeki darbe numaralarından, rpm Her dakikadaki yenileme (RPM) = Her saniyedeki sayı X 60 Her yenilemedeki 4 darbe Çamaşır makinası simülatöründeki SW2 anahtarı diğer bir giriş portuna ya da sayıcı / zamanlayıcı giriş kanalına hız darbe geri beslemesini bağlamak için kullanılabilir. Bir giriş 52 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı portu kullanıldıysa ve geçiş seçildiyse, sonucun doğruluğu mikrodenetleyicinin hızına ve yazılımına bağlı olacaktır. Sistem doğruluğu Bytronic IBM iç arabağı ve WMS interaktif programında olduğu gibi, bir sayıcı / zamanlayıcı donanım kullanılarak düzeltilebilecek sayıcı zamanlayıcının özel ayrıntıları mikroişlemci sisteme bağlıdır. Bytronic IBM iç 8253 CTC tümleşik devresinin detayları kullanıcı kılavuzunda verildi ve ek-4’te özetlenmiştir. 4.6.7 Labaratuvar çalışması-7 ( Renkli Yıkama Program Devri ) Amaç : Bu labaratuvar çalışmasının amacı, renkli bir yıkama devrini temsil için çamaşır makinasını kullanan bir program yazmaktır. Tipik bir yıkama devri; 1. Su doldurmak 2. Suyu ısıtma 3. Yıkama- yavaş bir hıza ayarlanmış disk hareketiyle temsil edilebilir. 4. Su boşaltma 5. Su doldurmak 6. Çalkalamak ( yıkamayı temsilen disk hareketi ) 7. Su boşaltma 8. Dönme- yüksek hızda disk dönmesi 9. Kurutma 10. Tamamlama İşlem : Bu programın tipik bir akış diyagramı Şekil 4.11’de verilmiştir. 4.6.8 Labaratuvar çalışması-8 (DC Motorun Kapalı Döngü Kontrolü ) Amaç : Bu labaratuvar çalışmasının amacı, bir çamaşır makinasını simüle etmek değildir fakat geri beslemesi ve DC motor kontrolü üzerine kurulmuş kapalı döngü bir kontrol programı yazmaktır. İşlem : 53 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Kontrol sisteminin blok diyagramı Şekil 4.12’de verilmiştir. Kontrol teorisi geniş bir konudur ve bunun için bu labaratuvar çalışmasında basit bir kontrol bilgisinden bahsedilmiştir. Bu uygulama aşağıdaki maddelerin bir fonksiyonu olan üç kısımlı dijital bir kontrol edici için idealdir. BAŞLA PORTLARI ÇALIŞTIR PROGRAM SEÇİCİLERİ BUL BUZZER ALARMI HAYIR RENKLİ DEVRİ SEÇİLDİ Mİ? EVET RENKLİ YIKAMA PROGRAMINI ÇALIŞTIR DEVİR TAMAMLANDIĞINDA DİSPLAY 8 OLSUN SON Şekil 4.11. Labaratuvar Çalışması 7 – Akış diyagramı 54 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı A. Orantılı B. Toplam C. Fark Şekil 4.12. DC Motor Kontrol Sistemi 4.6.8.1 Orantılı kod modu Bu modda denetleyici çıkışı set noktası (point) ve ölçülmüş değer (MW) arasındaki hata ile orantılıdır. Orantılı mod aşağıda görüldüğü gibi iki şekilde açıklanabilir. a) Orantılı Kazanç Bu modda denetleyici çıkışı hatayla çoklanmış orantılı kazançtır. Matematiksel olarak; Mp = PG (SP – MW ) + C Buradan; Mp : Denetleyici çıkışı PG : Orantılı kazanç C : Sıfır hatalı çıkış SP : Set noktası MW : Ölçülmüş değer b) Orantılı Band (PB) 55 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Orantılı kontrol modunda çıkış % 100’e vardığında hatanın bir satrasyon (doyum ) değeri vardır. Daha sonra; hatanın daha da artması çıkışta hiç artış sağlamaz.Aynı olay, çıkış % 0’a düştüğünde de olur. Çıkış % 0 ve % 100 arasında olduğundaki hata bandına orantılı band denir. Böylece daha yüksek kazanç ve daha küçük orantılı band Matematiksel olarak şu şekilde ifade edilebilir: Mp = 100 X ( SP – MW ) + C PB Ne yazıkki, basit bir orantılı denetleyici nadiren uygun bir kontrol sağlar. Asıl zorluk OFFSET denilen olaydır. OFFSET hatası bir sürekli değişiklikle oluşan değişken olaylardan kaynaklanır. 4.6.8.2 Toplam kontrol modu Bu kontrol modu orantılı offset hatalarını yok etmek için sık sık kullanılır. Toplam modu hatanın geçmişi üzerine kurulmuş ( geçmişe dayandırılan ) bir çıkışla sağlanır. (belirlenir) O, zaman – hata eğrisinin altındaki net alanı bularak ve ( IAT ) toplam olay zamanı denen saniyeler mertebesindeki bir sabitle çarpımı ile hesaplanır. Denetleyici eşitliği şu şekildedir: M ( t ) = PG f ( t ) dt IAT Toplam olay zamanı, eğer hata bu peryot boyunca sabit kalırsa, denetleyicinin orantılı olayının aynısı için, integral olayının zaman olarak alınmasıyla belirlendi. 4.6.8.3. Fark kontrol modu Bu kontrol modu sistemin zaman cevabını azaltmak için sıkça kullanılır. Değişen hataların zaman oranına dayanır. Denetleyici eşitliği şu şekildedir: Md = PG DAT de dt 56 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Fark olay zamanı (DAT), fark elementinin ani çıkışının aynısı için denetleyicinin orantılı olayını alabilecek zamandır. Değişen hatanın oranı, hatanın iki değeri arasındaki farkı olarak ve değerin farkını zamana bölerek yaklaşım yapılabilir. Denetleyici yaklaşımı şu şekildedir: Md = PG X DAT [ e ( to ) – e ( t ) ] [ t – to ] DAT : Fark olay zamanı e ( t ) : t zamanındaki hata e ( to ) : to zamanındaki hata Fark kontrol modu, sıfır değişim oranına uygun bir denetleyici çıkışı yokken asla yalnız kullanılmaz. Fark hakkında dikkat edilmesi gereken önemli bir nokta da, sistemde yüksek frekans gürültüsünü abartabilmesidir. 4.7 Kontrol Listeleri Çizelge 11. Kontrol Listeleri No Hata Kontrol Listesi 1.Güç kaynağı voltaj seviyesi ve kutupları kontrel edilir. 2.Wms (400 ma ) sigortası 1 Ünite güç vermez kontrol edilir. 3. Mikrodenetleyicinin bağlantı kabloları kontol edilir. 1.Anahtar hatalarını kontrol edilir. 2 Çıkışların ya da girişlerin kontrolsüz olması 2. Ünitenin doğruca güçlendiği kontrol edilir. 3. Mümkünse arabağın doğru 57 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı kurulduğu ve bağlandığı kontrol edilir. 1.Anahtar hatalarını kontrol edilir. 2. Motor kontrol anahtarı 3 SW1 in doğru pozisyonda Motor kontrolsüzdür olduğunu kontrol edilir. 3. Eğer Bytronic yazılımı kullanılmıyorsa, programı doğruca kontrol edilir, 1.Anahtar hatalarına bakılır. 2. Port/CKO seçici anahtarı SW2 nin doğru konumda olduğunu kontrol edilir. 4 3. Motorun ve diskin Motor hız geri beslemesi yoktur. serbestçe döndüğünü kontrol edilir. 4. Duyarlılık ve histerizisin doğruca set olduğunu kontrol edilir.(Ek-3 teki referansla) 1.Anahtar hatalarına bakılır. 2. TTL seviyeler için reset hattının doğruca 5 Program seçicinin ledleri sürekli mandallanır. toggle’landığını kontrol edilir. 3. değilse IC3&4’ü değiştirilir. 4.8 Ekler 4.8.1 Ek-1 ibm bağlantı (header) konfigurasyonları 58 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Çizelge 12.Çamaşır Makinası 26 Yollu Header FONKSİYON PORT PİN NO PORT FONKSİYON NC A7 26 25 A6 NC NC A5 24 23 A4 NC NC A3 22 21 A2 NC NC A1 20 19 A0 NC GND 18 17 B7 Buzzer B6 16 15 B5 Motor yönlendirici Motor kontrolü B4 14 13 B3 7 segmentin D biti 7 segmentin C biti B2 12 11 B1 7 segmentin B biti 7 segmentin A biti B0 10 9 GND NC C7 8 7 C6 Motor hız geribeslemesi Kabul anahtarı C5 6 5 C4 İptal anahtarı Program seçici 3 C3 4 3 C2 Program seçici 2 Program seçici 1 C1 2 1 C0 Kapı açma / kapama Anahtarlar için RESET Çizelge 13. Çamaşır Makinası 40 Yollu Header FONKSİYON Motor sürme Kapı 1’e bağlantı PORT PİN NO PORT CLK 1 1 2 İÇ CLOCK CLK 2 3 4 CLK O Motor geribeslemesi OUT 1 5 6 GATE 1 OUT 2 için bağlantı GATE 2 7 8 OUT O OUT 2 9 10 GATE 0 DISABLE 11 12 0 VOLT 5 VOLT 13 14 5 VOLT PC0 15 16 PC7 İÇ CLOCK Kapı açma / kapama 59 FONKSİYON DST INT CLK için bağlantı Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Program seçici 1 PC1 17 18 PC6 Motor hız geribeslemesi Program seçici 2 PC2 19 20 PC5 Kabul anahtarı Program seçici 3 PC3 21 22 PC4 İptal anahtarı 7 segmentin A biti PB0 23 24 PB7 Buzzer 7 segmentin B biti PB1 25 26 PB6 Anahtarları resetleme 7 segmentin C biti PB2 27 28 PB5 Motor D 7 segmentin D biti PB3 29 30 PB4 Motor sürme PA0 31 32 PA7 PA1 33 34 PA6 PA2 35 36 PA5 PA3 37 38 PA4 0 VOLT 39 40 0 VOLT 0 VOLT 0 VOLT 4.8.2 Ek-2 mikro-bilgisayar kontrol port adresleri IBM / Uyumlu (MPIBM1/MPIBM2 Arabağlarını Kullanmak) Bilgi yönlerdirme ve kontrol portu : Temel adresler + 7 ( base address + 7 ) Şekil 4.13. Port Adresleri 60 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 4.8.3 Ek-3 kızıl ötesi hız sensörünün kalibrasyonu 1. ICS : LM311’in 3 nolu bacağındaki voltajı ölçmek için bir voltmetre kullanılmaktadır. Motor diski döndürülür, böylece kızıl ötesi sensör (IR) kapanır ve açılır. Pin 3’teki voltaj VRI duyarlılık ayarı kullanılarak ayarlanabilir, böylece iyi TTL voltaj seviyesi elde edilebilir. Bunlar en fazla kapalıyken 2.4 volt ve açıkken 0.8 volttur. Eğer bu sağlanmıyorsa, diskin içindeki kızıl ötesi sensörün duyarlılık ayarını kontrol edilir. 2. Pin 3’teki ayarlanmış voltaj 2. pindeki voltaj set iken (yaklaşık 1.5 volt) IC5:LM311 ile karşılaştırılabilir. Bazı problemler sürerse, Bytronic’in teknik yardımıyla bağlantı kurmaktan çekinilmemelidir. 4.8.4 Ek-4 Ibm 8253 zamanlayıcı/sayıcı arabağının işlevi 8253, 2 Mhz hızında clock üretebilen 3 bağımsız 16 bit sayıcı / zamanlayıcı olarak yapılmış bir programlanabilir sayıcı zamanlayıcıdır. Tüm işlem modelleri, yazılım kontrolünü isteyebilmektedir. CTC’nin temel fonksiyonu kesin (tam) zamanlama gecikmelerini oluşturmaktır. Programlayıcı, programın ihtiyacına uygun bir sayı ile sayıcıyı başlatır. 8253, saat devir sayılarını aşağı doğru sayacaktır. Saat devirleri; a) İç CTC saat = 4 Mhz veya b) Dış saat (max. 5 Mhz) Program, terminal sayıcının ulaşıp ulaşmadığını görmek için aygıt seçebilir ya da doğru bağlantılar girildiyse ve kesmeler aktif durumdaysa ve uygun bir kesme servisi rutin olarak geliştirilmişse, işlemci (CPU) kesme yapabilecektir ve cevap hazır olabilecektir. Hem de 8253 yapısında zamanlanmamış diğer fonksiyonların bir numarası vardır. • Programlanabilir oran üreteci • Olay sayıcısı • İkili oran çoğullayıcısı • Gerçek zaman saati • Dijital one-shot 61 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Sayıcıların üç fonksiyonel bloğu 0,1 ve 2 ; yapısındaki gibidir bu yüzden sadece bir tanesi tanımlanabilir. Her sayıcı ikili ya da BCD sayabilen tekil bir ön kurmalı aşağı sayıcıya bağlıdır. Sayıcı girişlerinin kullanımı için tasarlanan modeller, kapı, kontrol kelime registeri içindeki held değeri ile set edilmiştir, bütün kanallar tamamıyla diğer bir sayıcıdan bağımsızdır. Her sayıcının içeriği basit okuma işlemleri ile okunabilir ve özel komutlar katılabilir. Bu yüzden sayıcılar (“on the fly”) da okuyabilir. Sayıcı register, sayıcı değeri ( 1 ya da 2 byte RL moda bağlı olan) clocktaki bir yükselen ve bir düşen kenar geçesi kadar yüklenmez. Eğer bir dış saat girişi IBM iç arabağına bağlanmışsa; saat CTC ye varmadan önce evirilebilecektir. Düşen kenar için öncelikli okuyuş geçersiz bir bilgi sağlayabilir. Sayıcı modeller, aşağıdaki tabloya göre kontrol kelime registerlarının yazımı ile seçilmektedir.( temel adresler + 3 ) 4.9 8253 CTC’yi Kullanarak Dc Motor Kontrol Etmek Bytronic interaktif çamaşır makinası programı WMS’yi , sayıcı / zamanlayıcı kanallar 1 ve 2 kullanılarak kontrol etmek için tasarlanmıştır. Konfigürasyon Şekil 4.14’te gösterilmiştir. DC motor hızı,labaratuvar çalışması 5’te anlatıldığı gibi bir PWM kontrol sinyali kullanılarak kontrol edilmiştir. Çizelge 14. Sayıcı Modeller D7 SC1 D6 SC0 D5 RL1 D4 RL0 D3 M2 D2 M1 D1 M0 DO BCD SAYICIYI SEÇ OKU / YÜKLE MOD İKİLİ / BCD 8253 CTC’nin her modu tam olarak IBM arabağı dökümanlarında açıklanmıştır. 62 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Şekil 4.14. Sayıcı / Zamanlayıcı Kanallar 1 ve 2’nin Konfigürasyonu Kanal 1, 1. modda bir programlanabilir one-shot olarak tasarlanmıştır, bu modda çıkış kapı girişinin düşen kenarında “low following”e gidecektir. Çıkış, terminal sayıcı ulaşıncaya kadar low (düşük) kalır sonra mark (yüksek) olmaktadır. Mark / space in oluşmasını kesinleştirmek için, kanal 1’in kapı girişiyle kontrol edilen mod 3 te set edilmiş bir kare dalga generatörüyle kanal 2 de uygun bir frekans için set edilmelidir. Bunun anlamı, uygun bir zaman peryodunda kanal 2’nin çıkışının yükseleceği, (Bytronic interaktif programında 100 Hz) sonraki PWM peryot için kanal 1 in sıfırlanacağıdır. Bir zamanlama diyagramı Şekil 4.15’de görüldüğü gibidir. 4.9.1 Geri besleme darbelerini saymak için 8253 CTC kullanımı Bytronic interaktif çamaşır makinası programı sayıcı kanalı 0’ı kullanarak kızıl ötesi sensörden geri besleme darbelerini saymak için tasarlanabilir. Tasarım Şekil 4.16’da gösterilmiştir. Kanal 0 iç saati disable edilir ve böylece motor diskindeki darbeler sayılabilir. Kanal 0 mod 1 de set edilebilir bir programlanabilir one-shot’tur. 63 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Şekil 4.15. CTC Kanallar 1 ve 2’nin Zamanlama Diyagramı Şekil 4.16. Sayıcı / Zamanlayıcı Kanal 0’ın Konfigürasyonu 64 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı CTC sayıcı kanalları yazılımı resetleyemeyecek ve bundan dolayı hız sayıcı, son örnekteki okunan değerin farkı esasına dayanmaktadır. Mesela her iki saniyede motordan okunacaktır ve motor hızı 1000 rpm, 1000 rpm = 1000 * 4 = 66 darbe her saniyede bu yüzden, sayıcı 2 saniyede 2 * 66 = 132 ile azalacaktır. Bytronic interaktif program önceden max 16 bit numarasını (65535) ile sayıcıyı yükler, her sayıcı darbesi bu numarayı azaltmaktadır. Tipik bir program akış diyagramı Şekil 4.17’de verilmiştir. Daha detaylı bilgi, Bytronic IBM iç arabağı kılavuzu ya da 8253 data sheet’lerinde bulunabilir. 65 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Şekil 4.17. CTC Hız Ölçümü İçin Akış diyagramı BAŞLA SAYICI KANALI BAŞLAT ZAMANLAYICI DÖNGÜ T1'İ SET ET DİĞER PROGRAMLAMA GÖREVLERİ HAYIR T1 ZAMANI BİTTİ Mİ? EVET SAYICI O ' I OKU SON MOTOR HIZ FARKINI HESAPLA MOTOR HIZINI HESAPLA VE GÖSTER HAYIR ÇIKIŞ E/H EVET SON 66 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı BÖLÜM V PIC BASIC PRO İLE PROGRAMLAMA 5.1. Pic Basic Pro Hakkında Pic Basic Pro programlama dili mikrochip firmasının ürettiği mikrodenetleyicileri programlamada kullanılan daha çabuk ve kolay bir dildir(www.rentron.com). Pic Basic Pro programlama dili ile 8 ile 84 pin arasındaki değişik özelliklerdeki mikrodenetleyiciler için program yazılabilir. Üst seviyeli programlama dilleri sayesinde çok daha rahat ve hızlı bir şekilde programlama yapılabilmektedir. Ancak bu programlar çok karmaşık sistemlerin çözümünde yetersiz kalabilmektedir.Yüksek seviyeli bu programlama dilleri assembly dili komutları ile birlikte kullanılabilmektedir. Bu durumda yüksek seviyeli bir pic programlama dili ve PIC assembly dili birlikte kullanıldığında bu sorun ortadan kalkmaktadır. 5.2. Pic Basic Pro Komut Seti Pic Basic Pro’nun komut seti basic programlama diline çok benzemektedir. Basic programlama dilinde olmayan komutlar da mevcuttur. Çizelge 15’de Pic Basic Pro komutları görülmektedir. PIC BASIC PRO programlama dilinin tüm yönleriyle açıklanması bir kitap konusu olacağından burada sadece bu çalışma için gerekli olan komutlar ve bunların özelliklerinden bahsedilmiştir. 5.2.1. Değişkenler ( Variables ) PICBASIC programlama dilinde üç tip değişken tipi kullanılmaktadır. Değişkenler BIT, BYTE veya WORD büyüklüğünde olabilirler. Örneğin: k VAR byte (byte büyüklüğünde K değişkeni) 67 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Çizelge 15. Pic Basic Pro Komut Seti @ END NAP SELECT CASE ADCIN FOR…NEXT ON DEBUG SERIN ASM…ENDASM FREQOUT ON INTERRUPT SERIN2 BRANCH GOSUB OUTPUT SEROUT BRANCHL GOTO OWIN SEROUT2 BUTTON HIGH OWOUT SHIFTIN CALL HPWM PAUSE SHIFTOUT CLEAR HSERIN PAUSEUS SLEEP CLEARWDT HSEROUT PEEK SOUND COUNT I2CREAD POKE STOP DATA I2CWRITE POT SWAP DEBUG IF…THEN PULSIN TOGGLE DEBUGIN INPUT PULSOUT USBIN DISABLE LCDIN PWM USBINIT DESABLE DEBUG LCDOUT RANDOM USBOUT DISABLE INTERRUPT LET RCTIME WHILE…WEND DTMFOUT LOOKDOWN READ WRITE EEPROM LOOKDOWN2 READCODE WRITECODE ENABLE LOOKUP RESUME XIN ENABLE DEBUG LOOKUP2 RETURN XOUT ENABLE INTERRUPT LOW REVERSE 5.2.2. Etiketler ( Labels ) Etiketler GOTO veya GOSUB gibi komutlara referans teşkil ederler. Bu komutların icrasından sonra program etiketle belirtilen satıra dallandırılır. Etiketler herhangi bir kelime olabilir ve sonuna iki nokta üst üste (:) konur. Örneğin: Etiket: HIGH PORTB.5 68 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 5.2.3. Nümerik sabitler ( Numeric constants ) Nümerik sabitler üç şekilde tanımlanırlar. Bunlar decimal, binary ve hexadecimal‘dir. Binary değer tanımlanırken değerin başına ‘%’ ve hexadecimal değerin başına ‘$’işareti konulur. Decimal değer tanımlanırken herhangi bir işaret kullanılmaz. Örneğin: 100 ‘decimal değer . %100 ‘decimal 4 için binary değer. $100 ‘decimal 256 için hexadecimal değer. 5.2.4. Portlar PIC’in herhangi bir portunun istenilen pini giriş yada çıkış olarak tanımlanabilir. Daha sonra istenilen değer ilgili porta yüklenir. Değerin porta yüklenmesi için farklı yollar vardır. Örneğin: TRISB = 0 ‘Portb’nin tüm pinlerini çıkış olarak tanımlamada kullanılır’ TRISA=1 ‘Portb’nin tüm pinlerini giriş olarak tanımlamada kullanılır’ TRISC = %11110000 ‘Portb’nin ilk dört biti çıkış,son dört biti giriş olarak tanımlamada kullanılır’ Yönlendirilen port pinlerine bilgilerin gönderilmesi için birkaç yol vardır. Örneğin: PORTB = %11110000 ‘Portb’nin ilk dört pinine lojik-0 , son dört pinine ise lojik-1 değeri gönderilmede kullanılır .’ PORTB = 1 ‘Portb’nin bütün pinlerine lojik-1 değeri gönderilmede kullanılır.’ HIGH PORTB.4 ‘PORTB’nin dördücü pinine lojik-1 değeri gönderilmede kullanılır .’ LOW PORTB.6 ‘PORTB’nin altıncı pinine kullanılır.’ 69 lojik-0 değeri gönderilmede Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 5.2.5. Zaman gecikmesi ( Pause ) Pause programı istenilen bir süre beklemeye alır. En fazla 65.535 milisaniyelik bir gecikme sağlanabilir. Bu da bir dakikanın biraz üstünde bir değerdir. Pause komutundaki değer milisaniye büyüklüğündedir. Örneğin, PAUSE 49000 (49 saniyelik gecikme). Pause komutu bu çalışmada komut yazımı anlamında programı basitleştirmiştir. Eğer 49 saniyelik gecikmeyi assembly kodunda yazmak gerekseydi, şu şekilde yazılmalıdır. LIST =P16F877 INCLUDE “P16F877.INC” SAYI EQU H’20’ SAYI1 EQU H’21’ SAYI2 EQU H’22’ GECIKME MOVLW H’FF’ MOVWF SAYI MOVLW H’FF’ MOVWF SAYI1 MOVLW H’FF’ MOVWF SAYI2 DONGU DONGU1 DONGU2 DECFSZ SAYI2,F GOTO DONGU2 DECFSZ SAYI1,F GOTO DONGU1 DECFSZ SAYI GOTO DONGU RETURN 70 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Oysa bu programı PIC BASIC PRO programlama dilinde PAUSE 49000 şeklinde tek satırda gerçekleştirmek mümkün olmaktadır. Görüldüğü üzere PIC BASIC PRO ile program yazmak hem çok rahat hem de çok basit olmaktadır. 5.2.6. Döngü düzenlemek ( For…Next ) Bazı işlemlerin önceden belirlenen sayıda tekrarlanması gerekmektedir. PICBASIC programlama dilinde bu işi FOR…NEXT döngüsü bir sayaç gibi çalışarak gerçekleştirmektedir. FOR komutundan sonra bir değişkene ilk değer atanıp, bu değişkenin sayacağı son değer de belirtilir. Ayrıca değişkenin kaçar kaçar artacağı STEP komutuyla kontrol edilebilmektedir. Son olarak NEXT döngüsüne gelen program eğer son değere ulaşılmamış ise bir sonraki değer için aynı işi yapacaktır. Örneğin: For k=2 TO 10 step 2 Pause1000 Next Burada k değişkeni 2’den 10’a kadar ikişer ikişer saymaktadır. Her bir döngüde bir saniyelik bir gecikme sağlamaktadır. Döngü toplam beş tur atacağından 5 saniyelik bir gecikme sağlanmış olacaktır. 5.2.7. Kontrol yapmak (IF…Then) Bazı işlemlerde bir durumun kontrol edilmesi gerekebilir. Picbasic programlama dilinde bu işi IF…THEN komutu sağlamaktadır. Bu kontrol deyimi bir veya birden çok karşılaştırmayı icra edebilir. IF…THEN kontrolörü bir durumun doğru (true) veya yanlış (false) olmasını karşılaştırarak değerlendirir. Eğer değerlendirme doğru ise THEN komutundan sonraki komut icra edilmektedir. Eğer değerlendirme yanlış ise program bir sonraki satıra geçmektedir. Örneğin: IF portb.2 = 0 then high porta.1 Else high portb.3 71 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Bu program parçasında eğer portb’nin ikinci pinine lojik-0 gelmişse porta’nın birinci pinine lojik-1gönderilir aksi taktirde portb’nin üçüncü pinine lojik-1 gönderilecektir. 5.3. Kesmeler Bir Pic mikrodenetleyicisinde kesmelerin nasıl olduğundan 3. bölümde bahsedilmiştir. Burada sadece Pic Basic Pro dilinde kesmelerin nasıl yapıldığından biraz bahsedilecektir. Bir kesme programı yazmak için en kolay yol ON INTERRUPT yazmakla başlar. Bu komut Pic Basic Pro programının dahili kesmeleri aktif etmesini ve kesme geldiği anda mümkün olan en kısa zamanda kesme alt programına dallanması gerektiğini bildirir. ON INTERRUPT kullanılırsa, bir kesme oluştuğu anda program bulunduğu yerden alt programa dallanmakta ve kesme alt programını icra ettikten sonra kaldığı yere geri dönmektedir. Fakat bu işlem assembly dilindeki kadar hızlı olmamaktadır. İlk olarak kesme geldiği andaki komutun icrası tamamlanmakta ve ardından kesme işlemi gerçekleştirilmektedir. Eğer PAUSE 10000 gibi bir komut icra edilirken kesme gelmişse bu komutun icrası bitene kadar (10 saniye) kesme işlemi gerçekleşmeyecektir ve program istenilen amacın dışında çalışacaktır. Bu da Pic Basic Pro’nun dezavantajlarından biridir. Kesme işleminin yapılabilmesi için öncelikle ilgili registerlerin ayarlanması gerekmektedir ve dikkat edilmesi gereken bir hususta kesme alt programının programda doğru yerlere yazılmasıdır. Örnek bir kesme alt programı aşağıdaki gibidir. ‘ Port ayarlamaları yapılır …. ON INTERRUPT GOTO OKUMA INTCON = %10100000 ‘ Tmr0 kesmesini ayarlamak için STATUS = %00000111 ‘ Prescaler değeri için ENABLE INTERRUPT ‘ Ana program bu kısıma yazılır 72 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı …….. …… ….. …. ... DISABLE INTERRUPT ASM MOVF TMR0,W ‘ Assembly komutları kollanılmıştır. MOVWF PORTD NOP BCF TMR0,2 ENDASM RESUME ENABLE INTERRUPT END 5.4. Pic Basic Pro Komutları @ : Assembly kodu (tek satırlık) eklemek için kullanılır. ASM . . ENDASM BRANCH : Assembly dili kodlarını eklemek için kullanılmaktadır. : Programın başka bir yere dallanmasını sağlamaktadır ( = ON..GOTO ) BRANCHL : Programın değişken içerikli bir konuma dallanmasını sağlamaktadır. BUTTON : Pine bağlı bir anahtardaki sıçramaları düzenlemektedir. CALL : Assembly dilinde yazılmış alt programı çağırmaktadır. CLEAR : Tüm değişkenleri sıfırlamaktadır. CLEARWDT: Watchdog timerı silmektedir. COUNT : Bir pindeki darbeleri saymaktadır. DATA : Eepromun ilk içeriğini belirlemede kullanılmaktadır. DEBUG : Uygun pinden ve hızda (baud) asenkron seri çıkış DEBUGIN : Uygun pinden ve hızda (baud) asenkron seri giriş DISABLE : Debug yada Interrupt komutlarının icrasını durdurmaktadır. (pasif etme) DTMFOUT : İstenilen pinden touch tonlar üretir. EEPROM : Eepromun ilk içeriğini belirlemede kullanılmaktadır. 73 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı ENABLE : Debug yada Interrupt komutlarının icrasını aktif etmektedir. END : İşlemleri durdurur ve düşük güç moduna geçmektedir. FOR… NEXT : İşlemlerin tekrarında kullanılmaktadır. FREQOUT : Bir pinde ikiden fazla frekans sağlamaktadır. GOSUB : Belirlenen adresteki BASIC altprogramını çağırmaktadır. GOTO : Programının icrasını belirlenen adrese götürmektedir. HIGH : Pini aktif yapmaktadır. (lojik-1) HPWM : Programdan bağımsız PWM sinyal üretmektedir.(sadece belirli Pic’erde) HSERIN : Programdan bağısız asenkron seri giriş. HSEROUT : Programdan bağısız asenkron seri çıkış. I2CREAD : I²C aygıtlardan okumada kullanılır. I2CWRITE : I²c aygıtlara yazmada kullanılır. INPUT : Pini giriş yapmaktadır. LCDIN : Lcd hafızasından (RAM) okumada kullanılır. LCDOUT : Karakterleri lcdde göstermektedir. LOOKDOWN : Değişken için sabit tablosunu araştırmaktadır. LOOKDOWN2 : Değişken için sabit-değişken tablosunu araştırmaktadır. LOOKUP : Tablodan sabit değeri almaktadır. LOW : Pini sıfıra çekmektedir.(lojik sıfır) NAP : Geçici bir süre işlemcinin enerjisini kesmektedir. OWIN : Tek kablo giriş. OWOUT : Tek kablo çıkış. OUTPUT : Pini çıkış yapmaktadır. PAUSE : Gecikme sağlamaktadır. (ms) PAUSEUS : Gecikme sağlamaktadır. (µs) PEEK : Registerden Byte’ı okumada kullanılır. POKE : Registere Byte’ı yazmada kullanılır. POT : Belirlenen pindeki potansiyometrenin değerini okumaktadır. PULSIN : Bir pindeki darbe genişliğini okumaktadır. PULSOUT : Pinde darbe üretmektedir. PWM : Pinde PWM sinyal üretmektedir. RCTIME : Pindeki darbe genişliğini ölçmektedir. READ : Eepromdan Byte’ı okumaktadır. 74 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı READCODE : Kod hafızasından kelime okumaktadır. RESUME : Kesmeden sonra programı kaldığı yere göndermektedir. RETURN : GOSUB komutuyla dallanılan alt programdan kaldığı yere geri döndermektedir. REVERSE : Pinin konumunu değiştirmektedir.(girişse çıkış çıkışsa giriş yapar) SELECT CASE : Bir değişkeni farklı değerlerle karşılaştırmaktadır. SERIN : Asenkron seri giriş. SEROUT : Asenkron seri çıkış. SHIFTIN : Senkron seri giriş. SHIFTOUT : Senkron seri çıkış. SLEEP : Belli bir süre için işlemcinin enerjisini kesmektedir. SOUND : Belirlenen pinde ton yada beyaz gürültü oluşturmaktadır. STOP : Programın icrasını durdurmaktadır. SWAP : İki değişkenin değerini değiştirmektedir. TOGGLE : Pini toggle durumuna almada kullanılır.. USBIN : USB giriş. USBINIT : USB ayarlama. USBOUT : USB çıkış. WHILE… WEND : Şart doğru olana kadar programın (durumun) icrasını sürdürmede kullanılır. WRITE : Eeproma byte’ı yazmada kullanılır. WRITECODE : Kod hafızasına kelime yazmada kullanılır. XIN : X-10 giriş. XOUT : X-10 çıkış. 5.5. Microcode Studio Programı Picbasic programlama dilinde yazılan bir program yazmak ve derlemek (compile) için microcode studio programı kullanılmaktadır. Herhangi bir editörde yazılan Pic Basic Pro kodları microcode studio programına aktarılabildiği gibi, bu programın kendine has editörü bulunmaktadır. Şekil 5. 1’de microcode studio programının ana sayfası görülmektedir. 5.6. Propic Programı 75 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı PIC’in belleğine yüklenmek üzere yazılan program, microcode studio programında derlenmektedir. Program doğru yazılmışsa .HEX, .ASM, .BAS ve MAC uzantılı dört dosya oluşturulmaktadır. Hexadecimal kodlar ( derlenmiş program ) bilgisayarın paralel portuna bağlanan programlayıcı ( PROTOPIC ) aracılığı ile PIC’in program belleğine yazılmaktadır. Kullanılan PIC16F877’nin Bacak bağlantıları Ek-b’de verilmiştir.Aynı işlemi yapmak için bilgisayarın seri portuda kullanılabilir.(ICPROG) PROTOPIC programlayıcısının PROPIC adında bir programı bulunmaktadır. Programın ana menüsü Şekil 5.2’de verilmiştir. Şekil 5.1. Microcode Studio Ana Sayfası 76 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Şekil 5.2. Propic Programı Ana Menüsü 77 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı BÖLÜM VI ÇAMAŞIR MAKİNASI SİMÜLATÖRÜ KONTROL PROGRAMI Bu kısımda Bölüm IV’te tanımlanan problemlerin çözümü için yazılmış olan program ve çamaşır makinası simülatörü kontrol devresi verilmiştir. 6.1. Çamaşır Makinası Simülatörü Kontrol Devresi Çamaşır makinası simülatörünün kontrolü için Şekil 6.1’deki kontrol devresi tasarlanmıştır. Sekiz farklı problemin çözümü için 8 farklı program yazılmış ve yazılan programlar birleştirilerek bir PIC16F877 mikrodenetleyicisi içerisine yüklenmiştir. Hangi programın çalıştırılacağı, programın başlangıcında kontrol devresinde bulunan switch’ler(anahtar) ile seçilmektedir. Seçilen program değiştirilmek istenildiğinde ise, uygulama devresinde bulunan Reset Switch ile mikrodenetleyici resetlenmektedir ve program icrası başa döndürülerek, okunan switch konumlarına göre yeni programın yürütülmesi sağlanmaktadır. Programlar için switch konumları Çizelge 16’da verilmiştir. Çizelge 16. Programlar İçin Switch Konumları 000 Birinci Program 001 İkinci Program 010 Üçüncü Program 011 Dördüncü Program 100 Beşinci Program 101 Altıncı Program 110 Yedinci Program 111 Sekizinci Program 78 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı Şekil 6.1. Çamaşır Makinası Simülatörü Kontrol Devresi 6.2. Çamaşır Makinası Simülatörü Kontrol Programı '**************************************************************** '* Name : TOPLAMPROGRAM.BAS * '* Author : [DURMUŞ GÖKÇEBAY] * '* Notice : Copyright (c) 2002 * '* : All Rights Reserved * '* Date : 16.05.2002 * '* Version : 1.0 '* Notes * : BU PROGRAMDA ÇAMAŞIR MAKİNESİ SİMÜLATÖRÜNÜN KONTROLÜ YAPILMIŞTIR * '* * : '**************************************************************** 79 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı 'Burada Hangi Programın Başlayacağı Seçiliyor TRISA.4 = 1 TRISB = %11000111 TRISC = %11111011 TRISD = 0 program_secme: IF portc.7 = 0 AND portb.6 = 0 AND portb.7 = 0 then birinci_program IF portc.7 = 1 AND portb.6 = 0 AND portb.7 = 0 then ikinci_program IF portc.7 = 0 AND portb.6 = 1 AND portb.7 = 0 then ucuncu_program IF portc.7 = 1 AND portb.6 = 1 AND portb.7 = 0 then dorduncu_program IF portc.7 = 0 AND portb.6 = 0 AND portb.7 = 1 then besinci_program IF portc.7 = 1 AND portb.6 = 0 AND portb.7 = 1 then altinci_program IF portc.7 = 0 AND portb.6 = 1 AND portb.7 = 1 then yedinci_program IF portc.7 = 1 AND portb.6 = 1 AND portb.7 = 1 then sekizinci_program GOTO program_secme '************************************************* 'birinci program buradan başlıyor birinci_program LOW portb.3 tarama_: IF portb.0 = 0 THEN buzzer_otsun GOTO tarama_ buzzer_otsun: HIGH portb.3 'portb.3 buzzer kontrolü için PAUSE 1000 LOW portb.3 PAUSE 1000 GOTO tarama_ '************************************************** 'ikinci program ikinci_program: ii VAR byte sayma_: 80 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı portd = 0 FOR ii = 0 TO 9 STEP 1 portd = ii PAUSE 3000 NEXT ii GOTO sayma_ '************************************************** 'üçüncü program ucuncu_program: iii VAR byte LOW portb.3 LOW portc.2 basla: portd = 0 HIGH portb.4 IF ( portc.4 = 0 ) AND ( portc.5 = 0 ) AND ( portc.6 = 0 ) THEN ece1 IF ( portc.4 = 1 ) AND ( portc.5 = 0 ) AND ( portc.6 = 0 ) THEN ece2 IF ( portc.4 = 0 ) AND ( portc.5 = 1 ) AND ( portc.6 = 0 ) THEN ece3 IF portb.2 = 1 THEN buzzer IF ( portc.4 = 1 ) AND ( portc.5 = 1 ) AND ( portc.6 = 0 ) THEN ece4 IF ( portc.4 = 0 ) AND ( portc.5 = 0 ) AND ( portc.6 = 1 ) THEN ece5 IF ( portc.4 = 1 ) AND ( portc.5 = 0 ) AND ( portc.6 = 1 ) THEN ece6 IF portb.2 = 1 THEN buzzer GOTO basla ece1: IF portb.1 = 1 THEN ece1a IF portb.2 = 1 THEN buzzer LOW portb.4 HIGH portb.4 GOTO basla ece1a: LOW portb.4 81 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı portd = %0001 PAUSE 1000 GOTO basla ece2: IF ( portb.1 = 1 ) THEN ece2a IF portb.2= 1 THEN buzzer LOW portb.4 HIGH portb.4 GOTO basla ece2a: LOW portb.4 portd = %0010 PAUSE 1000 GOTO basla ece3: IF ( portb.1 = 1 ) THEN ece3a IF portb.2 = 1 THEN buzzer LOW portb.4 HIGH portb.4 GOTO basla ece3a: LOW portb.4 portd = %0011 PAUSE 1000 GOTO basla ece4: IF portb.1 = 1 THEN ece4a IF portb.2 = 1 THEN buzzer LOW portb.4 HIGH portb.4 GOTO basla ece4a: LOW portb.4 82 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı portd = %0100 PAUSE 1000 GOTO basla ece5: IF ( portb.1 = 1 ) THEN ece5a IF portb.2 = 1 THEN buzzer LOW portb.4 HIGH portb.4 GOTO basla ece5a: LOW portb.4 portd = %0101 PAUSE 1000 GOTO basla ece6: IF ( portb.1 = 1 ) THEN ece6a IF portb.2 = 1 THEN buzzer LOW portb.4 HIGH portb.4 GOTO basla ece6a: LOW portb.4 portd = %0110 PAUSE 1000 GOTO basla buzzer: LOW portb.4 FOR iii = 0 TO 5 STEP 1 HIGH portb.3 PAUSE 500 LOW portb.3 PAUSE 500 NEXT iii 83 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı HIGH portb.4 GOTO basla ' '****************************************************************** 'dördüncü program dorduncu_program: iiii VAR byte motor: HIGH portc.2 IF portb.0 = 0 THEN buzzer__ GOTO motor 'portc.2 motor kontrolü için buzzer__: LOW portc.2 FOR iiii = 0 TO 10 STEP 1 HIGH portb.3 'portb.3 buzzer kontrolü için PAUSE 500 LOW portb.3 PAUSE 500 NEXT iiii IF portb.0 = 0 THEN buzzer__ GOTO motor ' '************************************************************************ *** ' beşinci program besinci_program: motor_: portd = %0000 PWM portc.2,50,1000 LOW portc.2 PAUSE 3000 84 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı motor_1: portd = %0001 pwm portc.2,75,1000 LOW portc.2 PAUSE 6000 motor_2: portd = %0010 pwm portc.2,100,1000 LOW portc.2 PAUSE 3000 motor_3: portd = %0011 PWM portc.2,150,1000 LOW portc.2 PAUSE 3000 motor_4: portd = %0100 PWM portc.2,200,1000 LOW portc.2 PAUSE 3000 motor_5: portd = %0101 PWM portc.2,255,1000 LOW portc.2 PAUSE 3000 GOTO motor_ ' '******************************************************************** ' altıncı program altinci_program: sayma VAR byte cikis VAR byte 85 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı LOW portb.3 HPWM 1,127,1000 DONGU_: COUNT porta.4,1000,sayma ‘ Pindeki darbeleri 1 saniye boyunca sayar cikis = (sayma * 60)/4 portd = cikis PAUSE 100 GOTO DONGU_ ' '************************************************************************ *** '*************************************************** 'yedinci program yedinci_program: LOW portc.2 LOW portb.3 i VAR byte ON INTERRUPT GOTO kapi_acik intcon =%10010000 ENABLE INTERRUPT loop: HIGH portb.4 IF ((portc.4 = 1) AND (portc.5 = 0) AND (portc.6 = 0) AND (portb.1 = 1)) THEN color_wash IF portb.2 = 1 THEN tus_sil GOTO loop color_wash: LOW portb.4 'anahtarları sil fill: portd = %0001 PAUSE 1000 PAUSE 1000 PAUSE 1000 86 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı PAUSE 1000 PAUSE 1000 heat: portd = %0010 PAUSE 1000 PAUSE 1000 PAUSE 1000 PAUSE 1000 PAUSE 1000 wash: portd = %0011 FOR i = 0 TO 5 STEP 1 PWM portc.2,75,1000 NEXT i LOW portc.2 PAUSE 1000 PAUSE 1000 PAUSE 1000 PAUSE 1000 PAUSE 1000 empty: portd = %0100 PAUSE 1000 PAUSE 1000 PAUSE 1000 PAUSE 1000 PAUSE 1000 fill_1: portd = %0101 PAUSE 1000 PAUSE 1000 PAUSE 1000 PAUSE 1000 87 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı PAUSE 1000 rinse: portd = %0110 FOR i = 0 TO 5 STEP 1 HIGH portb.5 PWM portc.2,70,1000 LOW portc.2 LOW portb.5 PAUSE 1000 PWM portc.2,70,1000 LOW portc.2 LOW portb.5 PAUSE 1000 NEXT i PAUSE 1000 PAUSE 1000 PAUSE 1000 empty_1: portd = %0111 PAUSE 1000 PAUSE 1000 PAUSE 1000 PAUSE 1000 PAUSE 1000 spin: portd = %1000 FOR i = 0 TO 10 STEP 1 PWM portc.2,185,100 NEXT i LOW portc.2 PAUSE 1000 PAUSE 1000 PAUSE 1000 88 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı PAUSE 1000 PAUSE 1000 bitis_1: portd = %1001 HIGH portc.2 PAUSE 1000 PAUSE 1000 PAUSE 1000 PAUSE 1000 PAUSE 1000 LOW portc.2 PAUSE 1000 PAUSE 1000 PAUSE 1000 bitis: portd = %1010 PAUSE 1000 PAUSE 1000 PAUSE 1000 GOTO loop tus_sil: LOW portb.4 HIGH portb.3 PAUSE 1000 LOW portb.3 GOTO loop DISABLE INTERRUPT kapi_acik: intcon = 0 LOW portc.2 FOR i = 0 TO 10 STEP 1 HIGH portb.3 'portb.3 buzzer kontrolü için PAUSE 500 89 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı LOW portb.3 PAUSE 500 NEXT i IF portb.0 = 0 THEN kapi_acik intcon = %10010000 RESUME ENABLE INTERRUPT END ' '************************************************************************ *** 'sekizinci program sekizinci_program: LOW portc.3 LOW portb.3 pulse VAR byte sonuc VAR byte sonuc_1 VAR byte fark VAR byte sabit con 4 duty_cycle VAR byte dongu: IF pulse = 0 THEN gosub kalkis HPWM 1,duty_cycle,1000 GOSUB geri_besleme pid: fark = (sabit - pulse) 'hatayı tespit et IF (fark = sabit) THEN segment_1 'hata yoksa IF (fark < sabit) THEN artirma_ 'motor hızlı dönüyorsa IF (fark > sabit) THEN azaltma_ 'motor yavaş dönüyorsa GOTO dongu artirma_: duty_cycle = duty_cycle + 5 'increase speed by %5 DC 90 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı gosub segment IF duty_cycle > 255 THEN gosub tasma GOTO dongu azaltma_: duty_cycle = duty_cycle - 5 GOSUB segment IF duty_cycle < 5 THEN gosub durma GOTO dongu segment: sonuc = (fark * 10)/4 portd = sonuc PAUSE 1 RETURN segment_1:sonuc_1 = (fark * 10)/4 portd = sonuc_1 PAUSE 1 GOTO dongu geri_besleme: count porta.4,100,pulse RETURN tasma: duty_cycle = 255 RETURN durma: duty_cycle = 5 RETURN kalkis: duty_cycle = 125 RETURN 91 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı BÖLÜM VII SONUÇ ve ÖNERİLER Bu çalışmada PIC16F877 mikrodenetleyicisi ile, Niğde Üniversitesi, Mühendislik Mimarlık Fakültesi, Elektrik Elektronik Mühendisliği Bölümü, Mikroişlemciler Labaratuvarında bulunan bir çamaşır makinesi simülatörünün kontrolü gerçekleştirilmiştir. Kontrol işleminin yapılabilmesi için ilgili bölümlerde ayrıntılı olarak açıklandığı gibi program geliştirme yazılımı (Ör.:Microcode studio), programlama yazılımı ( Ör.:Propic ), programlama devresi ve uygulama devresi gibi bazı donanım ve yazılımın kullanılması gerekmektedir. Bu bitirme ödevinde assembly dili yerine yüksek seviyeli programlama dillerinden biri olan PIC BASIC PRO programlama dili kullanılmıştır. Böylece programların geliştirilmesi, daha hızlı ve rahat olmuştur. Fakat karmaşık olayların çözümünde bazı noktalarda pic basic programlama dili yetersiz kalmıştır. Fakat assembly komutlarından faydalanılarak bu sorunlar ortadan kaldırılmıştır. Sonuç olarak, bu çalışmada da görüldüğü gibi bir PIC mikrodenetleyicisinin endüstriyel sistem kontrolü amacıyla kullanılması sayesinde, sistem tasarımının kolaylığının yanı sıra, mikrodenetleyicili endüstriyel sistem uygulamaları, klasik kumanda sistemleri ve mikro işlemci tabanlı kontrol sistemlerine alternatif olabilecek bir nitelik taşımaktadır. 92 Durmuş GÖKÇEBAY, Bitirme Ödevi, Niğde Üniversitesi, Mühendislik-Mimarlık Fakültesi, Elektrik-Elektronik Mühendisliği Bölümü, 2001-2002 Eğitim- Öğretim Yılı KAYNAKLAR microEngineering Labs, Inc, 2001, PicBasic Pro Compiler Bytronic International Ltd , Bytronic Washing Mechine Simulator User Manual Version 2.0, England Altınbaşak O., 2000, ”Mikrodenetleyiciler ve Pic Programlama”,Altaş Yayınları , İstanbul Turgutlu H.F, 2002, ”Pic Mikrodenetleycisi Kullanarak Deneysel Bir Endüstriyel Sistemin Kontrol Edilmesi”,Niğde Üniversitesi, Niğde Microchip , 2001, Microchip Technical Library CD-ROM ( Third Edition), Microchip Technology Inc., Arizona İNTERNET SİTELERİ http://www.microchip.com http://www.antrak.org.tr http://www.basicmicro.com http://www.melabs.com 93
Benzer belgeler
yuruyen-isikli-yazi-panosu
Bu tez çalışmasında, Niğde Üniversitesi, Mühendislik Mimarlık Fakültesi, Elektrik
Elektronik Mühendisliği Bölümü, Mikroişlemciler Labaratuvarında bulunan bir çamaşır
makinesi simülatörünün kontrolü...
bir bahçe sulama sisteminin pic ile yapılması
BİR ÇAMAŞIR MAKİNASI SİMÜLATÖRÜNÜN BİR PIC
MİKRODENETLEYİCİSİ KULLANARAK KONTROLÜ