Микропроцессорный передатчик и приемники

Boroda-msk
Володимир:

Работают фронты, что для цифровой техники позапрошлый век. “Такие расстояния” - это около метра, а то и больше. Рядом с силовыми проводами а-ля электросварка и точно с такими же фронтами токов…

Переходите на оптоволокно… 😃

an2an
Boroda-msk:

Переходите на оптоволокно…

Согласованной дифференциальной линии будет достаточно.

avalanch

Исключить полностью возможно (даже без аппаратного ШИМ), если прогу аккуратненько написать. А приемлемые для сервы рамки - это сколько мкс в цифрах ?

an2an:

Исключить его полностью, в такой реализации почти невозможно, но и загнать в приемлемые рамки - задача не простая.

an2an
avalanch:

Исключить полностью возможно (даже без аппаратного ШИМ), если прогу аккуратненько написать. А приемлемые для сервы рамки - это сколько мкс в цифрах ?

Современная аппаратура имеет разрешение 11 бит, что соответствует примерно 500 наносекунд, джитер хочется иметь хотябы вдвое меньше разрешения, иначе нахера оно нужно… Даже при использовании вложенных прерываний обеспечить такой джитер будет ооооочень сложно, если у вас есть потребности обрабатывать и другие прерывания.

avalanch

ATMEGA88 например на 20 МГц справится, 1 команда выполняется 50 нс. За 5 команд в принципе можно успеть свалить из другого более низкоприоритетного прерывания и выставить ноги управления сервами. Другое дело что для нескольких каналов все равно появится задержка, то есть каналы НЕ одновременно будут изменяться. ПЛИС конечно справится с такой задачей гораздо лучше. Даже не предполагал что такая проблема сделать хороший многоканальный кодер или декодер. Спасибо за разъяснения.

an2an:

что соответствует примерно 500 наносекунд, джитер хочется иметь хотябы вдвое меньше разрешения

Aleksey_Gorelikov
realsystem:

А разве openservo недостаточно? Там команды на сервы поступают по I2C.

+1, да и у Конзе есть прошивка к китайским регулям (копиям джети 18) с управлением по и2с. Правда Конзе не из-за помехозащищенности вроде, а ради быстродействия для ХУФО новый борт изобретал… Но всеравно, принципиально новая цифровая электронника уже полным комплектом!

an2an

В принципе можно многое, я в свое время поприседал когда делал декодер PCM1024 на восьмой меге. Гораздо лучше делать это аппаратно. И еще неплохо бы высталять данные в каналы одновременно, т.к. если машинки должны работать синхронно (например половинки РВ), то не гоже делать меж ними задержку…

Кстати, в АВР нет ведь управления приоритетами прерываний?

avalanch

Тут надо определиться: Вам ехать или шашечки, ну в смысле разрабатывать аппаратуру или летать ? Если летать и оттачивать свое мастерство как пилота то лучше взять готовое, проверенное не одной тысячой любителей этого дела и профи. Если разрабатывать аппаратуру, то как говорится в добрый путь.

an2an:

В принципе можно многое…

Явного нет, но можно сделать. При входе в низкоприоритетное прерывание выставить флаг разрешения прерываний. Тогда при приходе высокоприоритетного, контроллер уйдет на него. Естественно при этом не забыть сохранить статус и другие нужные регистры.

Кстати, в АВР нет ведь управления приоритетами прерываний?

an2an
avalanch:

Явного нет, но можно сделать. При входе в низкоприоритетное прерывание выставить флаг разрешения прерываний. Тогда при приходе высокоприоритетного, контроллер уйдет на него. Естественно при этом не забыть сохранить статус и другие нужные регистры.

Это я знаю, но прерывание от таймера не самое высокоприоритетное, значит более приоритетными пользоваться нельзя или почти нельзя…

tumbzik

Не такая уж большая проблема, если процессор имее нормальный развитОй модуль таймера, например как TMS320F28xx, модуль которого позволяет легко реализовать как типичный шим так и PPM, при этом ядро будет радостно спать всё время, кроме того момента, когда нужно изменить интервал. А если очень хочется поставить в железку говнопроц, то простенькая, маленькая плисина, типа XC9500XL или если нравится Альтера-MAX3000 и в путь. Там даже знать то ничего не нужно, схему на вентилях нарисовать сможет любой хоть сколь нибудьпонимающий что такое цифровая электроника.

Ксати за примером готового пульта особенно далеко ходить не нужно. Есть такой замечательный аппарат Multiplex Royal EVO. Работает так: формирует PPM, а в паузах, пока крутится таймер-обсчитывает математику. Прога написана так, что исключает коллизии и к моменту, когда нужно выпулить очередные новые данные, они уже всегда готовы.

an2an

Так генерить PPM - не проблема, одной ножкой таймер завсегда дергать умеет, надо всего лишь успеть подсунуть новое значение до следующего срабатывания таймера, а вот дергать 8-ю ногами таймер не умеет. В приемнике гораздо больше асинхронных событий требующих быстрой обработки, пульт проще приемника в этом отношении.

tumbzik
an2an:

а вот дергать 8-ю ногами таймер не умеет.

Кто вам такое сказал? Всё зависит от устройства этого таймера и числа каналов=)

an2an

Мы говорим про конкретный камень, атмеловский арм7 и еще немного про какие-то АВР-ы. А в какой железке до 10-15 баксов таймер может дергать 8-ю ножками?

tumbzik

focus.ti.com/docs/prod/…/msp430f5438.html Самый сильный из мелких, но и более мелких в том же семействе есть представители у которых >8 ног на таймер цепляется.
focus.ti.com/docs/prod/…/tms320f2806.html один из самых слабеньких представителей семейства самых сильненьких.
Армы не уважаю и не использую. Пока не столкнулся с задачей где бы они были реально в тему.
Цены указанны при закупке 100U, при регистрации проекта и на 10 штук дадут ту же цену, если не ниже.
p.s чуток слукавил. Очень сильно присматриваюсь к кортексам, но пока не ясно куда их использовать=))))

avalanch

Какие в приемнике асинхронные события кроме приема и укадки данных из эфира (это если PCM формат), если PPM то вообще все проще гораздо. Кстати задержек в выставлении импульсов сервы можно избежать (минимизировать) если все сервы повесить на 1-2 порта. Тогда можно выставлять сразу весь порт в соответствии с текущим положением. ИМХО даже ATMEGA88 на высокой частоте клока справится.

an2an:

В приемнике гораздо больше асинхронных событий требующих быстрой обработки, пульт проще приемника в этом отношении.

tumbzik
avalanch:

Какие в приемнике асинхронные события кроме приема и укадки данных из эфира (это если PCM формат), если PPM то вообще все проще гораздо. Кстати задержек в выставлении импульсов сервы можно избежать (минимизировать) если все сервы повесить на 1-2 порта. Тогда можно выставлять сразу весь порт в соответствии с текущим положением. ИМХО даже ATMEGA88 на высокой частоте клока справится.

Если просто взаимодействие с приемопередающим модулем по UART в стиле работы с черным ящиком, то справится даже оч простенький проц. А если модуль умный и его нужно конфигурировать, либо как-то иначе предобрабатывать данные, тогда появляется море асинхронных процессов, уложить которые в синхронные задачка довольно сложная.

Usr1

Не удается уделять много времени этому проекту 😦 Но, учитывая, что радиокомплектов все равно пока нет, сильно не тороплюсь… Еще и полетать ведь хочется 😉

Вообщем, сегодня посидел часок. В результате на одной плате совместил функции приемника и передатчика и, пультом через плату порулил элеронами. Пока без возможности триммирования и установки диапазонов. И цикл достаточно простой и дубовый. Буду доводить до ума API и эмулировать работу комплектов связи через провода…

Задался вопросом, хватит ли 8 бит для передачи одного пропорционального канала? Или же необходима более высокая точность? Мне, как начинающему авиамоделисту, кажется, что достаточно, но тут я могу ошибаться…

tumbzik

В топовых стандартах заложено 2048отсчетов на канал. DSM2048 например.

Aleksey_Gorelikov
tumbzik:

В топовых стандартах заложено 2048отсчетов на канал. DSM2048 например.

В DSM2 - 1024, а вобще - вопрос интересный… Тот же Глайдер в свое время приводил доводы, что 128 достаточно, ну 256 - за злаза. На самом деле похоже на правду, точность у рук всеж не такая, чтоб микроны у стика ловить, но вот при работе всяких экспонент - уже становится более заметно.
По моим меркам - 512-1024 вполне достаточно, и лучше не надо. А топовые модели - это топовые, надо ж как-то покупателя убедить аппу обновлять. Отчасти наверно делают для тех, кому лень тягу на качалке в другую дырку сунуть, а проще расходы в 10% поставить.😉

Вот кстати, по модуляциям - производители пантуются кол-вом отсчетов, а о а-д преобразованиях что стики-цифра, что дешифратор-шим, что шим-сервоусилитель - че-то тишина. С какой битностью цифровые РМ работают - информации нет, да и цифровых интерфейсов между приемником и руль.машинками что-то не появляется…
Странно, да? Еслиб была необходимость, делали бы, а так - похоже это маркетинг.

Оффтоп: Когда-то, когда компьютеры были большими… Некая IDT выпустила “ВинЧип”, вроде как 200 мегагерц, с ММХ, и достаточно дешево на первый взгляд… Мода тогда на мегагерцы была, и дофига народу данный процик покупали. И всем плевать было, что в нем почему-то конвеера небыло и работал он не быстрее пентиума133. Вот имхо и тут уже на понты просто расчитано.

tumbzik

Леш, DSM2 -да, 1024, а вот DSM2048 -2048 =)
DSM2048 реализован в новых DX7SE, JR9303, JR12X и больше нигде!
У Royal EVO 12бит разрешение PPMа, но тем не менее тягу подвигать сразу в нужное место советуют=) А если подумать, ну вот захочется реализовать Nautic и чего?=) Касательно того хватит ли там 256 бит, простой пример: на планере есть два закрылка и два элерона, в тормозном режиме закрылки уходят вниз на 90 градусов, в рабочем ходят на угол до 5 градусов вверх-вниз. При этом режим полетный для них основной, именно тогда, когда 5 градусов из 95 расход. Итого при 256 отсчетах на канал серв получим что в основном режиме будет всего 13 отсчетов на полный ход закрылка в основном полетном режиме. А если 2048 отсчета, то число уже лучше-104.

Usr1
Aleksey_Gorelikov:

Вот кстати, по модуляциям - производители пантуются кол-вом отсчетов, а о а-д преобразованиях что стики-цифра, что дешифратор-шим, что шим-сервоусилитель - че-то тишина. С какой битностью цифровые РМ работают - информации нет, да и цифровых интерфейсов между приемником и руль.машинками что-то не появляется…
Странно, да? Еслиб была необходимость, делали бы, а так - похоже это маркетинг.

SAM7 имеет шим с 16-битным счетчиком. Если за период взять 20 мс и опираться на частоту проца (48Мгц) с делителем 16 то период будет составлять 60 000 клоков, а весь диапазон управления сотавит 4200 клоков, что есть 12 бит. Если же делать мультиплексирование, то 4200 надо умножать на два, четыре, итд…
Что касается АЦП - 10 бит.

tumbzik:

Леш, DSM2 -да, 1024, а вот DSM2048 -2048 =)
Касательно того хватит ли там 256 бит, простой пример: на планере есть два закрылка и два элерона, в тормозном режиме закрылки уходят вниз на 90 градусов, в рабочем ходят на угол до 5 градусов вверх-вниз. При этом режим полетный для них основной, именно тогда, когда 5 градусов из 95 расход. Итого при 256 отсчетах на канал серв получим что в основном режиме будет всего 13 отсчетов на полный ход закрылка в основном полетном режиме. А если 2048 отсчета, то число уже лучше-104.

У меня в приемнике и передатчике заложено конфигрурирование отклонений управляющих импульсов. Т.е. пользователь сам конфигурирует крайние положения серв, а значит те 8 бит заполнят весь требуемый диапазон. Плюс возможность переключения между несколькими заранее созданными конфигурациями. Т.е. переключателем можно увеличивать или уменьшать расходы. При этом все равно рабочим остается весь 8битный диапазон…

(АЦП 10 бит) -> (преобразования/математика 16 бит)->(передача 8бит)->(преобразования/математика 16 бит)->(управление 12бит).

PS: само собой 16 бит в преобразованиях только для упрощения, чтобы работать с двумя байтами. Само собой никакая математика из 10 битной точности 16-битную не создаст 😉

toreo
Aleksey_Gorelikov:

В DSM2 - 1024, а вобще - вопрос интересный… Тот же Глайдер в свое время приводил доводы, что 128 достаточно, ну 256 - за злаза. На самом деле похоже на правду, точность у рук всеж не такая, чтоб микроны у стика ловить, но вот при работе всяких экспонент - уже становится более заметно.
По моим меркам - 512-1024 вполне достаточно, и лучше не надо. А топовые модели - это топовые, надо ж как-то покупателя убедить аппу обновлять. Отчасти наверно делают для тех, кому лень тягу на качалке в другую дырку сунуть, а проще расходы в 10% поставить.

Если у вас цифровые быстрые машинки, то отличия в скорости и точности работы pcm1024 и G3 видны даже на глаз. Практика.Так что разрешилка в 256 и тем более 128 - это для дворполетов.

Aleksey_Gorelikov
toreo:

Так что разрешилка в 256 и тем более 128 - это для дворполетов.

Разве кто спорит??? Я вроде бы на 8 раз большую битность ориентир дал. А вот то, что вы разницу между 1024 и 2048 видите, лично я сильно удивляюсь… Ну пусть, серва отклоняется ±45градусов, значит вы на глаз отличаете углы с точностью до 0,04 градуса??? Ну ну, ща к вам все вертолетчики побегут угол атаки лопастей устанавливать, ибо угломер с такой точностью не справится. Более того, вы с такой точностью стики двигать умеете? Я восхищен! Я не умею… По работе испытываю определенные трудности с установкой с такой точностью вещицы, 1,8м длинной, а тут вы с такой точностью двухсантиметровый стик двигаете.

Ну и насчет быстрее - тоже под вопросом. Тут уж скорость не битностью определяется, а алгоритмом передатчика и приемника, да и серв. Ну а относительно битности - то тут уж наоборот получится, чем меньше бит,тем быстрее предать (в случае с цифрой), что вполне логично.

Если у вас цифровые быстрые машинки

Так что то, что вы видите - явный прирост скорости и точности - ни что иное, как фантазия сознания для оправдания потраченного бабала. Скоро, думаю, появится именно для вас и 4096 и 8192. И с каждым разом все будет еще лучше, еще быстрее.😁

А вот на основную мысль - никто внимания не обратил… Что вся эта точность съедается тем же шумом АЦП в рулевой машинке, люфтами механники, и абсолютно лишними в цифровой аппе (передатчик, приемник, машинки) цифро-аналог-цифро-преобразованиями ДЕКОДЕР-Р.МАШИНКА.

toreo:

Если у вас цифровые быстрые машинки

Давайте без попугаев! О разрешающей способности рук тот же Глайдер не из головы писал, а на основе теории, подтвержденной практикой различных там умных институтов… “Быстрые и цифровые машинки” - фраза ни о чем! Какая разрешающая способность у такой машинки? 0,04 градуса??? Производитель гарантирует??? Почему-то в тех же прайсах из ттх на машинки максимум там напряжение питания, усилие, скорость перемещения. А вот про битность АЦП почему-то умалчивают. Я где-то в инете видел фотки каких-то “быстрых и цифровых” машинок (возможно хайтека) на микроконтроллере атмел мега -какая-то… Так вот, будет вам известно, что у ацп любой меги всего 10 бит, причем пара младших разрядов изрядно шумят. Т.е. реально можно говорить только о 8, либо о програмном усреднении. Ну пость теже 10 бит, но это максимум 1024 бита, минус не полное использование “краев диаппазона”… Ну как даже теоритически вы увидите 0,04 градуса, когда машинка позволяет “по электроннике” 0.08 градуса. Безлюфтовые редуктора в машинки не ставят, подшипник полюбому хоть сколько-то, но люфтит…

Короче, возьмите два микрометра. Одним двигайте стик, вторым меряйте отклонение своей рулевой машинки. Насчитаете 2048 дискретов, с меня пузырь.

Nick_Shl
avalanch:

ATMEGA88 например на 20 МГц справится, 1 команда выполняется 50 нс. За 5 команд в принципе можно успеть свалить из другого более низкоприоритетного прерывания и выставить ноги управления сервами. Другое дело что для нескольких каналов все равно появится задержка, то есть каналы НЕ одновременно будут изменяться.

По первой части: какое вам нужно разрешение на машинке? 1024 бит(разных положений) хватит? Считаем : (0,001 / 1024) / (1 / 20 МГц) = 19,5 команд. Вполне достаточно для переключений - думаю машинка этого джиттера и не заметит.
По второй части: кто вам сказал, что машинки рулятся одновременно? В простейшем приемнике управляющие импульсы идут в той последовательности, как они стоят в PPM пакете. А раз не нужна одновременность, то можно управлять машинками по очереди.

Aleksey_Gorelikov:

В DSM2 - 1024, а вобще - вопрос интересный…
, но вот при работе всяких экспонент - уже становится более заметно.

По мне для экспонент важнее битность расчетов, чем передачи - что бы не накапливать ошибки.

toreo
Aleksey_Gorelikov:

Короче, возьмите два микрометра. Одним двигайте стик, вторым меряйте отклонение своей рулевой машинки. Насчитаете 2048 дискретов, с меня пузырь.

у меня нет желания что-либо доказывать, и тем более вам. Это опыт, просто опыт.