CRSF to PWM


30.06.2025

Для експериментів мені знадобилося отримати PWM сигнал від ELRS приймача у якого є тільки RX, TX виводи. Зараз дуже багато приймачів, які мають лише UART, по якому працює CRSF протокол. Звісно, можна придбати приймач вже з PWM виходами. Та що з таким приймачем робити потім, після завершення експериментів? У мене і так багато залізяччя, котре лежить непотребом. А звичайний приймач я знайду куди застосувати.

Існують плати перетворювачі CRSF -> PWM від відомих і не дуже фірм, та коштують вони інколи трохи не адекватно, з огляду на примітивність функціоналу. Тому вирішив зробити свою реалізацію на найдешевшому мікроконтролері, який у мене був - STM32G030F6P6. І вже до обіду був готовий початковий варіант проєкту. Реалізація цього задуму дозволить надалі використовувати стандартний радіо пульт з ELRS або TBS для реалізації віддаленого керування будь-чим. Навіть тоді, коли нам потрібно буде не тільки PWM на виході, а щось цікавіше.

У підсумку маємо схему, яка:

  • перетворює сигнал з приймача у 5 PWM сигналів. Можна використовувати будь-який приймач, який працює з CRSF протоколом на UART порту. У проєкт використовується швидкість порту 420000 Bits/s
  • дозволяє встановити показники PWM за замовчуванням. Ці показники застосовуються коли плата вмикається і зв'язку між приймачем і пультом поки що немає
  • дозволяє встановити FAILSAFE показники PWM. Ці показники застосовуються коли зникає зв'язок між приймачем і пультом
  • вимірює напругу і відправляє телеметрію на пульт керування

Спеціальної плати не робив, використав тестову плату STM32G030F6P6, тому схеми немає. Думаю, підключення зрозуміле з цієї картинки.

Для вимірювання напруги батареї зробив подільник напруги з двох резисторів. З подільника напруга подається на вхід ADC1(PA4). Значення резисторів вказується у проєкті. Шукай рядки:

#define ADC_Voltage_R1 20000
#define ADC_Voltage_R2 4700

Щоб встановити PWM за замовчуванням, треба, щоб був встановлений зв'язок між пультом і приймачем. Далі встановити необхідні показники на пульті керуванні та замкнути на платі вхід B7(B8) на землю.

Щоб налаштувати FAILSAFE PWM, встановити необхідні показники на пульті керуванні та замкнути на платі вхід B9(C14) на землю.

Можна було б припаяти кнопки, та такі маніпуляції виконуються лише один раз.

Переваги проєкту: можливість використовувати будь-який приймач для реалізації своїх проєктів, надалі можна переробити цей проєкт для будь-яких інших рішень, перенести на інші мікроконтролери STM32. Недоліки: мікроконтролер працює на внутрішньому RC генераторі, який не є точним, тому показники PWM будуть не супер точними.

На фото плата з перетворювачем напруги на 5V для живлення плати і приймача вже у термоусадці, та припаяним до неї ERLS приймачем.

Завантажити проєкт можна тут: https://git.avislab.com/andre/STM32G030_CRSF_TO_PWM

Схеми і прошивки
Коментарі:
Додати коментар
Code
* - обов'язкові поля

Архіви