Sisukord:
Video: Kõrge eraldusvõimega PWM -signaali genereerimine RC -servodele STM32 -seadmetega: 3 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Praegu ehitan SX1280 RF -kiibil põhinevat RC -saatjat/vastuvõtjat. Üks projekti eesmärke on see, et soovin 12 -bitist servo eraldusvõimet pulgadest servodeni. Osaliselt seetõttu, et kaasaegsetel digitaalsetel servodel on 12-bitine eraldusvõime, teiseks kasutab tipptasemel saatja niikuinii 12 bitti. Uurisin, kuidas saaksin STM32 seadmetes genereerida kõrge eraldusvõimega PWM -signaale. Ma kasutan praegu prototüübi jaoks musta pille (STM32F103C8T8).
Samm: osade loend
Riistvara
- Mis tahes STM32F103 arendusplaat (sinine pill, must pill jne)
- Toiteallikana USB toitepank
- STM32 programmeerija (Segger j-links, ST-LINK/V2 või lihtsalt st-link kloon)
Tarkvara
- STM32CubeMX
- Atollic TrueSTUDIO STM32 jaoks
- Projekti allikas githubist
2. samm: ilmne lahendus
Tõenäoliselt on kõige lihtsam lahendus kasutada taimerit, mis võib genereerida PWM-signaale, näiteks TIM1-3 STM32F103-l. Kaasaegse digitaalse servo puhul võib kaadrisagedus langeda umbes 5 ms -ni, kuid vana analoogservo puhul peaks see olema 20 ms või 50 Hz. Nii et halvima stsenaariumina genereerime selle. 72 MHz kella ja 16 -bitise taimeriloenduri eraldusvõimega peame seadma taimerite eelseadistaja minimaalseks 23, et katta 20 ms kaadrisagedus. Valisin 24, sest siis pean 20 ms jooksul loenduri täpselt 60000 peale seadma. Ekraanipiltidel näete CubeMX seadistust ning genereeritud 1 ja 1,5 ms PWM signaale. Kahjuks tuleks 1 ms jaoks taimeriloendur seada 3000 -le, mis annaks meile ainult 11 -bitise eraldusvõime. Pole paha, aga eesmärk oli 12 bitine, seega proovime midagi muud.
Muidugi, kui valiksin 32 -bitise taimeriloenduriga mikrokontrolleri, nagu STM32L476, võib see eraldusvõime olla palju suurem ja probleem oleks lahendatud.
Kuid siin sooviksin pakkuda alternatiivset lahendust, mis suurendab isegi STM32F103 eraldusvõimet.
3. samm: kõrgema eraldusvõimega kaskaadtaimerid
Eelmise lahenduse põhiprobleem on see, et kaadrisagedus (20 ms) on tegelikult loodud PWM -signaaliga võrreldes suhteliselt kõrge (vahemikus 1 kuni 2 ms), seega raiskame oodatud bitti ülejäänud 18 ms jooksul järgmine kaader. Seda saab lahendada taimerite kaskaadiga, kasutades sünkroonimiseks taimerilingi funktsiooni.
Idee on selles, et kasutan kaadrisageduse (20 ms) genereerimiseks kaptenina TIM1 ja alluvana PWM -signaalidega toimetulemiseks TIM2, TIM3. Kui kapten käivitab orjad, genereerivad nad PWM -signaali ainult ühes impulssrežiimis. Seetõttu pean neil taimeritel katma ainult 2 ms. Õnneks saate neid taimerid riistvaras kaskaadida, nii et see sünkroonimine ei vaja protsessori sekkumist ja see on ka väga täpne, värin on ps -piirkonnas. CubeMX -i seadistusi näete ekraanipiltidel.
Nagu näete, valisin eelkalariks 3, nii et 2 ms jooksul pean ma taimeri loendurisse seadma 48000. See annab meile 1 ms jaoks 24000, mis on tegelikult rohkem, kui vajame 14 -bitise eraldusvõime jaoks. Tadaaaa…
Lõpptulemuse saamiseks vaadake sissejuhatuses olevaid ostsilloskoobi ekraanipilte. Kanal 3 (lilla) on peataimeri katkestus, mis käivitab salvid ühe impulsi. Kanal 1 ja 4 (kollane ja roheline valgusvihk) on erinevate taimerite genereeritud tegelikud PWM -signaalid. Pange tähele, et need on sünkroonis, kuid need on sünkroonitud lõpuservades, mis on tingitud PWM -režiimist 2. See ei ole probleem, sest konkreetse servo PWM -i määr on endiselt õige.
Selle lahenduse teine eelis on see, et kaadrisageduse muutmine tähendaks ainult TIM1 perioodi muutmist. Kaasaegsete digitaalsete servode puhul saate isegi 200–300 Hz, kuid peenhäälestuse saamiseks lugege palun servo käsiraamatut.
Soovitan:
Kõrge eraldusvõimega sagedusloendur: 5 sammu (piltidega)
Kõrge eraldusvõimega sagedusloendur: see juhend annab vastastikuse sagedusloenduri, mis on võimeline sagedusi kiiresti ja mõistliku täpsusega mõõtma. See on valmistatud standardkomponentidest ja seda saab teha nädalavahetusel (mul läks natuke kauem aega :-)) EDIT: Kood on nüüd saadaval
Erinevate helide genereerimine filmidest ainult Arduino abil: 3 sammu
Erinevate helide genereerimine filmidest, kasutades ainult Arduino: As-salamu alaykum! Tahtsin genereerida erinevaid helisid nagu kiskja, optimus prime & kimalane trafo filmist. Tegelikult vaatasin " hacksmith " video kiskjakiivri valmistamisest
Kõrge eraldusvõimega veebikaamera: 9 sammu (piltidega)
Kõrglahutusega veebikaamera: kasutasin mõned aastad RPi -põhist veebikaamerat (koos PiCami mooduliga). Toodetud piltidega oli kõik korras, kuid siis oli hetk, kus ma polnud kvaliteediga enam rahul. Otsustasin teha suure eraldusvõimega veebikaamera. Järgmised osad on
PWM -laine genereerimine PIC -mikrokontrolleriga: 6 sammu
PWM -laine genereerimine PIC -mikrokontrolleriga: MIS ON PWM? PWM -STANDID PULSSI LAIUSE MODULATSIOONI jaoks on tehnika, mille abil muudetakse impulsi laiust. Selle kontseptsiooni mõistmiseks kaaluge kella impulssi või ruutlaine signaali, mille töötsükkel on 50%, mis tähendab, et Ton ja Toff periood on sama
Kõrge eraldusvõimega piltide eemaldamine juhistest: 4 sammu
Kuidas saada kõrge eraldusvõimega pilte juhistest: Kas teile meeldis see juhendatav pilt ja kas soovite selle kõrge resolutsiooniga koopia salvestada? See suurepärane väike funktsioon jääb kergesti tähelepanuta