Built-in project · no microcontroller

Motor starter circuit

The classic 3-wire motor control circuit on a 12 V DC stand-in: a relay as the contactor, a normally closed STOP, a START with a seal-in contact and an overload contact. A control-circuit lesson at low voltage, not a motor starter for real equipment. There is no microcontroller in it: the simulator solves the 5 parts as a circuit, so it runs the moment you press Run, and nothing needs compiling.

Teaching? Assign it to your class in one click.

Intermediate About 15 minutes to build and run. Runs in your browser. Free, and no account needed.

The parts retail for about $8.15. On Mokxi they're free.

The circuit runs here once the page has loaded.

What you'll learn

  • Motors
  • School
  • Reading a button
  • Using the Limit switch
  • Difficulty: Intermediate
  • Time: About 15 minutes
  • Parts: 7

How it works

The classic 3-wire motor control circuit on a 12 V DC stand-in: a relay as the contactor, a normally closed STOP, a START with a seal-in contact and an overload contact. A control-circuit lesson at low voltage, not a motor starter for real equipment.

There is no code. The simulator solves Limit switch, lever microswitch, Pushbutton, Slide switch, DPDT relay, DC motor as it is wired, so change a value in the editor and watch the result.

Parts list

7 parts, plus the jumper wires. They retail for about $8.15; on Mokxi they're free.

Kits that can build it

This starter kit has every part in the circuit. Each kit's page lists what else it can build.

Wiring table

Every connection, pin by pin, read from the circuit itself. Each row joins the pin on the left to the pin on the right, by a jumper wire or a breadboard strip.

Part and pinConnects to
Limit switch, lever microswitch pin COM12 V
DPDT relay pin COM212 V
DPDT relay pin COIL2Ground
DC motor pin 2Ground
Pushbutton pin 1aLimit switch, lever microswitch pin NC
DPDT relay pin COM1Limit switch, lever microswitch pin NC
Slide switch pin 2Pushbutton pin 2a
DPDT relay pin NO1Pushbutton pin 2a
DPDT relay pin COIL1Slide switch pin 1
DC motor pin 1DPDT relay pin NO2

The notes that come with it

There is no microcontroller in this one, so nothing is compiled: the simulator solves the circuit itself. The file in the editor is the notes that come with it.

sketch.ino
// A motor starter's control circuit, at low voltage.
//
// There is no microcontroller here. Press Run and the simulator solves the
// circuit. This is a control-circuit lesson on a 12 V DC stand-in. It is not a
// motor starter for real equipment: a real starter switches a motor on mains
// or three-phase power, with a listed contactor and overload relay.
//
// THE PARTS. A DPDT relay stands in for the contactor M. Its coil is the
// contactor coil. Its first pole is the seal-in contact, its second pole
// switches the motor. The lever microswitch is STOP, wired on its normally
// closed contact (COM to NC): pressing it opens the circuit. The push button
// is START, normally open. The slide switch is the overload contact OL, which
// is normally closed: slide it to the open side to simulate an overload trip.
//
// THE WIRING. +12 V goes through STOP, then through START and the seal-in
// contact in parallel, then through OL, then through the coil to ground.
// That is why it is called 3-wire control: STOP, START and the seal-in
// contact meet at three points.
//
// THINGS TO TRY.
//  1. Press and release START. The coil pulls in, the seal-in contact closes
//     around START and the motor runs. Let go of START and it keeps running:
//     it has sealed itself in.
//  2. Press STOP. The coil drops out, the seal-in opens and the motor stops.
//     Letting go of STOP does not start it again: the seal-in is open, and
//     only START can close the circuit.
//  3. Run it, then slide OL open. The coil loses power and the motor stops.
//     With OL open, START does nothing at all. Close OL and the motor stays
//     off until you press START again. A real starter also never restarts by
//     itself after a trip.
//  4. Why STOP is normally closed: if a wire to STOP breaks, the coil loses
//     its feed and the motor stops. A broken wire fails safe.

Troubleshooting

The usual mistakes with this circuit, and the fix for each.

  • The input reads the wrong level, or floats when released. Limit switch
    Use COM and one contact. NC is closed at rest, NO closes when pressed. Add a pull-up or INPUT_PULLUP so the pin never floats.
  • Readings chatter when the lever moves. Limit switch
    Contacts bounce for a few milliseconds. Debounce in software with a 10 to 20 ms delay, or add a small capacitor across the switch.
  • The input reads random HIGH and LOW when the button is not pressed. Pushbutton
    A floating pin picks up noise. Add a 10 k pull-down or pull-up resistor, or use INPUT_PULLUP and wire the button between the pin and GND. Then pressed reads LOW.
  • The button seems always pressed, or never changes. Pushbutton
    A 4-leg tactile switch has legs joined in pairs. Place it across the breadboard center gap so the pairs sit on different rows. Wired along one side, the legs are already connected.
  • The input reads random values in one position. Slide switch
    A switch only connects or disconnects. Add a pull-up or pull-down resistor, or use INPUT_PULLUP, so the pin has a defined level when the switch is open.
  • The load never turns on when the switch is flipped. Slide switch
    Use the center (common) leg and one outer leg. The unused outer leg goes nowhere. Check that the switch is in series with the load.
  • The relay coil does not click, or the Arduino resets when it switches. DPDT relay
    A pin cannot drive a coil directly. Use a transistor or MOSFET with a base resistor, and power the coil from its rated voltage (5 V or 12 V).
  • The transistor dies or the circuit glitches at turn off. DPDT relay
    Put a flyback diode across the coil, cathode to the positive side. The coil kicks back a high voltage spike when it is switched off.

Change it and keep it

Open it in the editor, change the circuit or the code, and keep your version in a free account.