Мазмұны:
- 1 -қадам: бөлшектер тізімі
- 2 -қадам: анық шешім
- 3 -қадам: Жоғары ажыратымдылық үшін каскадты таймерлер
Бейне: STM32 құрылғылары бар RC сервосы үшін жоғары ажыратымдылықтағы PWM сигнал генерациясы: 3 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Қазіргі уақытта мен SX1280 RF чипі негізінде RC таратқышы/қабылдағышын жасап жатырмын. Жобаның мақсатының бірі - мен таяқшалардан servo -ға дейін 12 биттік серво ажыратымдылығын алғым келеді. Ішінара қазіргі заманғы цифрлық серверлерде 12 биттік ажыратымдылық болғандықтан, екіншіден, жоғары деңгейлі таратқыш бәрібір 12 битті қолданады. Мен STM32 құрылғыларында жоғары ажыратымдылықтағы PWM сигналдарын қалай құруға болатынын зерттедім. Мен прототип үшін қазіргі уақытта қара таблетканы (STM32F103C8T8) қолданамын.
1 -қадам: бөлшектер тізімі
Аппараттық құрал
- Кез келген STM32F103 әзірлеу тақтасы (көк таблетка, қара таблетка және т.б.)
- Қуат көзі ретінде USB қуат банкі
- STM32 бағдарламашысы (Segger j-links, ST-LINK/V2, немесе жай st-link клоны)
Бағдарламалық қамтамасыз ету
- STM32CubeMX
- STM32 үшін Atollic TrueSTUDIO
- Github -дан жоба көзі
2 -қадам: анық шешім
Мүмкін, ең оңай шешім-STM32F103 құрылғысында TIM1-3 сияқты PWM сигналдарын шығара алатын таймердің бірін пайдалану. Қазіргі цифрлық серво үшін кадр жиілігі 5 мс дейін төмендеуі мүмкін, бірақ ескі аналогтық серво үшін ол 20 мс немесе 50 Гц болуы керек. Сонымен, ең нашар сценарий ретінде оны жасайық. 72 МГц сағаты мен 16 биттік таймердің есептегіш ажыратымдылығымен біз 20 мс кадр жиілігін жабу үшін таймердің алдын ала есептегішін минимум 23 -ке орнатуымыз керек. Мен 24 -ті таңдадым, себебі 20 мс ішінде есептегішті дәл 60000 -ге орнатуым керек. CubeMX параметрін және 1 және 1,5 мс PWM сигналдарын скриншоттарда көруге болады. Өкінішке орай, 1 мс үшін таймердің есептегіші 3000 -ға орнатылуы керек, бұл бізге тек 11 биттік рұқсат береді. Жаман емес, бірақ мақсат 12 бит болды, сондықтан басқа нәрсені көрейік.
Әрине, егер мен STM32L476 сияқты таймерлік есептегіші 32 биттік микроконтроллерді таңдасам, бұл ажыратымдылық әлдеқайда жоғары болуы мүмкін және мәселе шешіледі.
Бірақ мен мұнда STM32F103 -те ажыратымдылықты одан әрі арттыратын балама шешімді ұсынғым келеді.
3 -қадам: Жоғары ажыратымдылық үшін каскадты таймерлер
Алдыңғы шешімдегі негізгі мәселе - кадр жиілігі (20 мс) PWM сигналымен салыстырмалы түрде жоғары (1 мен 2 мс арасында), сондықтан біз күткен кезде қалған 18 мс үшін кейбір құнды биттерді ысырап етеміз. келесі кадр. Бұл синхрондау үшін таймер байланысы мүмкіндігін қолдана отырып, таймерді каскадты түрде шешуге болады.
Мен TIM1 -ді кадр жиілігін (20 мс) және TIM2, TIM3 генераторы ретінде PWM сигналдарын жеңу үшін шебер ретінде қолданамын. Мастер құлдарды іске қосқанда, олар PWM сигналын тек бір импульстік режимде шығарады. Сондықтан мен бұл таймерлерде тек 2 мс жүруім керек. Бақытымызға орай, сіз бұл таймерлерді аппараттық түрде каскад жасай аласыз, сондықтан бұл синхрондау процессордың араласуын қажет етпейді және бұл өте дәл, дірілдеу ps аймағында. CubeMX параметрлерін скриншоттардан көруге болады.
Көріп отырғаныңыздай, мен прескаляр ретінде 3 таңдап алдым, сондықтан 2 мс үшін таймердің есептегішінде 48000 орнату керек. Бұл бізге 1 мс үшін 24000 береді, бұл бізге 14 биттік рұқсат үшін қажет. Тадаааа…
Соңғы нәтиже алу үшін кіріспедегі осциллографтың скриншоттарын қараңыз. 3 -арна (күлгін) - бұл бір импульсті құруға мүмкіндік беретін негізгі таймердің үзілуі. 1 және 4 арна (сары және жасыл сәуле) - әр түрлі таймерлер шығаратын нақты PWM сигналдары. Есте сақтаңыз, олар синхрондалған, бірақ олар PWM 2 режиміне байланысты.
Бұл шешімнің басқа артықшылығы - кадр жиілігін өзгерту тек TIM1 кезеңін өзгертуді білдіреді. Қазіргі заманғы цифрлық серво үшін сіз 200-300 Гц-ке дейін түсе аласыз, бірақ дәл реттеуді қаласаңыз, сервистің нұсқаулығын қараңыз.
Ұсынылған:
Жоғары ажыратымдылықтағы веб -камера: 9 қадам (суреттермен)
Жоғары ажыратымдылықтағы веб -камера: Мен бірнеше жылдар бойы RPi негізіндегі веб -камераны қолдандым (PiCam модулімен). Жасалған суреттер жақсы болды, бірақ сол кезде мен сапаға қанағаттанбайтын кезім болды. Мен жоғары ажыратымдылықтағы веб-камера жасауға шешім қабылдадым. Келесі бөліктер
3.3V құрылғылары үшін қарапайым DIY логикалық түрлендіргіші: 4 қадам
3.3V құрылғылары үшін қарапайым DIY логикалық түрлендіргіші: Бұл жазбада мен сізге 5V -ден 3,3В -қа дейінгі логикалық түрлендіргішті 5V датчиктерін жаңа Arduino тақталарына және Raspberry Pi -ге қосу үшін қалай жасауға болатынын көрсетемін. Көпшілігіңіз Arduino және Raspberry Pi duri -мен ойнағанды ұнатасыз
ESP32 бар PWM - ESP 32 -де PWM бар күңгірт жарық диодты Arduino IDE көмегімен: 6 қадам
ESP32 бар PWM | ESP 32 -де PWM бар жарық диодты жарықтандыру Arduino IDE көмегімен: Бұл нұсқаулықта біз Arduino IDE көмегімен ESP32 көмегімен PWM сигналдарын қалай жасау керектігін көреміз. PWM негізінен кез келген MCU -дан аналогтық шығыс алу үшін қолданылады және бұл аналогтық шығыс 0В -тан 3,3В -қа дейінгі (esp32 жағдайында) & бастап
Нұсқаулықтан жоғары ажыратымдылықтағы суреттерді қалай алуға болады: 4 қадам
Нұсқауыштардан жоғары ажыратымдылықтағы суреттерді қалай алуға болады: Сіз бұл нұсқаулық суретті ұнаттыңыз ба және оның ажыратымдылығы жоғары көшірмесін сақтағыңыз келді ме? Бұл кішігірім ерекшелікті елемеуге болады
Ескі батареялары бар қуат құрылғылары: 5 қадам
Ескі батареялары бар қуатты құрылғылар: Батареяларыңызбен камералар, қашықтан басқару пульті, GPS қосылмайды, олар тым әлсіз болғандықтан қосылмайды. Бұл сағат/күнтізбе/термометр 3В сағаттық батареяны пайдаланады. Ол батарея 2,44 вольтқа дейін таусылғанша 4 жылға созылды. Жаңа батареялар