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



