Страница 1 из 1
ШИМ
Добавлено: 03 июн 2019, 21:42
vfear
Всем привет
Имеется аппаратура и приемник FlySky.
Я так понимаю, что приемник выдает шим сигнал от аппаратуры.
Вопросы: как в flprog преобразовать этот сигнал от приемника в данные и отправить в УАРТ?
какие пины на уно подходят для чтения шим сигнала?
если питание на приемник отдельно подается, нужно объединить земли?
Отправлено спустя 5 часов 26 минут 23 секунды:
Делаю один проект, нужно через ардуино подключится к плате гироскутера по uart.
Прошу помощи по данному вопросу.
ШИМ
Добавлено: 03 июн 2019, 21:49
Ingwar
vfear писал(а): 03 июн 2019, 21:42
как в flprog преобразовать этот сигнал от приемника в данные и отправить в УАРТ?
Читайте в этом направлении
http://forum.rcdesign.ru/f87/thread240587.html
ШИМ
Добавлено: 04 июн 2019, 09:42
vfear
Да уж... не все так просто. Я думал готовое решение найти.

ШИМ
Добавлено: 04 июн 2019, 13:15
Ingwar
vfear писал(а): 04 июн 2019, 09:42
Да уж... не все так просто.
Ну если особая точность не нужна, то можно примитивно
http://arduino.ru/forum/apparatnye-vopr ... signal-kak
ШИМ
Добавлено: 04 июн 2019, 14:05
vfear
Не понимаю, пока)
Видел просто подключают pwm приемник к ардуинке и отправляют данные в уарт. Без особых заморочек, как это сделать?
Если в FLprog создать аналоговый вход и его соединить с блоком "отправка в уарт" будет работать?
ШИМ
Добавлено: 05 июн 2019, 12:28
SSSergeich
Вот кое-что на гитхабе
Отправлено спустя 6 минут 8 секунд:
На вскидку вот еще попалось
тут,
тут,
тут и
тут
ШИМ
Добавлено: 05 июн 2019, 15:10
vfear
Спасибо огромное, это то, что нужно
https://github.com/afiskon/pwm-ppm-deco ... WMRead.txt
и сразу еще вопрос - можно ли сделать блок для flprog под данный скетч? Например, что бы потом на основе выходных данных производить дальнейшие действия.
ШИМ
Добавлено: 08 июн 2019, 06:54
Ivan_Kornege
[ref]vfear[/ref], мне делал AVGN блок _не подойдет тебе ? Я его уже сохранил в 5 версии флпрог.
Reading_PWM_(CODE).ubi
Алгоритм:
При появлении импульса срабатывает прерывание по фронту сигнала(когда он возрастает с 0 до 1).
Сохраняем текущее время и устанавливаем прерывание на срез сигнала(переключение с 1 на 0).
При срабатывании прерывания на срез сохраняем разницу между текущим временем и записанным ранее, таким образом получаем длительность импульса. Переключаем прерывание обратно на фронт. Передаём данные через Arduino.
Остается только преобразовать время в микросекундах к требуемым единицам.