We came across issues when we use LinkSprite RS485 Shield Shield for Arduino for high speed applications, such as DMX512 communication.

Step 1: Circuit Analysis

The schematic of the RS485 shield  is shown above.

The shield replies on  a MAX481CSA chip to  convert  TTL level to 485 level. As shown in the schematic, the enable signals for the receiver and transmitter are tired together,  and controlled by the drain of MOS transistor Q1.  The drain of Q1 is in turn controlled by the data signal (TX). When the data transmitted is “1”, the  RE/DE signal will be “0”, and the chip is in the receiving state, and the chip will not drive the A,B differential data lines. If there is no external pull-down circuit, the data displayed on data line will be uncertain. This is also a cause of the error. But it is not the root cause of the issue when communicating at high speed.  In next section, we will analyze the timing sequence, and we can clearly see the issue.

Step 2: Timing Analysis

It seems that there is no big problem in the schematic.  Most devices work under this principle. So, where is the problem at high speed?

Let closely look at the timing diagram of DE/RE signals.

When the communicate speed is slow, the period of timing signal is big.  RX DATA DELAY is relatively smaller compared to the clock period, and the sample time can cover the period time.  However, when the communicate speed is high, the timing signal period becomes smaller. The sample time is shorter, and the RX DATA DELAY can’t be covered by the sample time, which will lead to sample data error.

About This Instructable




More by Yanny Guo:Use pcDuino as Photo Booth Controller Use Si4703 FM Breakout Board on Arduino Uno Use SIM900 GPRS/GSM Shield on pcDuino 
Add instructable to: