Variable reluctance starter motor for Stirling engine

I chose to use a variable reluctance motor as the starter for my Stirling engine design for the following reasons:

1. The most important feature is that it offers near zero friction when the motor is not energized. The only sources of friction are the shaft bearing drag and aerodynamic drag on the rotor. This is important because the Stirling engine it is used to start doesn’t have a great deal of torque. Motors with permanent magnets or brushes add significant drag.
2. The motor integrates easily with the flywheel.
3. It uses less energy than the previous stepper motor starting arrangement because it should only need to be energized for about 3 seconds to start the engine.
4. It’s reasonably easy to build.
5. This motor is dead quiet. No brushes to make noise and at speeds up to 100 rpm there isn’t any air noise either.

Because I designed the motor using ordinary mild steel without laminations, it quickly becomes inefficient due to eddy-current losses and hysteresis losses at higher RPM. This is not a general limitation of variable reluctance motors, just of this particular design.

How it works

Conceptually the way the motor works is easy to understand. The photo above shows the motor with the flywheel-rotor removed. You can see there are six stator poles arranged in three diametrically opposite pairs. I’ve only used one coil on each pair of stators for simplicity. The motor would be more efficient and powerful with six coils instead of three. When one of the three coils is energized, the magnetic flux generates a force that attempts to align the nearest rotor poles with the stator pole. This motor operates on the familiar principle of an electromagnet attracting iron.

By energizing the stators in the proper sequence the motor can be made to rotate in either direction. The smoothest motion is generated by a three phase action although the motor will work with simple on-off switching of the coils. The video shows the operation with simple on-off switching of the coils. The controller I used also supports pulse width modulation for smoother control. I chose the on-off switching because that is what I’ll be using for simplicity in my application.

As is the case for all brushless motors, this one would operate best with rotor position feedback so you can energize and de-energize coils at the just the right time. In my motor I’m not using rotor position feedback which limits it to low speed operation. I’ve only run it up to 100 rpm.

To drive the motor I used an Arduino microcontroller board driving a motor shield. A 5Vdc power supply (I’ve used up to 7V) provides drive power to the motor shield and the shield switches the power to each of the three coils according to the signals sent from the microcontroller. Although the motor can be entirely controlled by the software, I used an external potentiometer and switch to experiment manually with the motor speed and direction. The controls above are actually part of the stepper motor coil winder I made to wind the coils. I simply disconnected the stepper motor’s four leads, connected the variable reluctance motor’s 6 leads, and reprogrammed the controller via the USB cable for the variable reluctance motor.

The video demonstrates acceleration to 100 rpm and fixed operation at 14 rpm. There is also a torque demonstration as it winds up a 47g washer around a 1.25 inch diameter at 40 rpm. This computes to 75 g-cm (29.4 g-in) of torque. Input power was approximately 2.5W (.5A at 5V) and output power was 0.036 w output power for an efficiency of 1.4%. The dismal efficiency is not a serious problem for my application because the motor will only be used for short periods. It does provide ample torque for my application even without a second set of coils.

Motor design

The motor uses mild steel throughout in the magnetic path. The core for the coil is .375 inch diameter made from a 1/4-20 bolt inside a 3/8 diameter steel tube. The steel tube is turned to the precise length needed to set the .020 air gap between the rotor and stator. The pole pieces and rotor are made from 3/16 steel. The rotor maximum diameter is 4.460 inches and the diameter between rotor poles is 4.00 inches. Each of the three coils have 1000 turns of 28 AWG copper magnet wire. The coils were wound on forms made on a lathe from .75 inch diameter acetal. The coils could be wound directly on the 3/8 steel tubes but the coil forms are more convenient to use and let you slip the coils off to try different numbers of turns or wire diameter to meet your needs.

The hexagonal steel bearing block is .75 inches long and 1.5 inches across. The air gap between the bearing block and the rotor is 3/16 inch.

If you are interested in building a motor of this type a good place to start is with a small test section like this:

You can make some torque measurements vs offset that will give you an idea of what torque a complete motor will have. No controller is needed, just a dc voltage on the coils. Make sure the currents in the two coils create a magnetic flux in the same direction or they will just cancel each other. Reverse the current in one of the coils to check if you aren’t sure. Torque at low speed will be roughly proportional to the current squared and the number of turns squared.

If you are interested in a higher speed variable reluctance motor then a better design for the motor with laminations might be something like this test prototype:

This motor is a planar design that could be built up from many thin lamination layers. Besides laminations you’ll need some type of position feedback to drive the motor reliably at high rpm.

The electronic parts used for the motor and winder with part numbers for

Item Part Number
Arduino Uno microcontroller board 2121105
Motor shield kit 2121130
#28AWG magnet wire (only used for motor) 2119355
Miniature toggle SPDT (or SPST) 317236
1/4W 10kohm linear taper potentiometer 29082
Knob 264998
Stepper motor (only used for coil winder) 155460
two 10kohm resistors

Adafruit manufactures the motor shield kit and provides excellent tutorials both for assembling the motor shield and using it. All software for the Arduino and motor shield are free.

I can provide a schematic for the circuits, but I’m guessing that anyone who wants to build one probably won’t need it. Leave a comment if you need more information on some aspect of this project.

coil winder

As mentioned and shown in one of the photos above, I built a simple coil winder to wind the coils. I used the Arduino with motor shield to drive a stepper motor with adjustable direction and speed up to 100 rpm. The controller keeps track of the number of turns and displays it on my computer. It also stops when it reaches the set number of turns. This isn’t the fastest way to wind coils but it has the safety feature of stalling with a reasonable force. Winding coils on a lathe or other powerful motor that isn’t going to stall can cause gruesome accidents–like slicing off flesh to the bone if a wire gets wrapped around your finger or limb. You can always wind coils by hand.

I plan to cover details of the coil winder design in a future post.