Микропроцессорный передатчик и приемники
Мы говорим про конкретный камень, атмеловский арм7 и еще немного про какие-то АВР-ы. А в какой железке до 10-15 баксов таймер может дергать 8-ю ножками?
focus.ti.com/docs/prod/…/msp430f5438.html Самый сильный из мелких, но и более мелких в том же семействе есть представители у которых >8 ног на таймер цепляется.
focus.ti.com/docs/prod/…/tms320f2806.html один из самых слабеньких представителей семейства самых сильненьких.
Армы не уважаю и не использую. Пока не столкнулся с задачей где бы они были реально в тему.
Цены указанны при закупке 100U, при регистрации проекта и на 10 штук дадут ту же цену, если не ниже.
p.s чуток слукавил. Очень сильно присматриваюсь к кортексам, но пока не ясно куда их использовать=))))
Какие в приемнике асинхронные события кроме приема и укадки данных из эфира (это если PCM формат), если PPM то вообще все проще гораздо. Кстати задержек в выставлении импульсов сервы можно избежать (минимизировать) если все сервы повесить на 1-2 порта. Тогда можно выставлять сразу весь порт в соответствии с текущим положением. ИМХО даже ATMEGA88 на высокой частоте клока справится.
В приемнике гораздо больше асинхронных событий требующих быстрой обработки, пульт проще приемника в этом отношении.
Какие в приемнике асинхронные события кроме приема и укадки данных из эфира (это если PCM формат), если PPM то вообще все проще гораздо. Кстати задержек в выставлении импульсов сервы можно избежать (минимизировать) если все сервы повесить на 1-2 порта. Тогда можно выставлять сразу весь порт в соответствии с текущим положением. ИМХО даже ATMEGA88 на высокой частоте клока справится.
Если просто взаимодействие с приемопередающим модулем по UART в стиле работы с черным ящиком, то справится даже оч простенький проц. А если модуль умный и его нужно конфигурировать, либо как-то иначе предобрабатывать данные, тогда появляется море асинхронных процессов, уложить которые в синхронные задачка довольно сложная.
Не удается уделять много времени этому проекту 😦 Но, учитывая, что радиокомплектов все равно пока нет, сильно не тороплюсь… Еще и полетать ведь хочется 😉
Вообщем, сегодня посидел часок. В результате на одной плате совместил функции приемника и передатчика и, пультом через плату порулил элеронами. Пока без возможности триммирования и установки диапазонов. И цикл достаточно простой и дубовый. Буду доводить до ума API и эмулировать работу комплектов связи через провода…
Задался вопросом, хватит ли 8 бит для передачи одного пропорционального канала? Или же необходима более высокая точность? Мне, как начинающему авиамоделисту, кажется, что достаточно, но тут я могу ошибаться…
В топовых стандартах заложено 2048отсчетов на канал. DSM2048 например.
В топовых стандартах заложено 2048отсчетов на канал. DSM2048 например.
В DSM2 - 1024, а вобще - вопрос интересный… Тот же Глайдер в свое время приводил доводы, что 128 достаточно, ну 256 - за злаза. На самом деле похоже на правду, точность у рук всеж не такая, чтоб микроны у стика ловить, но вот при работе всяких экспонент - уже становится более заметно.
По моим меркам - 512-1024 вполне достаточно, и лучше не надо. А топовые модели - это топовые, надо ж как-то покупателя убедить аппу обновлять. Отчасти наверно делают для тех, кому лень тягу на качалке в другую дырку сунуть, а проще расходы в 10% поставить.😉
Вот кстати, по модуляциям - производители пантуются кол-вом отсчетов, а о а-д преобразованиях что стики-цифра, что дешифратор-шим, что шим-сервоусилитель - че-то тишина. С какой битностью цифровые РМ работают - информации нет, да и цифровых интерфейсов между приемником и руль.машинками что-то не появляется…
Странно, да? Еслиб была необходимость, делали бы, а так - похоже это маркетинг.
Оффтоп: Когда-то, когда компьютеры были большими… Некая IDT выпустила “ВинЧип”, вроде как 200 мегагерц, с ММХ, и достаточно дешево на первый взгляд… Мода тогда на мегагерцы была, и дофига народу данный процик покупали. И всем плевать было, что в нем почему-то конвеера небыло и работал он не быстрее пентиума133. Вот имхо и тут уже на понты просто расчитано.
Леш, DSM2 -да, 1024, а вот DSM2048 -2048 =)
DSM2048 реализован в новых DX7SE, JR9303, JR12X и больше нигде!
У Royal EVO 12бит разрешение PPMа, но тем не менее тягу подвигать сразу в нужное место советуют=) А если подумать, ну вот захочется реализовать Nautic и чего?=) Касательно того хватит ли там 256 бит, простой пример: на планере есть два закрылка и два элерона, в тормозном режиме закрылки уходят вниз на 90 градусов, в рабочем ходят на угол до 5 градусов вверх-вниз. При этом режим полетный для них основной, именно тогда, когда 5 градусов из 95 расход. Итого при 256 отсчетах на канал серв получим что в основном режиме будет всего 13 отсчетов на полный ход закрылка в основном полетном режиме. А если 2048 отсчета, то число уже лучше-104.
Вот кстати, по модуляциям - производители пантуются кол-вом отсчетов, а о а-д преобразованиях что стики-цифра, что дешифратор-шим, что шим-сервоусилитель - че-то тишина. С какой битностью цифровые РМ работают - информации нет, да и цифровых интерфейсов между приемником и руль.машинками что-то не появляется…
Странно, да? Еслиб была необходимость, делали бы, а так - похоже это маркетинг.
SAM7 имеет шим с 16-битным счетчиком. Если за период взять 20 мс и опираться на частоту проца (48Мгц) с делителем 16 то период будет составлять 60 000 клоков, а весь диапазон управления сотавит 4200 клоков, что есть 12 бит. Если же делать мультиплексирование, то 4200 надо умножать на два, четыре, итд…
Что касается АЦП - 10 бит.
Леш, DSM2 -да, 1024, а вот DSM2048 -2048 =)
Касательно того хватит ли там 256 бит, простой пример: на планере есть два закрылка и два элерона, в тормозном режиме закрылки уходят вниз на 90 градусов, в рабочем ходят на угол до 5 градусов вверх-вниз. При этом режим полетный для них основной, именно тогда, когда 5 градусов из 95 расход. Итого при 256 отсчетах на канал серв получим что в основном режиме будет всего 13 отсчетов на полный ход закрылка в основном полетном режиме. А если 2048 отсчета, то число уже лучше-104.
У меня в приемнике и передатчике заложено конфигрурирование отклонений управляющих импульсов. Т.е. пользователь сам конфигурирует крайние положения серв, а значит те 8 бит заполнят весь требуемый диапазон. Плюс возможность переключения между несколькими заранее созданными конфигурациями. Т.е. переключателем можно увеличивать или уменьшать расходы. При этом все равно рабочим остается весь 8битный диапазон…
(АЦП 10 бит) -> (преобразования/математика 16 бит)->(передача 8бит)->(преобразования/математика 16 бит)->(управление 12бит).
PS: само собой 16 бит в преобразованиях только для упрощения, чтобы работать с двумя байтами. Само собой никакая математика из 10 битной точности 16-битную не создаст 😉
В DSM2 - 1024, а вобще - вопрос интересный… Тот же Глайдер в свое время приводил доводы, что 128 достаточно, ну 256 - за злаза. На самом деле похоже на правду, точность у рук всеж не такая, чтоб микроны у стика ловить, но вот при работе всяких экспонент - уже становится более заметно.
По моим меркам - 512-1024 вполне достаточно, и лучше не надо. А топовые модели - это топовые, надо ж как-то покупателя убедить аппу обновлять. Отчасти наверно делают для тех, кому лень тягу на качалке в другую дырку сунуть, а проще расходы в 10% поставить.
Если у вас цифровые быстрые машинки, то отличия в скорости и точности работы pcm1024 и G3 видны даже на глаз. Практика.Так что разрешилка в 256 и тем более 128 - это для дворполетов.
Так что разрешилка в 256 и тем более 128 - это для дворполетов.
Разве кто спорит??? Я вроде бы на 8 раз большую битность ориентир дал. А вот то, что вы разницу между 1024 и 2048 видите, лично я сильно удивляюсь… Ну пусть, серва отклоняется ±45градусов, значит вы на глаз отличаете углы с точностью до 0,04 градуса??? Ну ну, ща к вам все вертолетчики побегут угол атаки лопастей устанавливать, ибо угломер с такой точностью не справится. Более того, вы с такой точностью стики двигать умеете? Я восхищен! Я не умею… По работе испытываю определенные трудности с установкой с такой точностью вещицы, 1,8м длинной, а тут вы с такой точностью двухсантиметровый стик двигаете.
Ну и насчет быстрее - тоже под вопросом. Тут уж скорость не битностью определяется, а алгоритмом передатчика и приемника, да и серв. Ну а относительно битности - то тут уж наоборот получится, чем меньше бит,тем быстрее предать (в случае с цифрой), что вполне логично.
Если у вас цифровые быстрые машинки
Так что то, что вы видите - явный прирост скорости и точности - ни что иное, как фантазия сознания для оправдания потраченного бабала. Скоро, думаю, появится именно для вас и 4096 и 8192. И с каждым разом все будет еще лучше, еще быстрее.😁
А вот на основную мысль - никто внимания не обратил… Что вся эта точность съедается тем же шумом АЦП в рулевой машинке, люфтами механники, и абсолютно лишними в цифровой аппе (передатчик, приемник, машинки) цифро-аналог-цифро-преобразованиями ДЕКОДЕР-Р.МАШИНКА.
Если у вас цифровые быстрые машинки
Давайте без попугаев! О разрешающей способности рук тот же Глайдер не из головы писал, а на основе теории, подтвержденной практикой различных там умных институтов… “Быстрые и цифровые машинки” - фраза ни о чем! Какая разрешающая способность у такой машинки? 0,04 градуса??? Производитель гарантирует??? Почему-то в тех же прайсах из ттх на машинки максимум там напряжение питания, усилие, скорость перемещения. А вот про битность АЦП почему-то умалчивают. Я где-то в инете видел фотки каких-то “быстрых и цифровых” машинок (возможно хайтека) на микроконтроллере атмел мега -какая-то… Так вот, будет вам известно, что у ацп любой меги всего 10 бит, причем пара младших разрядов изрядно шумят. Т.е. реально можно говорить только о 8, либо о програмном усреднении. Ну пость теже 10 бит, но это максимум 1024 бита, минус не полное использование “краев диаппазона”… Ну как даже теоритически вы увидите 0,04 градуса, когда машинка позволяет “по электроннике” 0.08 градуса. Безлюфтовые редуктора в машинки не ставят, подшипник полюбому хоть сколько-то, но люфтит…
Короче, возьмите два микрометра. Одним двигайте стик, вторым меряйте отклонение своей рулевой машинки. Насчитаете 2048 дискретов, с меня пузырь.
ATMEGA88 например на 20 МГц справится, 1 команда выполняется 50 нс. За 5 команд в принципе можно успеть свалить из другого более низкоприоритетного прерывания и выставить ноги управления сервами. Другое дело что для нескольких каналов все равно появится задержка, то есть каналы НЕ одновременно будут изменяться.
По первой части: какое вам нужно разрешение на машинке? 1024 бит(разных положений) хватит? Считаем : (0,001 / 1024) / (1 / 20 МГц) = 19,5 команд. Вполне достаточно для переключений - думаю машинка этого джиттера и не заметит.
По второй части: кто вам сказал, что машинки рулятся одновременно? В простейшем приемнике управляющие импульсы идут в той последовательности, как они стоят в PPM пакете. А раз не нужна одновременность, то можно управлять машинками по очереди.
В DSM2 - 1024, а вобще - вопрос интересный…
, но вот при работе всяких экспонент - уже становится более заметно.
По мне для экспонент важнее битность расчетов, чем передачи - что бы не накапливать ошибки.
Короче, возьмите два микрометра. Одним двигайте стик, вторым меряйте отклонение своей рулевой машинки. Насчитаете 2048 дискретов, с меня пузырь.
у меня нет желания что-либо доказывать, и тем более вам. Это опыт, просто опыт.
А я уже сделал аппаратуру радиоуправления на модулях XBee и МК LPC2131.
Связь двунаправленная и можно получать с борта любую информацию.
Правда дальность связи с надёжность радиоканала ещё не испытывал и делаю не самолёт, а машину.
А я уже сделал аппаратуру радиоуправления на модулях XBee и МК LPC2131.
Связь двунаправленная и можно получать с борта любую информацию.
Правда дальность связи с надёжность радиоканала ещё не испытывал и делаю не самолёт, а машину.
Приятно услышать единомышленника! Это же практически один в один то же самое. Платы разводили? Или делали на отладочных платах? Когда проверите надежность радиоканала, отпишите пожалуйста… Чтобы знать на что рассчитывать.
Платы разводил…
Вот поставил камеру KPC-500-B и приёмник с передатчиком RT 1000.
Снял ролик.
Управление теряется в соседней комнате.
Очень хорошие помехи идут от видео-передатчика.
Да и от двигателей тоже фонит…
По поводу 2048бит- я думаю, это излишество. Точность передачи положения машинки достаточна, если если если количество положений вдвое больше чем разрешающая способность машинки по углу при нулевой нагрузке.
Для большинства машинок это как раз и есть 256-512 бит, в крайнем случае- 1024бит.
Исключение составляют специализированные сервы с широким диапазоном отклонения и энкодером как датчиком положения, но их в моделизме применяют редко 😃
Испытания некоторых моделей цифровых футабовских серв - показали, что ни одна из тестируемых серв не способна отработать 5us изменение канального импульса. (возможно поэтому на стандартных сервотестерах 10us шаг).
Тестировались сервы стандартного размера, но разного усилия и скорости, 4 модели. Названия моделей скажу , если надо-позже, данные на работе.
По поводу того, что точности ±6 позиций вашего закрылка вам не хватит- это только кажущиеся предположение. Во первых- большее число позиций машинка скорее всего не отработает под полетной нагрузкой, а во вторых- человек редко рулит с высокой точностью- все движения человека носят преимущественно импульсный характер.
По поводу программного вывода на машинки для AVR - если не использовать таймера вообще- то на 16Мгц можно формировать импульсы для 6 машинок за длин цикл с джиттером не более 2us (при двухбайтных значениях машинок)
Однако для этого на время вывода (2.2ms максимум) нельзя заниматься ничем другим 😃 - прерывания должны быть исключены.
Если такое время не вписывается во временную диаграмму вашего устройства- можно пойти другим путем: формировать импульсы одним таймером в последовательном коде, а на выходе поставить сдвиговый регистр или, что удобнее, счетчик Джонсона (4007, кажется).
В таком случае необходимо предусмотреть минимальное время отклика системы на прерывание от этого таймера, равное минимальному канальному импульсу+время обработки прерывания, и еще некоторый запас для работы внешнего счетчика, т.е около 700-800мкс. В самом прерывании надо будет только записать в регистр сравнения длительность соответствующего канального импульса, да еще инкрементировать счетчик канальных импульсов, т.е очень быстро.
По поводу 2048бит- я думаю, это излишество…
Для большинства машинок это как раз и есть 256-512 бит, в крайнем случае- 1024бит.
“256-512 бит…1024бит” В этих словах чувствуются знания и опыт. Спасибо, поржал, самому то не смешно?! Мы тут типа про 11.5 бита пока говорили всего, а у вас сразу 256? Согласен 256 хватит всем.
Снял ролик.
Куда видео писал? Процом на борт, передавал по каналу или просто по проводу? Можно ссылку на инфу по RT-1000? Что-то не смог найти в нете.
По поводу программного вывода на машинки для AVR - если не использовать таймера вообще- то на 16Мгц можно формировать импульсы для 6 машинок за длин цикл с джиттером не более 2us (при двухбайтных значениях машинок)
Если есть возможность запретить прерывания на 2.2ms, могу предложить метод, как имея джиттер не хуже 1/1024us и даже 1/2048us, выдавать сигнал на 8 машинок. Только обычно это не приемлемо, т.к. есть задачи требующие гораздо более высокой скорости реакции.
Так вот, будет вам известно, что у ацп любой меги всего 10 бит, причем пара младших разрядов изрядно шумят. Т.е. реально можно говорить только о 8, либо о програмном усреднении. Ну пость теже 10 бит, но это максимум 1024 бита, минус не полное использование “краев диаппазона”…
Вы говорите об интегральной или дифференциальной нелинейности? Для наших применений важна именно дифференциальная нелинейность, а она гораздо лучше указанной Вами. При желании из AVR-ных АЦП легко получают 12-битное разрешение при приемлемом самплрэйте.
Более того, вы с такой точностью стики двигать умеете? Я восхищен! Я не умею…
А я умею, при 50-80% экспонент это не большая проблема. А еще тримера умеют, и миксы. А еще есть самолеты, на которых это заметно.
“256-512 бит…1024бит” В этих словах чувствуются знания и опыт. Спасибо, поржал, самому то не смешно?! Мы тут типа про 11.5 бита пока говорили всего, а у вас сразу 256? Согласен 256 хватит всем.
Нет не смешно. Я неправильно написал, имел в виду количество положений машинки на протяжении управляющего интервала.
Возможно, мы о разных вещах говорим. Давайте введем понятие “разрешающей способности серво по управляющему сигналу”
Ставим на серву рычаг длиной 150-200мм, чтоб были заметны малые отклонения, и подключаем серву к испытательному генератору.
5us шаг изменения импульса грубо соответствует 256 позициям? то есть 8 бит. (с некоторым запасом)
2.5us - 512, то есть 9бит.
Я утверждаю, что использовать более чем 1-2us разрешение- это бессмысленно для большинства серв. 2048- это 11бит- не более чем пустое рекламное завлечение, можно и 16 и 24бита сделать, , а толку?
Если есть возможность запретить прерывания на 2.2ms, могу предложить метод, как имея джиттер не хуже 1/1024us и даже 1/2048us, выдавать сигнал на 8 машинок. Только обычно это не приемлемо, т.к. есть задачи требующие гораздо более высокой скорости реакции.
Поделитесь с общественностью, пожалуйста 😃
Вы точно не описались- менее 1ns? может, все-таки 1/1024 ms? ибо 1ns - это круто, это уже ниже чем джиттер опорного кварцевого генератора процессора:)
Я писал про обычный цикл написанный на с, практически без оптимизации, только переменные в регистрах желательно поместить- быстрее работает 😃