Mündəricat:

PIC Mikrokontrolör ilə PWM Dalğası yaradın: 6 addım
PIC Mikrokontrolör ilə PWM Dalğası yaradın: 6 addım

Video: PIC Mikrokontrolör ilə PWM Dalğası yaradın: 6 addım

Video: PIC Mikrokontrolör ilə PWM Dalğası yaradın: 6 addım
Video: Pic Mikrokontrolör _ Servo Motor ile Uzaktan Kumandalı Balık & Bucak Eml EETA Proje Uygulamaları 2024, Noyabr
Anonim
PIC Mikrokontrolör ilə PWM Dalğası yaradın
PIC Mikrokontrolör ilə PWM Dalğası yaradın
PIC Mikrokontrolör ilə PWM Dalğası yaradın
PIC Mikrokontrolör ilə PWM Dalğası yaradın
PIC Mikrokontrolör ilə PWM Dalğası yaradın
PIC Mikrokontrolör ilə PWM Dalğası yaradın
PIC Mikrokontroller ilə PWM Dalğası yaradın
PIC Mikrokontroller ilə PWM Dalğası yaradın

PWM NƏDİR?

Nəbz genişliyinin modulyasiyası üçün PWM STANDS, nəbz genişliyinin müxtəlif olduğu bir texnikadır.

Bu konsepsiyanı aydın şəkildə başa düşmək üçün bir saat nəbzini və ya hər hansı bir kvadrat dalğa siqnalını nəzərə alsaq, Ton və Toff dövrünün eyni olduğunu ifadə edən 50% iş dövrü var, Siqnalın yüksək olduğu və siqnalın aşağı olduğu müddətə ümumi deyilir. vaxt dövrü.

Yuxarıda göstərilən görüntü üçün bu dalğanın 50% bir iş dövrü var

Vəzifə dövrü = (AÇMA vaxtı / Toplam Zaman)*100

ON vaxtı - siqnalın yüksək olduğu vaxt

OFF vaxtı - siqnalı aşağı olan vaxt düşməni Toplam vaxt - Nəbzin ümumi müddəti (həm ON, həm də OFF vaxtı)

Addım 1: Mikrokontrolörün seçilməsi

Mikrokontrolör seçimi
Mikrokontrolör seçimi

Layihə üçün uyğun mikrokontrolörün seçilməsi, PWM siqnallarının PWM kanalları (CCP registrləri) olan mikrokontrolörlərdə yaradıla biləcəyi layihənin əsas hissəsidir. Bu layihə üçün pic16f877 ilə qalmağı planlaşdırıram. məlumat cədvəlini aşağıda yükləyə bilərsiniz

PIC16F877a məlumat cədvəli bura vurun

CCP modulu, PWM siqnalının istehsalından məsuldur. CCP1 və CCP2, PORTC ilə multipleksləşdirilmişdir. PORTC, 8 bitlik geniş iki istiqamətli bir portdur. Müvafiq məlumat istiqaməti qeydiyyatı TRISC -dir. TRISC bitini (= 1) təyin etmək, müvafiq PORTC pinini giriş olaraq almağa məcbur edəcək. Bir TRISC bitinin silinməsi (= 0) müvafiq PORTC pinini çıxışa çevirəcəkdir.

TRISC = 0; // Bu bitin silinməsi PORTC -ni çıxış kimi edəcək

Addım 2: CCP MODÜLÜNÜ YAPILANDIRIN

CCP MODULUNU YAPILAYIN
CCP MODULUNU YAPILAYIN
CCP MODULUNU YAPILAYIN
CCP MODULUNU YAPILAYIN

CCP - CAPTURE/COMPARE/PWM MODULLARI

Hər Capture/Compare/PWM (CCP) modulu, aşağıdakı kimi işləyə bilən 16 bitlik bir reyestrdən ibarətdir:

• 16-bit Capture qeydiyyatı

• 16 bit Müqayisə Qeydiyyatı

• PWM Master/Slave Duty Cycle qeydiyyatı

CCP1CON qeydiyyatını PWM rejiminə konfiqurasiya edin

Qeyd Təsviri

CCPxCON Bu qeyd CCP modulunu Capture/Compare/PWM əməliyyatları üçün konfiqurasiya etmək üçün istifadə olunur.

CCPRxL Bu qeyd PWM-in 8-Msb bitinə malikdir, aşağı 2-bit CCPxCON reyestrinin bir hissəsi olacaq.

PWM çıxışı yaratmaq üçün CCPR1L və PR2 ilə müqayisə ediləcək TMR2 Pulsuz çalışan sayğac.

İndi CCP1CON qeydini konfiqurasiya etmək üçün bitləri təmsil etmək üçün ikili istifadə edəcəyəm.

yuxarıdakı şəklə baxın.

CCP1CON = 0b00001111;

Onaltılıq format da edə bilərsiniz

CCP1CON = 0x0F; // PWM rejimi üçün CCP1CON qeydiyyatını konfiqurasiya etmək

Addım 3: Timer2 Modulunun Konfiqurasiyası (TMR2 Qeydiyyatı)

Timer2 Modulunun Konfiqurasiyası (TMR2 Qeydiyyatı)
Timer2 Modulunun Konfiqurasiyası (TMR2 Qeydiyyatı)

Timer2, bir prescaler və bir postscaler ilə 8 bitlik bir taymerdir. CCP modullarının modullarının PWM rejimi üçün PWM vaxt bazası kimi istifadə edilə bilər. TMR2 reyestri oxunaqlıdır və yazıla bilər və hər hansı bir cihazda sıfırlanır.

T2CON reyestri göstərilir

Öncədən və sonrakı miqyas, yaradılan PWM dalğasının çıxış tezliyini tənzimləyəcək.

Tezlik = saat tezliyi/(4*prescaler*(PR2-TMR2)*Postscaler*sayı)

Harada Tout = 1/tezlik

T2CON = 0b00000100;

Bu, 1 KHz -də və ya 4 MHz -də 100 KHz -də 2.5 KHz kristal istehsal edəcək (praktiki olaraq bu PWM tezliyi ilə bağlı daha çox məlumat üçün xüsusi məlumat cədvəlinə baxın)

hex təsviri

T2CON = 0x04; // T2CON -u Prescaler və postscale konfiqurasiyası olmadan aktiv edin

Addım 4: PR2 -ni konfiqurasiya edin (Timer2 Dövr Qeydiyyatı)

Timer2 modulunda 8 bitlik dövr qeydləri var, PR2. Timer2, 00h -dən PR2 ilə uyğunlaşana qədər artır və sonra növbəti artım dövründə 00h -ə sıfırlanır. PR2 oxunaqlı və yazıla bilən bir reyestrdir. Sıfırlandıqdan sonra PR2 reyestri FFh olaraq işə salınır.

PR2 üçün uyğun bir aralığın təyin edilməsi, istifadə edilən PWM dalğasının iş dövrünü dəyişdirməyə imkan verəcəkdir

PR2 = 100; // Vəzifə dövrünü 0-100 arasında dəyişmək üçün Dövr vaxtını 100 olaraq təyin edin

Sadəlik üçün CCPR1L = 80 edərək PR2 = 100 istifadə edirəm; 80% vəzifə dövrü əldə edilə bilər.

Addım 5: CCPR1l Modulunu konfiqurasiya edin

PR2 = 100 CCPR1l istənilən vəzifə dövrünü əldə etmək üçün 0-100 arasında hər hansı bir yerdə konfiqurasiya edilə bilər.

Addım 6: Eskizinizi MPLAB X IDE -yə yazın, Kod Aşağıda Verilmişdir

Eskizinizi MPLAB X IDE -yə yazın, Kod Aşağıda Verilmişdir
Eskizinizi MPLAB X IDE -yə yazın, Kod Aşağıda Verilmişdir

#daxil edin

void delay (int a) // gecikmə yaratmaq funksiyası {

üçün (int i = 0; i <a; i ++)

{

üçün (int j = 0; j <144; j ++);

}

}

void main ()

{TRISC = 0; // Bu bitin silinməsi PORTC -ni çıxış kimi edəcək.

CCP1CON = 0x0F; // PWM rejimi üçün CCP1CON qeydiyyatını konfiqurasiya etmək

T2CON = 0x04; // T2CON -u Prescaler və postscale konfiqurasiyası olmadan aktiv edin.

PR2 = 100; // Vəzifə dövrünü 0-100 arasında dəyişmək üçün Dövr vaxtını 100 olaraq təyin edin

isə (1) {

CCPR1L = 75; // 75% iş dövrü gecikməsi yaradıldı (1);

}

}

Yaradılan PWM dalğasının tezliyi üçün kodda bir az dəyişiklik etdim

Bu kod proteusda simulyasiya edilmiş və PWM dalğası aşağıda göstərilmişdir Bunu şəkil inkişaf etdirmə lövhələrinizə yükləmək üçün uyğun konfiqurasiya bitləri ilə #include istifadə edin.

Çox sağ ol

Tövsiyə: