
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 12:59



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



Вероятно най-лесното решение е да използвате един от таймера, който може да генерира PWM сигнали, като TIM1-3 на STM32F103. За модерно цифрово серво честотата на кадрите може да спадне до 5 ms или повече, но за стар аналогов серво трябва да бъде 20 ms или 50 Hz. Така че, като най -лошия сценарий, нека го генерираме. Със 72 MHz часовник и 16 -битова разделителна способност на таймера трябва да настроим предварителния дебитор на таймера на минимум 23, за да покрием честотата на кадрите от 20 ms. Избрах 24, защото след това за 20 ms трябва да настроя брояча точно на 60000. Можете да видите настройката на CubeMX и генерираните 1 и 1,5 ms PWM сигнали на екранните снимки. За съжаление, за 1 ms броячът на таймера трябва да бъде настроен на 3000, което би ни дало само 11 битова резолюция. Не е лошо, но целта беше 12 битова, така че нека опитаме нещо друго.
Разбира се, ако избера микроконтролер с 32 -битов таймер, като STM32L476, тази резолюция може да бъде много по -висока и проблемът ще бъде решен.
Но тук бих искал да предложа алтернативно решение, което допълнително ще увеличи разделителната способност дори на STM32F103.
Стъпка 3: Каскадни таймери за по -висока разделителна способност



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

Генериране на различни звуци от филми, използвайки само Arduino: As-salamu alaykum! Исках да генерирам различни звуци като хищник, optimus prime & пчела от филм трансформатор. Всъщност гледах " хамара " видео за направата на шлем хищник
Генериране на изкуство от коментари: 5 стъпки (със снимки)

Генериране на изкуство от коментари: Този проект е амбициозен, в който искаме да използваме някои от най -съмнителните части на интернет, секции за коментари и стаи за чат, за да създадем изкуство. Искаме също така да направим проекта лесно достъпен, така че всеки да може да се пробва в генерирането на
OpenLogger: Висока разделителна способност, активиран Wi-Fi, отворен код, преносим регистратор на данни: 7 стъпки

OpenLogger: Висока разделителна способност, активиран Wi-Fi, отворен код, преносим регистратор на данни: OpenLogger е преносим, отворен код, евтин логгер с висока разделителна способност, проектиран да осигурява висококачествени измервания, без да изисква скъп софтуер или софтуер за писане от нулата. Ако сте инженер, учен или ентусиаст, който не
Генериране на тонове на различни видове с помощта на математически уравнения (MathsMusic) Arduino: 5 стъпки

Генериране на тонове на различни видове с помощта на математически уравнения (MathsMusic) Arduino: Описание на проекта: Започна ново пътуване, където идеите могат лесно да бъдат реализирани с помощта на общност с отворен код (Благодарение на Arduino). Ето един начин · Огледайте се около себе си и наблюдавайте обкръжението си · Открийте проблеми, които трябва да бъдат
Как да получите изображения с висока разделителна способност от инструкции: 4 стъпки

Как да извлечете изображения с висока разделителна способност от инструкции: Наистина ли ви хареса тази инструкционна картина и искате да запишете копие с висока разделителна способност от нея? Тази страхотна малка функция лесно се пренебрегва