Բովանդակություն:
Video: Բարձր լուծման PWM ազդանշանի ստեղծում RC սերվերների համար STM32 սարքերով `3 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Ներկայումս ես կառուցում եմ RC հաղորդիչ/ընդունիչ ՝ հիմնված SX1280 RF չիպի վրա: Projectրագրի նպատակներից մեկն այն է, որ ես ուզում եմ 12 բիթանոց servo լուծում ձողիկներից մինչև սերվոներ: Մասամբ այն պատճառով, որ ժամանակակից թվային սերվերն ունեն 12 բիթ թույլատրություն, երկրորդ հերթին բարձրակարգ հաղորդիչն ամեն դեպքում օգտագործում է 12 բիթ: Ես ուսումնասիրում էի, թե ինչպես կարող եմ բարձր լուծման PWM ազդանշաններ առաջացնել STM32 սարքերում: Այս պահին ես օգտագործում եմ սև հաբ (STM32F103C8T8) նախատիպի համար:
Քայլ 1: Մասերի ցուցակ
Սարքավորումներ
- STանկացած STM32F103 զարգացման տախտակ (կապույտ դեղահատ, սև դեղահատ և այլն)
- USB սնուցման բանկ ՝ որպես սնուցման աղբյուր
- STM32 ծրագրավորող (Segger j-links, ST-LINK/V2 կամ պարզապես st-link clone)
Ծրագրային ապահովում
- STM32CubeMX
- Atollic TrueSTUDIO STM32- ի համար
- Նախագծի աղբյուր github- ից
Քայլ 2: Ակնհայտ լուծում
Հավանաբար, ամենահեշտ լուծումն այն ժամաչափերից մեկի օգտագործումն է, որը կարող է առաջացնել PWM ազդանշաններ, ինչպես TIM1-3- ը STM32F103- ի վրա: Digitalամանակակից թվային servo- ի համար շրջանակի արագությունը կարող է իջնել մինչև 5 ms կամ ավելի, բայց հին անալոգային servo- ի համար այն պետք է լինի 20 ms կամ 50 Hz: Այսպիսով, որպես ամենավատ սցենար, եկեք դա ստեղծենք: 72 ՄՀց ժամացույցով և 16 բիթ ժամաչափի հաշվիչի լուծաչափով մենք պետք է ժմչփի նախաչափը դնենք նվազագույն 23 -ի վրա, որպեսզի ծածկենք 20 մկս շրջանակի արագությունը: Ես ընտրեցի 24 -ը, որովհետև այն 20 ms- ի համար պետք է հաշվիչը ճշգրտորեն դնի 60000 -ի: Սքրինշոթերում կարող եք տեսնել CubeMX կարգավորումը և առաջացած 1 և 1.5 ms PWM ազդանշանները: Unfortunatelyավոք, 1 ms- ի համար ժամաչափի հաշվիչը պետք է սահմանվի 3000 -ի, ինչը մեզ կտա ընդամենը 11 բիթ թույլատրելիություն: Վատ չէ, բայց նպատակը 12 բիթ էր, ուստի եկեք այլ բան փորձենք:
Իհարկե, եթե ես ընտրեի միկրոհսկիչ 32 բիթ ժամաչափով, ինչպես STM32L476- ը, այս լուծումը կարող է շատ ավելի բարձր լինել, և խնդիրը կլուծվեր:
Բայց այստեղ ես կցանկանայի առաջարկել այլընտրանքային լուծում, որն էլ ավելի կբարձրացնի բանաձևը նույնիսկ STM32F103- ի վրա:
Քայլ 3. Բարձր լուծման ժամաչափերի կասկադավորում
Նախորդ լուծման հիմնական խնդիրն այն է, որ շրջանակի արագությունը (20 ms) համեմատաբար բարձր է իրականում առաջացած PWM ազդանշանի համեմատ (1 -ից 2 ms), այնպես որ մենք վատնում ենք որոշ գնահատված բիթեր մնացած 18 ms- ի համար, երբ սպասում ենք: հաջորդ շրջանակը: Սա կարող է լուծվել ժմչփերի կասկադի միջոցով `համաժամացման համար օգտագործելով ժամաչափի հղման հնարավորությունը:
Գաղափարն այն է, որ ես կօգտագործեմ TIM1- ը որպես վարպետ ՝ շրջանակի արագությունը (20 ms) և TIM2, TIM3- ը ՝ PWM ազդանշաններին որպես ստրուկներ հաղթահարելու համար: Երբ վարպետը գործարկում է ստրուկներին, նրանք միայն մեկ զարկերակային ռեժիմում առաջացնում են PWM ազդանշան: Հետևաբար, ես պետք է ծածկեմ միայն 2 ms այդ ժամանակաչափերում: Բարեբախտաբար, դուք կարող եք կասկադ անել այդ ժամաչափերը ապարատային համակարգում, այնպես որ այս համաժամացումը պրոցեսորի կողմից որևէ միջամտության կարիք չունի, և դա նույնպես շատ ճշգրիտ է, ցնցումը գտնվում է ps տարածաշրջանում: Սքրինշոթերում կարող եք տեսնել CubeMX- ի կարգավորումը:
Ինչպես տեսնում եք, ես ընտրեցի 3 -ը որպես նախալարային, այնպես որ 2 ms- ի համար ես պետք է 48000 -ը դնեմ ժամաչափի հաշվիչում: Սա մեզ տալիս է 24000 1 ms- ի համար, ինչը իրականում ավելի շատ է, ինչ մեզ պետք է 14 բիթ լուծման համար: Թադաաա…
Վերջնական արդյունքի համար խնդրում ենք դիտել oscilloscope- ի սքրինշոթները ներածության մեջ: 3 -րդ ալիքը (մանուշակագույն) հիմնական ժամանակաչափի ընդհատումն է, որը կհանգեցնի սալերի մեկ զարկերակի առաջացմանը: 1 -ին և 4 -րդ ալիքները (դեղին և կանաչ ճառագայթ) տարբեր ժամանակաչափերի կողմից առաջացած իրական PWM ազդանշաններն են: Ուշադրություն դարձրեք, որ դրանք համաժամեցված են, բայց սինքրոնացված են հետևի եզրերին, այսինքն `PWM ռեժիմի 2 -ի պատճառով: Սա խնդիր չէ, քանի որ որոշակի սերվոյի PWM փոխարժեքը դեռ ճիշտ է:
Այս լուծման մյուս առավելությունն այն է, որ շրջանակային դրույքաչափը փոխելը կնշանակի փոխել միայն TIM1- ի ժամանակահատվածը: Digitalամանակակից թվային սերվերի համար կարող եք իջնել նույնիսկ մինչև 200-300 Հց, բայց խնդրում ենք խորհրդակցել սերվոյի ձեռնարկին, եթե ցանկանում եք կատարելագործել:
Խորհուրդ ենք տալիս:
Բարձր լուծման հաճախականության հաշվիչ ՝ 5 քայլ (նկարներով)
Բարձր լուծման հաճախությունների հաշվիչ. Այս հրահանգը ցույց է տալիս փոխադարձ հաճախությունների հաշվիչ, որն ունակ է արագ և ողջամիտ ճշգրտությամբ չափել հաճախականությունները: Այն պատրաստված է ստանդարտ բաղադրիչներով և կարող է պատրաստվել հանգստյան օրերին (ինձ մի քիչ ավելի երկար տևեց :-)) Խմբագրել. Կոդն այժմ հասանելի է
Բարձր լուծման տեսախցիկ ՝ 9 քայլ (նկարներով)
Բարձր լուծման տեսախցիկ. Որոշ տարիներ ես օգտագործում էի RPi վրա հիմնված տեսախցիկ (PiCam մոդուլով): Ստեղծված պատկերները ամեն ինչ կարգին էին, բայց այն ժամանակ եկավ մի պահ, երբ ես այլևս գոհ չէի որակից: Ես որոշեցի պատրաստել բարձրորակ վեբ-տեսախցիկ: Հետևյալ հատվածները
Մատնահետքի ցուցիչի օգտագործումը ժամանակին մասնակցելու համար ՝ XAMP լուծման հետ համատեղ. 6 քայլ (նկարներով)
Մատնահետքի ցուցիչի օգտագործումը ՝ XAMP լուծման հետ համատեղ ժամանակի մասնակցության համար. Դպրոցական նախագծի համար մենք լուծում էինք փնտրում, թե ինչպես հետևել աշակերտների հաճախելիությանը: Մեր ուսանողներից շատերն են ուշ ժամանում: Հոգնեցուցիչ աշխատանք է նրանց ներկայությունը ստուգելը: Մյուս կողմից, շատ քննարկումներ կան, քանի որ ուսանողները հաճախ կասեն
Monitorառայության մոնիտոր սցենար Linux սերվերների համար. 4 քայլ
Monitorառայության մոնիտորների սցենար Linux սերվերների համար. Կայուն, մշտապես աշխատող համակարգ ունենալը, նույնիսկ եթե օգտագործում եք Linux- ը, կարող է դժվար խնդիր լինել: softwareամանակակից ծրագրային փաթեթների բարդության և վատ կոդավորման պատճառով, որոշ գործընթացներ կարող են ժամանակ առ ժամանակ խափանվել: Սա կարող է վատ բան լինել, եթե դուք
Ինչպես ստանալ բարձր լուծման պատկերներ հրահանգներից. 4 քայլ
Ինչպե՞ս ստանալ բարձր լուծման պատկերներ հրահանգներից. Դուք իսկապես վայելե՞լ եք այդ ուսանելի նկարը և ցանկանում եք պահպանել դրա բարձրորակ պատճենը: Այս հիանալի փոքրիկ հատկությունը հեշտությամբ անտեսվում է