Controllers and Sensors

John has been working to recover components from old power supplies and available trash electronics, in order to build controllers to power stepper motors and other mechanisms for the FabLab.


The Arduino microcontroller board is able to supply a current of 40mA from its output connections. These digital outputs are fixed at 5V “ON” or 0V “OFF”. This is adequate for working with LEDs but devices such as motors, solenoids, high brightness LEDs etc. may require much higher currents and voltages. To achieve this an interface in between the Arduino and the device can be made from locally sourced components.

Suitable transistors can be found in a wide variety of waste electronic items. Internet resources are available to check part numbers for a components specification and, interestingly, retail price. In the following example all the components were found in a discarded ATX computer power supply.

High current/voltage circuit

This simple circuit can be quickly built on a breadboard or, for permanent use, on stripboard.

 motor controller circuit diagrammotor controller

The circuit can also be used with other inductive loads, such as solenoids and relays. For other, non-inductive, loads (LEDs etc.) the protection diode D1 can be omitted. In this example the ATX components used were:

  • Q1 2SC3866
  • D1 1N4001
  • R1 1K

This circuit has been initially tested with 12V motors drawing 500mA without a heatsink. This is more than adequate for initial experiments in the FabLab, though it may be worth noting that the transistor is rated at 400V and 3A.

H-bridge motor controller

The H-bridge circuit enables a motor to be spun in either direction and stopped from two control inputs. A steerable robot can be made using this circuit, together with a second circuit and DC motor.

H-bridge circuit diagramH-bridge motor controller

This circuit was made using components taken from various discarded sources and previous projects. The LEDs were added to aid debugging and comparing the performance of different DC motors. The transistors used are relatively low current devices but have been tested driving motors sourced from printers up to 250mA. A second, more powerful, circuit will be built when a suitable source of “pnp” transistors is found to complement the “npn” transistors sourced from a ATX computer power supply.


  • Q1, Q2 ZTX753
  • Q3, Q4 ZTX383
  • Q5, Q6 2N3904
  • D1 - D4 1N4148
  • D5, D6 LED
  • R1, R2 4K7
  • R3, R4 10K
  • R5, R6 330R

Stepper Motor Controller

Using the circuit from the first example a simple circuit can be made for controlling unipolar (5 wire) stepper motors. Such motors can be found in printers, scanners, fax machines etc. along with components to build the circuit. Further information on identifying, connecting and driving can be found on the Stepper Motors page.

Stepper motor controller circuit diagramStepper motor controller

Once the motor's wiring sequence has been determined it can be connected to the circuit. The motor is made to rotate by alternately supplying pulses to each input. Reversing the sequence of pulses reverses the direction of rotation. Stepper motors have relatively low torque (which may be increased with voltage) but have the advantage of low current and precise positioning.

Further developments include sourcing controller integrated circuits from waste equipment and using bipolar stepper motors.


  • Q1 - Q4 2N3904 (200mA) eqivalent
  • D1 - D4 1N4148
  • R1, R3, R5, R7 1K
  • R2, R4, R6, R8 100K


arduino/controllers_and_sensors.txt · Last modified: 2009/09/02 12:49 by jomo
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki