Проблемы с шумом RS485: сигнальная земля/общая земля/изоляция?

Я испытываю сильный шум в сети RS485, которую я собрал с использованием чипов ST485. Длина кабеля очень короткая (общая длина кабеля менее 1 м), я правильно смещаю сигналы A и B, и я пробовал как с терминатором, так и без него (кажется, без разницы), и я работаю только на 19200 бод.

Я подозреваю, что проблема заключается в шуме земли, так как я использую входные сигналы RS485 для установки уровней ШИМ для мощных светодиодов (до 1000 мА на мгновение при 3,8 В). Я использую четырехпроводное соединение между каждым узлом (+12 В, GND, RS485-A, RS485-B, с RS485-A и -B самоскрученная пара соединительных проводов).

Хотя это не предлагается в техническом описании ST485, будет ли достаточно добавить провод заземления сигнала между входами заземления устройства RS485 с резисторами 100 Ом последовательно между заземлением устройства RS485 и проводом заземления сигнала? Или мне следует подумать о добавлении полной изоляции к устройству RS485, включая трансформатор для плавающего питания и оптоизоляторы на сигнальных линиях A и B? Или это чрезмерно?

Заранее спасибо.

РЕДАКТИРОВАТЬ Я знаю, что получаю шум, потому что для получения желаемого эффекта (конкретной яркости определенных светодиодов) я должен использовать CRC-8 для каждого пакета (чтобы отбрасывать плохие пакеты на принимающей стороне) и отправлять каждое сообщение дважды (чтобы компенсировать отброшенные плохие пакеты), и даже тогда я все еще получаю неправильные пакеты, появляющиеся на принимающей стороне.

РЕДАКТИРОВАТЬ Удалены комментарии об ошибках скорости передачи, так как скорость передачи на самом деле очень точная.

вы так и не объяснили, как вы могли сказать, что были проблемы с шумом. Неверные данные? Измерения оскопа, поделитесь этим. Люди цепляются за единственное, что вы им сказали.
Как многие уже заметили, 3,8% — это слишком много, но что у вас есть на принимающей стороне вашей ссылки 485?
ИМХО это не доказывает, что шум - ваша главная проблема. Это все еще может быть причиной ошибки скорости передачи данных.
Исправьте ошибку скорости передачи данных, а затем посмотрите, остались ли у вас проблемы. Вы должны были сделать это сразу же, как увидели величину ошибки!
Ну, это смущает, но, в конце концов, это оказалось программной ошибкой на стороне ПК (передающей). Мораль этой истории: дважды проверьте размеры буфера последовательной передачи + получите логический анализатор для подтверждения.

Ответы (3)

Я предполагаю, что импульсный ток, потребляемый источником питания +12 В, создает шум в сигналах RS-485. В целях отладки попробуйте отключить светодиоды. Если ваши проблемы с шумом исчезнут, то вы знаете, что это импульсный ток в 1 ампер. Предполагая, что это так, ваша задача будет заключаться в том, чтобы уменьшить пики тока на проводе +12 В (которые также находятся на проводе GND). Фильтр с использованием катушки индуктивности + большой_кап поможет. Также может помочь использование другого кабеля, где питание изолировано от данных.

Я принимаю этот ответ, поскольку он кажется наиболее вероятным с точки зрения электроники...
+1 за указание на то, что эти блоки обратного тока на 1 А делят провод с эталоном 0 В. Если у вас есть 0,5 Ом в этом проводе, возврат тока светодиода 1 А означает, что земля на вашем устройстве будет плавать до (0,5 Ом) (1 А) = 0,5 В. И поскольку вы используете ШИМ для этого тока, индуктивность обратного провода только усугубит этот эффект. Это похоже на «отскок от земли».

мой фактический бод 19966, на 3,8% - может быть, это моя проблема?

Я бы сказал да, особенно если вы используете 9-битный режим ведущий/ведомый. С запуском и остановкой это 11 бит, которые должны пройти. Даже при «нормальных» 8 битах (что приводит к передаче 10 бит) ошибка должна быть намного меньше 5%.

мой F_CPU на 8МГц

Как вы генерируете эти 8 МГц? «Внутренние часы» обычно имеют погрешность 1% и более. С добавлением этого 1% ваши 3,8% выпадают «из окна».

Обратите внимание, что вы также должны учитывать ошибки часов принимающей стороны. Вот почему большинство людей используют так называемый «кварц скорости передачи».

Хороший звонок. Я использую внутренние часы ATtiny2313, но сейчас не могу их изменить. FT232R, управляющий передачей, позволяет устанавливать нестандартные скорости передачи данных. Я посмотрю, смогу ли я более точно соответствовать уровню 19966 года, который я дал себе...
Возможно, вы могли бы провести быстрый эксперимент с гораздо меньшей скоростью — 9600 или даже 300 бит/с? Затем, если вы все еще получаете ошибки, вы знаете, что это должно быть что-то еще.
Я наконец-то попробовал это сегодня, и на самом деле, согласно техническому описанию ATtiny2313, скорость передачи данных, которую я использую, очень точна (с точностью до 0,2% или около того), так что проблема не в этом.
Согласно техническому описанию, внутренние часы ATtiny2313 имеют точность всего 10%, что недопустимо для связи по UART.

Ошибка 3,8% слишком высока, замените кристалл или используйте скорость передачи данных с меньшей ошибкой. Это не будет причиной вашей проблемы с шумом, хотя шум будет иметь больший эффект, чем если бы ошибка была меньше.

3,8% это неплохо. Предполагая 8 бит данных, 1 стоповый и 1 стартовый бит (всего 10 бит), тогда вы теряете 38% времени одного бита в конце каждого байта. RS-232/485 будет работать с отключением до 50% одного бита в конце байта. Конечно, он становится менее устойчивым к шуму, но с 1-метровым кабелем на балансном сигнале (если все сделано правильно) шума быть не должно.
Это слишком высоко. На другом конце также может быть какая-то ошибка, которая усугубит ситуацию. pdfserv.maxim-ic.com/en/an/AN2141.pdf
Может быть и так. Но должна быть возможность рассчитать общую ошибку для обеих сторон и посмотреть, какова общая ошибка.
Это не обязательно с меньшей ошибкой.