Self-starting solar-powered Stirling engine

This is a continuation of my Stirling engine development for a sculpture project that is solar powered. Because this engine needs to autonomously control its operation, it needs to self-start at the proper time. Here’s a video of the engine with starter and controller.

This engine is based on the simple Stirling with some significant improvements although still quite simple. The changes are:

1. A ball bearing supported crankshaft.
2. Machined aluminum power piston for close fit in power cylinder to provide better compression.
3. A 5 inch diameter aluminum disk on top for collecting solar heat with an acrylic cover to reduce convection losses.
4. Polycarbonate displacer cylinder (transparent) to make the displacer visible and for higher temperature operation.
5. A data acquisition and controller unit that measures hot and cold plate temperatures and crankshaft speed.

The controller unit sequences the engine start operation when the temperature ratio is high enough for operation. The unit also displays the following information:
1. Th
2. Tc
3. Temperature ratio Th/Tc
4. Hz and RPM
5. Number of engine starts
6. Number of failed engine starts
7. Engine starting temperature ratio
8. A log of engine speed versus temperature ratio.
9. Engine running time

The ball bearing supported crankshaft and machined piston were the major changes that allows this engine to operate at low temperature ratios (below Th/Tc of 1.050). That is equivalent to 27 deg F for Th-Tc measured at the hot and cold plates for typical operating temperatures. Although I have experimented with other designs this engine has proven to be quite reliable. Running usually between 5 and 7 hours per day, this engine is accumulating quite a bit of operating time. An additional improvement may include ball bearings for the crank pin – connecting rod interface. The goal for this engine is to operate when heat is sufficient for 10 years. That probably represents 2000 hours per year or 20,000 hours total and 100 million revolutions. The only reason I think this is possible is that the engine only needs to turn, it doesn’t need to produce much power.


The starter is very simple with the stepper motor being the only actuator. Counterclockwise rotation engages the starter and then clockwise rotation turns the engine through two revolutions, accelerating the engine to 60 rpm and disengages the starter. Currently I consider a start a failure if the engine runs for less than 2 minutes. About half the time the start fails and the controller waits one minute, increases the starting temperature ratio, and then attempts another start. The second start has never failed although the controller will still try a few more times at increasing temperatures before assuming a mechanical fault. Unless the engine is shaded by something (a tree, a cloud, etc) it normally runs the full day on its one or two starts.

The controller was actually fun to development because the electronics was so quick and painless.


The heart of the controller is an Arduino Uno with an Atmega 328. This is a micro-controller board you can connect to your computer with a USB cable and develop your computer program on the provided integrated development environment. The micro-controller accepts digital and analog inputs and drives digital outputs. This board reads and processes the outputs of the two analog temperature sensors and the digital speed sensor. It also drives the LCD display.

The Arduino board cannot drive the stepper motor directly, that requires another motor driver board that is stacked on top of the Arduino Uno. The motor shield, as it is officially referred to, will drive two stepper motors and other types of motors too. Most of these products were purchased from Adafruit. You don’t really need to know much about stepper motors or anything else because Adafruit provides online tutorials and libraries that allow you to just program at a simple level in the C language. Numerous examples make it easy and it’s all open source so you don’t end up having to buy any software. Adafruit, by the way, doesn’t pay me, I’m just a satisfied customer.

The engine controller logs the performance. Here is the data for September 19, 2011. I set the engine out at 10:00 AM PDT and it started at 10:06. The engine stopped running at 4:29 PM. At that time the sun was 30.1 degrees above the horizon.

Temperature Ratio, Th/Tc Average RPM Time Hr:min
1.050 to 1.060 89 00:46
1.060 to 1.070 103 00:54
1.070 to 1.080 119 01:09
1.080 to 1.090 139 02:48
1.090 to 1.100 143 00:11

For simplicity this engine is designed to use solar heat without concentration so that no solar tracking is required. The current solar collection method is a flat aluminum plate painted flat black and covered with a transparent acrylic cover. There is a 0.25 inch airspace between the plate and cover. The current configuration will operate the engine when the unobstructed sun is at or above approximately 30 to 31 degrees above the horizon. The ambient temperature is not critical because the engine operation depends on the temperature ratio of the hot source and the cold sink.

Minimizing the cold sink temperature requires not only shading the heat rejecting surfaces but also minimizing radiant heat and reflected light. On a typical summer afternoon the air temperature where I live might be around 80 to 90 degrees F while the ground temperature typically measures 130F to 140F for dirt or brick. Asphalt will be hotter, concrete a few degrees cooler. The radiant heat can raise the cold sink temperature considerably. Shading both the top of the cold sink from direct sunlight and providing a shaded surface that blocks the radiant heat from the ground or nearby walls helps reduce cold sink temperatures.

Surface wind is does not seem to have a large effect on power output. Improved cooling of the cold sink is balanced by more cooling of the heat source probably caused by increased cooling through the acrylic cover. The wind does help reduce peak temperature. Peak collector temperature for the operating engine so far has been about 160 deg F.

The least satisfactory part of the system currently is that the engine stops running when the sun reaches about 31 degrees above the horizon. While that provides about 6 hours of operation midway between winter and summer, on the shortest day, December 22, at the location these engines are to be used the sun elevation at noon is 31 degrees above the horizon. I’d like the engine to be able to run for about 4 hours on that date (assuming clear skies). That requires operation down to about 22 degree sun elevation. I’ll discuss this topic more fully and my solutions in a future post.

Basic engine specifications:
Displacer cylinder : 3.50inch OD x .125 inch wall x 2.75 inches long
Displacer: 3.1 inch diameter x 2.0 inches long
Displacer stroke: .63 inches
Power cylinder: .625 inch bore x .875 inch stroke

What about power?

This engine doesn’t provide any useful output power. I could put a generator on it that might deliver about 10-20 mW, enough to drive a small LED. That seems pointless to me. In fact this engine with controller, display, and starter needs an external power source. Right now that comes from an AC converter or a battery pack. Eventually it will be powered by a small PV solar panel.

Personally my primary goal with heat engines is to develop engines that generate some useful amount of power. Although this engine does not accomplish that, it has helped me with pieces of the puzzle that I need to work out for solar-powered heat engines. Solar tracking and concentration are probably necessary for an engine that does produce useful power. Having designed and built the controller and starter, tracking and concentration don’t seem like a big hurtle. A reliable, low-cost Stirling engine that does produce useful power is still a big hurtle.

This engine development is almost complete. I still need to extend the winter operating range. A secondary goal is to provide heat storage for engine operation into the evening. That goal is probably best achieved using solar heated water as the heat transfer and storage medium.