Mundarija:

PIC mikro to'lqinli PWM to'lqinini yaratish: 6 qadam
PIC mikro to'lqinli PWM to'lqinini yaratish: 6 qadam

Video: PIC mikro to'lqinli PWM to'lqinini yaratish: 6 qadam

Video: PIC mikro to'lqinli PWM to'lqinini yaratish: 6 qadam
Video: PIC_Lecture 12 : PWM signal generation using CCP block of PIC | DC motor speed control | 2024, Noyabr
Anonim
PIC mikro to'lqinli PWM to'lqinini yaratish
PIC mikro to'lqinli PWM to'lqinini yaratish
PIC mikro to'lqinli PWM to'lqinini yaratish
PIC mikro to'lqinli PWM to'lqinini yaratish
PIC mikro to'lqinli PWM to'lqinini yaratish
PIC mikro to'lqinli PWM to'lqinini yaratish
PIC mikro to'lqinli PWM to'lqinini yaratish
PIC mikro to'lqinli PWM to'lqinini yaratish

PWM nima?

Puls kengligi modulyatsiyasi uchun PWM STANDS - bu pulsning kengligi xilma -xil bo'lgan usul.

Bu kontseptsiyani tushunish uchun soat impulsini yoki har qanday kvadrat to'lqin signalini 50% ish tsikliga ega bo'lishini aniq ko'rib chiqish kerak, ya'ni Ton va Toff davri bir xil, signalning umumiy davomiyligi past bo'lgan vaqtni umumiy deb atash mumkin. vaqt davri.

Yuqorida ko'rsatilgan tasvir uchun to'lqin 50% ish aylanishiga ega.

Vazifa aylanishi = (ON vaqti / Umumiy vaqt)*100

ON vaqti - signal baland bo'lgan vaqt

O'chirish vaqti - signal past bo'lgan vaqt raqibi Umumiy vaqt - Pulsning umumiy davri (ham ON, ham O'chirish vaqti)

1 -qadam: Mikrokontrollerni tanlash

Mikrokontrollerni tanlash
Mikrokontrollerni tanlash

Loyihaga mos keladigan mikrokontrollerni tanlash - bu PWM signallarini PWM kanallari (CCP registrlari) bo'lgan mikrokontrolderlarda yaratilishi mumkin. quyida keltirilgan ma'lumotlar sahifasi havolasini yuklab olishingiz mumkin

PIC16F877a ma'lumotlar varaqasi bu erni bosing

CCP moduli PWM signalini ishlab chiqarish uchun javobgardir. CCP1 va CCP2 PORTC bilan multiplekslanadi. PORTC-8 bitli keng ikki tomonlama port. Tegishli ma'lumotlar yo'nalishi registri TRISC hisoblanadi. TRISC bitini (= 1) sozlash mos keladigan PORTC pinini kiritishga majbur qiladi. TRISC bitini (= 0) tozalash mos keladigan PORTC pinini chiqishga olib keladi.

TRISC = 0; // Bu bitni tozalash PORTC -ni chiqish qilib qo'yadi

2 -qadam: CCP modulini sozlang

CCP modulini sozlang
CCP modulini sozlang
CCP modulini sozlang
CCP modulini sozlang

CCP - Rasmga tushirish/solishtirish/PWM modullari

Har bir Capture/Compare/PWM (CCP) moduli quyidagicha ishlashi mumkin bo'lgan 16-bitli registrni o'z ichiga oladi:

• 16-bitli Capture reestri

• 16-bitli solishtirish reestri

• PWM Master/Slave Duty Cycle reestri

CCP1CON registrini PWM rejimiga sozlang

Ro'yxatdan o'tish tavsifi

CCPxCON Bu ro'yxatga olish/taqqoslash/PWM operatsiyalari uchun CCP modulini sozlash uchun ishlatiladi.

CCPRxL Ushbu registrda PWM ning 8-Msb bitlari saqlanadi, pastki 2-bit CCPxCON registrining bir qismi bo'ladi.

TMR2 PWM ishlab chiqarish uchun CCPR1L va PR2 bilan taqqoslanadigan bepul ishlaydigan hisoblagich.

Endi men CCP1CON registrini sozlash uchun bitlarni ko'rsatish uchun ikkilikdan foydalanaman.

yuqoridagi rasmga qarang.

CCP1CON = 0b00001111;

Siz shuningdek hex formatida qilishingiz mumkin

CCP1CON = 0x0F; // PWM rejimi uchun CCP1CON registrini sozlash

3 -qadam: Timer2 modulini sozlash (TMR2 Ro'yxatdan o'tish)

Timer2 modulini sozlash (TMR2 registri)
Timer2 modulini sozlash (TMR2 registri)

Timer2-bu 8-bitli taymer, oldindan hisoblagich va kalkulyatorga ega. U CCP modullarining PWM rejimi uchun PWM vaqt bazasi sifatida ishlatilishi mumkin. TMR2 registri o'qilishi va yozilishi mumkin va har qanday qurilmada o'chiriladi Reset.

T2CON registri ko'rsatiladi

Oldindan o'lchash va keyingi o'lchov ishlab chiqarilgan PWM to'lqinining chiqish chastotasini o'zgartiradi.

Chastotasi = soat chastotasi/(4*oldindan hisoblagich*(PR2-TMR2)*Postscaler*soni)

Qaerda Tout = 1/chastota

T2CON = 0b00000100;

Bu 2,5 MGts @ 1Mhz yoki 100KHz @ 4MHz kristalini ishlab chiqaradi (amalda bu PWM chastotasi uchun cheklovlar mavjud, batafsil ma'lumot uchun maxsus ma'lumotlar jadvaliga qarang)

olti burchakli tasvir

T2CON = 0x04; // T2CON -ni Prescaler va o'lchovdan keyingi konfiguratsiyasiz yoqish

4 -qadam: PR2 -ni sozlash (Timer2 davriy registri)

Timer2 moduli 8-bitli davriy registrga ega, PR2. Taymer2 00h dan PR2 ga mos kelguncha o'sadi va keyingi o'sish tsiklida 00h ga tiklanadi. PR2 - bu o'qiladigan va yoziladigan registr. Qayta tiklashdan so'ng PR2 reestri FFh ga o'rnatiladi.

PR2 uchun mos diapazonni o'rnatish PWM to'lqinining ish aylanishini o'zgartirishga imkon beradi

PR2 = 100; // Ish tsiklini 0-100 gacha o'zgartirish uchun Tsikl vaqtini 100 ga sozlang

Oddiylik uchun men PRPR = 100 dan foydalanib CCPR1L = 80; 80% ish tsikliga erishish mumkin.

5 -qadam: CCPR1l modulini sozlash

PR2 = 100 CCPR1l kerakli ish aylanishini olish uchun 0-100 oralig'ida sozlanishi mumkin.

6 -qadam: Eskizni MPLAB X IDE -ga yozing, kod quyida keltirilgan

Eskizni MPLAB X IDE -ga yozing, kod quyida keltirilgan
Eskizni MPLAB X IDE -ga yozing, kod quyida keltirilgan

#qo'shing

void delay (int a) // kechiktirishni yaratish funktsiyasi {

uchun (int i = 0; i <a; i ++)

{

uchun (int j = 0; j <144; j ++);

}

}

void main ()

{TRISC = 0; // Bu bitni tozalash PORTC -ni chiqish qilib qo'yadi.

CCP1CON = 0x0F; // PWM rejimi uchun CCP1CON registrini sozlash

T2CON = 0x04; // Prescaler va o'lchovdan keyingi konfiguratsiyasiz T2CON -ni yoqish.

PR2 = 100; // Ish tsiklini 0-100 gacha o'zgartirish uchun Tsikl vaqtini 100 ga sozlang

vaqt (1) {

CCPR1L = 75; // 75% ish tsiklining kechiktirilishi (1);

}

}

Men ishlab chiqarilgan PWM to'lqinining chastotasini o'zgartirish uchun kodni biroz o'zgartirdim

Bu kod proteusda simulyatsiya qilingan va PWM to'lqini quyida ko'rsatilgan. Rasmni ishlab chiqish taxtasiga yuklash uchun mos konfiguratsiya bitlari bilan #include dan foydalaning.

rahmat

Tavsiya: