Introduction: Servo Driven Counterweight Trebuchet

The project is a counterweight trebuchet, i.e. uses a heavy weight and leverage to throw projectiles.

A continuous rotation servo is attached to the winch axle to bring the arm down by winding the rope as the axle rotates. The servos are driven by a Raspberry Pi Pico W that connects to a local Wi-Fi network so that an online dashboard can be used to control them through Adafruit IO.

Trebuchet theory:

  • counterweight should be 100x the payload
  • the arm, or moving piece of wood carrying the weight and sling, should be divided into two parts:
  • payload arm (long) and weight arm (short) in a 4:1 ratio
  • the main axle should be drilled where these two portions meet
  • the sling is used to essentially increase the amount of leverage acting on the payload as one end of the sling detaches from the finger at a certain angle, given by the angle of the finger relative to the arm
  • when fired the counterweight should not contact the ground (length of short arm + weight)
  • every part holding load should be able to withstand the tension/force when in motion

IMPORTANT DESIGN CHANGES FOR VIEWERS: A trigger mechanism is also included that attempts to push the rope attached to the winch off the finger (angled piece of wood at the end of the arm), but the design is flawed as this requires more torque than what the motor/box is capable of. A suitable alternative is to use a rack and pinion where the motor drives the pinion, and the rack is moved on top of the finger to hold tension (or perpendicular to the arm). The end of the rope attached to the rope could then be slid off as it no longer needs to hold tension. The weight enclosure .svg does not include holes to mount the 2 servos. The hole for the winch servo would need to be very precise in order to properly attach it to the axle to make it rotate in place.

Supplies


  • NOTE: Attached image is not representative of final product, just the CAD design used to help plan
  • Digital files: https://github.com/WebsiteDisplayName/phys_comp_trebuchet
  • Trebuchet
  • 4x ¼” bolt
  • 4x ¼” knut
  • 1” diameter x 12” dowels
  • ½” diameter x 12” dowels
  • ⅜” diameter x 12” dowels
  • 1 ¼” x ½” x 4+ ft wood plank
  • Super glue
  • Wood glue
  • Power drill
  • 13/64” drill bit
  • ¼” drill bit
  • ⅜” drill bit
  • Wood files (circular)
  • Clamps
  • Measuring tape
  • Hand saw
  • Fabric/Denim (sling pouch)
  • 2x 32”x20” sheets of ⅛” birch plywood
  • 5mm jute rope
  • Scissors
  • 2x 1”x2”x3” solid steel bars
  • trotec laser cutter
  • Electronics
  • Raspberry Pi Pico W
  • Pico W breadboard
  • 2x continuous rotation servos (high torque)
  • 6x male to male wires
  • External battery
  • USB A to MicroUSB

Step 1: Steps

Electronics

  1. Pico W setup: phys_comp_trebuchet/adafruit-circuitpython-raspberry_pi_pico_w-en_US-8.0.0-rc.1.uf2 at main · WebsiteDisplayName/phys_comp_trebuchet (github.com)
  2. Library: phys_comp_trebuchet/lib at main · WebsiteDisplayName/phys_comp_trebuchet (github.com)
  3. Use Adafruit IO to create online dashboard to activate servo
  4. Instructions: Getting Started | Adafruit IO | Adafruit Learning System
  5. Create dashboard
  6. Create servo_feed
  7. Create 6 blocks of momentary buttons
  8. select servo_feed
  9. set press values to:
  10. "stopwinch"
  11. "tighten"
  12. "loosen"
  13. "pull trigger"
  14. "reset trigger"
  15. "stop trigger"
  16. settings.toml
  17. must create a settings.toml that connects variables such as:
  18. Wi-Fi name, password, IO_KEY, IO_USERNAME


Trebuchet Frame

  1. Cut 1 ¼” x ½” x 4+ ft into:
  2. 2x 1 ¼” x ½” x 15” (base)
  3. 2x 1 ¼” x ½” x 10 ½” (connects base to arm)
  4. 2x 1 ¼” x ½” x 3 ¼” (connects base to winch axle)
  5. Drill holes & bolts:
  6. 2x base:
  7. Drill bit: ¼”
  8. Drill holes 3.5” and 7.5” from one end of the long side (15”)
  9. Drill ⅝” from the bottom of the height (1 ¼”)
  10. 2x base to arm support:
  11. Drill bit: ¼”
  12. ⅝” away from one side of the long end (10 ½”)
  13. Drill bit: ⅜”
  14. 1 ⅛” away from the opposite end of the drilled hole in the previous step
  15. 2x base to winch axle
  16. Drill bit: ¼”
  17. ⅝” away from one side of the long end (3 ¼”)
  18. Drill bit: ⅜”
  19. 1 ⅛” away from the opposite end of the drilled hole in the previous step
  20. Use ¼” bolts to bolt:
  21. Winch axle support to base
  22. Arm support to base


3D Printing Boxes With Laser Cutter: Weight & Electronics


  1. Files: WebsiteDisplayName/phys_comp_trebuchet (github.com)
  2. phys_comp_trebuchet/oneeight_finalWeightEnclosure.svg at main · WebsiteDisplayName/phys_comp_trebuchet (github.com)
  3. phys_comp_trebuchet/electronicsEnclosure.svg at main · WebsiteDisplayName/phys_comp_trebuchet (github.com)
  4. Wood glue the sides together except for the top panel for easy access
  5. Material is 1/8" Birch plywood, if different size wood is used the files must be altered
  6. Slots/holes needed to be added to the electronics enclosure file to fit 2x servos, or else the slots must be cut manually
  7. Weight enclosure:
  8. Cut 2x ½”x4” dowel
  9. Super glue dowels to long side of the enclosure
  10. For each dowel on either side:
  11. Use 1 rope to create 2x timber hitch knots around both exposed ends of the dowel
  12. Electronics enclosure
  13. Cut 2x 1 ¾”x ⅞” to mount continuous servos
  14. 1x on the roof (trigger)
  15. NOTE: should be redesigned for rack and pinion !
  16. 1x on the side facing the trebuchet (connects to winch)
  17. The placement of the cuts are important to ensure the servo is properly connected to axle
  18. 3D print circles to better connect dowel to winch servo, then super glue
  19. File: phys_comp_trebuchet/winchServoMount.svg at main · WebsiteDisplayName/phys_comp_trebuchet (github.com)


Trebuchet Arm

  1. Made out of 1” diameter x 12” dowel
  2. Drill holes (holes must be inline/parallel)
  3. ⅞” from one end (right):
  4. Drill bit: 13/64” (holds rope)
  5. 2.5” from the same end (right)
  6. Drill bit: ⅜” (main axle)
  7. 1” from the opposite end (left)
  8. Drill bit: 13/64” (holds rope)
  9. Cuts:
  10. Cut angled cut to secure the “finger” of the trebuchet
  11. Ideal finger angles: 30-45 degrees
  12. Finger: ⅜” x 2” 
  13. Cut angled cut into ⅜” x 3” dowel to secure winch rope
  14. Super glue finger to angled cut on end of arm
  15. Separate 5mm jute rope into 3x smaller strands
  16. 5mm jute rope will not pass through the holes drilled
  17. Pass one rope strand through the 13/64” hole ⅞” from the end
  18. Pass the same rope strand through the 2 rope loops of the weight enclosure
  19. Tie off with square knot


Putting everything together


  1. Cut ⅜” x 12” dowel in half
  2. Will be used to support base to prevent the base from contracting beneath the axles (no need to permanently attach these to the base)
  3. Cut 2x ⅜” x 6 ½” dowels (serve as main axle and winch axle)
  4. Use axles to connect the halves of the trebuchet
  5. Both sides should be spaced 6” based on the interior
  6. So the ⅜” x 6” dowels support the bottom and the axles support the top
  7. Friction will prevent the axles from sliding
  8. Cut two holes through the fabric on either end (sling pouch)
  9. For each hole on either end of the fabric:
  10. Pass a rope through and tie a knot
  11. Use the other end of the rope to either tie a loop and place over finger or pass through the 13/64” hole at the payload end of the arm and tie a loop/knot to secure
  12. Use rope to tie a knot around the winch axle and tie a loop to pass the other end around the finger
  13. i.e. non slip loop knot (fishing knot)
  14. The trigger servo will pull off the loop tied to the winch to release the arm and fire
  15. If a rack and pinion is used:
  16. the rack would slide over the finger while the winch holds tension
  17. the winch loop would be manually slide off
  18. the rack would then be reversed by the servo to release tension and fire
  19. Place 1 or 2 1”x2”x3” steel bars into the weight enclosure
  20. Use software to use winch & release
  21. Files:phys_comp_trebuchet/trebuchet.py at main · WebsiteDisplayName/phys_comp_trebuchet (github.com)
  22. Copy paste code in the Code.py file on the Pico W