Բովանդակություն:

Ստեղծեք PWM ալիք PIC միկրոկառավարիչով. 6 քայլ
Ստեղծեք PWM ալիք PIC միկրոկառավարիչով. 6 քայլ

Video: Ստեղծեք PWM ալիք PIC միկրոկառավարիչով. 6 քայլ

Video: Ստեղծեք PWM ալիք PIC միկրոկառավարիչով. 6 քայլ
Video: AI անիմացիայի գեներատոր. Ստեղծեք ձեր սեփական 3D ֆիլմը AI-ի միջոցով 2024, Նոյեմբեր
Anonim
Ստեղծեք PWM ալիք PIC միկրոկառավարիչով
Ստեղծեք PWM ալիք PIC միկրոկառավարիչով
Ստեղծեք PWM ալիք PIC միկրոկառավարիչով
Ստեղծեք PWM ալիք PIC միկրոկառավարիչով
Ստեղծեք PWM ալիք PIC միկրոկառավարիչի միջոցով
Ստեղծեք PWM ալիք PIC միկրոկառավարիչի միջոցով
Ստեղծեք PWM ալիք PIC միկրոկառավարիչի միջոցով
Ստեղծեք PWM ալիք PIC միկրոկառավարիչի միջոցով

Ի՞ՆՉ Է PWM- ը:

PWM STANDS FOR PULSE WIDTH MODULATION- ը տեխնիկա է, որով զարկերակի լայնությունը տատանվում է:

Այս հասկացությունը հասկանալու համար հստակ հաշվի առեք ժամացույցի զարկերակը կամ ցանկացած քառակուսի ալիքի ազդանշան, այն ունի 50% աշխատանքային ցիկլ, ինչը նշանակում է, որ Ton և Toff ժամանակահատվածը նույնն է: Ընդհանուր տևողությունը, որի համար ազդանշանը բարձր էր, իսկ տևողությունը, որի համար ազդանշանը ցածր էր, կոչվում է ընդհանուր ժամանակահատված.

Վերևում պատկերված պատկերի համար այս ալիքն ունի աշխատանքային ցիկլ 50%

Աշխատանքային ցիկլ = (Միացված ժամանակ / Ընդհանուր ժամանակ)*100

ON ժամանակ - ժամանակ, որի համար ազդանշանը բարձր էր

Անջատված ժամանակ - թշնամի, որի ազդանշանը ցածր էր Ընդհանուր ժամանակ - Իմպուլսի ընդհանուր ժամանակահատվածը (ինչպես միացված, այնպես էլ անջատված)

Քայլ 1: Ընտրեք միկրոկառավարիչ

Միկրոհսկիչի ընտրություն
Միկրոհսկիչի ընտրություն

Նախագծի համար համապատասխան միկրոկառավարիչ ընտրելը սա ծրագրի էական մասն է: PWM ազդանշանները կարող են գեներացվել PWM ալիքներով միկրոկոնտրոլերներում (CCP գրանցիչներ): Այս նախագծի համար ես պլանավորում եմ մնալ pic16f877- ի հետ: կարող եք ներբեռնել տվյալների թերթիկի հղումը, որը տրված է ստորև

PIC16F877a տվյալների թերթիկը կտտացրեք այստեղ

CCP մոդուլը պատասխանատու է PWM ազդանշան արտադրելու համար: CCC1 և CCP2 բազմապատկվում են PORTC- ով PORTC- ը 8-բիթ լայն երկկողմանի նավահանգիստ է: Համապատասխան տվյալների ուղղության գրանցամատյանը TRISC է: TRISC բիթը (= 1) սահմանելը կստիպի համապատասխան PORTC քորոցը որպես մուտքագրում: TRISC բիթը (= 0) մաքրելը համապատասխան PORTC կապը կդարձնի ելք:

TRISC = 0; // Այս բիթը մաքրելը PORTC- ը կդարձնի ելք:

Քայլ 2. Կազմաձևեք CCP մոդուլը

Կազմաձևեք CCP մոդուլը
Կազմաձևեք CCP մոդուլը
Կազմաձևեք CCP մոդուլը
Կազմաձևեք CCP մոդուլը

CCP - CAPTURE/Համեմատել/PWM մոդուլներ

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 Անվճար հոսող հաշվիչ, որը կհամեմատվի CCPR1L- ի և PR2- ի հետ `PWM ելք ստեղծելու համար:

Այժմ ես կօգտագործեմ երկուական ՝ բիթերը ներկայացնելու համար ՝ CCP1CON գրանցամատյանը կազմաձևելու համար:

նշեք վերը նշված պատկերը:

CCP1CON = 0b00001111;

Կարող եք նաև վեցանկյուն ձևաչափով

CCP1CON = 0x0F; // CCP1CON գրանցամատյանի կարգավորում PWM ռեժիմի համար

Քայլ 3. Timer2 մոդուլի կազմաձևում (TMR2 գրանցամատյան)

Timer2 մոդուլի կազմաձևում (TMR2 գրանցամատյան)
Timer2 մոդուլի կազմաձևում (TMR2 գրանցամատյան)

Timer2- ը 8-բիթ ժմչփ է `նախալեզվիչով և հետգրիչով: Այն կարող է օգտագործվել որպես CWP մոդուլի (ներ) PWM ռեժիմի PWM ժամանակային բազա: TMR2 գրանցամատյանը ընթեռնելի և գրելի է և մաքրված է ցանկացած սարքի Վերակայման վրա:

T2CON գրանցամատյանը ցուցադրվում է

Նախնական և հետքաշային մասերը կկարգավորեն առաջացած PWM ալիքի ելքային հաճախականությունը:

Հաճախականություն = ժամացույցի հաճախականություն/(4*prescaler*(PR2-TMR2)*Postcaler*count)

Որտեղ Tout = 1/հաճախականություն

T2CON = 0b00000100;

Սա կստեղծի 2.5 KHz @ 1Mhz կամ 100KHz @ 4MHz բյուրեղ (գործնականում կա սահմանափակում այս PWM հաճախականության համար, մանրամասն տեղեկությունների համար դիմեք տվյալ տվյալների թերթին)

վեցանկյուն ներկայացում

T2CON = 0x04; // միացնել T2CON- ը առանց Prescaler- ի և postcale- ի կազմաձևման:

Քայլ 4. PR2- ի կարգավորում (Timer2 Period Register)

Timer2 մոդուլն ունի 8-բիթ ժամանակահատվածի գրանցամատյան ՝ PR2: Erամաչափ 2 -ը բարձրանում է 00 ժ -ից մինչև այն համապատասխանում է PR2- ին, այնուհետև հաջորդ աճի ցիկլում վերակայվում է 00 ժ -ի: PR2- ը ընթեռնելի և գրելի գրանցամատյան է: PR2 գրանցամատյանը նախաստորագրվում է FFh- ին ՝ վերակայման դեպքում:

PR2- ի համար համապատասխան միջակայքի սահմանումը թույլ կտա փոխել արտադրվող PWM ալիքի աշխատանքային ցիկլը

PR2 = 100; // Սահմանեք ցիկլի ժամանակը 100-ի համար `աշխատանքային ցիկլը 0-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 ++);

}

}

դատարկ հիմնական ()

{TRISC = 0; // Այս բիթը մաքրելը PORTC- ը կդարձնի ելք:

CCP1CON = 0x0F; // CCP1CON գրանցամատյանի կարգավորում PWM ռեժիմի համար

T2CON = 0x04; // միացնել T2CON- ը առանց Prescaler- ի և postcale- ի կազմաձևման:

PR2 = 100; // Սահմանեք ցիկլի ժամանակը 100-ի համար `աշխատանքային ցիկլը 0-100-ից փոփոխելու համար

մինչդեռ (1) {

CCPR1L = 75; // առաջացրել է տուրքի ցիկլի 75% հետաձգում (1);

}

}

Ես նաև մի փոքր փոփոխություն եմ կատարել ծածկագրում, որպեսզի առաջացած PWM ալիքի հաճախականությունը

Այս ծածկագիրը մոդելավորվում է proteus- ում, իսկ ելքային PWM ալիքը ցուցադրվում է ստորև ՝ սա ձեր նկարի զարգացման տախտակներում վերբեռնելու համար օգտագործեք #ներառել համապատասխան կազմաձևման բիթերով:

Շնորհակալություն

Խորհուրդ ենք տալիս: