I'm implementing DMX on Arduino. DMX uses the RS485 standard to communicate.

In the specifications of RS485 it notes that there is a positive line, a negative line and a ground line. If the positive line is at higher potential than the negative line, a 1 is given. Vice versa for a 0. Now apparently the protocol doesn't measure the difference between each line and the ground, but only the difference in potential between the positive and negative line ( which has to be at least 200 mV).

This makes me assume it would be possible to easily drive DMX directly from Arduino, putting one line high (5V) and one low. However looking at the Arduino website with some information about DMX implementations, all information I can find is using some shield over the Arduino.

Is it necessary to use a shield, or will a direct connection work as well? I currently don't have any DMX components yet so I can't test it right away.


1 Answer 1


Driver Chips and DMX bus termination

When searching the internet you can see several chips being used to drive a DMX communication. They all are made to convert logic-level signals (LOW & HIGH) to the EIA-485 differential signal levels on the twisted pair cable.

Very common are the chips from MAXIM that I also use for my implementation. The one I prefer is the MAX485 or MAX481 which are identical with the exception of a low power shut down mode in MAX481 that we don’t need in the DMX scenario. MAX481 and MAX485 from MAXIM

Other chips often used are the 75176b differential bus transceivers from Texas Instruments.

A typical schema using MAX481 for a DMX controller is:

A typical schema using MAX481 for a DMX controller


For a simple setup it is possible to connect the Driver chip directly to the Arduino pins but if you need a robust system, especially on a stage environment, you will have to add some more electronics to avoid electrical damage by defect equipment or accidental circumstances.

The electric potential of the DMX side of the implementation have to be isolated from the processor. There are 2 sort of chips that implement all you need:

A 5 volt to 5 volt DC/DC converter with galvanic decoupling. There are complete solutions in a single component available like NME0505SC or AM1S-0505SZ that can be used to generate a 5V power supply that is galvanic isolated up to 1000V. So even if there is a high voltage attached to the DMX bus there is a chance of no or low damage. High speed TTL compatible Optocouplers These chips use a LED and light sensitive transistor to isolate the DMX bus from the Arduino data pins. There are standard TTL compatible Optocouplers available like the 6N137 from MOTOROLA.

There are 3 data signals from the arduino that have to be brought from the arduinos side to the DMX side: transmit, receive and the data direction:

MAX481 with three 6N137 optocouplers and isolated 5V DC


So you need at least one driver chip and to be safe you better make an isolation with some optocouplers. A minimal solution with only:

  • 1x SN 75176

  • 1x 100 Ohm 1%

but there is no isolation!

SN75176 Arduino DMX circuit

  • 1
    \$\begingroup\$ I've seen DMX and RS485 circuits in particular. For on the bench development anything goes. But for final products over external wires Isolation will save the main circuits from spikes and faults. (The spikes might be electrical but ladies stiletto spike heels can damage most un-armoured cables on the ground...) :-) \$\endgroup\$
    – Spoon
    Feb 21, 2014 at 11:30
  • 1
    \$\begingroup\$ "A typical schema using MAX481 for a DMX controller is:"... the non-inverting in/output A should be connected to the positive bias, the inverting in/output should be connected to the negative or ground bias. \$\endgroup\$
    – Erik84750
    Jun 3, 2017 at 19:50
  • \$\begingroup\$ An overvoltage could still fry the external end of the optocouplers, though, right? I suppose it depends on the equipment but if you only have a microcontroller on the other end and they're, say, on the same board, maybe it won't always be worth it? \$\endgroup\$ Jan 13 at 8:41

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