2
\$\begingroup\$

I've been having trouble getting a rs485 communications bus working with some external devices. I have an Arduino hooked up to a MAX487ECSA+ which goes through some cabling to my devices. Using an oscilloscope, I can see the signal (with sufficient amplitude) reaches my devices but I get no response. The baud rate used is 19200.

I bought this breakout board from sparkfun to see if I could get some communication working. I hooked it up to my arduino and I get a response from my device.

The MAX487ECSA+ is a quarter unit load and the IC used by sparkfun is a one unit load. I'm unsure of the unit load of my devices. Could a difference in unit loads between the 2 ICs be the reason one circuit works and the other doesn't? If this is a reason, could you please explain why I can't use devices with different unit loads on the same bus?

EDIT -A and B are correct, I have tried both ways

\$\endgroup\$
  • 1
    \$\begingroup\$ How many devices are you connecting to? How long is the cable? A potential cause is that the devices are too high impedance one the receiver (1/4 load input). Maybe try 120ohm terminator resistors. It could be that the signal isn't returning to mid-rail fast enough... \$\endgroup\$ – SLaG Aug 13 '13 at 10:39
  • \$\begingroup\$ I'm connecting to two devices, plus the arduino. The cable to one device is about 1.5m and to the other is about 10m \$\endgroup\$ – Andre Aug 13 '13 at 10:47
  • \$\begingroup\$ Have you carefully examined the levels and timing of the DE and /RE pins? \$\endgroup\$ – Tut Aug 13 '13 at 15:30
  • \$\begingroup\$ Hi Tut, I have an interrupt that enables the receiver and disables the transmitter once the full message has been sent. It works with the sparkfun board \$\endgroup\$ – Andre Aug 16 '13 at 6:52
3
\$\begingroup\$

EDIT - are you using A and B the right way round? Is it wired correctly on the sparkfun unit to how you've wired it on your own modules?

If you aren't using terminators then you should. I've attached a drawing to show what you should do - this makes it a little difficult to put as a comment.

enter image description here

Quite possibly, with the extra loading of the sparkfun breakout board you are just about able to reduce data reflections to an "OK" level.It could also be that the sparkfun output is slew rate limited and this would reduce the effect of reflections.

What type of cable are you using i.e. twisted pair with Zo = 120ohms, possibly screened/shielded etc..

\$\endgroup\$
  • \$\begingroup\$ Hi Andy, The cable is Zo=120Ohm, twisted pair, shielded When I was using the MAX487ECSA+, I had a termination of 120Ohm. I tried with and without termination, to no avail. With the sparkfun board, it has a termination of 220Ohm. It worked without any termination on the other end \$\endgroup\$ – Andre Aug 13 '13 at 10:43
  • \$\begingroup\$ @Andre Try swapping A and B - maybe you inadvertently "got it right" using the sparkfun module? \$\endgroup\$ – Andy aka Aug 13 '13 at 11:12
1
\$\begingroup\$

I got my RS485 working. I redesigned my board.

For the RS485 part, I swapped the MAX487ECSA for a MAX483ECSA+ (1/4 unit load vs 1 unit load, respectively).

I hope that helps anyone who finds this

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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