Go Down

Topic: Reducing resistance in a force feedback joystick (Read 670 times) previous topic - next topic

smirks

Hey all,

Firstly, it is entirely possible that I am over thinking this and the solution is right in front of me.  However, I have very limited knowledge in this area so I have had to rely on hours of internet searches - but I can't find a definitive answer.

I am looking to build a diy force feedback (ffb) joystick, that will take outputs from a flghtsim (namely airspeed & g's pulled) and translate these in to resistance I feel when pulling my diy joystick.  Essentially, the joystick is always trying to return to center - but with varying force.

As an example, at 5 g's the P51 Mustang pilot feels the equivalent of 40kg (90lbs) resisting him when he pulls the stick. At 4 g's it is 31kgs (70lbs).  Stationary, the resistance is minimal.

My plan was to use a DC motor and PWM (sent from the arduino to a motor driver) to provide the resistance, as I thought this was how all ffb joysticks worked.  However, whilst researching something entirely different I came across the problem that PWM doesn't seem to affect torque.

So, if I am not changing torque with my PWM signals, then the resistance will always be the same?  The only thing that will change is the speed that the joystick tries to return to center.

Is this correct?  Then if so, any ideas how I can use a different method to translate my data in to DC motor resistance?

Or, will the intermittent periods of OFF/ON that the PWM sends actually result in a perceived loss of torque (and thus resistance) delivered by the motor?

I hope this question makes sense.  If not, let me know and I will try and re-word it.

Many thanks in advance,

Smirkza

Robin2

#1
Apr 17, 2016, 08:23 pm Last Edit: Apr 17, 2016, 08:24 pm by Robin2
I suspect this is something that needs some experimentation. I would expect PWM to vary the torque on the motor. Whether it is sufficient for your needs is another matter.

You need to ensure that the current does not damage the motor as it will be stalled most of the time.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

smirks

I suspect this is something that needs some experimentation. I would expect PWM to vary the torque on the motor. Whether it is sufficient for your needs is another matter.

You need to ensure that the current does not damage the motor as it will be stalled most of the time.

...R
Thanks for the reply.

Would you suggest some way of limiting current then to protect the motor?  I'm sure I saw somewhere about a way of varying supplied current - is it worth looking that up again?

Thanks,

Smirkza

Robin2

Would you suggest some way of limiting current then to protect the motor?
The complicated way is to have the Arduino measure the current very frequently and reduce the PWM value as necessary.

The simple way is to get an oversized motor and use a power supply voltage that is low enough not to overload it.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

smirks

Thank you Robin2 for your help.

I think I have solved this problem by changing the methodology for providing resistance and doing away with the idea of using a motor.

If the new idea doesn't work I will look at using a higher rated motor and lower voltage supply.

Many thanks,

Smirkza

MarkT

PWM will affect torque, but not necessarily linearly.   Current controls torque, PWM controls
effective voltage (linearly or not depending on decay mode), which affects current (depending
on motor speed).

For a stalled motor you need to be careful not to wind it up too far and fry the motor, there's
very little cooling a stationary motor.  You will need gear reduction, enough to give reasonable
torque, but not so much its friction prevents back-driving of the motor.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

jackrae

#6
Apr 17, 2016, 11:50 pm Last Edit: Apr 17, 2016, 11:52 pm by jackrae
You could use RC servo motors to provide the "feedback"  By connecting them via tension springs to the joystick the "feedback" will be varied by the amount of pull on the spring.  One motor for +X to -X and one motor for +Y to -Y, each connected to a pair of springs acting in opposite directions on the joystick and actuated by a single lever on each motor.

Go Up