I’ve been working with light artist, maker and NESTA fellow Jo Fairfax, (of Jo Fairfax Studio) on an interactive wall prototype.

He needed to have control over loads of motors which all move circular disks a set distance.

I designed a stepper motor controller unit to control up to 12 motors. These can be repeated to produce very large arrays of stepper motors.

The final effect is amazing, as shown in the videos here.

The final results look great and the unit in these videos has 6 of the motor controllers to control 72 small stepper motors.


Design brief

The design brief was to create a unit to control the rotation of a number of circular disks. The unit needed to be easily reprogrammable (so that different effects could be easily created), daisy-chainable (so that many motors could be controlled), detect movement (to activate different motion patterns) and relatively low-cost (as this was a prototype).

Design overview

There were a number of design decisions made through a number of prototype steps. Jo was actively engaged in the design process (as he knew the final effect he was wanting) and he also wanted to be able to reprogram the units easily, to speed up the development time.

We eventually settled upon:

  • Arduino compatible Nano based controller unit
    • Controls up to 12 small stepper motors, which can be configured into two banks of 6.
    • Stepper motors all have individual controllers.
  • Ultrasconic distance sensors detect movement.
    • This meant we could program specific distances for the unit to react to and we found much more reliable than a PIR sensor.
  • DC-DC converter power supply.
    • For input voltages up to 12V DC.

We also implemented a reset to known position on start up so that the pattern stays true, even with a power loss. This was done by monitoring the input voltage (using a potential divider) and storing the position of the motors into EEPROM just before it powers down. This worked very well compared to our other options of mechanical reset switches.

The PCB for the motor controller.

The populated PCB.

The unit is based on the Nano (Arduino Clone).

A DC-DC converter is used for powering the unit.

This means we can power the boards at 12V, but the motors run at 5V.

The prototype on the test bench.

Lots of motors (72 in total) controlled by the boards (6 boards in total). This prototype version is a bit of a mess.

Ultrasonic sensors control the unit.

Arduino Code

We wrote some Arduino code to control the motors, which is based upon AccelStepper stepper motor controller code.

The prototype has already been shown at an exhibition in Wakefield.

Leave a Reply

Your email address will not be published. Required fields are marked *