Например TDA7294

Форум РадиоКот :: Просмотр темы - Передача данных между удаленными микроконтроллерами
Форум РадиоКот
https://radiokot.ru/forum/

Передача данных между удаленными микроконтроллерами
https://radiokot.ru/forum/viewtopic.php?f=62&t=174163
Страница 1 из 1

Автор:  grafalex [ Вт дек 01, 2020 00:14:49 ]
Заголовок сообщения:  Передача данных между удаленными микроконтроллерами

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

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

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

Может быть стОит поставить транзистор на передатчике и усилить сигнал, например, до 12В перед выдачей на линию, а на другом конце транзистором вернуть в 5В?

Автор:  BlackKilkennyCat [ Вт дек 01, 2020 00:44:17 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

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

Вариантов, на самом деле, множество, в том числе и подача команд по питанию. Например, как у DiSEqC

Вложения:
Комментарий к файлу: DiSEqC
applic_info_PIC_microcontroller.pdf [129.25 KiB]
Скачиваний: 228

Автор:  iddqd [ Вт дек 01, 2020 05:50:20 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

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

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

Автор:  VladislavS [ Вт дек 01, 2020 06:56:37 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

Дешевле положить нормальную дифференциальную линию под RS-485, чем потом носиться с бубном.

Автор:  Ser60 [ Вт дек 01, 2020 09:06:25 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

Какие объёмы данных нужно передавать и с какой скоростью? Передаваемые данные одинаковые для всех приёмных устройств или избирательно? Вариант безпроводки рассматривался?

Автор:  BOB51 [ Вт дек 01, 2020 09:56:52 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

Постройте систему на основе сетей микроLAN.
В том числе и с учетом коммутационных ключей.
Там вообще только витая пара используется...
8)

Автор:  roman.com [ Вт дек 01, 2020 10:25:09 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

Частотное кодирование. ))
1) работает по одному проводу
2) работает в обе стороны (дуплекс)
3) множество подключенных устройств не влияют друг на друга
4) работает при любом напряжении
5) работает при высоком уровне шума
Вложение:
Обработка сигнала.jpg [195.12 KiB]
Скачиваний: 254

И т.д.

Автор:  grafalex [ Вт дек 01, 2020 12:06:18 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

Какие объёмы данных нужно передавать и с какой скоростью? Передаваемые данные одинаковые для всех приёмных устройств или избирательно? Вариант безпроводки рассматривался?

Думаю 9600 будет достаточно, пакеты по 6-8 байт. Планирую дать каждому устройству уникальный ИДшник, а пакеты будут либо адресные, либо широковещательные для всех.

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


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

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


iddqd писал(а):
а вы уверены что это будет работать?

Ну вот именно с этим вопросом я и пришел :)

Автор:  ARV [ Вт дек 01, 2020 12:18:47 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

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

Автор:  OKF [ Вт дек 01, 2020 12:30:54 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

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

Автор:  Самсусамыч [ Вт дек 01, 2020 12:50:45 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

UART вроде как годится - в одну сторону можно передавать по существующему проводу. Но тут я не уверен в трех моментах

В одном проекте видел такой подход к передаче данных по UART на ведомые МК от базового МК. Принцип такой: Все МК подключены последовательно. То есть вывод (Tx) ведущего соединяется с выводом (Rx) первого ведомого, а вывод (Tx) первого ведомого с выводом (Rx) второго ведомого и т.д. У каждого ведомого МК присвоен код. Ведущий передаёт код получателя и данные. Если данные предназначены для (допустим второму ведомому), то первый, приняв данные и видя, что они адресованы не ему, передаёт их дальше. Второй получив данные и видя что они как раз для него – выполняет команду не передовая дальше ничего. Правда в таком подходе есть жирный минус, если на линии выйдет из строя какой-то МК, то все последующие МК будут оторваны от ведущего.

Автор:  BlackKilkennyCat [ Вт дек 01, 2020 12:54:06 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

значит, надо закольцевать, а потом ещё лучами соединить каждого с каждым ;)

Автор:  NStorm [ Вт дек 01, 2020 13:00:53 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

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

Ну может не сейчас, а когда-нибудь пригодится: https://www.aliexpress.com/item/32833977085.html
По 31р за штучку приемник на 433 МГц. Такой же передатчик тоже за копейки находится - SYN115 модель.
Понятное дело, что всё-равно дороже "бесплатного" UART :) Но вдруг интересно будет. Погружаться не надо - один провод тот же самый, только по радио условно. Модуляция-демодуляция прозрачна, никаких настроек, тупые простые модули. Но для каких-нибудь радио-датчиков или наоборот - вполне рабочие штучки.

Автор:  Самсусамыч [ Вт дек 01, 2020 13:03:08 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

значит, надо закольцевать, а потом ещё лучами соединить

Можно конечно, но тогда придётся увеличивать число жил, а ТС хочет для передачи использовать лишь одну жилу. :)

Автор:  BlackKilkennyCat [ Вт дек 01, 2020 14:04:59 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

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

Автор:  iddqd [ Чт дек 03, 2020 07:40:23 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

Цитата:
Частотное кодирование. ))
Современные uart'ы что-то типа такой картинки и делают, там оверсэмплинг же, x8, если не x16...

Автор:  roman.com [ Чт дек 03, 2020 12:49:10 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

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

Я говорю про старые модемы с частотным кодированием... Они работают на огромные расстояния (десятки километров по проводам и тысячи километров по радио). Работают при любом уровне сигнала. Имеют гальваническую развязку. Им не важны фронты... шумы... и т.д.
Вложение:
moped1.jpg [100.53 KiB]
Скачиваний: 182

:tea:

Автор:  iddqd [ Пт дек 04, 2020 11:44:07 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

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

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

Автор:  Ser60 [ Пн дек 07, 2020 09:18:11 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

Вариант беспроводки рассматривался, но получается а) дорого (дороже чем UART) б) в эту тему еще погружаться нужно ...
Всё-же я за безпроводку через Bluetooth LE, даже если выйдет несколько дороже. Некоторые фирмы предлагают Bluetooth решения в стиле безпроводный UART. Если-бы я делал такую систему, то использовал-бы силлабовские модули семейства BGX. К тому-же они заводятся практически с нулевым вниканием, если по этому поводу имеются опасения.

Автор:  musor [ Пн дек 07, 2020 10:33:29 ]
Заголовок сообщения:  Re: Передача данных между удаленными микроконтроллерами

485 вам прописан или токовая петля осталное в топку...9600 это не 300бот..там уже 3м проблемные могут быть без спецчипок на концах
так что приемопередатчики линии обязателны

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/