0
\$\begingroup\$

I've made a mistake on a design, that went into production...

It was built like the drawing on the left, with R702 to 5V and R703 to GND, it should have been backwards... like the drawing on the right.

The thing is... the board passed all the tests, the RS485 communication works fine.

I wan't to know if this difference could result in errors in communication/damage to the circuit if it is left unchanged, or if it's irrelevant.

This board was designed by several people, the desition to add R702 and R703 wasn't mine, and I don't understand why they are there (datasheet for SN75176B doesn't uses them in any case). So a second, and probably more interesting question, would be: why are those resistors there in the first place? What's their function?

enter image description here

\$\endgroup\$

5 Answers 5

3
\$\begingroup\$

Typically resistors disposed like that are intended to put a differential voltage (within the acceptable common mode range) on the RS-485 receiver that is large enough to drive the output into a known state with the bus open, however they are too large to reliably do that with the 75176, so they don't do much of value. For more appropriate value resistors Rf, the termination resistor Rt has to be increased such that:

\$\tfrac{1}{Z_0}= \tfrac{1}{R_T} + \tfrac{2}{R_F} \$

.. to match the characteristic impedance of the twisted pair.

The amount of offset they add (~30mV with the cable open) is less than the typical hysteresis of 50mV, let alone whatever offset the receiver has (<200mV) and noise immunity.

Since those resistors are the opposite of the usual bus idle state that may be an error. You can replace the 75176s in your system with similar devices (eg. SN65HVD12) that build in an offset voltage (of the usually desired polarity) if you want that functionality with your current layout (and simply don't populate the 10K resistors). Of course all the receivers have to have this bias built in.

Here is the usual connection scheme from this TI document:

enter image description here

\$\endgroup\$
2
\$\begingroup\$

The resistors are there as a Failsafe:

Failsafe For RS-485 receiver inputs between -200mV and +200mV, the output is undefined. That is, if the differential voltage on the RS-485 side of a half-duplex configuration is 0V, and no master transceiver is driving the line (or a connection has come loose), then a logic "high" output is as probable as a logic "low." To ensure a defined output under these conditions, most of today's RS-485 transceivers require failsafe bias resistors: a pullup resistor on one line (A) and a pulldown on the other line (B), as shown in Figure 1. Historically, the failsafe bias resistors on most schematics were labeled 560Ω, but to reduce power loss (when terminating one end only) this value can be increased to approximately 1.1kΩ. Some designers terminate both ends with resistor values between 1.1kΩ and 2.2kΩ. The trade-off is noise immunity versus current draw.

https://www.maximintegrated.com/en/app-notes/index.mvp/id/1090

But they do seem reversed of what is usually used, with A high and B low.

\$\endgroup\$
1
\$\begingroup\$

Presumably whoever put the resistors in the design wanted to prevent the lines floating when none of the drivers on the lines are enabled - essentially a 2.5V bias (rather than letting the lines theoretically go close to +5V or GND, which may help ensure correct operation of the IC, but in practice you might not notice a difference). It should not matter which one (A or B) is connected to +5 and which to GND. Either circuit should be fine.

it should have been backwards... like the drawing on the right

I'd question where this information came from...

\$\endgroup\$
1
\$\begingroup\$

Those resistors serve two basic functions:

  • As a failsafe, to guarantee a particular line status when there is nothing connected.

By going against the general convention, it is clear that the designers intentionally wanted a particular state in this condition which is different from what is commonly used. Very likely to either (1) be able to distinguish this condition from an idle bus, or (2) set a defined condition with larger value resistors that exploits the noise margin behavior of the ICs.

  • As bleed resistors, to control the differences in common mode without having to connect the grounds.

This is normally done in differential protocols to save an extra wire and avoid the presence of ground loops. Those resistors basically place a 10kohm impedance (5k in each side) between grounds. Modern RS485 transceivers can generally withstand common mode voltages several volts beyond their rails. So a relatively large impedance between grounds can be easily tolerated.

Given their large value (100:1 with respect to the termination) these would not affect communications at all. I would still look at the transceiver datasheet, and verify the specs on common mode voltage range and the behavior when the lines are left floating.

\$\endgroup\$
1
\$\begingroup\$

In some architecture of U(S)ARTS, when the line is floating, you might get data in MCU side, the pull up/down resistor imply that input voltage is zero and start bit is transferred, In this condition based on configuration of the module might send this data to MCU or discard it because the stop bit not set.

check that you MCU is not interrupted with a low voltage in Rx pin of MCU.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.