
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:04



В настоящее время я создаю RC-передатчик / приемник на основе радиочастотного чипа SX1280. Одна из целей проекта состоит в том, чтобы я хотел получить 12-битное разрешение сервоприводов от стиков до сервоприводов. Отчасти потому, что современные цифровые сервоприводы имеют разрешение 12 бит, во-вторых, передатчик высокого класса в любом случае использует 12 бит. Я изучал, как я могу генерировать ШИМ-сигналы высокого разрешения на устройствах STM32. Я использую черную таблетку (STM32F103C8T8) на данный момент для прототипа.
Шаг 1: Список деталей
Аппаратное обеспечение
- Любая отладочная плата STM32F103 (синяя таблетка, черная таблетка и т. Д.)
- Блок питания USB в качестве источника питания
- Программатор STM32 (Segger j-links, ST-LINK / V2 или просто клон st-link)
Программное обеспечение
- STM32CubeMX
- Atollic TrueSTUDIO для STM32
- Источник проекта с github
Шаг 2: очевидное решение



Вероятно, самое простое решение - использовать один из таймеров, который может генерировать сигналы ШИМ, например TIM1-3 на STM32F103. Для современного цифрового сервопривода частота кадров может снизиться до 5 мс или около того, но для старого аналогового сервопривода она должна составлять 20 мс или 50 Гц. Итак, в худшем случае давайте сгенерируем это. При тактовой частоте 72 МГц и разрешении счетчика таймера 16 бит нам необходимо установить предварительный делитель таймера на минимум 23, чтобы покрыть частоту кадров 20 мс. Я выбрал 24, потому что тогда на 20 мс мне нужно установить счетчик точно на 60000. Вы можете увидеть настройку CubeMX и сгенерированные сигналы PWM 1 и 1,5 мс на скриншотах. К сожалению, для 1 мс счетчик таймера должен быть установлен на 3000, что даст нам только 11-битное разрешение. Неплохо, но цель была 12 бит, так что попробуем что-нибудь другое.
Конечно, если бы я выбрал микроконтроллер с 32-битным таймером, например STM32L476, это разрешение может быть намного выше, и проблема будет решена.
Но здесь я хотел бы предложить альтернативное решение, которое еще больше увеличит разрешение даже на STM32F103.
Шаг 3: каскадные таймеры для более высокого разрешения



Основная проблема с предыдущим решением заключается в том, что частота кадров (20 мс) относительно высока по сравнению с фактически сгенерированным ШИМ-сигналом (от 1 до 2 мс), поэтому мы тратим некоторые оцененные биты на оставшиеся 18 мс, когда мы ждем следующий кадр. Это может быть решено с помощью каскадных таймеров с использованием функции привязки таймера для синхронизации.
Идея состоит в том, что я буду использовать TIM1 в качестве ведущего для генерации частоты кадров (20 мс) и TIM2, TIM3 для обработки сигналов ШИМ в качестве ведомых устройств. Когда мастер запускает подчиненные, они генерируют только сигнал ШИМ в одном импульсном режиме. Поэтому мне нужно покрыть только 2 мс в этих таймерах. К счастью, вы можете каскадировать эти таймеры на аппаратном уровне, чтобы эта синхронизация не требовала вмешательства процессора и была очень точной, так как джиттер находится в области ps. Вы можете увидеть настройку CubeMX на скриншотах.
Как вы можете видеть, я выбрал 3 как прескаляр, поэтому для 2 мс мне нужно установить 48000 в счетчике таймера. Это дает нам 24000 на 1 мс, что на самом деле больше, что нам нужно для 14-битного разрешения. Тадаааа…
Пожалуйста, взгляните на скриншоты осциллографа во вступлении, чтобы увидеть окончательный результат. Канал 3 (фиолетовый) - это прерывание главного таймера, которое запускает мазь для генерации одного импульса. Каналы 1 и 4 (желтый и зеленый луч) представляют собой фактические сигналы ШИМ, генерируемые разными таймерами. Обратите внимание, что они синхронизированы, но они синхронизируются по задним фронтам, то есть из-за режима ШИМ 2. Это не проблема, потому что скорость ШИМ для конкретного сервопривода все еще правильная.
Другое преимущество этого решения состоит в том, что изменение частоты кадров означало бы изменить только период в TIM1. Для современных цифровых сервоприводов вы можете снизить частоту даже до 200-300 Гц, но, пожалуйста, обратитесь к руководству сервоприводов, если вы хотите выполнить точную настройку.
Рекомендуемые:
Частотомер высокого разрешения: 5 шагов (с изображениями)

Частотомер высокого разрешения: в этой инструкции показан обратный частотомер, способный измерять частоты быстро и с разумной точностью. Он сделан со стандартными компонентами и может быть изготовлен за выходные (это заняло у меня немного больше времени :-)) РЕДАКТИРОВАТЬ: Теперь код доступен
Веб-камера высокого разрешения: 9 шагов (с изображениями)

Веб-камера высокого разрешения: в течение нескольких лет я использовал веб-камеру на базе RPi (с модулем PiCam). Создаваемые изображения были в порядке, но затем наступил момент, когда качество меня больше не устраивало. Решил сделать веб-камеру высокого разрешения. Следующие части
Генерация волны ШИМ с помощью микроконтроллера PIC: 6 шагов

Генерация волны ШИМ с помощью микроконтроллера PIC: ЧТО ТАКОЕ ШИМ? СТЕНДЫ ШИМ ДЛЯ МОДУЛЯЦИИ ШИРИНЫ ИМПУЛЬСА - это метод, с помощью которого изменяется ширина импульса. Чтобы четко понять эту концепцию, рассмотрим тактовый импульс или любой прямоугольный сигнал с коэффициентом заполнения 50%, что означает, что периоды Ton и Toff одинаковы
ШИМ с ESP32 - Диммирование светодиода с ШИМ на ESP 32 с Arduino IDE: 6 шагов

ШИМ с ESP32 | Диммирование светодиода с помощью ШИМ на ESP 32 с помощью Arduino IDE: в этой инструкции мы увидим, как сгенерировать сигналы ШИМ с ESP32 с помощью Arduino IDE & ШИМ в основном используется для генерации аналогового выхода из любого микроконтроллера, и этот аналоговый выход может быть любым в диапазоне от 0 В до 3,3 В (в случае esp32) & из
Усилитель высокого качества с блоком питания USB для мобильного устройства (PAM8403): 3 шага

Высококачественный усилитель с USB-питанием для мобильного устройства (PAM8403): У нас проблема: низкий уровень звука в динамиках ноутбука! шум динамиков ноутбука! У нас нет внешнего источника питания! Эти проблемы актуальны для многих других мобильных устройств. Что делать? Идея! Мы можем сделать суперусилитель звуковых колонок с