PIC микроконтроллері бар PWM толқынын жасаңыз: 6 қадам
PIC микроконтроллері бар PWM толқынын жасаңыз: 6 қадам
Anonim
PIC микроконтроллерінің көмегімен PWM толқынын жасаңыз
PIC микроконтроллерінің көмегімен PWM толқынын жасаңыз
PIC микроконтроллерінің көмегімен PWM толқынын жасаңыз
PIC микроконтроллерінің көмегімен PWM толқынын жасаңыз
PIC микроконтроллерінің көмегімен PWM толқынын жасаңыз
PIC микроконтроллерінің көмегімен PWM толқынын жасаңыз

PWM деген не?

PWM STANDS PULSE WIDTH MODULATION - бұл импульстің ені әр түрлі болатын әдіс.

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

Жоғарыда көрсетілген кескін үшін бұл толқынның 50% жұмыс циклы бар

Кезекші цикл = (ON time / Total Time)*100

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

Өшіру уақыты - белгісі төмен уақыт қарсыласы Жалпы уақыт - Импульстің жалпы уақыты (ҚОСУ және ӨШІРУ уақыты)

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 режиміне теңшеңіз

Тіркеу сипаттамасы

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

CCPRxL Бұл регистр PWM 8-Msb битін сақтайды, төменгі 2-бит CCPxCON регистрінің бөлігі болады.

TMR2 PWM шығуын генерациялау үшін CCPR1L және PR2 -мен салыстырылатын бос жұмыс істейтін есептегіш.

Енді мен CCP1CON регистрін конфигурациялау үшін биттерді көрсету үшін екілік файлды қолданамын.

жоғарыдағы суретке сілтеме жасаңыз.

CCP1CON = 0b00001111;

Сіз сондай -ақ он алтылық форматты жасай аласыз

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

3 -қадам: Timer2 модулін конфигурациялау (TMR2 регистрі)

Timer2 модулін теңшеу (TMR2 регистрі)
Timer2 модулін теңшеу (TMR2 регистрі)

Timer2-бұл 8-разрядты таймер, алдын ала есептегіші мен кейінгі кальцері бар. Ол CCP модульдерінің PWM режимі үшін PWM уақыт базасы ретінде пайдаланылуы мүмкін. TMR2 регистрі оқылады және жазылады және Reset кез келген құрылғыда жойылады.

T2CON регистрі көрсетіледі

Алдын ала және кейінгі шкала PWM толқынының шығу жиілігін реттейді.

Жиілік = сағат жиілігі/(4*prescaler*(PR2-TMR2)*Postscaler*санау)

Мұндағы Tout = 1/жиілігі

T2CON = 0b00000100;

Бұл 2,5 КГц @ 1МГц немесе 100КГц @ 4МГц кристалды шығарады (іс жүзінде толығырақ ақпарат алу үшін осы PWM жиілігіне қатысты шектеулер бар)

он алтылық ұсыну

T2CON = 0x04; // Prescaler және шкаладан кейінгі конфигурациясыз T2CON қосыңыз

4 -қадам: PR2 конфигурациясы (Timer2 кезеңдік регистрі)

Timer2 модулінде 8 разрядты периодты регистр бар, PR2. Таймер2 002 -ден PR2 -ге сәйкес келгенге дейін артады, содан кейін келесі өсу циклінде 00с -қа қалпына келтіріледі. PR2 - оқылатын және жазылатын регистр. PR2 регистрі қалпына келтірілгенде FFh күйіне инициализацияланады.

PR2 үшін сәйкес диапазонды орнату PWM толқынының жұмыс циклін өзгертуге мүмкіндік береді

PR2 = 100; // Жұмыс циклін 0-100 аралығында өзгерту үшін Цикл уақытын 100-ге орнатыңыз

Қарапайымдылық үшін мен PR2 = 100 қолданамын CCPR1L = 80; 80% жұмыс цикліне қол жеткізуге болады.

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

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

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

Эскизді MPLAB X IDE -ге жазыңыз, код төменде берілген
Эскизді MPLAB X IDE -ге жазыңыз, код төменде берілген

#қосу

void delay (int a) // кешіктіруді тудыратын функция {

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

{

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

}

}

void main ()

{TRISC = 0; // Бұл бит тазаланса, PORTC шығыс болады.

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

T2CON = 0x04; // Prescaler және шкаладан кейінгі конфигурациясыз T2CON қосыңыз.

PR2 = 100; // Жұмыс циклін 0-100 аралығында өзгерту үшін Цикл уақытын 100-ге орнатыңыз

уақыт (1) {

CCPR1L = 75; // 75% жұмыс циклінің кешігуін тудырды (1);

}

}

Мен сондай -ақ кодқа сәл өзгеріс енгіздім, осылайша генерацияланған PWM толқынының жиілігі

Бұл код протеуста модельденген және PWM толқыны төменде көрсетілген. Оны суретті әзірлеу тақтасына жүктеу үшін сәйкес конфигурация биттері бар #include пайдаланыңыз.

Рақмет сізге

Ұсынылған: