Introduction: Raspberry Pi Controlled Scissor Lift
Why a scissor lift? Why not! It’s cool and a fun project to build. The real reason for me is for elevating the cameras on my Great Mojave Rover Project. I want the cameras to rise above the rover and capture images of the surroundings. But I needed the cameras to be lowered while the rover is driving.
First I tried a robotic arm, but that proved too heavy and stripped the servos. Then while out and about one day I saw something I have seen hundreds of times before, a scissor lift. That night I set out to design a scissor lift that would use a screw drive, a 5/16” x 5 1/2” bolt, to raise and lower the cameras. I was amazed at how cool it was to see the cameras lift to a couple of feet (25") with just a little over 4” of travel and to see how much weight it would lift. As a side benefit, it only uses one servo.
When this great and wonderful scissor lift is working the Raspberry Pi will turn on the LX-16A servo raising and lowering the lift using Python 3 code. Limit switches will tell the Pi when your scissor lift has reached the top and bottom signaling the servo to stop rotating.
My next adventure for the lift is to place it outside for an extended solar test. Powered by solar cells and 18650 batteries the scissor lift will raise, take photos and then lower once an hour. But that is another Instructable later once I get that working. After that, mounting it on the Rover.
I divided this Instructable into three main parts to aid in the building and tuning process:
- Base (Steps 2 - 7)
- Electronics (Steps 8 - 12 )
- Scissor final assembly (Steps 13 - 16)
I hope you enjoy my first intractable and your scissor lift.
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: Get the Stuff You Need.
You are going to need a bunch of stuff for this project. If you are like me and enjoy 3D printing and building stuff you may already have most of this. Make sure you check out McMaster-Carr for the screws there are much cheaper there when you buy them by the hundred. You can also order sets from Amazon.
- 5.5 mm box wrench set
- 2.5, 2.0 mm hex drivers It's worth having a good set of these.
- Drill with 1/8” drill bit This drill bit set I have.
- Graphite Lube
- Soldering Iron
- Solder I thought I was bad at soldering until I got good solder.
- Sander (best sander in the world)
- 3D Printer I have the XYZ Da Vinci Pro 1.0 and have been thrilled with it.
- Alloy Steel Socket or Button Head Screws: Be sure to order more than you need, because my counts may be off!
(1) M3 x 10mm Button Head (get from McMaster-Carr)
(2) M3 x 12mm Button Head (get from McMaster-Carr)
(4) M3 x 10mm (get from McMaster-Carr)
(6) M3 x 12mm (get from McMaster-Carr)
(4) M3 x 16mm (get from McMaster-Carr)
(34) M3 x 20mm (get from McMaster-Carr)
(2) M3 x 25mm Button Head (get from McMaster-Carr)
(8) M3 x 30mm (get from McMaster-Carr)
(4) M3 x 45mm (get from McMaster-Carr)
(30) M3 nylon lock nuts (get from McMaster-Carr)
(54) M3 washers (get from McMaster-Carr)
- (48) 3x6x2mm Bearings It will work without these bearing, but it sure makes it nicer.
- (1) 8x22x7mm Bearings You can also steal one from a fidget spinner
- 3D Printed Parts You can download these from Thingverse parts
(2) Beam 20mm x 20mm x 190mm
(1) Motor Screw Mount
(1) Platform Rails
(1) Rear Screw Mount
(1) Scissor Inner Bottom
(4) Scissor Inner
(1 set) Scissor Outer
(1) Servo Mount Front
(1) Servo Mount Rear
(1 set) Spacers
- (2) 5/16" nut (Home Depot)
- (1) 5/16" x 5 - 1/2” bolt (Home Depot) You can also use a 5/16" Threaded Rod if you prefer.
- Raspberry Pi, I am using a 3 model B+ any Pi version will work This is a nice kit.
- (1) Lewansoul LX-16a Serial Bus Servo, I got mine for under $20.00 ea. (you will need to search Amazon or Banggood for this, the link keeps changing)
- (1) Lewansoul Serial Bus Debug Board.
- (1) Metal Servo Horn
- (2) Limit Switches https://amzn.to/2SsZBGj
- Silicone Wires These are great, you can strip them with your fingernails (if you don't bite your fingernails)
- Batteries to power Servo, I am using 4 AA NiMh batteries from Ikea.
- Microfiber cloth
- Band-Aids (hopefully not)
Step 2: The Base
It's much easier to build this in stages, let's will start with the base. Then we will move to the electronics and finally assemble the scissors. It's printed in different colors because I used the PLA and PETG I had.
If you have not done so, print out your parts. It took my printer a few days to finish printing all the parts.
You can find the parts here: https://www.thingiverse.com/thing:3325636
Important safety tips (Orginal Ghostbusters reference, Google it)
- Take your time and don't get crazy with over tightening the M3 screws, the plastic strips easy. If you strip the hole, you may need to reprint the part or use some gorilla glue (the brown stuff) and lightly coat the inside of the hole with a toothpick and let it fully dry overnight before use.
- Put the washers "nice side" up, it looks better.
- Take your time, or you may need to print it again.
- Print the Scissor parts last, as it's the last part to build.
Here we go.
A. Start printing all the parts (see the part list).
B. Sand the part smooth, trimming out the yucky stuff.
Step 3: Mounting Limit Switch.
A. Bend the common lead (the one that is already bent on the side of the switch), so it sits flush and solder a wire on the limit switch. There is not enough clearance to mount the servo if you forget this step.
Note: This is the only soldering you will need to do at this part of the build.
B. Drill through (4) 1/8” holes in the Servo Mount, see the purple arrows in the photo above. Drilling allows the bolts to freely pass through and tighten the Servo Mount to the rails later.
C. Finally, attach the limit switch as shown to the Servo Mount with (2) M3 x 16mm screws.
Step 4: Lower Motor Screw Mount
A. Drill through (5) 1/8" holes in the Lower Motor Screw Mount see the purple arrows in the photo above.
B. Then attach the Lower Moto Screw Mount to the metal servo horn using (4) M3 x 12mm button head screws.
C. Finally, attach the Lower Motor Screw Mount to the servo using (1) M3 x 10 mm screw.
Step 5: Mount the Servo and Bolt
A. Drill through (4) 1/8" holes in the Rear Servo Mount as shown in the photo above where the purple arrows indicate.
B. Drill through (2) 1/8" holes in the screw mount where indicated by the purple arrows in the photo above. Note: Yours may be a bit shorter depending on the version you printed.
C. Fit the Servo on to the Servo Mount. You may need to trim this a bit to get a good fit. It will be a little loose. Then using (4) M3 x 45mm screws and washers mount the rear servo to the Front Servo Mount. The servo will rock side to side but not back and forth.
D. Insert the 5/16" x 5 - 1/2" bolt into the upper screw mount; it should be a snug fit. You may need to trim the opening a bit to get it to fit.
E. Using (2) M3 x 16mm bolts and washers connect to two halves of the Screw Mounts.
F. Your assembly should look like the last photo.
Step 6: Slider and Rear Assembly
Now it's time to attach the Slider and Rear Screw Mount.
A. Insert (2) 5/16 bolts into the sliders. The bolts should have a little play in the back and forth. Without the play, the screw will bind while in motion.
B. Screw the slider on the 5/16 bolt a few inches.
C. Drill through (4) 1/8" holes in the rear screw mount bearing cap as indicated with the purple arrows in the photo.
D. Insert the 8mm x 22mm x 7mm bearing into the Rear Screw Mount, and attach the Bearing Cap with (4) M3 x 12mm bolts and washers.
E. Attach (1) limit switch with (2) M3 x 16mm bolts
F. Slide the 5/16" bolt into the bearing. Note: There will be a bunch of play here. You will want to use a piece of electrical tape or heat shrink tubing to reduce the amount of play. Measure the amount needed in the next step.
Step 7: Finishing the Lower Assembly.
Now that you have the motorized assembly finished, it's time to mount it to the rails. The rails are part of The Great Mojave Rover Project and may seem like overkill. I plan on integrating the scissor lift into the rover and the rail design allows me to do so later.
A. Sand one side of each rail smooth. You don't need to sand a bunch, just enough to flatten out the bumps.
B. Screw on the Rear Screw Mount on first using (4) M3 x 30mm bolts and washers. This should sit flush at the end of the rails.
C. Insert the 5/16" bolt into the bearing, with the servo mount in the 4th hole (leaving 3 empty holes) measure where you want the tape or heat shrink to go. Attach the tape or heat shrink and refit the assembly.
D. Screw the Servo assembly to the rails at the 4th hole (Leaving 3 empty) using (4) M3 x 30mm bolts and washers. Note your Servo Mount may be a bit different, I redesigned for a longer 5/16" bolt. Please still leave 3 holes empty.
You should now have the Motorized Assembly ready for the attaching the limit switch screws and making your Raspberry Pi move the slider back and forth.
Step 8: Limit Switch Adjusters.
Two limit switch adjusters will engage the switches where you want the slide to stop. You will want to use button head screws at the two spots where the engaging bolt passes above for clearance. Also, Both limit switch adjuster 3D printed parts are the same.
A. Drill (2) 1/8" threw holes in the each of the limit switches engager.
B. Insert the button head screws in the engagers.
C. Insert the limit screw in each engager, (1) M3 x 20mm, the other is (1) M3 x 40mm.
D. Attach the Limit Switch Engagers to the slider. Use the longer screw (40mm) on the servo side.
Note: I attached locking nuts to my longer engager because I stripped out the hole.
Step 9: Connecting the Pi.
The software for this is easy it just simply raises and lowers the lift. You can edit the code to do anything you would like, have fun.
I am assuming that you already know how to get the OS loaded on your Raspberry Pi and how to write a simple Python 3 program, a Hello World example would be just fine.
Here are is a good place to start, but there are a bunch of resources out there to get started.
Step 10: Wiring Your Lower Assembly.
For a small project like this, I prefer to use the Pimoroni Pico HAT Hacker board over a breadboard. You can use anything but I like this little device. I soldered on 40 pin female headers on both sides of the HAT, that allows me to use on either side (see the second photo).
Warning: I have blown up a couple Raspberry Pis doing this while the Pi is powered on. Make sure you red is + and black is ground or -, the Servo Debug Board has no protection built in.
A. Connect the black wire to the common connections on each switch and the ground on the Pi. (Pin 6)
B. Connect the Green wire to the lower limit switch (See 1st photo) and then to GPIO 23 (Pin 16)
C. Connect the Yellow wire to the upper limit switch (See 1st photo) and then to GPIO 22 (Pin 15)
D. Connect the Servo Debug board to the USB port on the Pi.
E. Connect the Servo to the Servo Debug board using the cable supplied with the LX-16A servo
F. Connect power to the Servo Debug Board. Don't use the Pi to power the servo board, use an external battery source. I used 4 AA batteries.
Step 11: Loading and Running the Python Program
Again I am assuming that you know how to start the terminal and know how to start a Python3 program.
A. Start the Terminal
B. We need to clone a couple Libraries from GitHub. The first is the PyLX16A by Ethan Lipson, the other is the Scissor Lift code from BIMThoughts' GitHub
git clone https://github.com/swimingduck/PyLX-16A.git
git clone https://github.com/BIMThoughts/ScissorLift.git
cp ../PyLX-16A/lx16a.py .
The command above do the following:
cd changes directory to your home directory
git clone downloads the code files from GitHub into a folder of the name of the repository.
cd ScissorLift changes the folder to where the ScissorLift code is
cp ../PyLX-16A/lx16a.py . copies the library necessary for the servo commands.
C. You should have your Pi connected to the Motor Assembly and the Debug Board connected to the USB and the Servo.
D. type the following to run the switch test.
cd cd ScissorLift python3 SwitchTest.py
The program will start saying "going down".
Engage the switch further from the servo and the program will respond with "going up". Now engage the switch closest to the servo and the program will stop.
If that fails double check your wiring, I made the mistake of soldering the yellow wire to the wrong switch connection the first time and it would stop after engaging the first switch.
Step 12: Motor Test
Now that the switches work, it's time to test the motor assembly.
You already have the code downloaded. Let's begin.
A. Make sure your servo is connected to the Debug Board, any plug will do as long as it fits nicely.
B. From the Terminal type the following:
cd ScissorLift python3 MotorTest.py
Your slider will start moving and when towards the servo first, then when the limit switch engages it will travel the other direction and stop when it reaches the other limit switch.
If you hear it starting to bind, unplug The servo from the Debug Board and press ctrl-c to stop the program and determine why it is binding.
Binding in the middle of the slide:
a. Nuts are not freely moving inside the slider.
b. The screw mount is not centered.
c. The bearing is not free.
Binding at the end of the slide is caused by the switches miss wired or the engagement screws need to be adjusted.
d. Servo keeps moving after pressing ctrl-c, unplug the servo wire to the debug board. That will reset the servo.
Step 13: Assembly of Scissors
Now we finally get to the point where we can assemble the scissors. There are three main components of the scissors.
- Scissor Outer (the first photo, looks like a blue Popsicle stick)
- Scissor Inner (Second Photo Gray)
- Scissor Inner Bottom (Second Photo Blue)
The difference between the Scissor Inner and the Scissor Inner Bottom is the placement of the bearings, as illustrated on the right side of the photo. Watch the video it's easier to explain it there.
A. Insert the bearings into each of the Scissor pieces. You may need to use a bolt, washer, and nut to press the washer in the slot. If you break the slot, it's alright you can use glue to fix it.
B. Using graphite lube and a cotton swab, coat the nonbearing sides of the scissors.
C. Using a M3 x 20mm screw, washer, and a locking nut. Start with the inner bottom connect the scissor outer to the middle connections. (see photo)
D. Connect another outer scissor to the end of the bottom scissor where the bearing is on the inside. Then Connect another inner scissor to the middle.
E. Continue attaching inner and outer scissors until run out of scissors.
Step 14: Attaching the Scissors to the Base.
Using (2) M3 x 20mm with a (2) washers and 3d printed spaces connect the scissor assembly to the servo mount of the base.
Using (2) M3 x 12mm connect the scissor assembly to the slider.
Except for the platform you have a working scissor lift.
Step 15: Scissor Run Test
Hook up your scissor lift back up to the Raspberry Pi, if you have not done so.
A. From the terminal on your Raspberry Pi run MotorTest.py again and see your scissor lift in action.
Keep and eye on:
- Any binding
- Clearance of the limit engagement screws
- If it binds or something happens unplug the servo from the debug board first.
Step 16: Attaching the Platform
Hopefully, by now you figured out how to put on the platform.
A. Determine if you what end you want the platform.
B. Attach the platform rails to the outside of the top of the scissors. On the side where you need the spacer, you will need an M3 x 25mm screw and 2 washers. On the other side use an M3 x 20mm screw with 1 washer and 1 lock nut.
C. Using M3 x 12mm screws and washers attach the platform top to the rails.
Step 17: Thank You
Thank you for getting this far, hopefully you have a working scissor lift you don't know what to do with, or maybe you have a scissor lift that you have a wonderful idea of how to use it.
Either way I hope you had a great time and learned something.
Runner Up in the
First Time Author