Բովանդակություն:
- Քայլ 1: Ընտրեք միկրոկառավարիչ
- Քայլ 2. Կազմաձևեք CCP մոդուլը
- Քայլ 3. Timer2 մոդուլի կազմաձևում (TMR2 գրանցամատյան)
- Քայլ 4. PR2- ի կարգավորում (Timer2 Period Register)
- Քայլ 5. Կարգավորեք CCPR1l մոդուլը
- Քայլ 6. Գրեք ուրվագիծը ձեր վրա MPLAB X IDE, ծածկագիրը տրված է ստորև
Video: Ստեղծեք PWM ալիք PIC միկրոկառավարիչով. 6 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Ի՞ՆՉ Է 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 - 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- ը 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, ծածկագիրը տրված է ստորև
#ներառում
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 ալիքը ցուցադրվում է ստորև ՝ սա ձեր նկարի զարգացման տախտակներում վերբեռնելու համար օգտագործեք #ներառել համապատասխան կազմաձևման բիթերով:
Շնորհակալություն
Խորհուրդ ենք տալիս:
Ինչպես միացնել MAX7219 շարժվող LED մատրիցը 8x8 ATtiny85 միկրոկառավարիչով. 7 քայլ
Ինչպես միացնել MAX7219 շարժիչով LED մատրիցը 8x8 ATtiny85 միկրոկառավարիչով. MAX7219 վերահսկիչը արտադրվում է Maxim- ի կողմից: Ինտեգրված կոմպակտ, սերիական մուտքի/ելքի ընդհանուր կաթոդային ցուցադրման վարորդն է, որը կարող է միկրոկոնտրոլերներին միացնել 64 առանձին LED- ների, 7 հատվածի թվային LED էկրանների: մինչև 8 թվանշան, գծապատկերային ցուցադրում
Անլար հեռակառավարիչ ՝ օգտագործելով 2.4 ԳՀց NRF24L01 մոդուլ Arduino- ով - Nrf24l01 4 ալիք / 6 ալիք հաղորդիչ ընդունիչ քառանկյունի համար - Rc ուղղաթիռ - Rc ինքնաթիռ Arduino- ի միջոցով. 5 քայլ (նկարներով)
Անլար հեռակառավարիչ ՝ օգտագործելով 2.4 ԳՀց NRF24L01 մոդուլ Arduino- ով | Nrf24l01 4 ալիք / 6 ալիք հաղորդիչ ընդունիչ քառանկյունի համար | Rc ուղղաթիռ | Rc ինքնաթիռ Arduino- ի միջոցով. RC մեքենա շահագործելու համար | Quadcopter | Անօդաչու թռչող սարք | RC ինքնաթիռ | RC նավակ, մեզ միշտ պետք է ընդունիչ և հաղորդիչ, ենթադրենք, որ RC QUADCOPTER- ի համար մեզ անհրաժեշտ է 6 ալիքով հաղորդիչ և ընդունիչ, և այդ տիպի TX և RX- ը չափազանց թանկ են, ուստի մենք դա պատրաստելու ենք մեր
CloudX միկրոկառավարիչով բազմակի 7 հատվածի ցուցադրման հաշվիչ ՝ 4 քայլ
CloudX միկրոկառավարիչով 7 հատվածի ցուցադրման հաշվիչ. Այս նախագիծը բացատրում է, թե ինչպես կարելի է երկու 7-հատվածի տվյալների ցուցադրում ՝ օգտագործելով CloudX միկրոկառավարիչ
Ինչպես տպել անհատական կերպար LCD- ով 8051 միկրոկառավարիչով `4 քայլ
Ինչպես տպել անհատական նիշ LCD- ով 8051 միկրոկառավարիչով: Այս նախագծում մենք ձեզ կպատմենք, թե ինչպես տպել անհատական բնույթ 16 * 2 LCD- ով `օգտագործելով 8051 միկրոկոնտրոլեր: Մենք LCD- ն օգտագործում ենք 8 բիթ ռեժիմով: Մենք կարող ենք նույնը անել նաև 4 բիթ ռեժիմով
Skateboard PIC միկրոկառավարիչով և LED- ներով. 8 քայլ (նկարներով)
Սքեյթբորդ PIC միկրոկառավարիչով և լուսադիոդներով. Ի՞նչ եք ստանում, երբ էլեկտրատեխնիկը զրոյից սկեյթբորդ է պատրաստում 13 -ամյա երեխայի ամանորյա նվերի համար: Դուք ստանում եք սքեյթբորդ ՝ ութ սպիտակ լուսադիոդով (լուսարձակներ), ութ կարմիր լուսադիոդով (հետույքով), որոնք բոլորը վերահսկվում են PIC միկրոտրոլերի միջոցով: Եվ ես գաղթում եմ