Управляем чем угодно откуда угодно

Точность gpio-event, с опытом и вопросами

Общие вопросы

Точность gpio-event, с опытом и вопросами

Сообщение eagafonov » 06 май 2014, 00:39

Я тут задался вопросом, а насколько точно gpio-event (http://wiki.virt2real.ru/wiki/Gpio-event) измерять положение входящих импульсов и получил интересный результат.

Вначале - как измерить.

В качестве эталона взял аппаратный PWM (http://wiki.virt2real.ru/wiki/PWM)
Период импульса - 1000 микросекунд, длительность импульса - 400 микросекунд. Параметры не случайны - это сравнимо с импульсами PPM, которые выдают RC пульты на выход.

Код: Выделить всё
echo "set con 43 pwm0" > /dev/v2r_pins
echo "set pwm 0 9600 24000" > /dev/v2r_pins


PWM0 проводом подключил к GPIO3 и законфигурил последний для получения gpio-event'ов

Мониторим передние фронты, без дебоунсинга.

echo "set gpio 3 input" > /dev/v2r_gpio
gpio-event 3:r:0


Получаем первые 1000 измерений и сваливаем в файл.
Код: Выделить всё
cat /dev/gpio-event  | head -1000 > gpio_1000.csv


CVS скачиваем, скармливаем в гуглодоки, добавляем пару функций/графиков и вот результат
https://docs.google.com/spreadsheets/d/ ... u6kQw/edit

Вывод №1 - период крутится рядом с ожидаемым значением 1000 микросекунд, с разлётом +-2 микросекунды. Измерялка довольно точная получается.

Вывод №2 - есть строго периодические вылеты (> +- 5 микросекунды), которые хорошо видно на графиках.
Судя по таймингам, "вылет" обусловлен тем, что один импульс как бэ сдвинут относительно соседей.

Период "вылетов" примерно 20 отсчётов или 50Hz.

Варианта два - или аппаратный PWM подглючивает (что маловероятно), или вмешивается переключение задач (что более вероятно), или ещё что-то с частотой 50Hz.

Есть идеи откуда может взяться "50Hz" ?

Завтра попробую с другими частотами и приоритетами процессов поиграться.

Идеи? Вопросы? Комментарии?
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

Re: Точность gpio-event, с опытом и вопросами

Сообщение phoenix367 » 06 май 2014, 01:39

Есть идея использовать микроконтроллер для декодирования PPM сигнала. Тогда можно будет складывать коды в буфер, а виртурилка по прерыванию от контроллера будет их оттуда считывать, когда ей удобно и выполнять переданные команды. А декодировать такие вещи на не Hard RealTime системе - глухой номер. Можно попробовать накатить на ядро патчи Xenomai, но там работы на полгода минимум, поскольку надо кучу драйверов переписывать.
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Точность gpio-event, с опытом и вопросами

Сообщение eagafonov » 06 май 2014, 16:46

Вообще всё это чревато, например, фантомными вылетами в измерении дальности с помощью ультразвукового дальномера. Полметра при точности в сантиметры.

В случае с дальномером медианный фильтр вполне это отфильтрует, но вот фильтровать PPM с RC пульта чревато искусственными лагами в управлении.

Использовать отдельный микроконтроллер это была вторая идея :-) Лень паять и программировать ещё и контроллер перевесила. Да и просто интересно было.
Короче, "учитывайте это при планировании работ" ;-)
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

Re: Точность gpio-event, с опытом и вопросами

Сообщение eagafonov » 07 май 2014, 00:21

Результаты чтения с RC NineEagle J6 Pro
https://docs.google.com/spreadsheets/d/ ... sp=sharing

Имеется некий "дребезг" самого пульта и явные вылеты.
Похоже, медианный фильтр длины 3 должен сильно сгладить.
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

Re: Точность gpio-event, с опытом и вопросами

Сообщение eagafonov » 13 авг 2014, 23:22

Апдейт темки.

Дошли руки до декодирования 4-х PWM каналов от RC приёмника. Результаты удручают - значения гуляют в пределах 50мс в обе стороны, при диапазоне значений 1000мс-2000мс. Сказывается то, что спад PWM импульса одного канала совпадает с фронтом импульса следующего и обработчик прерываний с ума сходит. Летать с таким невозмжно.

картинка про PWM и PPM-sum для понимания масштаба трагедии

http://api.ning.com/files/dx5ykeJRAELCZ ... _FRAME.jpg

http://www.pabr.org/pxarc/doc/opwm_ppm.gif

Для сравнения, при декодировании ppm-sum были одиночные отклонения значений менее чем 10мс и отфильтровывались они медианным фильтром достаточно хорошо.

RC-приёмник с ppm-sum выходом в пути из поднедесной. Приедет - продолжу с ним эксперементы.

Ещё одно сравнение - с родным тренерским USB-свистком от RC-аппаратуры. Значения от него вообще не плавают после калибровки.
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск


Вернуться в Общий раздел ("не знаю куда написать")

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron