CRSF to PWM
Для експериментів мені знадобилося отримати 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
Tags
smd brushless ssd1306 dc-dc sms ethernet atmega css ssd1331 usart exti 3d-printer bkp displays wifi i2c dma hih-4000 git raspberry-pi bme280 bmp280 encoder books battery max1674 mongodb meteo options capture examples lcd piezo eb-500 led esp8266 tim ngnix mpu-9250 usb java-script websocket programmator remap avr uart mpu-6050 rfid foc stm32 web sensors solar html python servo nvic gpio rtc rs-232 bldc motor pmsm nodemcu st-link docker gps barometer adc bluetooth flask flash eeprom dht11 mpx4115a timer watchdog pwm soldering
Архіви



