“Сотворил” сие изделие, отличие от аналогов с Али в высокой скорости работы и большой точности PWM сигналов на выходах.
Данное изделие выдает семь пропорциональных каналов с периодом 7 мс и длительностью импульса с точностью до 1 мкс,
В перспективе прикручу остальные пять пропорциональных каналов и два дискретных DG1/DG2.
Изделие собирается на плате WeAct STM32F411CEU6
Плата для окончательного монтажа может выглядеть так
Реализовано раздельное питание контроллера, приемника и сервоприводов.
В проге достаточно просто назначить требуемые каналы в пакете SBus выходам модуля декодера.
Программа написана с CubeMX с HAL.
Проект открытый, так что все желающие могут его повторить безо всяких ограничений.
пока писал сообщение, пришла мысль, как реализовать вывод всех 16 каналов с точностью 1 мкс и периодом 7 мс.
но время ушло и откорректировать уже не выйдет, так что …
Обновление версии девайса.
14 пропорциональных каналов с точностью PWM 1 мкс и периодом 7 мс (соответствует HS режиму Futaba).
2 дискретных канала, те которые DG1/DG2.
Устройство видит f/s и потерянные блоки, но как это использовать пока не придумал
И да, плата стала не актуальной
Выглядеть конечное изделие-полуфабрикат может так.
Зравствуйте. Насколько знаю, у ардуин есть проблема с малым разрешением ШИМ - всего 256 положений из-за низкой частоты таймера. Как здесь решена эта проблема?
Так-же, на вход подается ивертированный или неинвертированный сигнал?
Добрый день, используются аппаратные возможности F411, а именно 16 разрядные таймеры,
частота процессора 100 МГц, “картинку” смотрю на анализаторе HANTEC MSO5202D ),
в данном изделии погрешность генерирования ШИМ на всех каналах меньше 1 мкс.
т.е. если на выходе должно быть 1522 мкс, то будет именно столько.
все это реализуется на аппаратном уровне, никакие прерывания для генерации ШИМ не используются.
программная часть сведена только к декодированию SBus, “образец” обработки взят с Гитхаба,
требуемая длинна импульса для каждого канала, после декодирования пакета SBus, записывается в регистр прелоадер,
откуда таймеры сами эти значения забирают при следующем запуске,
период перезапуска таймера определен на этапе инициализации таймеров и составляет 7 мсек.
вероятно возможность приема инвертированного UART у STM32 есть, но я искать пока не стал,
на входе стоит инвертор на одном транзисторе.
у ардуин есть проблема с малым разрешением ШИМ - всего 256 положений из-за низкой частоты таймера.
у АТМЕГА328 только один таймер 16 битный.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"5d45c2c53df95500776f8062":{"_id":"5d45c2c53df95500776f8062","hid":346562,"name":"Гена_Большой","nick":"Гена_Большой","avatar_id":null,"css":""},"620402769687bc008c385af6":{"_id":"620402769687bc008c385af6","hid":377741,"name":"Nosowandrey","nick":"Nosowandrey","avatar_id":null,"css":""}},"settings":{"can_see_ip":false,"can_report_abuse":false,"can_see_hellbanned":false,"forum_can_view":true,"forum_can_reply":false,"forum_edit_max_time":30,"forum_can_close_topic":false,"forum_show_ignored":false,"forum_mod_can_delete_topics":false,"forum_mod_can_hard_delete_topics":false,"forum_mod_can_see_hard_deleted_topics":false,"forum_mod_can_edit_posts":false,"forum_mod_can_pin_topic":false,"forum_mod_can_edit_titles":false,"forum_mod_can_close_topic":false,"can_vote":false,"forum_mod_can_add_infractions":false,"forum_topic_title_min_length":10,"forum_reply_old_post_threshold":30,"votes_add_max_time":168,"forum_show_post_interval":7,"can_see_deleted_users":false},"section":{"_id":"61c9a54c3df9550077bb517d","hid":87,"title":"Бортовая электроника","parent":"61c9a54c3df9550077bb50fc","description":"Рулевые машинки, гироскопы, индикаторы питания и т.п.","is_category":false,"is_votable":true,"is_writable":true,"cache":{"topic_count":2529,"post_count":33994,"last_post":"66d854423627b35af46ab2fc","last_topic":"6357a401cf1fced255172956","last_topic_hid":571582,"last_topic_title":"Matek F411-WTE и DJI AR UNIT (OSD)","last_ts":"2024-09-04T12:36:18.472Z","last_user":"41dd37293df95500777929a4"}},"topic":{"_id":"627d36734954d573c501dc46","hid":571118,"title":"SBus->PWM декодер своими руками.","views_count":2288,"last_post_counter":5,"cache":{"post_count":5,"first_post":"627d36734954d573c501dc47","first_ts":"2022-05-12T16:31:47.456Z","first_user":"5d45c2c53df95500776f8062","last_post":"63122347787fa5c3096d727c","last_ts":"2022-09-02T15:37:43.048Z","last_post_hid":5,"last_user":"5d45c2c53df95500776f8062"},"st":1,"section":"61c9a54c3df9550077bb517d"},"subscription":null,"pagination":{"total":5,"per_page":25,"chunk_offset":0},"posts_list_before_post":["paginator","datediff"]},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}