Site içi Arama

Ara

Pic Basic ve PWM (darbe genişlik modülasyonu)

Aykut Yılmaz - 05.04.2007

PWM, Pulse width modulation. PWM, darbe genişlik modülasyonu. PWM üretilecek olan darbelerin genişliklerini kontrol eder. PWM çıkışta analog sinyalin oluşmasına neden olur.

PWM ile bir çok uygulama yapılır. Hız kontrol ünitesi, lamba ve led’in parlaklığını arttırıp, azaltma yapılır. Birçok entegrede PWM işlemi yapılabilir Örneğin 555 entegresinin 3 nolu çıkışından kare dalga üretilir. Ayrıca Mikroişlemcilerlede PWM uygulamaları yapılır ancak işlemcinin PWM’i destekleyen pini olması gerekir. 16f84 işlemcisinde PWM pini yoktur. 16F877, 16F628 işlemcisinde pwm pini mevcuttur.

16F877 işlemcisinin genel görünümü:


16F628 işlemcisinin genel görünümü:


16F628 işlemcisinin 9 nolu pini RB3/CCP1 pwm çıkışıdır. 16f877 16. ve 17. pini pwm çıkışıdır 17. pini RC2/CCP1 10 bit çözünürlükte pwm çıkışı olarak kullanılır.

Burada kullanacağımız programlama dili PICBASIC PRO. Şimdi pwm ve hpwm komtunu açıklayalım ve nasıl kullanıldığını görelim.

PWM
AÇIKLAMA: PWM PİN,İŞ_SÜRESİ,SAYKIL_ADEDİ

Belirlenen bir pin üzerinden genişliği değişebilen pwm göndermek için kullanılır.

PWM saykılın İŞ_SÜRESİ 0 (%0), 50(%127),255(%100) saykıl adedince belirlenen işlem takrar edilir

PWM de porttan gelen dijital veri pwm komutuyla ve RC devresiyle analog çıkışa çevrilir.

PIC16F877 için PORTC.1 ve PORTC.2 PWM çıkışıdır.

PIC16F628 için PORTB.3 PWM çıkışıdır.

İS_SÜRESİ %50 DECİMAL 127

İS_SÜRESİ %25 DECİMAL 64

İS_SÜRESİ %75 DECİMAL 191

Yani iş süresi ile oynayarak sinyal şekli değişebilir.

PWM komutu ile üretilen kare dalganın filtrelenmesi için gerekli devre:



Yukarıdaki devrenin amacı kare dalganın daha temiz ve pürüzsüz çıkması içindir. Bu devre kullanılmadığında sinyal düzgün çıkmayabilir.

PICBASIC PRO kodu:
PWM PORTB.3,127,100 ‘%50 iş süresi olan 100 pwm palsini PORTB.3’den gönder.

HPWM
AÇIKLAMA: KANAL(PİN),DUTYCYLE(İŞ_SÜRESİ),FREKANS(SAYKIL_ADEDİ)

Dutycyle:çıkış sinyalinin gerilimidir. 8 bitlik bir değer olup 0*255 arasındadır. Buda gerilim olarak 0*5V arasındadır.

16F877’de PORTC.1 ve PORTC.2 CCP1, CCP2 uçlarında HPWM komutu kullanılarak bir ledin parlaklığı ve bir motorun sağa ve sola dönüşü yapılabilir.

PIC16F877 için PORTC.1 VE PORTC.2 PWM çıkışıdır.
PIC16F628 için PORTB.3 PWM çıkışıdır.

Yapacağınız programın başına define tanımlamalarını yapmanız gerekmektedir:

DEFINE CCP1_REG PORTC       	 'HPWM PORTC.1
DEFINE CCP2_REG PORTC       	 'HPWM PORTC.2
DEFINE CCP1_BIT 2           	 'CCP1 PİNİ PORTC.2
DEFINE CCP2_BIT 1           	 'CCP1 PİNİ PORTC.1

ÖRNEĞİN: HPWM 1,127,1000
%50 İŞ SÜRESİ OLAN VE 1000 PWM SİNYALİNİ PORTC.2’DEN GÖNDER

%25 İŞ SÜRESİ YAKLAŞIK 1.25V DECİMAL 64
%50 İŞ SÜRESİ YAKLAŞIK 2.5V DECİMAL 127
%75 İŞ SÜRESİ YAKLAŞIK 3.75V DECİMAL 192
%100 İŞ SÜRESİ YAKLAŞIK 5V DECİMAL 255

16f628 işlemcisinde tek kanal pwm olduğundan HPWM komtu şu şekilde yazılır:
HPWM 0,255,2000
(0 olan yerde PORTB.3 vardır PORTB.3’den %100 iş süresi olan 2kHz’lik frekans gönder.)

HPWM komutuna basit bir örnek 16f628 için:

Ledleri yavaş yavaş parlak hale getirmek için döngü kullan;

Duty var byte				
Cmcon=7			‘komparatör pinlerinin hepsi giriş veya çıkış
FOR DUTY = 0 to 255  	‘duty değerini 0…255’e kadar arttır
HPWM 0,DUTY,5000 	
PAUSE 100 
NEXT 

Bu komut ledleri 100 ms'lik aralıklarla birer birer artış sağlayarak voltajı artıracaktır. Aynı şekilde söndürmek için;

FOR DUTY=255 to 0 step -1 
HPWM 0,DUTY,5000 
PAUSE 100 
NEXT 

Yukarda yazan step -1 komutu 255’den her seferinde bir çıkart demek istiyor

HERKESE KOLAY GELSİN, BOLBOL YAZILIMLI GÜNLER DİLEĞİYLE.

E-posta: aykut_yilmaz54@hotmail.com
Sayfa Etiketleri:16F877 (6) Pic Basic (5) Pwm (3)
İçerik Yan Blok
Konular
Tasarım: Teknimer Teknoloji
Yukarı