Introduction: DIY Linear Actuator

About: I am a retired professional engineer, now farmer. Taking an interest in all things technological and in building devices useful on the farm.

I want a linear actuator, or maybe a series of them, to open and close ventilation openings in my greenhouse. Although I could buy linear actuators from EBay, I decided to have a go at making my own.

My requirements were:

  • The actuator should be strong enough the hold the ventilator open in the presence of wind gusts
  • The movement needs to be about 200 mm, to give a good size opening for air flow
  • Limit switches to stop movement when the end of travel is reached at both ends
  • Daisy-chain capability so that I can have multiple actuators, one on each of several ventilation openings.

Warrning: This project involves (gentle) heating of PVC, and also the use of solvent cement (glue). These actions may release toxic fumes. Take care to have a well ventilated work area and avoid breathing in any fumes as far as possible.

The main parts of the actuator are a small DC geared motor that directly drives a threaded rod. The push arm extends or retracts as the threaded rod rotates. The push arm has to be stopped from rotating by the connection to the item that it is controlling, which in my case is a hinged ventilation panel. The direction of movement of the arm is controlled by changing the direction of the voltage on the DC motor. The speed of movement can be controlled by varying the voltage used, either using a higher or lower voltage as required, or by the use of PWM.

Step 1: Materials and Tools

Materials required

Mounting base (fine grain hardwood, planed smooth 80mm * 14mm * 400mm)

Small DC motor (type 37GB geared to 500 rpm)

330 mm M8 * 1.25 pitch threaded rod

5 nuts, M8 * 1.25 pitch

Ball bearing, 21mm (OD) * 8 mm (ID) * 7 mm (width)

2 lengths of 15 mm PVC pressure pipe, 20mm and 330 mm long

1 length of 20 mm PVC pressure pipe, 200 mm long

2 saddles for 20mm PVC pressure pipe

Motor mounting bracket 80mm wide, 40 mm * 40mm * 1.7mm galvanised steel

Bearing mounting bracket 80mm wide, 25 mm * 40 mm * 1.7mm galvanised steel

Bearing retainer plate, 80mm * 40 mm * 1,7mm galvanised steel

Bearing location pad, fine grain hardwood. 80mm * 50 mm * 14mm

2 micro switches actuated by lever arm with roller, SPDT

2 microswitch mounting plates, 40mm * 20 mm * 1.7mm gal steel

3 microswitch mounting blocks, fine grain hardwood 45 * 25 * 8 mm

2 diodes 1N5819

circuit board 80mm * 20 mm

6 pole screw terminal strip

Hookup wire, multi-strand

Heat shrink tube, 2mm diameter * 300 mm

M6 hex coupler (a long M6 * 1.0mm pitch nut) (for alternative see Step 2)

M8 hex coupler (a long M8 * 1.25 mm pitch nut)

M5 grub screw 5 mm long

1/8" roll pin 16mm long

3 screws, M4 with countersunk flat head, 6mm long

6 screws, M3 * 6mm long (to attach the motor to the motor mounting bracket)

6 flat washers for M3 screws

4 screws, M2 * 12 mm long.

15 wood screws, 4mm dia * 12 mm long

7 wood screws, 4 mm dia, 16 mm long

6 wood screws, 3 mm dia, 16 mm long

3 nylon cable ties 2mm wide


Bench vice

Hand saw or bandsaw

Cordless drill and/or corded drill

Small angle grinder with cut-off and grinding wheels

Safety goggles and hearing protections

Tap and die for M8 * 1.25 pitch

Tap for M5*0.7 pitch

Tap for M4 * 0.7 pitch

PVC priming fluid and jointing glue

HSS drill bits (for metal) - 2.5 mm, 3.2mm, (3.3mm), 4mm, (4.2mm), 6mm (drill sizes in brackets are desirable but not essential)

Countersink bit (for making space for screw heads so the screw is flush with the surface)

Hole saws for 16mm and 22 mm holes in wood and steel.

Ring/open end spanners - 10mm, 13mm

2.5mm hex key (Allen key) for M5 grub screw

Hot air gun

Screwdriver, pliers, wire cutter,

Step 2: Making the Drive Coupling

The motor has to drive the M8 threaded rod.

The motor shaft is 6mm diameter with a flat machined onto one surface, making a "D" shaped shaft.

Because of small errors in alignment straightness of the M8 threaded rod, a flexible drive coupling is required. My first attempt was a rigid coupling, which worked but created additional motor losses and movement of the bearing. I then made a DIY flexible coupling using essentially the same materials, which works well. It is also possible to buy a commercially made flexible coupling, which also works well.

I will show all three couplings, for information.

DIY Rigid coupling (unsatisfactory)

I bored through the M6 coupler with a 6mm drill so that the coupler slides over the motor shaft.

I then made an M8 thread in one end of the coupler. The finished result is indicated by (1) in the image below. First step is to bore one end only of the coupler with a 6.5 mm drill (the proper drill size is 6.7 mm but I did not have that size; 6.5 mm worked OK). Be careful not to push the drill in too far, The wider hole should only go half the length of the coupler.

Carefully work the M8 tap into the end of the M6 hex coupler with the 6.5mm hole to make an M8 thread inside it. The thread should go half way through the coupler.

Then I made the M5 thread for the grub screw which locks the coupler to the motor shaft - see (2) in the image. Holding the M6 coupler in the vice with the M8 thread down, bore a 2.5mm hole into one of the flats. Widen the hole to 4 mm with a second drill. Make a thread in the hole with the M5 tap.

Cut the threaded rod to length (330 mm) and grind or file off any sharp edges. Run the M8 die over both ends to make sure the thread is OK. Thread the following onto the rod in this order: 1. an M8 nut; 2. the bearing; 3. another M8 nut. Thread them on so that there is about 15 mm of rod sticking out from the second nut. Now it should be easy to screw the threaded rod into the M8 thread just cut into the M6 coupler.

Now I could do a trial assembly of the coupler. The 6mm hole end of the M6 coupler slips over the motor drive shaft, and is locked in place with the M5 grup screw. The M8 threaded rod screws into the end of the M6 coupler (now it has an M8 thread in it). When the M8 rod is screwed in until it is reasonably tight, wind the 2 M8 nuts with the bearing in between them back and lock the nut closest to the coupling against the coupling, using a spanner.

This makes a rigid coupling betwen the motor shaft and the M8 threaded rod. The problem with this is that any misalignment between the two shafts will result in friction and flexing . Hence I went on to make a flexible coupling.

DIY Flexible coupling

This version of the coupling is made from am M6 coupler (just like the rigid coupling). The motor drive side is the same as the rigid coupling. On the threaded rod side, drive is transmitted from the coupling to the threaded rod by a cross-bar made from a roll pin.

The roll pin is a good option for the cross bar, since it can be a tight fit in the hole through the threaded rod, and a loose fit in the couler. The tight fit in the rod means that it won't fall out. The other option would be to use a screw passing all the way through and with a nut on the far end.

I bored through the M6 coupler with a 6mm drill so that the coupler slides over the motor shaft.

Then I made the M5 thread for the grub screw which locks the coupler to the motor shaft. Holding the M6 coupler in the vice with the M8 thread down, bore a 2.5mm hole into one of the flats. Widen the hole to 4 mm with a second drill. Make a thread in the hole with the M5 tap.

I then bored a 7mm diameter hole in the other end of the coupler. Be careful not to push the drill in too far, this hole should only go half the length of the coupler.

I filed the thread off the M8 threaded rod at one end, to a length of about 11 mm, until the end of the rod fitted loosely in the 7mm hole in the end of the coupler.

I ground a small flat on the coupler so that I could bore a hole through the coupler at right angles to the grub screw hole. With the rod fully inserted into the coupler, I drilled first a 2.5mm hole all the way through, then increased it to 3.0 mm.

I then took the rod out of the coupler and increased the hole in the coupler to 3.5mm.

The roll pin I am using is nominaly 1/8 inch diameter. It measures 3.15 mm. It is a loose fit in the 3.5mm hole in the coupler, but has to driven into the rod with a hammer, as it is a tight fit. With the rod inserted into the coupler, drive the roll pin through until it is flush on the far side.

Any excess in the length of the roll pin can be ground off.

Here is the final assembled version.

Commercial flexible coupler

This is available on Ebay for about $2.

6mm at one end, 8 mm at the other end, both secured by 2 grub screws. Simple to use.

Flexibility is provided by the spiral cut in the body, which allows it to flex if the shafts are not quite straight.

There is no specification given about the maximum torque or the maximum bending angle - but my guess it is probably quite enough for this application.

Step 3: Making the Push Arm

The push arm is a 330 mm length of "15mm" PVC pressure pipe. It has one end squashed and bored to take an M8 screw, and the other end has a M8 coupler fixed into it.

I squashed one end of the pipe by putting it in the vice between a pair of wooden blocks, and winding up the vice with one hand while holding the hot air gun to warm the plastic with the other hand. Be careful not to make it too hot, the plastic will melt if it gets too hot. Just a little heat is good to release any internal stresses in the plastic. After that, you can bore an 8mm diameter hole through the flattened end to make a connection to the object being moved.

The M8 coupler is a very loose fit inside the pipe so I cut a short piece the same length as the M8 coupler (about 20mm), and using a saw cut a piece out of it length ways. The space left behind after the piece is removed should be 11 mm wide.

The "15mm" PVC pipe has an inside diameter of 17.9 mm and an outside diameter of 21.4 mm. We should remove Pi * (21.4 - 17.9) mm = 10.99 mm so that if we roll the short piece with the cut out more tightly it will fit inside the end of the pipe.

Make sure the cut piece will fit inside the end of the longer pipe. Take it out again, prime both surfaces with the priming fluid, apply glue to the inside of the pipe and put them back together again. Push the small piece in until it is flush with the end of the longer pipe. Leave to cure overnight or longer. This photo shows the push arm with the short length of pipe glued into it.

Take the M8 coupler and make sure it runs freely along the full length of the M8 threaded rod. If it does not, you may need to run the M8 tap through the M8 coupler, or the M8 die along the M8 threaded rod; or both.

Push the M8 coupler into the end of the PVC pipe. It should be a tight fit. It will make it a bit easier to push in if the PVC is heated - but not too much.

Once the M8 coupler is in the PVC pipe drill three holes at points that face every second flat of the M8 coupler. First drill a 2.5mm hole, then widen it to 3.2 mm (or 3.3 mm if you have that drill). The using the M4 tap, put a thread into each of the three holes. Use the countersink bit to make an indent in the plastic for each hole, just big enough to take the head of the M4 screws. Then put in the 3 M4 screws.

In case the drilling has damaged the thread, or the screws have protruded into the thread inside the M8 coupler, run the M8 tap through the coupler a few times.

Step 4: Making the Base, Motor Mount and Thrust Bearing Mount


I started with the base and attaching the 20mm pipe to one end using the saddles.It should run along the centre of the base.

I then inserted the push rod into the pipe, with the M8 threaded rod screwed into it, and measured the distance from the base to the centre of the threaded rod. This is the required height for the centre of the motor shaft and the centre hole of the thrust bearing mount. it was 14mm.

Motor mount bracket

The motor mount bracket is a piece of 1.7 mm thick steel 80mm long and with a base and side of 40mm * 40mm. I recovered a supply of this material from some old packing cases.

I first made a mark where the centre of the hole for the motor shaft housing should go, half way along the bracket and 14mm above the lower surface. I marked this with a centre punch, then bored a 2.5 mm hole. I then widened the hole using a series of drills, in steps no more than 2mm, until the hole was 12.7 mm wide, which is the right size to take the shaft end of the motor (which is 12.0 mm diameter).

I then carefully marked positions for the 6 M3 screws that attach the motor, drilled them first with a 2.5m drill bit, then 3.2mm. Some of them were slightly off so I had to use a small round file to widen them a little bit.

I drilled a pattern of 4 screw holes 4mm diameter for the screws that attach the bracket to the base, making sure none of them is under the motor, which would make it difficult to use a screwdriver after the motor is assembled to the bracket.

With the motor attached to the motor mounting bracket with 6 M3*6 mm screws, I then checked the alignment of the motor with the position of the M8 threaded rod - fine. I found that I had to put a washer under the head of each screw, otherwise the screws went in too far and distorted the motor casing causing it to bind.

Thrust bearing mount

The purpose of the thrust bearing is to transfer the force of the push rod to the base, without putting strain on the motor or the motor coupling. The motor coupling is designed to transfer rotational, not longitudinal force.

The thrust bearing mount consists of a wooden bearing location pad sandwiched between a mounting bracket and a retainer plate.

The bearing location pad is an offcut of the wood used for the base. The pocket that holds the bearing is a hole 22mm diameter all the way through the pad. The pad is slimmed down to about 1mm more than the bearing thickness, ie 8mm.

The mounting bracket and the retainer plate both need a 16mm hole that lines up with the M8 shaft. The mounting bracket needs screw holes for attachment to the base, and to attach the bearing location pad.

The 16mm hole is large enough so that the M8 nuts on the threaded rod
can freely rotate inside it, but small enough so that the outside race of the bearing is held on each side by the mounting bracket and the retainer plate.

When the mounting bracket, bearing and bearing location pad are assembled, position the retainer plate over the pad and drill holes for two M3 * 20mm screws to go all the way through and securely lock all the parts together.I used M3*20 mm screws, but M3*15mm screws would have been sufficient and preferable, leaving less unused thread which may interfere with installing the mounting screws.


Remove the 20mm saddles and pipe. This provides access for installing the push arm.

Place the parts together on the base in order - push arm,nut, bearing in its mounting bracket, nut, threaded rod with coupling, motor in its mounting bracket.

Push the coupling over the motor shaft and tighten the grub screw. Then screw on the first nut, leaving 3 or 4 vacant threads. Slide the bearing up to the first nut, and screw the next nut up to the bearing and tighten them together.

Run the motor to make sure it runs freely. Mark the position for the motor mount bracket, drill pilot holes and screw it to the base.

Run the motor again. Mark the position for the bearing support bracket, drill pilot holes and screw it to the base.

Screw the start of the push arm thread on by hand, then run the motor to bring it about half way along the threaded rod.

Now you can re-install the 20mm pipe and secure it with the saddles.

Step 5: Adding the Limit Switches and Wiring


The limit switches need to be mounted so that they sense the location of the push arm.

The limit switches are microswitches with a lever arm and roller at the end. The lever arm needs to be oriented as shown in the photos, otherwise it may catch and bend when the push arm reaches it.

I used scraps of the metal used for the brackets to make mounting plates for the switches, and scraps of wood from the bearing pad to make mounting blocks between the base and the mounting plates. The microswitches are attached to the mounting plates with M2 * 12 mm screws and nuts.

The IN limit switch is installed up close to the bearing mount (se photo at right).

The OUT limit switch is located so it detects whether the push arm is present or not at a point 200 mm from the IN limit switch.

The roller of the OUT limit switch goes through an 8mm hole in the 20mm pipe, to sense whether the push arm is present or not.




Circuit diagram

The connections are shown in the diagram above.

The direction of movement is controlled by reversing the polarity of the applied voltage (terminals 1,2 and 5,6).

When the push arm is being driven IN, positive current to the motor comes via the Normally Closed (NC) contact of the IN limit switch. When the push arm reaches the fully in position it operates the IN switch which breaks the current path. The drive voltage is then transferred to the Normally Open (NO) contact (ie terminal3), and can be used to drive another actuator in a daisy chain.

When the polarity is reversed, the negative voltage reaches the motor terminal via the diode from terminal 1, even though the NC contact of the limit switch is open. The positive voltage reaches the motor via the NO contact of the OUT limit switch (terminal 5), which is in the operated position until the push arm reaches the OUT end of its travel. When the push arm passes the OUT limit switch, the switch breaks the current flow to the motor, and its NC contact (terminal 4) transfers the drive voltage which can be used to drive another actuator in a daisy chain.

Subsequent actuators in the daisy chain are connected with terminals 1 and 6 connected to 1 and 6 of the previous actuator, terminal 2 connected to 3 of the previous actuator, and terminal 5 connected to 4 of the previous actuator.


The diodes are needed so that the motor is stopped by the limit switch when traveling in one direction, but so the motor can drive in the opposite direction. The diodes do not carry current most of the time, since for most of the travel of the push arm the limit switches are not at their limits. However the diodes need to be capable of carrying the starting current of the motor.

I used diodes of type 1N5819 which have a continuous current rating of 1 Amp and a surge rating of 25A.

The diodes are mounted on a little piece of prototype circuit board screwed to the base under the coupling.


Wires should be multi-strand (to cope with possible vibration of the motor) and thick enough to carry the motor current. I used wire with 13 strands of 0.12mm. I slipped a short piece of 2mm heat shrink tube over the soldered connections on the limit switches, to make sure there is no chance of a short circuit to the mounting plates.

The wires are brought out to the terminal strip to make the external connection simple.

Step 6: Performance

I measured the retract and extend times of the actuator without any load and a 12 volt power supply. The extend time is 24 seconds, the retract time is 26 seconds. The motor current without any external load is about 0.3 Amps (it varies a bit as the actuator moves along the threaded rod).

Then I set it up with the weight of a house brick as the load - see photo. The brick weighs 3.5 kg. The retract time went up to 29 seconds with a motor current of 0.6 Amps. The extend time also went up, to 27 seconds, with a motor current of 0.5Amps.

I am not sure what the maximum load the actuator will take. I am reluctant to test it to destruction! My guess is that it will take 10 kg without any problems.