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

Usr1
realsystem:

МК, ну их проект можно взять за основу, он вроде как отлажен

Главное чтобы у них API был достаточно отлажен…

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.