Optimal actuator to move an analog stick

Dear Members of the Forum,

I need to automatically move the analog stick of a controller but I have no idea about the actuator choose or to build in order to perform this kind of action. As the HW/SW shall not be modified, I am not allowed to modify the hardware or to bypass the XY signals sent by the device.

The actuator would be moved according to an (X,Y) coordinates setpoint, thus a PI/PID controller will be implemented. But right now I am stuck to the actuator choice.

Any help would be appreciated. I searched a lot on the web but found only tematics in the opposite directions, obviously :slight_smile:

In attachment, an example of the component
Thanks

I need to automatically move the analog stick of a controller

I could guess what that means. but, a picture is worth 1000 words.

A hobby servo motor, with appropriate linkage would move that joystick in one direction. A second one would move it in the orthogonal direction.

How accurate do the movements need to be? Just what are you trying to accomplish?

I have just draw a draft, attached. The XY space dimensions (the sides of the square) are comparable to a normal production game controller. Thus quite a tiny space.

I need to reproduce an user action on this kind of component and a couple of buttons. The user action (thus XY setpoint) is logged in a text file and these X Y coordinates are unsigned int 8 values. I still need to figure out the accuracy, I would say as first attempt (SETPOINT +/-5) within the log sample time. For this feature I guess I must tune the PI/PID properly.

If you need any other information, just let me know.

Cattura.JPG

Please confirm or correct my understanding of what you are asking.
You have an existing user input device with a 2 axis joystick and some buttons.
You want to construct a new device that sits on top of that hardware that physically pushes the buttons and joystick to simulate a user.
You suggest that PID will be necessary.

Is that correct?

Do you have access to the UI hardware? Can you snap a picture of it and post it here?
You suggest PID. What will be the input of that PID? Will you have access to the output data from the UI hardware?

It would be feasible to construct your device using RC hobby servos as @PaulS suggests. One servo for each button that needs pressed and 2 for the joystick.

inline OPs pics

20d0f3947641ee663bd4cbc75d9980a4c1a594e7.jpg

vinceherman:
Please confirm or correct my understanding of what you are asking.
You have an existing user input device with a 2 axis joystick and some buttons.
You want to construct a new device that sits on top of that hardware that physically pushes the buttons and joystick to simulate a user.
You suggest that PID will be necessary.

Is that correct?

Absolutely correct. The device would repeat the user action, and this action have been recorded previously in a LOG file with an adjustable sample rate [ms]. I have already done the logging part.

vinceherman:
Do you have access to the UI hardware? Can you snap a picture of it and post it here?
You suggest PID. What will be the input of that PID? Will you have access to the output data from the UI hardware?

I have access to the UI hardware but I absolutely cannot disassemble its part (knob, buttons, etc). Unfortunately I am not allowed to take pictures.
Assuming that I will end up using the X and Y servos, the input of the PID would be the servo positions, the controlled variable would be the X and Y sticks position (I do receive feedback), the set point for every sample time would be the value reported in the LOG.

vinceherman:
It would be feasible to construct your device using RC hobby servos as @PaulS suggests. One servo for each button that needs pressed and 2 for the joystick.

For the buttons I was also evaluating small push pull solenoids. I'll see what's better.
For the XY servos I am so much un-experienced about the linkage / hardware structure. Do you have any reliable guide and shop to retrieve this stuff? Obviously this linkage shall be small enough to manage that stick.

Many thanks for your help!

lollinopil:
For the XY servos I am so much un-experienced about the linkage / hardware structure. Do you have any reliable guide and shop to retrieve this stuff? Obviously this linkage shall be small enough to manage that stick.

This is where pictures would help, but you mentioned the no photo limitation.
Is the joystick of the style that you posted in your original post?

If I were trying to physically/programatically move that, I would want to have linkage that would be relatively slop free.I would want to fashion a clip that would attach to that thumb pad that would allow linkage attachment.

Let me see if I can knock up a quick image with sketchup

Well, I uploaded it to thingiverse.
Good 3D viewer there. But here is a pic to be seen locally.

The idea is that this can slip over the thumb pad and give the 2 servos a place to attach using ball links, a known slop free solution. (at least much lower slop that just wires through holes)

Edit: I should probably mention that this will produce slightly non-linear results. Changes in the X axis will have some affect on the Y value and vice versa. This non-linearity can be reduces with longer rods between the servo and the joystick.
It could likely be mapped out with some math (trig).
It might be handled with PID.

Probably extreme overkill but, what about a robot?

Hi douggp, yes that's overkill and also I have cost constrains. Thanks anyway for the suggestion!

Vinceherman, so many thanks for your time! Yes, the stick style is the same of the example, thus your assumption is correct. Attached is my understanding of your solution. Let me know if it matches your idea.

Cattura.JPG

OPs photo
Cattura.JPG

Almost what I had in mind. Forgive my MS paint editing, but here is more what I was thinking.
ModifiedAgain.jpg

ModifiedAgain.jpg

vinceherman:
inline OPs pics

20d0f3947641ee663bd4cbc75d9980a4c1a594e7.jpg

Those thumbsticks are very sensitive, perhaps a resolution of <0.5mm, this puts tough demands
on any mechanical linkage. It might be worth considering using springs to apply a force control
rather than position - this makes the linkage design far less critical too.

@lollinopil,
The picture of the joystick you posted looks very similar to the Sparkfun Thumb Joystick.
Do you know that this is the one used on your UI device?

I see that in addition to its 2 axis pots, it has select button functionality.
Is this one of the button clicks that you need to be able to automate?

If so, we are going to have to do some rethinking.

But please do confirm whether you know this is the joystick in use on your device. And if not, how close it looks to the device used.

@MarkT - Thanks for your suggestion. Is it possible to have a quick draft of the spring force control? I am not able to visualize this alternative linkage system.

@Vince - I cannot be 100% sure that it is the same part, but it does have the same dimensions and functionalities. And yes, it does have the integrated button. Sorry I forgot about that, I was too much focusing on the XY position control.

So, XYZ where Z is the joystick button press.
Is your task just that one control or are there other buttons/joysticks?
I am just trying to work through the physical configuration in my mind.

Sorry for the delay, Vince. Very busy at work :frowning:

My task is that joystick and 3 buttons. I am in a good shape with the 3 buttons, but the joystick is way more hard to control.

Now the delay was on my part. :slight_smile: Just got back from vacation.

I did order some of the sparkfun thumb joysticks. When they get here, I will print up a clip and see if I can arrange the servos and write a simple script to move the joystick.

I might even see if I can work some PID logic in to it.

Might be a bit late already. But have you thought about using a servo and cord? The idea is similar to what a drive belt does. But instead of continuous rotation it's able to transmit force along one axis. Right now I can't post a hand-drawn sketch but tried to make do with the chat (see below).
The servo pulls the cord attached to it when turning. The cord pulled transmits the momentum/force along it's path which is why it needs to be redirected with 2 wheels so that it can be lead to the analog stick. The cord should prove to be easily attachable to the analog stick with a simple knot.

The drawback of this is, that while you need few single parts, you will need to attach the wheels to something. If you can solve this then it is easy to implement this 2 times for 2-axis movement and if the servo is a digital one you can accurately control the control stick. Using an additional gearbox for a servo will greatly improve the accuracy. In the end it all comes down to whether you can create static points for your wheels and servo that won't move in relation to the joystick.

X
O____O
T

X - servo wheel
T - analog stick
O - wheel
__ - cord

A simpler but also more inaccurate solution similar to this would be 2 servos placed to the sides of the joystick. Each servo pushes/pulls a stick that is attached to the servo as well as the joystick. The sticks work as a connection in the shape of a parallelogram.
If the radius of your servo is equal to the radius of the joystick then you're even able to directly transmit the servo angle to the joystick angle 1:1.