Introduction: Double Acting Electric Motor

Building a simple electric motor is fun, but I wanted to improve on the commutator to achieve more power and speed from the motor without adding additional coils of wire. This motor's rotor consists of 40 turns of #26 awg wire in a 3" diameter loop. A typical commutator would be a reed switch connected to a transistor to switch current through the loop of wire. At the appropriate time, the created magnetic field in the coil of wire would then pull towards a permanent magnet, rotating the coil, then would cut off the current and allow inertia to rotate the coil nearly 360 degrees and repeat the process. This is not very efficient, since the coil is energized for only a few degrees per rotation, thus the motor suffers poor performance.

To increase the amount of time the coil is pulling towards a magnet, I realized that both sides of the coil need to be attracted to the magnet per revolution, in order for there to be twice as much power. But to achieve this, the current would have to reverse direction through the coil for the second half of the cycle. Therefore, I used a H-bridge (SN754410NE), hall magnetic sensors and a magnet timing disk, and a ATtiny85 (could have used logic gates). The ATtiny was used to enable the H-bridge at the right time.

The power was increased as expected. However, with 2 additional magnets in the timing disk (for a total of 4 magnets) and another permanent magnet for the stator, I could get 4x the power of the original motor. This build details how I accomplished that.

Step 1: Parts for the Motor


50' #24 awg enamel coated copper (magnet) wire- ebay

1 ea. 1' x 1/16" dia. brass rod - hobby store

1 ea. 1' x 1/4" dia. acrylic tube- plastics shop

2 ea. digital output hall sensors Allegro A1120 LUA-T (senses only one direction of magnet polarity )- Digikey

1 ea. ATtiny85- Digikey

1 ea. SN754410NE H- bridge- Digikey

1 ea. 3000uF 35v capacitor- ebay

1 ea. perfboard

1 ea. 8 pin DIP ic socket

1 ea. 16 pin DIP ic socket

1 ea. 5-1/2" long x 4" wide x 1/2" thick plywood base- hardware store

1' 1/4" dia. aluminum rod- hardware store

2 ea. RC car bearings- ebay

1/8" plywood- hobby store

solder wick for brushes

2 ea. small springs to tension brushes- junk bin

4 ea. 1/8" x 1/8" timing magnets- K&J magnetics

4 ea. 1- 1/2" dia x 1/8" thick stator magnets- K&J magnetics

1 ea. 1/4" x 1/8" flat craft sticks- craft store

1 ea. 3/16" dia. dowel- craft store

1' 1/4" dia. acrylic tube- plastics store

6 ea. 1/4" id x 1/2" od nylon bushings- Grainger

1 ea. smd red led- ebay

1 ea. smd green led- ebay

2 ea. 1K ohm smd resistors- ebay


Drill Press (Harbor Freight)

Hole Saw (Harbor Freight)

Drills, and step drill

Hacksaw for cutting plywood



Wood files

Wire cutters

Step 2: Construction

Cut the base from 1/2" plywood, 6.5" long x 5" wide. Cut the 1/4" aluminum rod into 2 ea. 2.5" long sections. Drill a hole in the rod (using a drill press) to accept the RC car bearings and push the bearings into place. Find a 3" diameter coil form (I used a PVC sprinkler coupling) and wind 40 turns of #26 awg enamel copper wire on it. Use small zip ties to keep the coil together once off the coil form. Stick the brass rod through the center of the wire, leaving at least 1.25" length of rod on each side. Epoxy the rod to the coil where the rod sticks through the wire, making sure the rod is still centered in the middle of the coil of wire, so balancing won't be a big problem later on. Install a 3/16" long spacer made of 1/8" heat shrink or Teflon tube on each side of the coil so the coil will not contact the aluminum rod while in operation. Insert the brass rod into the bearings once the epoxy is dry, and align and mark the spots on the base where the aluminum bearing supports will be drilled. On my motor, I Drilled 2 ea. 1/4" holes, 3.5" apart, centered lengthwise on the board. There should be a tiny bit of play when the brass rod is moved side to side when the aluminum supports are in place. I had to insert a tiny paper shim between the inner diameter of the RC bearing and the brass rod. Ensure that the brass rod and coil spins smoothly and freely without noise. Remove the enamel from the ends of the wire and solder the wire ends to either side of the brass rod near the points where the brass rod goes through the coil of wire. Then snip out a small section of brass rod (1/16" or so) in the center of the rod. Then install 1/8" and 3/32" heat shrink over the cut area and heat shrink around the split in the rod, making sure the rod is in alignment, but that the cut ends are not touching. The cut section allows a separate electrical path, and a brush will be placed on the ends of the brass rod to allow current flow through the coil.

Make a support for the 2 horizontal stator magnets and the (top) 1 of the 2 vertical stator magnets. I used a 1/4" acrylic tube for looks, but you can use any material, 1/4" wood dowels would be fine; the top magnet support could then be a piece of wood with 2 holes drilled to fit the dowels. I carefully bent the acrylic tube over a heat gun on high setting (use outdoors in case of fumes), and when it softens, quickly place it over a form and let it harden. Repeat until you get the shape you want. Secure the 3 magnets with hot melt glue, being careful not to overheat the magnets- they will lose strength if overheated. Epoxy might be better.The bottom magnet is just glued to the wood base.

Edit- better yet, place a steel strip behind each magnet so that the magnets don't detach and break by snapping into each other. See the disaster (video) that happened when 4 additional magnets were added. The polarity of the magnets is important, the top and bottom magnets should want to come together if not held apart; same with the horizontal magnets. Test that the coil can rotate freely without hitting the magnets; you can make the coil more oval in shape by hand if more clearance is required.

The timing disk is 1/8" plywood 1.75" diameter. Cut it round using a cheap hole saw set, and make 2 of them, as the extra one will be used to hold the hall sensors. Plug the larger than desired 1/4" hole in the disk center with a wood dowel. Drill a hole for the axle in the center of the dowel. Using a compass, mark a timing magnet circle about 3/16" from the edge, then 4 ea. 1/8" holes evenly spaced for the magnets. Install the magnets, the sequence starting at the 12 o'clock position is N, N, S, S.

To hold the sensor disk, a support must be made. It is desirable to have the sensor disk not only movable in a circle to vary the timing while in operation, but also removable for maintenance. I cut 2 ea. 1/2" x 2" sections of 1/2" plywood, and bolted them together with 2 ea. 1.25" long x 1/8" brass machine screws about 1/4" from either end. To fit the 1/4" i.d. x 1/2" o.d. nylon bushing, mark the center (between the 2 haves). Using a step drill, drill and enlarge the marked spot gradually, then finish drilling with a 1/2" drill bit. Loosen the screws, insert the bushing and re-tighten the screws. The sensor disk can have an acrylic rod (or wood dowel) attached, glue it on so it is perpendicular to the rod. Fit the rod into the bushing, if it binds, sand the rod until it turns smoothly with a bit of effort, but does not bind. Install the sensors 180 degrees apart and wire per wiring diagram. The beveled sides should be facing away from the coil, the flat part glued with super glue to the sensor disk. Cut additional 1/2" x 1/2" of plywood sections to mount the sensor disk and bushing support to the wood base, and align with the timing disk. Glue in place- this is surprisingly more difficult than it sounds to get the alignment right while clamping with wood clamps.

Make the motor brushes out of braided copper solder wick, just solder the ends together in a ring and place on the motor shaft. Find a couple of very weak small springs at the hardware store, loop it through the bottom of the solder wick, and secure the other end of the spring to a picture frame eye hook screwed to the wood base. Only very light tension is required in the springs.

Make the electronics per the wiring diagram, using perfboard and 16 and 8 pin DIP sockets. An alternative would be a small 2" breadboard. Load the ATtiny85 with the program attached. The ATtiny doesn't do very much, just activates the enable pin of the H bridge, so you could use logic chips instead. But I had the Attiny so decided to use it. Also, it will be handy when I upgrade the motor driver from a SN754410NE to a TLE5205-2, because with the upgraded motor driver, there is no enable pin, and the driver inputs are different, and not particularly logical- but easy to obtain with the ATtiny85.

Step 3: Testing

Power the unit with 5 volts (1 amp or more power supply) during testing. Actual running current is 0.22 amp. My unit runs with as little as 2.36 volts at 35 mA, so I power it with 2 AAA batteries. Give the coil a spin, and vary the position of the sensor disk. The motor should turn at different speeds according to the sensor disk position. Rotate the sensor disk 180 degrees, and the motor should run backwards. In slow running mode, you should notice the red and green LED lights blinking twice green, then twice red, in one complete turn of the coil, indicating polarity change through the coil every 180 degrees. Since the sensors are 180 degrees apart, and the sensor disk is N, N, S, S, the sequence seen by the sensors through a full revolution is N-S (coil vertical energized clockwise), N-S (coil horizontal energized clockwise), S-N (coil vertical energized counter-clockwise), and S-N (coil horizontal energized counter-clockwise). This achieves 4 times more energized positions in one full turn than a simple reed switch controlling current flow in one direction. More reed switches could offer more activations per revolution, but the problem remains that at least half a revolution will be totally wasted, the coil coasting and not offering any torque at all unless the current is reversed through the coil. The typical DC brushed motor solves this problem with a mechanical commutator, reversing the coil's current flow at the proper time, thus they are fairly efficient. This instructable is just one way to do the same thing without mechanical commutation. I had fun figuring the N-S polarity in the timing disc so the motor would pull towards each magnet.

Future improvements-

To double the power yet again, the digital hall sensors could be changed to analog hall sensors, and the ATtiny could then determine whether the timing magnet was approaching or retreating, enabling the H bridge to change the current through the coil, pushing away from the stator magnet once past it, instead of just pulling towards one.

Replace the bipolar H bridge with a FET based bridge like the TLE5205-2 for a much lower voltage drop (lower internal resistance) for better motor efficiency.

Another thing would be to have the magnets rotate around the coil of wire, thus eliminating the need for brushes (similar to outrunner style BLDC motors). Solar power might be incorporated, as a more powerful alternative to the Mendocino motor. A RPM readout might be interesting and possibly a watt meter too. A strobe light could be easily added, since the red and green lights flash synchronous to motor rotation, thus you can see the timing magnets position change as illuminated by the strobe as the sensor disk position is moved.