I need outside brain to give me idea to solve my issue.
I'm trying to make communicate several Arduino Nano together. In this way I use the breakout boards MAX485 Link. Yesterday I followed this tutorial to make : link
It was working very well.
But now I try again to make it working and nothing is working... i don't know at all what's happening.
Would you have an idea ? Someone would have had the same issue.
I had succeeded to make my Nano Arduino master asking two Nano Arduino slaves if they were presents. It works. Then I added a third one, and this last one was not responding. I must say that I added 1 meters of wires between slaves along my tests.
Since I have used this third Nano Arduino, I have the issue I described first.
I wonder if my MAX485 board haven't burned... But it is strange that all of them have burned. Moreover that they look good.
Ahhh. So you changed something. You added a third module and thing stopped working. Did you connect the boards in a star topology or daisy chain? They should be in daisy chain. Did you modify any of the boards, specifically the middle board? Did you remove the extra termination resistor from the middle board?
adwsystems:
Ahhh. So you changed something. You added a third module and thing stopped working. Did you connect the boards in a star topology or daisy chain? They should be in daisy chain. Did you modify any of the boards, specifically the middle board? Did you remove the extra termination resistor from the middle board?
Thank you, yes it is true I modified !
I did a daisy chain. Sorry, but what do you mean by "Did you modify any of the boards, specifically the middle board?", what middle board do you refer ? Do you mean the Nano Arduino number 3 (because I used 4 Nano), or the MAX485 board number 3 ?
Whatever, the only thing I modified is the number of the Nano in the code to let it recognize the packet of byte when it contains its number (in other words, when it is addressed to him).
adwsystems:
Ahhh. So you changed something. You added a third module and thing stopped working. Did you connect the boards in a star topology or daisy chain? They should be in daisy chain. Did you modify any of the boards, specifically the middle board? Did you remove the extra termination resistor from the middle board?
Although daiay chain is indeed the correct topology, rs485 can also function in star or in combination of star and daizy chain. I have tried both and it works fine.
Also the system should work with the termination resistors in place.
I did a daisy chain. Sorry, but what do you mean by "Did you modify any of the boards, specifically the middle board?", what middle board do you refer ? Do you mean the Nano Arduino number 3 (because I used 4 Nano), or the MAX485 board number 3 ?
Whatever, the only thing I modified is the number of the Nano in the code to let it recognize the packet of byte when it contains its number (in other words, when it is addressed to him).
Thank you,
I am only speaking of the MAX485 boards. The modules each have a termination resistor. If used in the daisy chain layout prescribed by the RS485 standard there should only be two termination resistors, one at each end (the first and the last). All of the middle transceivers should not have termination resistors. Unfortunately the common RS485 modules all have termination resistors with no way to disable them. Thus these modules are really only designed for two to be used in a system. To add a third, the middle module should have its termination resistor removed.
By having more than two termination resistors in the network, the load is increased (the resistance decreased) and requires more current from the RS485 driver.
If you system works with two but not with three or more, this is a likely cause.
Okay ! Thank you really much, we maybe touch the end of the problem.
By doing a daisy chain of 4 MAX485 boards, I have maybe overloaded the boards and made them burst, despite there is no any sign of burning on them.
Would you have an advice for my need ? I need to make communicating 12 Nano Arduino slaves with a Mega Arduino master. Should I keep the RS485 ? If yes, what is the simpler in term of hardware to succeed without going deep into electronic development...
I asked the same question a while back. Really only three options; ethernet, RS485, RS422. Everything else is one-to-one.
I have not gotten in depth on the MAX485 chip. But it doesn't look too difficult to build one on a protoboard using the DIP package, especially for the middle-of-the-chain units where you don't need the termination or idle line resistors. The worst part is providing a good/reliable way to connect the two pairs of A-B-Ground wires.
I have used an oscilloscope to see the shape of the signal.
What I see is :
1/ on the output of the transmit pin of the Nano Arduino master I can see the signal
2/ on the A output of the Max485 board just behind the master I can see the signal. However, this time the signal varies between 0v to 2v (I think it is normal with knowledge of the datasheet)
3/ same on the B output but with voltage between 0v and -2v
4/ now, from the second MAX485 board, nor from the DI output neither from the RO output the signal doesn't appears on the oscilloscope.
And finally, if I inverse the both MAX485 boards it is the same.... I don't understand at all
Transceiver: has both transmitter and receiver functions that operate with a medium.
I want to ignore what the medium is doing so the differential pair A/B is going to be ignored.
The transmitter is used to drive the medium when it is enabled (DE enables the transmitter).
The receiver senses the medium when it is enabled. Its enable has inverted logic (nRE or a bar over RE) so a LOW enables it.
To test if the transceiver works, disconnect it from everything that is not known to work. Enable DE (HIGH), Enable nRE (LOW), set up a toggle circuit on DI so it can go HIGH or LOW, then power up and measure that RO matches DI. If that fails to work then it is trash.
Transceiver: has both transmitter and receiver functions that operate with a medium.
I want to ignore what the medium is doing so the differential pair A/B is going to be ignored.
The transmitter is used to drive the medium when it is enabled (DE enables the transmitter).
The receiver senses the medium when it is enabled. Its enable has inverted logic (nRE or a bar over RE) so a LOW enables it.
To test if the transceiver works, disconnect it from everything that is not known to work. Enable DE (HIGH), Enable nRE (LOW), set up a toggle circuit on DI so it can go HIGH or LOW, then power up and measure that RO matches DI. If that fails to work then it is trash.
Thank you for this details.
I post the schematic of my test with an oscilloscope of yesterday. Link to image
I have replaced both MAX485 boards with new ones. Now both Nano Arduinos can communicate again.
I don't know if we will eventually find the true reason of the issue. The best explanation I get through all theses exchanges it is the fact that MAX485 boards have a termination resistor integrated on it. By doing a daisy chain with theses boards, I have accumulated the termination resistors which started my troubles.