Помогите с анализом PWM сигнала (от RC приемника)
- Войдите на сайт для отправки комментариев
Есть аппаратура радиоуправления (конкретно - Futaba 8fg. приемник R6208, который используется в обычном, не Fast режиме). Необходимо подключится к какому-либо из каналов приемника и в зависимости от сигнала PWM на этом канале сделать то или иное действие. Т.е., к примеру, если мы поднимаем стик управления на пульте, сигнал на приемнике в максимуме - зажигается красные светодиод, опускаем стик - сигнал в минимуме - зажгли синий светодиод. В идеале хотелось бы использовать (анализировать) одновременно несколько каналов и увеличить градацию, скажем, до 4 точек (к примеру, положение стика от +100 до +50; от 0 до +50; от 0 до -50 и от -50 до -100).
Пытался искать решение подобного вопроса, в том числе на зарубежных форумах. Нашел несколько постов, где рекомендуют считывать PPM сигнал, т.е. суммарный сигнал для всех каналов. Его надо брать с какой-то точки в приемнике. Для меня это слишком сложно, поскольку я физически не смогу подпаять проводок к микроскопической схеме приемника. Подключиться к стандартному разъему куда удобней, но о таком варианте считывания сигнала ничего доступно разжеванного не нашел.
Расскажите пожалуйста на пальцах, какую методику анализа такого сигнала я должен использовать в скетче: считывать каким-то образом его длительность или брать усредненное значение вольтажа? Есть ли какая-нибудь библиотека? Можно ли привести какой-нибудь элементарный пример?
График PWM сигнала хорошо изучил, опыт написания несложных скетчей имею.
увидеть бы ваш ШИМ на осциллограмме
а так
1) в прерывании отслеживать длительность HIGH (или LOW, не важно) и период. по скважности зажигать нужный светодиод. это если скважность постоянная до изменения положения стика
2) C или RC фильтром через диод сглаживать сигнал и отправлять на аналоговый вход, ну и ... дальше не сложно
попробуй такой код, но он для одного канала. в приемнике всеравно каждый канал отдельно вроде
преобразует PPM сигнал в углы
535 и 2385 это время для библиотеки servo ардуиновской. у твоей аппаратуры свои. их нужно определеить и вписать в формулу
а дальше из углов делай что хочешь. хочешь шимом управляй, хочешь релюшкой
увидеть бы ваш ШИМ на осциллограмме
Это выходы для подключения всяких серв. Просто стандартнейший сигнал . Для PulseIn работа. Если один канал.
Вот как много сигналов, да и одновременно считать- загадка, однако.....
Тут больше интересно все эти импульсы вместе-дружно начинаются или нет?
на любой плате 2 интеррупта. больше - мега в помощь. можно по каждому считать микросы или запускать счетчик (в этом не силен)
Тут больше интересно все эти импульсы вместе-дружно начинаются или нет?
Осциллографа у меня не, но лет 5 назад, когда я еще не знал и не умел пользоваться Ардуиной, я заказывал аналогичный девайс у одного знатока микроконтроллеров на местном радиорынке. Он писал прогу для PIC-а и сам разрабатывал полную схему. У него долго не получалось написать программу. Точно не помню, какой был глюк, но не работало. Тогда он пригласил меня к себе в мастерскую вместе со всей аппаратурой и подключил все 8 контактов приемника к осциллографу. График сигналов его очень удивил. Картина была, условно, следующая: 1, 4,5 каналы - сигнал начинается одновременно (и каждый имеет длину в зависимости от положения стика), 2 и 8 смещены на 20мс и тоже начинаются вместе. Каждый из остальных каналов смещается на 20мс, но какие-то не на 20мс относительно предыдущего, а на 40.
Если изобразить примитивно, то осциллограмма была примерно следующая (черточки - сигналы разной длины, длина черточки - условино полные 20 мс. Здесь я изобразил, что 3-й канал смещен относительно 7-го на 40мс.):
1 канал: _
2 канал: _
3канал: _
4 канал: _
5 канал: _
6 канал: _
7 канал: _
8 канал: _
Какова логика такого появления сигналов мы тогда так и не поняли. К тому же я уже не помню, какие именно каналы шли первыми, какие начинались одновременно и т.д. Да и жестко привязываться именно к этому приемнику не хотелось бы. А вдруг у другой модели (допустим 4-х канальной) все сигналы идут по очереди?
Просто стандартнейший сигнал . Для PulseIn работа.
Не могли бы вы более просто разъяснить, что вы имели ввиду?
попробуй такой код, но он для одного канала...
Посмотрел код - вроде бы должно работать, но не совсем понятно, почему задержку делают на 200мс - считывают только каждый 10-й сигнал или остальное время зарезервировано для считывания других каналов?
И совсем не понятно что это за временные промежутки 535 и 2385. Я понимаю, что это из библиотеки, но если пытаться анализировать временной промежуток другими средствами (чтобы впихнуть анализ 5-8 каналов) то хотелось бы знать конкретное назначение каждой величины. Странные числа, ничему не кратные. Вы, часом, не в курсе, что они обозначают?
почитай про сигнал ppm и узнаешь что у разных производителей эти значения разные
Подумалось...... Может быть специально сделан разбег по времени импульсов на сервы.
Чтобы они трогались с места в разное время, а не одновременно.
Для того чтобы пики их стартовых токов не складывались в большой пик тока потребления с источника питания.
Приедет FlySky- попробую глянуть....
Осциллографа у меня нет......
Есть у вас осциллограф, а при таких частотах он даже аналоговый:
https://www.google.ru/search?q=arduino+oscilloscope&newwindow=1&biw=1680...
Т.е., к примеру, если мы поднимаем стик управления на пульте, сигнал на приемнике в максимуме - зажигается красные светодиод, опускаем стик - сигнал в минимуме - зажгли синий светодиод. В идеале хотелось бы использовать (анализировать) одновременно несколько каналов и увеличить градацию, скажем, до 4 точек (к примеру, положение стика от +100 до +50; от 0 до +50; от 0 до -50 и от -50 до -100).
1. Вешаем на этот канал серву, хоть такую
http://www.ebay.com/sch/i.html?_sacat=0&_nkw=2.5g+servo&_frs=1
http://www.ebay.com/sch/i.html?_sacat=0&_nkw=3.7g+servo&_frs=1
http://www.ebay.com/sch/i.html?_sacat=0&_nkw=4.3g+servo&_frs=1
http://www.ebay.com/sch/i.html?_sacat=0&_nkw=micro+servo&rt=nc&LH_BIN=1.
И два микрика. Включаем ими свои лампочки. Без Ардуины.
2. Ставим к серве потенциометр. И analogRead на Ардуину.
тогда можно вскрыть серву и подпаятся к переменному резистору
.....тоже хотел написать....... но мелкие сервы.... ммммм .......лучше не разбирать.....
Посмотрте библиотеку ServoInput и ваша задача вам покажется простой как 2х2....
https://www.partsnotincluded.com/how-to-use-an-rc-controller-with-an-arduino/
Посмотрте библиотеку ServoInput и ваша задача вам покажется простой как 2х2....
https://www.partsnotincluded.com/how-to-use-an-rc-controller-with-an-arduino/
посту шесть лет однако, осень..."тихо сам с собою я веду беседу"...