Control a universal motor with Arduino

That motor is easily reversible, using the relay schematic you posted way up top. Use a DPDT relay wired as follows:

  • C1 to rotor 1
  • C2 to rotor 2
  • NO1 to NC2 to stator 1
  • NC1 to NO2 to stator 2

If you then apply power to the stator, you will have windings in parallel and the direction of travel will depend on the relay. only change the relay while the motor is stationary.
You can use another relay to switch the motor on/off, or use the schematic you posted above with the moc304x and BT137. However I still recommend the use of an integrated opto isolated solid state relay because it's much lower risk.

If you want speed control, you need to:

  • use something similar to the above BT137 circuit but
  • replace the moc304x with a moc3020, and
  • design and test a snubber that matches the motor;
  • build an opto-isolated zero-crossing detector, and
  • write some clever code to turn the triac on at the right time within each cycle.

Just get the motor turning on/off/reversing first.