SmartMotor™ Delivers Integrated Motion Control Benefits to Entertainment Industry through DMX Compatibility

Benefits of SmartMotor to DMX Users:

  • Quiet Operation
  • Easily program the SmartMotor with DMX protocol
  • Advanced & simple motion control features can be triggered from DMX input
  • No control cabinet - smaller machine footprint
  • Reduction in cabling means lower costs and less electromagnetic interference
  • Use any standard third-party DMX software package over RS485 - many of which are open source & as low as $100
  • Closed loop precision servo control where usually open loop steppers are used
  • Easily add SmartMotor as additional axes onto existing DMX systems

DMX512 is a standard for digital communication that’s most often used in entertainment to control lighting and stage effects. A single DMX controller has 512 8-bit channels (commonly called a ‘universe’) with each channel capable of controlling color, focus, intensity, on/off, pan and tilt and more. Custom DMX firmware allows the SmartMotor to be programmed by the user to read any range of channels and ignore channels not assigned. Adding additional axes to a machine is simple with the SmartMotor and requires minimal cabling. Multiple SmartMotors on the same network can read separate or overlapping DMX channels where multiple channel ranges can be read and data can be stored in variables to set parameters for motion.

“The beauty of this new capability is how universal it is. DMX protocol is simple and by assigning it to variables, you still have all the capabilities of the SmartMotor’s advanced motion controller with the flexibility of DMX,” says Hack Summer, Applications Technology Manager at Moog Animatics. “The cost benefits are also enormous. You can use any standard third-party DMX controller software package over RS485 and many of them are open source and priced as low as $100. This new capability opens a number of opportunities for the entertainment industry to make use of true closed loop precision servo control where historically open loop steppers or brushed motors have been used.”

Not only does the DMX capability simplify programming but all SmartMotor advanced motion control features such as phase offset, cubic spline interpolation and advanced gearing and camming can be triggered off of the DMX input. As fully integrated motion control benefits include smaller machine footprint and reduced cabling, the odds of DMX false triggers from electromagnetic interference or extensive cable lengths are greatly reduced. For example, if one wants to know the position of a theater light, they would assign the DMX controller a channel for that data and then program the base address in the SmartMotor aligned with that particular channel. The user can then write a program and indicate that array variable in the SmartMotor, calling out a subroutine or assigning corresponding parameters in the motor including position, velocity, acceleration, torque, and more. The entire motion control system becomes more compact with no control cabinet needed and axes can be easily added without the limitations of choosing a 4-, 6- or 8- axis controller.

DMX Key Facts

  • DMX protocol runs at 250 kBaud – faster than any standard RS232 or RS485
  • A single DMX ‘universe’ is made up of 512 8-bit data blocks
  • Open source code for Arduino processors or even smart phone applications that serve as DMX master
Application Examples
  • Closed-loop control for heavy duty directional lighting control
  • Variable control for water flow for valves
  • Raise & lower curtains for stage lighting effects
  • Trigger motion off of DMX inputs such as lighting focus, color & intensity
  • Control pan and tilt motion of lighting fixtures

Sample DMX Code for SmartMotor


COMCTL(1,1)                       ' Set base DMX channel to 1.
COMCTL(2,2)                       ' Accept 2 DMX channels of data.

OCHN(DMX,1,N,250000,2,8,D)        ' Open DMX channel.  COM1,no parity,250kbaud, 2 stop, 8 data, datamode.

IF B(12,0)==1                     ' If Data is in the buffer
                a=aw[0]           ' Set variable a to first channel data
                b=aw[1]           ' Set variable b to second channel data
                UR(1)             ' Clear data flag so we know when next packet arrives
ENDIF