Falling Targets Controller

Controller board and hardware for raising targets, running shooting programs and counting points for Falling Targets Pistol range.

Similar projects worth following
I train and teach Pistol Shooting, including Falling Target. Raising the targets takes time or requires a system of rope pulling.
Instead of using this, I decided to build a system for raising the targets remotely. This work expanded into designing a system for running shooting programs, calculating scores and analyzing the progress during training using an Android smartphone.
The system will end up being a system consisting of :
+ Controller Board (Raspberry Pi Hat)
+ Raspberry Pi as an Access Point with possibility of downloading application for Smartphone
+ Android App for controlling the system, data collection and processing
+ Mechanics for providing 5 Falling Target targets
+ Raising mechanism for raising the targets
+ Contact for target hit registration and Light for shoot/no shoot

The entire project is mostly made by using parts, I already have lying around. This is the simple version and will be expanded later in a new version supporting e.g. double tapping etc.

The mechanism itself is dived into several parts: 


The actuators are used for raising the targets after having been hit by shots. Basically, these are linear actuators moving an arm, which either raises a single target or an entire row of targets. The actuator is made by having a motor (stepper in this case) move a slider using a threaded rod.


The arm in the project is made in order to perform tests on a single target.


The sensor is basically a switch, which registers the target falling. In the final version, this will be a switch with a long arm. In the test version, I use a tiny switch on a 3D printed fixture, but the principle is the same : a switch indicating a targets falling.

Light fixture

A fixture for holding a 12 v LED light in an angle lighting up a target.

Controller board

The controller board is a Raspberry Pi hat for reading the keys, switching on/off the lights and controlling the stepper motors.

Software Package

The software is divided into 2 parts: an onboard software package for running the controller and the Android App (sorry Apple users) controlling the board.

The Android App is only used for sending messages to and from the board, so this will be described later on, but for now Python / C# test programs are to be used instead.
The controller software is to have the following features:

  1. Registering a fallen target (reading the switches)
  2. Lighting the target (switching on the lamps)
  3. Controlling the stepper motors

Later on, the software will get more features:

  1. Automatic homing of the actuators
  2. Automatic point counting
  3. Delayed lighting for running sequence shooting and shoot/no shooting scenarios

The Android software is to get the following features, but will be extended if time allows me:

  1. Sending commands to and retrieving status from the controller board
  2. Creating shooting scenarios 
  3. Storing the previous results, thus creating statistics of the shooting and own progress
    1. Since data is only saved on the users' phone, then the GDPR shouldn't be a problem

  • Rethinking the project...

    Henrik Sorensen12/29/2020 at 18:52 0 comments

    Did a lot of testing the existing setup (on a single target) and found the following : 

    1. The stepper motor is running on maximum RPMs and cannot go any faster.
    2. The threaded rod needs more lubricant in order to run smoothly.
    3. Given the final setup as show in principle below, I'm not gonna change the setup of the existing rod attachment in order to get more speed instead of torgue. 

    I went online to look at linear actuators to see, if I could find a cheap, fast 12v actuator (I can get 600-1500 N actuators, but the cheap ones seem to be slow). 

    I'm making this for my gun club meaning, that I've set the requirements to :

    1. Cheap.
    2. Detachable - range is used for both precision and for falling targets, so setup needs to be able to be easy to remove from the setup (clamps for the 2 legs as shown on the image - is actually very close to what, we have being pulled using a string).
    3. Durable - people are not gonna handle it gently.
    4. Bullet "proof" - not all shooters are skilled enough to be able to only hit the targets, so all parts need to be protected by 5 mm steel plates protecting legs and horizontal bracket. Mechanism needs to be protected behind the plates as well. 
    5. Quick - I built a previous version, which can raise a single target in seconds but needs to be attached to each of the 5 targets. And I'd like to be able to raise the target (incl. lowering the arm again) in less than 10 seconds. 
    6. Easy to build - spare parts need to be easily accessible, because of #3.  

    So, my plan is to

    1. Pick up 4 more targets or make 5 wooden "simulation" targets for the mechanical setup. 
    2. Pick up pipe for the arm
    3. Redesign mechanics
    • So far, I've kept all moving parts on the back of legs protected by the steel plating on the front part of the legs. May, I can justify welding on a piece of steel plate on front leg protection plate.
    • Provided, I can come up with a solution protecting the mechanics, I could add a counter weight in order to take away some of the weight necessary for the actuator to lift. 
    • I could consider using a timing belt and a gear for raising the targets instead.

  • Testing the mechanics

    Henrik Sorensen12/25/2020 at 15:07 1 comment

    So, got all the mechanics set up and done some Python code for testing the functionality. 

    Lights can go on and off, the switches sensing, that the target has been hit and the actuators are all working. So, all good?

    Not really. The speed is not desirable: It takes roughly 9 seconds for the arm to raise the targets and another 9 seconds to lower the arm out of harms way. 18 in total. Way more than the time it takes to pull the string on the existing system and raise them.  And about twice the time, my previous version using a high torgue servo used. 

    So, I need to rethink this... 

  • Hardware test

    Henrik Sorensen10/18/2020 at 20:58 0 comments

    Populated the received board and wrote a simple Python script initializing the hardware, testing lamps, buttons and stepper motor drivers.

    Also got the mechanical parts mounted on a single target for further software development 

    Redoing the lamp fixture.

  • Initial Mechanical Designs

    Henrik Sorensen10/10/2020 at 19:28 0 comments

    Made initial designs of the linear actuators and target sensors.

View all 4 project logs

Enjoy this project?



Henrik Sorensen wrote 12/27/2020 at 15:00 point

Torque isn't the problem here. There are several things here, which can limit the speed : 

Some idiot decided to put all I/O on the MCP23017, which reduces the throughput of pulses.

Same idiot decided to write the test in Python and not using C/C++.  

I guess, that the same idiot (me 🤣) should get his act together and spend less time on building custom knives and rewrite the software in C/C++ before attempting to redo the hardware. 

The actual load on the motor is very small, so torque isn't an issue.  

  Are you sure? yes | no

Bharbour wrote 12/27/2020 at 19:47 point

Try moving the attachment point on the arm closer to the pivot. Reducing the travel will shorten the time required. 

  Are you sure? yes | no

Henrik Sorensen wrote 12/26/2020 at 14:54 point

A4988 Controller is set to full steps, and the software is running at full speed.

  Are you sure? yes | no

Bharbour wrote 12/27/2020 at 14:21 point

Without seeing the source code on the step motor library, I can't say whether it would be reasonable to raise the upper limit on the step rate. Step motor torque goes down as the step rate increases, so this may run into torque problems.

Mechanical fixes might be simpler.

You could change the step motor to the lead screw connection from the flexible coupler to a toothed belt with a 1:3 (example) ratio. This would reduce the overall ratio to about 3.3:1 It would need to modify the mounting bracket at the lower end of the mechanism.

You could replace the lead screw with a long toothed belt, put a pulley at the top end of the guide rod supports, and rotate the motor so that it's shaft is perpendicular to the mechanical travel. The piece that currently has the threads would be clamped to the belt. This method would give you a 1:1 mechanical ratio, but might run into motor torque issues, depending on target weight.

  Are you sure? yes | no

Bharbour wrote 12/27/2020 at 14:25 point

Looking at the mechanics, if you moved the attachment point on the arm that lifts the target closer to the pivot, the travel distace would be reduced. This would be an easy thing to try.

  Are you sure? yes | no

Henrik Sorensen wrote 12/26/2020 at 07:31 point

Nope. The motor runs freely with little change in speed between under load and no load. 

The threaded rod gives a gearing of 10:1, and the travel distance needed is 172 mm.  Action is smooth and unhindered. 

I should have tested the travel speed earlier in the project..  

  Are you sure? yes | no

Bharbour wrote 12/26/2020 at 14:31 point

You should be able to increase the speed of the motor by increasing the step rate applied to the controller. The step rate may be expressed in the software as steps/second  or seconds/step

  Are you sure? yes | no

Bharbour wrote 12/25/2020 at 19:32 point

Is the speed limitation on raising the targets due to the step motor stalling at higher speeds?

What kind of step motor driver are you using?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates