Sadržaj:
- Korak 1: Lista dijelova
- Korak 2: Očigledno rješenje
- Korak 3: Kaskadni mjerači vremena za veću rezoluciju
Video: Generisanje PWM signala visoke rezolucije za RC servosisteme sa STM32 uređajima: 3 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Trenutno gradim RC predajnik/prijemnik na bazi SX1280 RF čipa. Jedan od ciljeva projekta je da želim 12 -bitnu servo rezoluciju od štapova do servosa. Djelomično zato što moderni digitalni servo uređaji imaju 12-bitnu rezoluciju, drugo, vrhunski odašiljač ionako koristi 12 bita. Istraživao sam kako mogu generirati PWM signale visoke rezolucije na STM32 uređajima. Trenutno koristim crnu pilulu (STM32F103C8T8) za prototip.
Korak 1: Lista dijelova
Hardver
- Bilo koja razvojna ploča STM32F103 (plava pilula, crna pilula itd.)
- USB banka za napajanje kao izvor napajanja
- STM32 programer (Segger j-links, ST-LINK/V2 ili jednostavno st-link klon)
Softver
- STM32CubeMX
- Atolični TrueSTUDIO za STM32
- Izvor projekta iz github -a
Korak 2: Očigledno rješenje
Vjerojatno je najjednostavnije rješenje upotrijebiti jedan od mjerača vremena koji može generirati PWM signale, poput TIM1-3 na STM32F103. Za moderan digitalni servo brzina kadrova može pasti na oko 5 ms, ali za stari analogni servo trebao bi biti 20 ms ili 50 Hz. Dakle, u najgorem slučaju, hajde da to generiramo. Sa 72 MHz taktom i 16 -bitnom rezolucijom brojača vremena moramo postaviti predskaler tajmera na minimum 23 kako bismo pokrili brzinu kadrova od 20 ms. Odabrao sam 24 jer tada za 20 ms moram postaviti brojač točno na 60000. Na snimkama zaslona možete vidjeti postavke CubeMX -a i generirane PWM signale od 1 i 1,5 ms. Nažalost, za 1 ms brojač tajmera trebao bi biti postavljen na 3000, što bi nam dalo samo 11 bitnu rezoluciju. Nije loše, ali cilj je bio 12 -bitni, pa pokušajmo nešto drugo.
Naravno, ako bih odabrao mikro kontroler sa 32 -bitnim brojačem vremena, poput STM32L476, ova rezolucija može biti mnogo veća i problem bi bio riješen.
Ali ovdje bih želio predložiti alternativno rješenje koje će dodatno povećati rezoluciju čak i na STM32F103.
Korak 3: Kaskadni mjerači vremena za veću rezoluciju
Glavni problem prethodnog rješenja je to što je brzina kadrova (20 ms) relativno visoka u odnosu na stvarno generirani PWM signal (između 1 i 2 ms), pa gubimo neke vrijedne bitove za preostalih 18 ms kada čekamo sledeći kadar. To se može riješiti kaskadnim mjeračima vremena pomoću funkcije povezivanja tajmera za sinhronizaciju.
Ideja je da ću koristiti TIM1 kao master za generiranje frame rate -a (20 ms) i TIM2, TIM3 za nošenje sa PWM signalima kao slave. Kada master aktivira podređene uređaje, oni generiraju samo PWM signal u jednom impulsnom načinu rada. Stoga u tim timerima moram pokriti samo 2 ms. Srećom, te tajmere možete kaskadno postaviti u hardver, tako da ova sinhronizacija ne zahtijeva nikakvu intervenciju procesora, a također je i vrlo precizna, džiter je u ps području. Postavke CubeMX -a možete vidjeti na snimcima ekrana.
Kao što vidite, odabrao sam 3 kao preskalarne pa za 2 ms moram postaviti 48000 u brojaču tajmera. To nam daje 24000 za 1 ms, što je zapravo više od onoga što nam je potrebno za 14 -bitnu rezoluciju. Tadaaaa…
Za konačni rezultat pogledajte snimke ekrana osciloskopa u uvodu. Kanal 3 (ljubičasti) je prekid glavnog tajmera koji će pokrenuti salve da generiraju jedan impuls. Kanal 1 i 4 (žuti i zeleni zrak) su stvarni PWM signali koje generiraju različiti tajmeri. Imajte na umu da su sinhronizirani, ali su sinkronizirani na zadnjim rubovima, to je zbog PWM moda 2. To nije problem, jer je PWM stopa za određeni servo još uvijek točna.
Druga korist ovog rješenja je da bi promjena frame rate -a značila promjenu perioda samo u TIM1. Za moderne digitalne servomotore možete se spustiti na čak 200-300 Hz, ali molimo vas da pogledate priručnik za servo ako želite fino podesiti.
Preporučuje se:
Brojač frekvencija visoke rezolucije: 5 koraka (sa slikama)
Brojač frekvencija visoke rezolucije: Ova instrukcija prikazuje recipročni brojač frekvencija koji može mjeriti frekvencije brzo i sa razumnom preciznošću. Napravljen je sa standardnim komponentama i može se napraviti za vikend (trebalo mi je malo duže :-)) EDIT: Kôd je sada dostupan
Web kamera visoke rezolucije: 9 koraka (sa slikama)
Web kamera visoke rezolucije: Nekoliko godina koristio sam web kameru zasnovanu na RPi (sa PiCam modulom). Proizvedene slike su bile u redu, ali tada je došlo trenutak kada više nisam bio zadovoljan kvalitetom. Odlučio sam napraviti web kameru visoke rezolucije. Sledeći delovi će
SONOFF dodaje Alexa i Google Home glasovnu kontrolu ZigBee pametnim uređajima: 3 koraka
SONOFF dodaje Alexa i Google Home glasovnu kontrolu ZigBee pametnim uređajima: Od Wi-Fi pametnih prekidača i utikača do ZigBee pametnih prekidača i utikača, glasovna kontrola popularna je pametna ulazna tačka za upravljanje bez upotrebe ruku. Kroz rad s Amazon Alexa ili Google Home, pametni utikači omogućuju vam da preuzmete direktnu kontrolu nad povezanim domom
Dodajte idler (mjesto montaže druge osi) na mikro servosisteme za robotske projekte: 4 koraka
Dodajte Idler (druga osovina za montažu na drugu osovinu) na mikro servo za robotske projekte: U humanoidnim robotskim projektima, servo pogoni se koriste na zglobovima za pomicanje različitih segmenata robota, većinu vremena je najbolje montirati svaki segment na 2 ili više točaka na rotirajuća os servo za stabilnost i pravilan prijenos okretnog momenta..Sma
Kako dobiti slike visoke rezolucije iz instrukcija: 4 koraka
Kako izvaditi slike visoke rezolucije iz instrukcija: Jeste li zaista uživali u toj slici s uputama i htjeli ste je spremiti u visokoj rezoluciji? Ova mala značajka lako se zanemaruje