Jump to content

Open Source Joystick FFB / DIY FFB Joystick


Recommended Posts

Hi

 

I do not think that a Servo will work. the ones I have here have a response angle >1° that would make quiet some travel at the end of the grip. and it will make Programming for some Force difficult.

 

 

for gears: The Gear that are grinded are very precise. and when we ad some torque or "V" shape these should be free of slip.

 

I think that we should stay cheap, and use Stuff ready available.

and most of all lets first get some working Software than we can talk about making things better.

 

MetalGear_Honk

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

  • Replies 419
  • Created
  • Last Reply

Top Posters In This Topic

Hi

 

I do not think that a Servo will work. the ones I have here have a response angle >1° that would make quiet some travel at the end of the grip. and it will make Programming for some Force difficult.

 

 

for gears: The Gear that are grinded are very precise. and when we ad some torque or "V" shape these should be free of slip.

 

I think that we should stay cheap, and use Stuff ready available.

and most of all lets first get some working Software than we can talk about making things better.

 

MetalGear_Honk

 

Gears always have an efficiency nr. (torque loss) The cheap gear solutions like worm gears have a very low one. The higher the ratio the worse it is ( can be around 70%, so you loose the precious input torque`s 30%)

High efficiency gears are the planetary gears (efficiency over 90%), but they contain several cog wheels which results backslash. This backslash gets worse over time because of the wear out of the cog connections. Low or near 0 backslash gears are available but they cost a lot. These gears require regular maintenance (lubing, cleaning)

 

The cable pulley transmission is actually a good idea. The cables wont wear out only get stretched but it is easy to retention. And it is a dry, maintenance-free system.

[sIGPIC][/sIGPIC]



KG13 Control Grip Building

Control Stick and Rudder Design



 

i7 8700K, Asus Z370-E, 1080 Ti, 32Gb RAM, EVO960 500Gb, Oculus CV1

Link to comment
Share on other sites

What about rc hight torque digital servos? Those are exactly 15kg/cm, 0.14 second 60 degree rotation, metal gears and cost 5$ and eliminate the need for a driver board?

 

RC Servos are inadequate for this at a price that is reasonable. Even if the servos had enough toque and low price, they would resist free movement too much. Take a servo and try to move it by hand. That's just too much resistance for a FFB stick. And once you get a servo spinning fast (like a fast stick movement from left to right), it has too much momentum. It over shoots unless the electronics stop it. One of the critical features of a FFB stick when the motors are disengaged, or driven at a very low current, is the stick is completely floppy.

 

For perspective, the motors involved in a FFB stick are typically 1 inch dia. or larger DC motors often driven through a 30:1 to 80:1 gear ratio.

 

 

... gears are pretty bad for this as well, you can really feel the teeth meshing and ratcheting and backlash is the enemy.

 

I'm not sure how much of the ratcheting that I feel on my various FFB sticks is gearing vs. DC brushed motor cogging, but yes, I have been down on the idea of gearing for this reason and other reasons. The MS FFB2, with DC brushed motors, has the best feel in my experience regarding ratcheting and I think it is because of a very high motor gear ratio. But it also has noticeable backlash due to multiple gears. So as you say, backlash is a big problem, and making gears without backlash is difficult or expensive.

 

Re: wire driven pulleys, I have felt this is likely best as you say. My only concern is if the wire breaks, it is not an easy fix for an inexperienced person. The wires are under tension, and have to be done just right.

 

That being said, the Wingman Force I have to use for software development is a wire drive joystick, which is also part of why I'm using it. I want to see how well the wire stuff works. I looked at this a lot in other applications as well, and wire is in fact my favorite solution for many reasons, except for I just need to understand the reliability.

 

The Wingman Force still has DC brushed motors, and a very low gear ratio (maybe 15:1??), so the brushed motor cogging will show through heavily to the stick. But the openness of the case and design, and the wire drive makes it much easier to mock in other non-brushed motors in order to learn.

 

for gears: The Gear that are grinded are very precise. and when we ad some torque or "V" shape these should be free of slip.

 

Except ground gears are very expensive to make. They can be as precise as you are willing to pay for. :)

 

I think all the FFB racing wheels use belts. And they had dozens of engineers and millions of dollars to come to that solution. So it might be best to just go with that.

 

This was as much an economic choice on their part as anything else. As with everything FFB, there are many compromises. The belts smooth things out some and reduce stress and are probably much better than using plastic toothed gears for a FFB wheel due to the torque and size of parts. I'm talking about toothed belts here so they don't slip. Not sure how much the notchy feel I get on my FFB wheel is the belt, though, vs. the motor, but I think the motor is a 3 phase AC servo motor so the notchy feel I get is probably the cogs on the belts.

 

Most CNC machines are run by rubber belts I'm sure you know - even the high end german 5 axis CNC I have. But it's a single 2:1 ratio and it allows the belts to be tensioned to get rid of backlash. This is another reason to use belts or wires. It's easier to remove backlash.

 

On FFB products, though, the belts do break (I've read complaints about belts breaking in FFB wheels). The belts can be replaced as a bolt on item, though. Well, sort of. Doing it on a FFB wheel is a huge PITA. But doing it on a FFB stick maybe not so much. Again, with over design, this isn't a problem, but there's a point where the thickness/width of the belt causes resistance beyond what is acceptable.

Link to comment
Share on other sites

[sIGPIC][/sIGPIC]

I5 4670k, 32GB, GTX 1070, Thrustmaster TFRP, G940 Throttle extremely modded with Bodnar 0836X and Bu0836A,

Warthog Joystick with F-18 grip, Oculus Rift S - Almost all is made from gifts from friends, the most expensive parts at least

Link to comment
Share on other sites

Hi all

that is quit an interesting discussion.

But it will lead us nowhere, as Long as we don't have a running Controller.

 

To cut the discussion a bit.

If we work together on a Controller/Software which has the outputs for direction and Speed everybody can mount whatever he/she fancies.

At worst there is the Need for a conversion of signals. But that is trivia.

 

So given that we agree on that:

is someone else familiar with c programming and willed to help sort out the bugs?

 

MetalGear_Honk


Edited by MetalGear_Honk
spelling

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

I have all kinds of belts and pulleys. I'll put together a rig to test how smooth they feel. I also laser cut my own custom gears, software generated not hand designed so they mash together quite well, for low speed applications at least. I'll test them on a joystick-type rig too.

 

Can a simple testing sketch be made for arduino and L298? Just a left-right sweep to test the smoothness of different systems and test stalling torques?

 

I'm ordering these two. A cheaper brushed motor, and a more expensive brushless. Each of them with enough torque to potentially drive a desktop joystick on 1:1 ratio

 

http://www.ebay.com/itm/31ZY-DC-12V-6500rpm-Magnetic-Tubular-Motor-High-Torque-Brushed-Motor/172311967490?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D20131003132420%26meid%3D250d69b143a344e0be791bb3317af347%26pid%3D100005%26rk%3D2%26rkt%3D6%26sd%3D322099951495

 

http://www.ebay.com/itm/Brushless-DC-Motor-36V-4000-RPM-DC-3-Phase-4-Poles-/141770872702?var=&hash=item210233d77e:m:mIOUJ5YdO6iXZRTBZ40WJtw

 

I have the dimensions already so I'll start on the mechanical rig right away.


Edited by hegykc
Link to comment
Share on other sites

Hi

Here is a Sketch.

I have no Uno to test it at work.

const int left = 2;
const int right = 3;
const int power = 4;

void setup() {
 // put your setup code here, to run once:
pinMode(left, OUTPUT);
pinMode(right, OUTPUT);
pinMode(power, OUTPUT);
}
void loop() {
 // put your main code here, to run repeatedly:
Power = LOW;
right = LOW;
left = HIGH;
Power = HIGH;
 delay(1000);  
Power = LOW;
left = LOW;
right = HIGH;
Power = HIGH;
 delay(1000);  
}

 

It is for one Axis Pins 2 and 3 for directions 4 is the enable.

It will turn the Motor at full Speed for one second than revers.

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

So this would test the motor stalling torque at max power/speed. How is force loading done. This kind of low level arduino code is withing my abilities right now. I can further modifiy the sketches myself. How about we make the test a little more complex by breaking it into basic FFB effects.

 

Like a "stick shaker" sketch. Like the one you posted with delay, plus speed/power paramaters. And a "force loading" sketch. Something to test the effect of wind speed on control surfaces? A sketch that would increase force loading from min to max with a delay. The effect that wants to return the stick to neutral. And what ever other effect we can test without actually connecting to the sim. I could tell right away which mechanical parts work and which don't.


Edited by hegykc
Link to comment
Share on other sites

Hi

Hegykc:

do you know how to burn a ATMEGA with ISP?

or can you use "FLIP" to loadup a Teensy2.0

 

i will build a basic test Version (Hex file) for testing FFB.

it will conect as FFB Joystick. and you can test diferent functions whith the FEdit test tool.

 

i can not provide all functions but the most Basic ones. (constant force / Square / Spring ) i will see what else i can provide.

 

this can be used in a Sim but i do not think it will be usable at this stat.

 

MetalGear_Honk

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

This kind of basic testing setup would be very helpful in mechanical design, so whatever I need to do, or learn to do I'll do it. You don't even have to waste your time explaining the details, just point me to the right direction.

 

1) Is this what I need for atmega isp programming?:

 

http://www.ebay.com/itm/51-AVR-Atmega-Programmer-ISP-Downloader-USB-ASP-Downloader-/201066541625?hash=item2ed07ff239:g:mA4AAOSwjVVV1pX~

or

http://www.ebay.com/itm/STK500-AVR-ISP-USB-Programmer-Spport-WIN7-AVR-STUDIO-5-ATMEL-ATMEGA-AVRISP-/140852662670?hash=item20cb79118e:g:AgMAAMXQWlFRw4yu

and

 

I have arduino Uno's ATmega328P, Arduino Micoro's ATmega32U4, Arduino Mega's ATmega2560 and Arduino Due's Atmel SAM3X8E ARM Cortex-M3 on hand. But if I need something else or a programmer you just say so, I'll order one.

 

2) I have a teensy 2.0++. For that, I should just consult their website?

 

What would you suggest, 1 or 2?


Edited by hegykc
Link to comment
Share on other sites

Holy

You must have a Warehose. at your disposal.

the first one will do (never saw it that cheap). but i just read about that an UNO can be used as ISP Programmer as well.

 

give a Day.

i will put some infos together and Build the Hex file.

i need to sort out the conections too.

 

MetalGear_Honk

 

P.S.: I just got some Pro Micros. so i will play a bit with these.

if you have a Teensy2.0 (the one with a ATMEGA32u4) you can Flash it without Programmer using "Flip"


Edited by MetalGear_Honk

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

ReHi

Here is the first version for testing.

 

ADC7 = X Axis Pro Micro pin A0

ADC6 = Y Axis Pro Micro pin A1

PORTD7 = X Axis PWM = Pro Micro Pin 06

PORTD0 = Y Axis PWM = Pro Micro Pin 03

PORTB6 = X Axis Direction left = Pro Micro pin 10

PORTB1 = X Axis Direction right = Pro Micro pin 15

PORTB2 = Y Axis Direction left = Pro Micro pin 14

PORTB3 = Y Axis Direction right = Pro Micro pin 16

 

Here is a list of functions that I have been working on.

Auto Center (no FFB Support / no USB Connection)

Constant Force

Square Force

Ramp (not working properly)

Spring

Damper

Interia (not sure if it is correct)

 

Still missing:

Sin Wave

Triangle Wave

Saw tooth up

Saw tooth down

 

I Have some tests integrated that should make multi Forces possible. But it is NOT Tested.

But for the Test Rig that functionality is hopefully not necessary.

 

This is only a test Version, based on the LUFA Library.

I had to change the pin configuration as some pins are not accessible on a Pro Micro.

I do not have a Test Rig at hand so I can’t test if the Changes where all successful.

 

Greatings

MetalGear_Honk

[ATTACH]149066[/ATTACH]


Edited by MetalGear_Honk

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

Hi

My Timing Problems are that I can't get the Timings for USB communication/Force calculation / force Duration / reading Axis and Buttons

The Version I provided is that for unstable. And tends to lose contact with the PC (USB is very picky on Response Timings)

 

MetalGear_Honk

The threemost dangerous threads to Programmers:

  • Fresh air
  • Bright sun light
  • The horrifying screams of singingbirds

Link to comment
Share on other sites

Hey those bigger brushless DC motors are 36V/7A, so the small 2A L298 drivers wont work. I'll have to go with these 36V/15A dual drivers:

http://www.ebay.com/itm/3-36V-Dual-15A-H-Bridge-DC-Motor-Driver-30A-for-Robot-Car-Arduino-Compatible-/111140003697?hash=item19e075df71:g:cMEAAOxy-o5R0NqT&autorefresh=true

 

Does that change anything sketch wise? (the other smaller brushed motor will work with small L298 driver)

Link to comment
Share on other sites

Ok, everything ordered. Once I test which mechanical components work and which don't, I'll order multiple motors and drivers, make a few testing rigs and send one to you and anyone else interested in developing this.

 

As a side thought, wouldn't something like this be easy to interface with the sim through DCS-bios? It can drive a dc motor instrument so why not FFB. I guess with limited "hand written" effects though.

 

Like basic force loading:

motor_X_torque=true_airspeed

motor_Y_torque=true_airspeed*2 (make elevator twice as strong)

 

Stick shaker:

if true_airspeed=stall_speed

execute a quick left-right sweep for both motors

 

Gun trigger:

if gun_trigger=on

execute a quick left-right sweep for both motors (stronger or weaker then stick shaker sketch, and this can even be programmed to specific rate of fire /strength for cannons and machine guns)


Edited by hegykc
Link to comment
Share on other sites

My Timing Problems are that I can't get the Timings for USB communication/Force calculation / force Duration / reading Axis and Buttons

 

The Version I provided is that for unstable. And tends to lose contact with the PC (USB is very picky on Response Timings)

 

Ah, understood. Need to optimize the code to keep the timing right so you don't lose the USB connection or other joystick events. I remember discussions with the 3DPvert guy (Grendel) about similar issues a few years ago.

 

Are you using interrupts for anything to keep timing, or is it all round robin through the main loop? Are you using floating point, or integer floating point (shifting the integer back and forth to do floating point using integers), or look up tables? I mean, I assume there is some trig going on for sin/cos on angles of force so you have to use floating point or look up tables right? The ATMega is not very fast at floating point.

 

Did you post the source code? I didn't see it. Only the HEX file.

 

I just ordered another Teensy 2 from PJRC. I'm going to mock this part onto the Wingman Force stick I have as a test platform. So hopefully I can help with your code.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...