Notlar..

320volt / Mikrodenetleyici Projeleri/

Proton picbasic pro devre kod örnekleri mikromodul

Mikrodenetleyici Projeleri, blog arşivinde PROTON PICBASIC PRO DEVRE KOD ÖRNEKLERI MIKROMODUL konusu "microchip pic projeleri* mikromodul* pic uygulamaları* picbasic pro* proton* " ile etiketlendi

Mikromodül sitesinde bulunan ürünler ile birlikte sunulan çeşitli uygulamalar uygulama devreleri modüllere özel değil ister deneme kartınız ister breadboard üzerinde kurarak ya da isis simulasyon çizimlerini yaparak devreleri çalıştırabilirsiniz devre şemaları ve test resimleri bulunmaktadır. Tüm uygulamaların kaynak kodları şema ve açıklamaları var

Aşağıda örnek devrelerin açıklamaları verilmiştir. Hazırlayan,emeği geçen kişilere teşekkürler

Hız Kontrollü Step Motor Sürücüsü : Devremiz çalışmaya başladığında öncelikle anakarta bağlı ledleri birer aralıklarla yakarak portlara doğru erişildiğinden emin olmamızı sağlıyor. Buton-switch modülümüzün ilk butonuna basıldığında çalışmaya başlayan sürücümüzün ikinci butonuna basıldığında hızı azaltıyor. Hızı arttırmak için ise üçüncü butona basarak hızı kontrol ediyoruz.

PWM Çift Yönlü Dc Motor Sürücüsü : PIC16F628 mikredenetleyicisi ile gerçekleştirilen projede 16F628’in PWM çıkış özelliğinden yararlanıldı. Bunun için PIC, CCP1CON registeri ile PWM moduna getirildi.T2CON,PR2, CCPR1L registerleri ile PWM’nin frekansı ve duty cycle oranı ayarlandı. Duty artışı 1-100 arasında değiştirilebilir, frekans ise kademeli ( 500Hz, 2 Khz, 5 Khz, 10Khz, 20 Khz) olarak tasarlanmıştır.

pwm-iki-yonlu-dc-motor-surucusu

PIC 16F628’i PWM modunda çalıştırmak için izlenmesi gereken adımlar:

CCPCON registerinin 2. ve 3. bitleri set(1) edilir.Böylece mikrodenetleyici PWM
moduna girmiş olur.

TMR2 aktif hale getirilir.Bunun için T2CON registerinin 2.biti set edilir.

TMR2 sayacının önbölücü oranı TMR2 registerinin 1. ve 0. bitleri ile ayarlanır.

PR2 registerine 0-255 arasında bir değer yüklenir.TMR2=PR2 olduğu anda TMR2 sıfırlanarak saymaya devam eder.

CCPR1L registerine duty cycle oranını belirlemek için 0-255 arasında bir değer girilir.

PWM periyodu(milisaniye)=( PR2 +1) *4 * Tosc *TMR2 önbölücü değeri

PWM duty cycle(mili saniye) =(CCPR1L:CCP1CON<5:4>) Tosc * TMR2 önbölücü değeri

CCPR1L: CCP1CON<5:4>-> 10 bitlik bir değerdir.üst 8 bit CCPR1L alttaki 2 bit ise

CCP1CON<5:4>

Butonların fonksiyonları:
1. buton : PWM Duty yüzdesini artırır
2. buton : PWM Duty yüzdesini azaltır
3. buton : PWM Frekansı değiştirsin
4. buton : Motor dönme yönünü değiştirsin

LCD Ekran :
1. satır : Frequency = xxx KHz
2. satır : Duty %xx= % x, YON >>

Motor Hareket Yönünün Değiştirilmesi: Motor ters yöne çevrilirken, önce motor durdurulur, 100 ms gecikmeden sonra röle kontaklarının yönü değiştirilir ve bu şekilde arklar önlenmiş olur. Motor yönünü ters çevirmek için gerekli röle bağlantısı devre şemasında verilmiştir

PC AT Klavyesini PIC Mikrodenetleyicisi ile Kullanmak : Bu projede PC klavyesini PIC mikrodenetleyicisi ile nasıl kullanabileceğinizi bulacaksınız. Klavyede herhangi bir tuşa basıldığında o tuşun belirttiği karakterin ASCII karşılığı LCD ekranda gösterilmiştir. Projenin devamında bu ASCII kodlar IF01 kartı ile RS232 ye çevrilebilir ve seri porttan iletilebilir. İşlemci olarak PIC16F84A kullanılmış ; Proton PicBasicPro derleyicisi ile programlanmıştır.

Bu projede F klavye kullanılmıştır ancak sistem anlaşıldığında program kolay bir şekilde Q klavye için düzenlenebilir. Klavyeden bulunan her tuşun SCAN CODE denilen bir kodlaması vardır. Bu kodlamalar HEX olarak aşağıdaki şekilde verilmiştir.

pic-at-klavye-hex

Klavyenin tuşlarından herhangi birine basılınca bu SCAN CODE işlemcimize seri olarak
iletilir. Gönderilen ilk bit başlangıç bitidir ki her zaman 0 değerindedir. İkinci bit kodun 0.
bitidir. Üçüncü bit ise kodumuzun 1. bitidir. Bu biçimde 8 bit gönderildikten sonra bir parity
bit ve son olarak bitiş biti ki her zaman 1 değerini alır; yollanır. Klavyemizin Clock ve Data
pinleri 10K lık pull up dirençleriyle 5 V seviyesinde tutulur.

pic-ile-klavye-clock-data

İşlemci klavyeden aldığı kodu ASCII karakterlere çevirir. Klavyenin konnektör pinleri
aşağıdaki şekildeki gibidir.

pic-ile-klavye-konnektor-pinleri

Bir Master ve Çift Terminalden Oluşan PIC ler Arası Haberleşme : Proje içinde terminaller arası haberleşme mantığı basit bir protokol ile örneklenmeye çalışılmıştır. Sistemde bir master iki terminal bulunmaktadır. Master tarafındaki kontrol kartına bağlı olan butonlar vardır. Birinci buton ile PortB nin alt dört bitinde bulunan ledler üzerinde binary olarak 0-10 arası saydırma yapılır. Masterdan terminallere giden data hattı ortaktır.

İkinci butona basıldığında 0-10 arası seçilen sayı terminal1 e gönderilir , aynı şekilde üçüncü butona basıldığında sayı terminal2 ye gönderilir. Terminallere gönderilen sayılar yine ledler ile gösterilir. Gönderilen bilginin terminal1 ve terminal2 arasında kime ait olduğu id ler ile belirlenir. Gönderme ve alma sırasındaki hata risklerini azaltmak için bilgi paketi checksum ile sonlandırılmıştır.

Yani gönderilen verilerin toplamı en sonda checksum olarak gönderilir, alıcı tarafı ise gelen verilere göre kendi hesapladığı checksum ile gelen checksum bilgisini karşılaştırarak doğrulama yapar.

Melodi Çalar : Bu projede notaları kullanarak melodi programı yazmayı öğreneceğiz. Örnek uygulamamız eski cep telefonlarındaki melodi oluşturmaya benzemektedir. Harflerle belirtilen notalar, butonlar ve LCD ekran yardımıyla mikrodenetleyiciye yüklenir. Ses çıkışı dijital olarak normal bir hoparlöre verilmektedir. Butonların görevleri şu şekildedir ; 1.buton LCD ekrana notaların girilmesini sağlar ve butona her basıldığında nota değişir. 2.buton ile 1. butonla ayarlanan doğru nota seçilir ve kursor sola kayar sonrada 2.nota 1.butonla ayarlanıp tekrar seçilir. Böylece melodinin tüm notaları girilmiş olur. 3. butonla ise ekran silinir ve kursor başa döner. 4. butonda ekranda notaları girilmiş olan melodiyi çalar.

Led Flaşör : Bu projenin amacı PIC mikrodenetleyicilerindeki timer mantığının bir flaşör ile kolayca anlaşılmasını sağlamaktır. Bu projede Proton PicBasicPro derleyicisi kullanılılarak hazırlanmıştır. 4 buton ile 4 farklı animasyon uygulaması ile 8 led sürülmüştür.

Programın girişinde buton bağlantıları ve özelliği hakkında tanımlamalar yapılmıştır.
OPTION_REG’e atanan prescaler değer ile TIMR0 bölme oranı 1:64 seçilmiştir. Yani 4Mhz de bir komutun işleme süresi 1 mikro saniye iken Timer0 ın her artış süresi 64 us dir. Timer0 da taşma olup programın kesme altprogramına dallanması için gerekli olan süre ise 256×64 = 16384 mikro saniyedir. 30 defa taşma olduğunda ise geçen süre yarım saniyedir (16384 x 30= 491520 us =0.5 saniye).

LCD Dijital Saat : Bu projenin amacı PIC mikrodenetleyicilerindeki timer mantığının bir saat programı ile kolayca anlaşılmasını sağlamaktır. Aynı zamanda bu projede Proton PicBasicPro derleyicisi ile LCD kullanımı hakkında bilgiler bulabileceksiniz.

2×16 karakter LCD 4 bit data ile sürülmüştür. Programın girişinde LCD nin pin bağlantıları ve
özelliği hakkında tanımlamalar yapılmıştır. OPTION_REG’e atanan prescaler değer ile TIMR0 bölme oranı 1:64 seçilmiştir. Yani 4Mhz de bir komutun işleme süresi 1 mikro saniye
iken Timer0 ın her artış süresi 64 us dir. Timer0 da taşma olup programın kesme
altprogramına dallanması için gerekli olan süre ise 256×64 = 16384 mikro saniyedir.

61 defa taşma olduğunda ise geçen süre 1 saniyedir (16384 x 61= 999424 us =1 saniye).

LCD Ekranlı Lamba Kontrol : Röle kartı ile 4 ayrı lambanın ayrı ayrı açılıp kapatılması. Buton kartındaki her butona hem açma hem kapatma görevinin yüklenmesi Proton Picbasicpro ile LCD kullanımı LCD 4 bit data ile sürülmüştür, En ve RS uçları işlemciye bağlanmıştır. LCD ye yalnızca yazma yapılacağı için R/W pini grounda bağlanmıştır. Devreye bağlı olan her buton 4 röleyi ayrı ayrı açıp kapatmak için kullanılır.

Kronometre : Timer0 zamanlayıcısını kullanan standart bir kronometre yapacağız. 2 butondan biri kronometreyi durdurmak için değeri ise sıfırlama için atanmıştır.. OPTION_REG’e atanan prescaler değer ile TIMR0 bölme oranı 1:64 seçilmiştir. Yani 4Mhz de bir komutun işleme süresi 1 mikro saniye iken Timer0 ın her artış süresi 64 us dir.

Timer0 da taşma olup programın kesme altprogramına dallanması için gerekli olan süre ise 256×64 = 16384 mikro saniyedir. 6 defa taşma olduğunda ise geçen süre 100ms saniyedir (16384 x 6= 98384 us =100 msaniye).araya 100 ms’ye tamamlayacak gecikmeler koyulmuştur.

Eğik Düzlemin Açısı Değiştikçe Hız Değişiminin Gözlenmesi :Devremiz çalışmaya başladığında motoru çalıştırarak yükü yukarı yönde çekiyor. Yük switchi kapadığında motor durdurularak mesafeyi kaç saniyede aldığını ölçmekte ve mesafeyi geçen süreye bölerek cm/sn cinsinden hızı hesaplamakta.

24C256 EEPROM unda Veritabanı Oluşturmak : 5 ayrı turnikesi olan bir geçiş kontrol sisteminde geçişlerin her kapı için ayrı ayrı sayılması istenmektedir. Ve bu sistem geçişlerin günlük, aylık ve yıllık sayısının raporlamasını yapabilecektir. Bu amaçla sistemde kullanılacak kalıcı hafıza 24C256 Eeprom entegresidir.

Projemizde 24c256 eeprom hafızasında geçişlerin tutulabilmesi için bir hafıza haritası yani
veritabanı oluşturacağız. Toplam bir yılı kapsayacak olan bu hafıza haritasında 5 ayrı kapı
için 1 er yıllık bölümler oluşturulacaktır. Hafızada her gün için 16 bitlik boş alan geçiş sayılarını tutabilmek için ayrılmıştır. Veritabanı şu şekildedir;

proton-basic-24c256-eeprom

Devrenin çalışması şu şekildedir; 3 buton ile kontrol sağlanmaktadır.B2 butonu ile EEPROM’un içine tarihler,kapı numaraları ve kapı geçişleri için ayrılmış boş alanlar yüklenmektedir.Bu yükleme biraz uzun sürdüğü için LCD ekrandan yükleme durumunu % olarak görebiliriz.

Yüklemenin tamamlanmasıyla beraber B3 ve B4 butonları yardımı ile EEPROM’un adreslerini arttırıp azaltarak tarih,kapı no,giriş sayılarını görebiliriz.

Enkoder ile Motor Devir Hesabı : Bu projede bir enkoder ve bir PIC mikrodenetleyicisi kullanarak DC motorun hızını ölçeceğiz. Encoderden gelen her sinyal ile PIC mikro denetleyicisinde harici kesme (interrupt) oluşturur ve program kesme alt programına dallanır. Burada SAYAC değişkeni bir arttırılır.

Amaç bir dakikada enkoderin yani motorun kaç tur attığını öğrenebilmektir. Bu amaçla timer0 zamanlayıcısı kullanılır; OPTION_REG’e atanan prescaler değer ile TIMR0 bölme oranı 1:64 seçilmiştir. Yani 4Mhz de bir komutun işleme süresi 1 mikro saniye iken Timer0 ın her artış süresi 64 us dir. Timer0 da taşma olup programın kesme altprogramına dallanması için gerekli olan süre ise 256×64 = 16384 mikro saniyedir. 60 defa taşma olduğunda ise geçen süre 1 saniyedir (16384 x 60= 983040 us =1 saniye). Her timer kesmesi oluştuğunda motor devir sayısı hesaplanır ve LCD ekrana görüntülenir.

Ds18b20 Sıcaklık Sensörü ile Termometre : Dijital sıcaklık sensörü DS18B20 sensörü ile bir termometre tasarlıyoruz. DS18B20 entegresinin DQ portundan seri olarak iletişim kurarak 16 bitlik sıcaklık verisini PIC16F84’e okutturuyoruz. Sensör ile PIC arasındaki iletişimde Dallas Semiconductor firmasının “One Wire” iletişim protokolünü kullanmamız gerekiyor.

Sensörden 0-127 C arasındaki sıcaklıkları 0.0625 0 C hassasiyet ile okuyabiliyoruz. Okuduğumuz sıcaklık değerini LCD ekranda gösteriyoruz. Sensörün görünümü ve PIC ile bağlantısı aşağıdaki gibidir;

ds18b20-pic16f-termometre-proton

ADC0831 ile Voltmetre : Bu voltmetre projesi ile amaçlanan analog bilginin ADC0831 converter ı ile dijital bilgiye çevrilmesini örneklemektir. ADC0831 8 bitlik seri A/D çeviricidir. Gerilim bölücü dirençler ile 0-25 volt arası ölçümlerin yapılabilmesi sağlanmıştır. ADC girişindeki 0 – 5 Volt arası analog bilgi 8 bitlik dijital veri haline dönüştürülür.

PIC işlemcisinde işlenen bu veri seven segment display kartı ile gösterir. Ekran güncellemesi ise 1 saniye aralıklarla timer0 kesmesi kullanılarak yapılmıştır. OPTION_REG’e atanan prescaler değer ile TIMR0 bölme oranı 1:64 seçilmiştir. Yani 4Mhz de bir komutun işleme süresi 1 mikro saniye iken Timer0 ın her artış süresi 64 us dir. Timer0 da taşma olup programın kesme altprogramına dallanması için gerekli olan süre ise 256×64 = 16384 mikro saniyedir. 60 defa taşma olduğunda ise geçen süre 1 saniyedir (16384 x 60= 983040 us =1 saniye). Her kesme oluştuğunda ADC0831 nin analog bilgiyi dijitale dönüştürmesi için komut verilir.

Kaynak: http://mikromodul.com

alternatif link mikromodul-uygulama-proton-picbasicpro.rar alternatif link2 alternatif link3

  • burak

    Hocam bu devrelerin kodlarını hex. çevirmek için hangi programı kullanmamız gerekiyor

  • ugur

    microcode studio

  • nuh

    pice melodi kaydetmek istiyorum hazır melodiler var ama hababam sınıfı gibi başka melodiler de eklemek istiyorum… notaları basic de hangi kodlarla yazabiliriz hocam