Передача данных между удаленными микроконтроллерами

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
grafalex
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср авг 19, 2020 10:26:46

Передача данных между удаленными микроконтроллерами

Сообщение grafalex »

Возникла тут у меня интересная задача - из центрального микроконтроллера посылать команды нескольким удаленными устройствам.
Связь односторонняя (от центрального устройства ведомым). Количество устройств от 10 до 20, удаление сравнительно небольшое - до 20м до дальнего. Все устройства связаны одним сигнальным проводом (помимо питания).

Помогите, пожалуйста, выбрать средство коммуникации и схемотехнику.

I2C и SPI отпадают, потому как требуют 2 сигнальных провода. CAN'а в этих микроконтроллерах нет. UART вроде как годится - в одну сторону можно передавать по существующему проводу. Но тут я не уверен в трех моментах
1) не будут ли множество подключенных на линию устройств влиять друг на друга?
2) центральный контроллер работает на напряжении 3.3В, тогда как ведомые на 5В. Не будет ли это препятствием к коммуникации? (на коротких расстояниях нет, но как на будет длинных?)
3) не будет ли больших наводок на больших расстояниях при условии, что передатчик работает на 3.3В?

Может быть стОит поставить транзистор на передатчике и усилить сигнал, например, до 12В перед выдачей на линию, а на другом конце транзистором вернуть в 5В?
Реклама
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Передача данных между удаленными микроконтроллерами

Сообщение BlackKilkennyCat »

1) будут конечно.
2) не будет, решается аппаратно
3) будут, но зависит от условий эксплуатации, а то может и грозозащиту придётся.

Вариантов, на самом деле, множество, в том числе и подача команд по питанию. Например, как у DiSEqC
Вложения
applic_info_PIC_microcontroller.pdf
DiSEqC
(129.25 КБ) 347 скачиваний
Реклама
iddqd
Нашел транзистор. Понюхал.
Сообщения: 156
Зарегистрирован: Вс сен 06, 2020 16:06:10

Re: Передача данных между удаленными микроконтроллерами

Сообщение iddqd »

1) Ну если вы на центральном подключите только TX, а на остальных только RX - тогда не будут особо. Но назад вы вообще тогда ничего передать не сможете. Чтобы все же в 2 стороны, придется сделать так или иначе "open drain". По минимуму делается диодом и резистором, но на 20 метров лучше вариант на транзисторах. Там же и более высокое напряжение можно сделать, если хочется.
2) 3.3TX -> 5V RX работать если и будет то на грани, на 20 метров надо преобразователь в честные 5 вольт.

И да, наводки возможны, особенно если это не экранированный провод и особенно если он брошен черти как. Это может испортить команды и с односторонней передачей - а вы уверены что это будет работать? Протокол с сильными чексумами потребуется как минимум.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Передача данных между удаленными микроконтроллерами

Сообщение VladislavS »

Дешевле положить нормальную дифференциальную линию под RS-485, чем потом носиться с бубном.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Передача данных между удаленными микроконтроллерами

Сообщение Ser60 »

Какие объёмы данных нужно передавать и с какой скоростью? Передаваемые данные одинаковые для всех приёмных устройств или избирательно? Вариант безпроводки рассматривался?
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Передача данных между удаленными микроконтроллерами

Сообщение BOB51 »

Постройте систему на основе сетей микроLAN.
В том числе и с учетом коммутационных ключей.
Там вообще только витая пара используется...
8)
Реклама
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Передача данных между удаленными микроконтроллерами

Сообщение roman.com »

Частотное кодирование. ))
1) работает по одному проводу
2) работает в обе стороны (дуплекс)
3) множество подключенных устройств не влияют друг на друга
4) работает при любом напряжении
5) работает при высоком уровне шума
Обработка сигнала.jpg
(195.12 КБ) 303 скачивания
И т.д.
grafalex
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср авг 19, 2020 10:26:46

Re: Передача данных между удаленными микроконтроллерами

Сообщение grafalex »

[uquote="Ser60",url="/forum/viewtopic.php?p=3933823#p3933823"]Какие объёмы данных нужно передавать и с какой скоростью? Передаваемые данные одинаковые для всех приёмных устройств или избирательно? Вариант безпроводки рассматривался?[/uquote]
Думаю 9600 будет достаточно, пакеты по 6-8 байт. Планирую дать каждому устройству уникальный ИДшник, а пакеты будут либо адресные, либо широковещательные для всех.

Вариант беспроводки рассматривался, но получается а) дорого (дороже чем UART) б) в эту тему еще погружаться нужно в) уже протянут провод 3x1.5 где можно пустить как питание, так и сигнал третьим проводом. Правда провод не экранирован и брошен черти как :)


У меня нет проблем с логической частью - я программист со стажем и мне не сложно реализовать хоть UART, хоть one wire, хоть другое кодирование.

Мой вопрос больше про схемотехнику, т.к. в этой части я не так силен.

iddqd писал(а):а вы уверены что это будет работать?
Ну вот именно с этим вопросом я и пришел :)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18637
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Передача данных между удаленными микроконтроллерами

Сообщение ARV »

на 9600 и дальности 20м с минимальным CRC на всякий пожарный, имхо, обычный RS232 будет работать без всяких фантазий.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
OKF
Это не хвост, это антенна
Сообщения: 1401
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Передача данных между удаленными микроконтроллерами

Сообщение OKF »

5в ТТЛ тоже, если рядом нет сварочных аппаратов. Но, простейшую грозозащиту я бы поставил.
Самсусамыч

Re: Передача данных между удаленными микроконтроллерами

Сообщение Самсусамыч »

[uquote="grafalex",url="/forum/viewtopic.php?p=3933723#p3933723"]UART вроде как годится - в одну сторону можно передавать по существующему проводу. Но тут я не уверен в трех моментах[/uquote]
В одном проекте видел такой подход к передаче данных по UART на ведомые МК от базового МК. Принцип такой: Все МК подключены последовательно. То есть вывод (Tx) ведущего соединяется с выводом (Rx) первого ведомого, а вывод (Tx) первого ведомого с выводом (Rx) второго ведомого и т.д. У каждого ведомого МК присвоен код. Ведущий передаёт код получателя и данные. Если данные предназначены для (допустим второму ведомому), то первый, приняв данные и видя, что они адресованы не ему, передаёт их дальше. Второй получив данные и видя что они как раз для него – выполняет команду не передовая дальше ничего. Правда в таком подходе есть жирный минус, если на линии выйдет из строя какой-то МК, то все последующие МК будут оторваны от ведущего.
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Передача данных между удаленными микроконтроллерами

Сообщение BlackKilkennyCat »

значит, надо закольцевать, а потом ещё лучами соединить каждого с каждым ;)
NStorm
Поставщик валерьянки для Кота
Сообщения: 1978
Зарегистрирован: Ср июл 17, 2013 13:55:57

Re: Передача данных между удаленными микроконтроллерами

Сообщение NStorm »

[uquote="grafalex",url="/forum/viewtopic.php?p=3933904#p3933904"]Вариант беспроводки рассматривался, но получается а) дорого (дороже чем UART) б) в эту тему еще погружаться нужно в) уже протянут провод 3x1.5 где можно пустить как питание, так и сигнал третьим проводом. Правда провод не экранирован и брошен черти как :)[/uquote]
Ну может не сейчас, а когда-нибудь пригодится: https://www.aliexpress.com/item/32833977085.html
По 31р за штучку приемник на 433 МГц. Такой же передатчик тоже за копейки находится - SYN115 модель.
Понятное дело, что всё-равно дороже "бесплатного" UART :) Но вдруг интересно будет. Погружаться не надо - один провод тот же самый, только по радио условно. Модуляция-демодуляция прозрачна, никаких настроек, тупые простые модули. Но для каких-нибудь радио-датчиков или наоборот - вполне рабочие штучки.
Самсусамыч

Re: Передача данных между удаленными микроконтроллерами

Сообщение Самсусамыч »

[uquote="BlackKilkennyCat",url="/forum/viewtopic.php?p=3933923#p3933923"]значит, надо закольцевать, а потом ещё лучами соединить[/uquote]
Можно конечно, но тогда придётся увеличивать число жил, а ТС хочет для передачи использовать лишь одну жилу. :)
BlackKilkennyCat
Собутыльник Кота
Сообщения: 2905
Зарегистрирован: Ср ноя 29, 2017 06:58:50

Re: Передача данных между удаленными микроконтроллерами

Сообщение BlackKilkennyCat »

Но линейная с разрывом тоже вполне нормальна и может даже быть полностью надежна. Например, если по ТЗ работа устройств, следующих за неисправным, в случае его неисправности бессмысленна и не требуется.
iddqd
Нашел транзистор. Понюхал.
Сообщения: 156
Зарегистрирован: Вс сен 06, 2020 16:06:10

Re: Передача данных между удаленными микроконтроллерами

Сообщение iddqd »

Частотное кодирование. ))
Современные uart'ы что-то типа такой картинки и делают, там оверсэмплинг же, x8, если не x16...
roman.com
Друг Кота
Сообщения: 9157
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Передача данных между удаленными микроконтроллерами

Сообщение roman.com »

Да, UART делает оверсэмплинг... Так же как и RS-232 и RS-485 и CAN и т.д.
Только работают они не далеко)) У них высокие требования по уровню сигнала и завалу фронтов. И они не имеют гальванической развязки.

Я говорю про старые модемы с частотным кодированием... Они работают на огромные расстояния (десятки километров по проводам и тысячи километров по радио). Работают при любом уровне сигнала. Имеют гальваническую развязку. Им не важны фронты... шумы... и т.д.
moped1.jpg
(100.53 КБ) 226 скачиваний
:tea:
iddqd
Нашел транзистор. Понюхал.
Сообщения: 156
Зарегистрирован: Вс сен 06, 2020 16:06:10

Re: Передача данных между удаленными микроконтроллерами

Сообщение iddqd »

А тут уже смотря кто и что хотел. Изначально хотели по 1 проводу, про развязку ни звука.

У того кто на фото... частотной модуляцией только низкие скорости, 9600 уже отнюдь не FM. QAM не хотели? И всякие эквалайзеры, прекодинг, удаление эха, процедура замера параметров секунд на 10 (link training). На это - 56, чтоли, МГц DSP и пару ядер по 28, чтоли, в помощь. И оно конечно работало на энные расстояния, однако там еще протокол с CRC и переотправкой был, на случай если все эти навороты все же не сработали. А если протокол коррекции запретить - такая штука очень интересный результат из порта выгружает.
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Передача данных между удаленными микроконтроллерами

Сообщение Ser60 »

[uquote="grafalex",url="/forum/viewtopic.php?p=3933904#p3933904"]Вариант беспроводки рассматривался, но получается а) дорого (дороже чем UART) б) в эту тему еще погружаться нужно ...[/uquote]Всё-же я за безпроводку через Bluetooth LE, даже если выйдет несколько дороже. Некоторые фирмы предлагают Bluetooth решения в стиле безпроводный UART. Если-бы я делал такую систему, то использовал-бы силлабовские модули семейства BGX. К тому-же они заводятся практически с нулевым вниканием, если по этому поводу имеются опасения.
Аватара пользователя
musor
Друг Кота
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Re: Передача данных между удаленными микроконтроллерами

Сообщение musor »

485 вам прописан или токовая петля осталное в топку...9600 это не 300бот..там уже 3м проблемные могут быть без спецчипок на концах
так что приемопередатчики линии обязателны
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Ответить

Вернуться в «Разные вопросы по МК»