Obsah:
Video: Generování signálu PWM s vysokým rozlišením pro RC serva se zařízeními STM32: 3 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
V současné době stavím RC vysílač/přijímač na základě RF čipu SX1280. Jedním z cílů projektu je, že chci 12bitové rozlišení serva od páček až po serva. Částečně proto, že moderní digitální serva mají 12bitové rozlišení, zadruhé špičkový vysílač stejně používá 12 bitů. Zkoumal jsem, jak mohu na zařízeních STM32 generovat signály PWM s vysokým rozlišením. Pro prototyp momentálně používám černou pilulku (STM32F103C8T8).
Krok 1: Seznam dílů
Hardware
- Jakákoli vývojová deska STM32F103 (modrá pilulka, černá pilulka atd.)
- Powerbanka USB jako napájecí zdroj
- Programátor STM32 (Segger j-links, ST-LINK/V2 nebo jednoduše klon st-link)
Software
- STM32CubeMX
- Atollic TrueSTUDIO pro STM32
- Zdroj projektu z github
Krok 2: Zjevné řešení
Pravděpodobně nejjednodušším řešením je použít jeden z časovačů, které mohou generovat signály PWM, jako TIM1-3 na STM32F103. U moderního digitálního serva může snímková frekvence klesnout přibližně na 5 ms, ale u starého analogového serva by to mělo být 20 ms nebo 50 Hz. V nejhorším případě to tedy vygenerujme. S rozlišením 72 MHz a 16bitovým čítačem časovače musíme nastavit časovač na minimum 23, aby pokryl snímkovou frekvenci 20 ms. Vybral jsem 24, protože pak po dobu 20 ms potřebuji nastavit čítač přesně na 60 000. Na obrázcích můžete vidět nastavení CubeMX a generované signály PWM 1 a 1,5 ms. Bohužel po dobu 1 ms by měl být čítač časovače nastaven na 3000, což by nám poskytlo pouze 11bitové rozlišení. Není to špatné, ale cíl byl 12 bitů, takže zkusme něco jiného.
Samozřejmě, pokud bych vybral mikrořadič s 32bitovým čítačem časovače, jako STM32L476, toto rozlišení může být mnohem vyšší a problém by byl vyřešen.
Zde bych však chtěl navrhnout alternativní řešení, které dále zvýší rozlišení i na STM32F103.
Krok 3: Kaskádové časovače pro vyšší rozlišení
Hlavním problémem předchozího řešení je, že obnovovací kmitočet (20 ms) je relativně vysoký ve srovnání se skutečně generovaným signálem PWM (mezi 1 a 2 ms), takže během zbývajících 18 ms plýtváme některými hodnotnými bity, když čekáme na další snímek. To lze vyřešit kaskádovými časovači pomocí funkce propojení časovače pro synchronizaci.
Myšlenka je taková, že použiji TIM1 jako master pro generování snímkové frekvence (20 ms) a TIM2, TIM3 pro zvládnutí signálů PWM jako podřízených. Když master spustí podřízené jednotky, generují signál PWM pouze v jednom pulzním režimu. Proto v těchto časovačích potřebuji pokrýt pouze 2 ms. Naštěstí můžete tyto časovače kaskádovat v hardwaru, takže tato synchronizace nevyžaduje žádný zásah procesoru a je také velmi přesná, chvění je v oblasti ps. Nastavení CubeMX můžete vidět na screenshotech.
Jak vidíte, vybral jsem 3 jako prescalar, takže na 2 ms potřebuji nastavit 48000 v čítači časovače. To nám dává 24 000 za 1 ms, což je ve skutečnosti více, co potřebujeme pro 14bitové rozlišení. Tadaaaa…
Pro konečný výsledek se prosím podívejte na screenshoty osciloskopu v úvodu. Kanál 3 (fialový) je přerušovač hlavního časovače, který spustí salvy a vygeneruje jeden puls. Kanál 1 a 4 (žlutý a zelený paprsek) jsou skutečné signály PWM generované různými časovači. Všimněte si, že jsou synchronizovány, ale jsou synchronizovány na zadních hranách, to je kvůli režimu PWM 2. To není problém, protože rychlost PWM pro konkrétní servo je stále správná.
Další výhodou tohoto řešení je, že změna snímkové frekvence by znamenala změnu období pouze v TIM1. U moderních digitálních serva můžete dosáhnout až 200-300 Hz, ale pokud chcete doladit, nahlédněte do manuálu k servu.
Doporučuje:
NodeMCU Lua Levná deska za 6 $ se záznamem teploty a vlhkosti MicroPython, statistikami Wifi a mobilními zařízeními: 4 kroky
NodeMCU Lua Levné 6 $ tabule s protokolováním teploty a vlhkosti MicroPython, Wifi a mobilními statistikami: Toto je v podstatě cloudová meteorologická stanice, můžete zkontrolovat data na svém telefonu nebo použít nějaký telefon jako živý displej Pomocí zařízení NodeMCU můžete zaznamenávat údaje o teplotě a vlhkosti venku , v místnosti, skleníku, laboratoři, chladicí místnosti nebo na jiných místech, kompletní
Frekvenční čítač s vysokým rozlišením: 5 kroků (s obrázky)
Frekvenční čítač s vysokým rozlišením: Tento návod ukazuje reciproční frekvenční čítač schopný měřit frekvence rychle as přiměřenou přesností. Je vyroben ze standardních komponent a může být vyroben za víkend (trvalo mi to trochu déle :-)) EDIT: Kód je nyní k dispozici
Webová kamera s vysokým rozlišením: 9 kroků (s obrázky)
Webová kamera s vysokým rozlišením: Několik let jsem používal webovou kameru založenou na RPi (s modulem PiCam). Vytvořené obrázky byly v pořádku, ale pak nastal okamžik, kdy jsem již nebyl spokojen s kvalitou. Rozhodl jsem se vytvořit webovou kameru s vysokým rozlišením. Následující díly s
Generování vlny PWM s mikrokontrolérem PIC: 6 kroků
Generování vlny PWM s mikrokontrolérem PIC: CO JE PWM? PWM STANUJE MODULACI ŠÍŘKY PULZU je technika, při které se mění šířka pulzu. Abychom pochopili tento koncept, jasně zvažte hodinový impuls nebo jakýkoli signál čtvercové vlny, který má 50% pracovní cyklus, což znamená, že období Ton a Toff je stejné
Notebook Dell WI-FI s vysokým ziskem antény, zvýšení dosahu a signálu interních síťových karet !!!: 5 kroků
Notebook Dell WI-FI s vysokým ziskem antény, zvýšení dosahu a signálu interních síťových karet !!!: Dobrý den, toto je můj první návod. Dnes vám ukážu, jak výrazně zvýšit dosah a sílu signálu vašeho notebooku za zhruba 15 $. Mám Dell E1505, ale ten lze snadno přizpůsobit jiným značkám notebooků. Je to velmi snadné a