PIC микроконтроллери менен PWM Wave түзүү: 6 кадам
PIC микроконтроллери менен PWM Wave түзүү: 6 кадам
Anonim
PIC микроконтроллери менен PWM Wave түзүү
PIC микроконтроллери менен PWM Wave түзүү
PIC микроконтроллери менен PWM Wave түзүү
PIC микроконтроллери менен PWM Wave түзүү
PIC микроконтроллери менен PWM Wave түзүү
PIC микроконтроллери менен PWM Wave түзүү

PWM ЭМНЕ?

PWM STULS PULSE WIDTH MODULATION - бул импульстун туурасы ар түрдүү болгон ыкма.

Бул түшүнүктү түшүнүү үчүн саат импульсун же кандайдыр бир квадрат толкун сигналын карап көрөлү, анын 50% кызмат цикли бар, бул Тон менен Тоффтун мезгили бирдей экенин билдирет, Сигналдын болгон жалпы узактыгы жана сигналдын төмөн болушунун узактыгы жалпы деп аталат. убакыт мезгили.

Жогоруда көрсөтүлгөн сүрөт үчүн бул толкундун 50% милдети бар

Милдеттүү цикл = (ON убактысы / Жалпы убакыт)*100

ON убактысы - сигнал жогорку болгон убакыт

ӨЧҮРҮҮ убактысы - сигнал аз болгон убакыт душманы Жалпы убакыт - Тамырдын жалпы убактысы (ON жана OFF убактысы)

1 -кадам: Микроконтроллерди тандоо

Микроконтроллерди тандоо
Микроконтроллерди тандоо

Долбоорго ылайыктуу микроконтроллерди тандоо бул PWM сигналдарынын PWM каналдары бар микроконтроллерлерде (CCP реестрлери) түзүлүшү мүмкүн. Бул долбоор үчүн мен pic16f877 менен жабышууну пландап жатам. маалымат баракчасын жүктөп алсаңыз болот, төмөндө берилген

PIC16F877a маалымат барагын бул жерди басыңыз

CCP модулу PWM сигналын өндүрүү үчүн жооп берет. CCP1 жана CCP2 PORTC менен мультиплексирленген. PORTC-8-биттик туурасы эки багыттуу порт. Тиешелүү маалымат багыты реестри TRISC болуп саналат. TRISC битин орнотуу (= 1) тиешелүү PORTC пинин киргизүү катары кабыл алат. TRISC битин тазалоо (= 0) тийиштүү PORTC пинин чыгаруу кылат.

TRISC = 0; // Бул битти тазалоо PORTCти өндүрүшкө айландырат

2 -кадам: CCP модулун конфигурациялоо

CCP модулун конфигурациялоо
CCP модулун конфигурациялоо
CCP модулун конфигурациялоо
CCP модулун конфигурациялоо

CCP - CAPTURE/COMPARE/PWM MODULES

Ар бир Capture/Compare/PWM (CCP) модулу 16 биттик реестрди камтыйт, ал төмөнкүдөй иштей алат:

• 16-бит Capture реестри

• 16-биттик Салыштыруу реестри

• PWM Master/Slave Duty Cycle реестри

CCP1CON реестрин PWM режимине конфигурациялоо

Description Description

CCPxCON Бул реестр CCP модулун Capture/Compare/PWM операциялары үчүн конфигурациялоо үчүн колдонулат.

CCPRxL Бул реестрде PWMдин 8-Msb биттери бар, төмөнкү 2 бит CCPxCON реестринин бир бөлүгү болот.

TMR2 бекер иштеген эсептегич, ал PWM өндүрүшүн түзүү үчүн CCPR1L жана PR2 менен салыштырылат.

Эми мен CCP1CON реестрин конфигурациялоо үчүн биттерди көрсөтүү үчүн бинардык колдоном.

жогорудагы сүрөттү караңыз.

CCP1CON = 0b00001111;

Сиз ошондой эле hex форматта боло аласыз

CCP1CON = 0x0F; // PWM режимине CCP1CON реестрин конфигурациялоо

3 -кадам: Timer2 модулун конфигурациялоо (TMR2 Register)

Configuring Timer2 Module (TMR2 Register)
Configuring Timer2 Module (TMR2 Register)

Timer2-бул алдын ала эсептөөчү жана посткалкалерлүү 8-бит таймер. Бул CCP модулдарынын PWM режими үчүн PWM убакыт базасы катары колдонулушу мүмкүн. TMR2 реестри окулуучу жана жазылуучу болуп саналат жана каалаган түзмөктө тазаланат.

T2CON реестри көрсөтүлөт

Prescale жана postscale түзүлгөн PWM толкунунун чыгуу жыштыгын жөнгө салат.

Frequency = саат жыштыгы/(4*prescaler*(PR2-TMR2)*Postscaler*саны)

Кайда Tout = 1/жыштыгы

T2CON = 0b00000100;

Бул 2,5 КГц @ 1МГц же 100КГц @ 4МГц кристаллын пайда кылат (иш жүзүндө бул PWM жыштыгына чектөө бар, көбүрөөк маалымат алуу үчүн белгилүү бир маалымат барагын караңыз)

hex өкүлчүлүгү

T2CON = 0x04; // Prescaler жана postscale конфигурациясы жок T2CONду иштетүү

4 -кадам: PR2ди конфигурациялоо (Timer2 Period Register)

Timer2 модулунда 8-разряддык регистр бар, PR2. Timer2 PR2ге дал келгенге чейин 00h чейин өсөт, андан кийин кийинки өсүү циклинде 00ске кайра коюлат. PR2 - окулуучу жана жазылуучу реестр. PR2 реестри FFh баштапкы абалга келтирилет.

PR2 үчүн ылайыктуу диапазонду орнотуу PWM толкунунун иштөө циклин өзгөртүүгө мүмкүндүк берет

PR2 = 100; // Циклдин убактысын 100гө коюп, кызмат циклин 0-100гө чейин өзгөртүңүз

Жөнөкөйлүк үчүн мен PRPR = 100 колдонуп жатам CCPR1L = 80; 80% кызматтык циклге жетишсе болот.

5 -кадам: CCPR1l модулун конфигурациялоо

PR2 = 100 CCPR1l каалаган кызмат циклине жетүү үчүн 0-100 ортосунда конфигурацияланышы мүмкүн.

6 -кадам: Эскизди сизге жазыңыз MPLAB X IDE Төмөндө код берилген

Эскизди сизге жазыңыз MPLAB X IDE Төмөндө берилген
Эскизди сизге жазыңыз MPLAB X IDE Төмөндө берилген

#кошуу

боштукту кечиктирүү (int a) // кечигүүнү жаратуучу функция {

үчүн (int i = 0; i <a; i ++)

{

үчүн (int j = 0; j <144; j ++);

}

}

бош функция()

{TRISC = 0; // Бул битти тазалоо PORTCти өндүрүшкө айландырат.

CCP1CON = 0x0F; // PWM режимине CCP1CON реестрин конфигурациялоо

T2CON = 0x04; // Prescaler жана postscale конфигурациясы жок T2CONду иштетүү.

PR2 = 100; // Циклдин убактысын 100гө коюп, кызмат циклин 0-100гө чейин өзгөртүңүз

учурда (1) {

CCPR1L = 75; // түзүлгөн 75% милдети циклинин кечигүүсү (1);

}

}

Мен жаратылган PWM толкунунун жыштыгы үчүн кодго бир аз өзгөртүү киргиздим

Бул код протеуста окшоштурулган жана PWM толкуну төмөндө көрсөтүлгөн, муну сүрөтүңүздүн өнүгүү такталарына жүктөө үчүн, #conklude ылайыктуу конфигурация биттери менен колдонуңуз.

Рахмат

Сунушталууда: