The LifeOn2 FFB Wheel Controller

Pax7

LifeOn2 Development
Hello All,

After a number of months of research, planning and implementation I am happy to present the results of my latest project: implementation of a FFB wheel controller.

The controller is built around an ARM 32 bit RISC processor, the Cortex M3. The M3 has a wealth of peripherals, including an USB 2.0 interface, which I have programmed to communicate with a PC host. The Cortex M3 is paired with a base board which has an electric motor drive stage and monitoring capabilities. The drive stage can be controlled via the Cortex M3 to power a variety of motor types, including brushed DC motors (Found in the Logitech, Thrustmaster, Fanatec, Frex and ECCI FFB wheels) as well as brushless servo motors. The drive stage can output 300W, which is more than the Fanatec CSW and I think also the Frex TypeG and ECCI 7000.

My plan has been to use a high performance type servo motor also for this initial FFB controller prototype, but as sourcing of a servo motor with the specifications I wanted has been an issue, I decided to use a brushed DC motor instead. I will drive a proper servo motor going forward.

The status of the project now is that I have a FFB controller capable of driving a brushed DC motor (the FFB) and reading of a rotary encoder for steering wheel position.
I have also worked with a brushless DC motor, which is closer to the type of servo I will use going forward. But, as the BLDC motor has some properties not suitable for FFB application, I use the brushed DC motor instead for now.

I have furthermore implemented USB communication between the FFB controller and the PC, and the FFB controller presents itself to the PC as a FFB device. I have followed the specification from USB-IF on FFB/haptic devices. This means I did not have to implement USB device drivers in Windows, as Windows includes FFB device drivers for USB-IF FFB/haptic devices.

The drawback of using the USB-IF specification is however that the specification and its communication protocol is quite complex and has too many features not used in an FFB simulator steering wheel.

Here is a screenshot of the FFB controller (wheel) attached in Windows 7:

Game_Controllers_Window.jpg


The FFB controller is capable of receiving FFB commands at 1000 Hz, and it can report wheel position to the PC at 500 Hz. I plan to increase that to 1000 Hz too though.

Below is a video I shot earlier tonight of the FFB controller connected to the brushed DC motor and rotary encoder and used as a FFB wheel in iRacing.

As you can see, I have not bothered to attach any gearing and other devices (belts etc) to create a proper wheel, but the important stuff is all there. Gearing and other mechanical stuff are the easy parts... ;)


Some eagle eyed readers might recognize the motor, rotary encoder and bracket - they are taken from a Frex SimWHEEL MkI. I have a broken SimWHEEL standing in the closet, so I thought it could come to some use... ;)

-----------------------

In addition to switching to drive a servo motor, I also have other plans which I hope to be able to share/demonstrate the results of going forward.

Thanks,

-----------------------

PS. I will share a bonus photo; this is the LifeOn2 Development work place, where most of the more hardware oriented work is done :)

LifeOn2_Development_Workplace_1280.jpg
 
Hello guys,

and thank you for your interest!

As you can see I am active with advancing this work, and progress is good! I will let you know as soon as there is more news!
 
Upvote 0
Awesome project, it will surely help many sim racers who cant afford expansive wheels, like myself, to build a decent one, better than the toys we can find on the market.
What type of encoder will be needed, incremental or absolute ?
 
Last edited:
Upvote 0
Awesome project, it will surely help many sim racers who cant afford expansive wheels, like myself, to build a decent one, better than the toys we can find on the market.
What type of encoder will be needed, incremental or absolute ?
Hello KR,

the typical case I would say is to use an incremental encoder.

While I am at it, here is a little update on what has happened since my last report early June (also see the iRacing thread):

Basically all work has been related to the last two bullets of my last report:

* The last ~month I have been working on a new area of the system, which required a lot of research and "prototyping" I have since a few days back solved all (I hope :)) fundamental problems and now have to look forward to gradually build up the subsystem. Gonna be some functionality that is definitely not on any other FFB system! :)

I can confirm all (known) challenges with this part of the system are solved, and I have added some new functionality too. There is much more I plan to do with this subsystem going forward though, what I have done this far is mostly to secure the basic tech platform and add the currently most needed functionality.

* Work with the planning of HW-related parts of the system. I have taken a few decisions about direction and component selection which IMO is quite exciting. The result will be something clearly more capable than what is available today!

Yep, this bullet I am very excited about, and work has gone from planning to actual execution. I am working with the actual HW now and I have made several important advances to bring this powerful HW into the FFB system. Overall things are looking quite good, with currently only one issue worked on but not solved (workaround in place though).
Among FFB systems, I am pretty sure this will be the most powerful and advanced piece of HW in the world!

BR,
 
Upvote 0
Hello Pax7, nice to hear about you (i´m not in iracing forums).
What are your objetive after being completely happy with you research?
A full comercial wheel to offer, selling the brain of the system with info to adquire the rest of the HW, or,... Would be a nice price project, or?...

In conclusion: What can we expect in the future if we have ilusions in a best FFB wheel but have no Bodnar price posibilities.
 
Upvote 0
Howdy All,

Below is a progress update I posted over @iRacing just now (more than that has happened since my last update here though...)

(@fvalido: I have mentioned some on that @iRacing; I will repost some here later)

-------------------------------------------------------------

Hello there FFB-lovers,

It is ~3:30 AM and I am back from a night out, and there will be no FFB work now - so why not a little FFB project progress update for those of you who are interested in my dabbling in the lab... :S

Most hours spent (which are quite a few) since last update has been on research and design of FFB related electric circuits. Below is a shot taken a few nights ago of where I evaluate two different makes and models of an IC type which will go into my latest design.

aNdb9ul.jpg


The IC on the left turned out not to work as I needed it to, so some time and € wasted there. If only the manufacturer would have written a proper data sheet for it I would not have wasted time on it...
The IC on the right on the other hand turned out to work just as expected and has been included in my latest circuit board design.

I finalized the circuit board design yesterday night, and it has now been submitted for manufacturing! I expect the first few manufactured board samples to arrive at my lab in a week or so.
Here is a little teaser render of the design showing the top left corner of the board, including a mounting hole, some ground plane, silk screen text etc.

yHjfFqV.jpg


I already have assembled a hand made prototype of the circuit and successfully tested that, so I expect the circuit board design to work fine on first try! ;)

BTW, this circuit board will host stuff which I am quite sure will be the most capable and powerful FFB wheel system in the world (and yes, that includes comparison with any recent announcements... ;) ).

-------------------------------------------------------------

Updates on some other stuff:

1:

Pax7 said:
Implementation of a new, quality enhancing FFB algorithm I got the idea for in discussion with another guy the other night. Initial tests of it yesterday night in iRacing indicated it acutally works as intended on first try, but in addition to the subjective feel of it through the wheel using various parameter settings, I want to see it graphed! But as this is high frequency, real-time stuff I will have to prepare a bit to facilitate that - something for a session tonight!

I did perform this validation as planned and it showed my little algorithm works as expected. This is IMHO pretty neat stuff, and I prefer it over my other FFB enhancing method I have in place for optional use.

2:

Since quite a few weeks actually, I have made further progress on this:

Pax7 said:
...I have also invested a number of hours investigating the original "snag" from above, and have drawn some conclusions after quite some work to get there. It is still not solved however, and what worse is what I hoped would expose the cause for the issue itself also did not work, pointing to either a HW issue or an even more complex config/interference issue.
I am soo looking forward to dig even deeper into this! :roll: Now at least with my new findings I hope to get the HW manufacturer to wake up!
The HW manufacturer in fact did wake up after I presented the above findings! They in turn contacted a sub-system supplier and that supplier confirmed there is an issue in one of their sub-systems which probably causes the issue I am experiencing. They are working on a new version of the sub-system to correct this, but there is no real ETA for it. Luckily I can keep myself busy meantime ;)

In parallel with the above I sourced HW from another manufacturer which uses the same sub-system, and guess what? The exact same issue showed with that HW, indicating that most probably indeed the problem lies in the particular sub-system.

/End of progress update!
 
Upvote 0
Gents, another little update from the iRacing forum:

-----------------------------------------------

Hello Guys,

glad you like these little "blog-like" updates!

A member said:
Most people will want to you to finish as soon as possible...
Well me too, in a way. I am not compromising on the level of technology etc. in this project, and not doing that takes time :)

Also, as exemplified by some other companies in the sim equipment area, with this project I am doing myself what normally takes a group of at least three specialized engineers to accomplish. That fact obviously also adds to the calendar time needed.

Working like I do now has benefits however: I do not need to compromise because of any external dead lines and I am not limited in any design choices whatsoever by having to keep a specific budget, or the addressing of a specific target group.

-----------------------------------------------

Now a little update on my new circuit board design!

The manufactured boards arrived Thursday last week (=earlier than expected); here you have them!

Neat UPS package:

nSXBOzE.jpg


And, the real deal! :)

d469MP2.jpg


After verifying I got all the mechanical dimensions right for components etc, I mounted the last components by hand and started to test if everything electrical seemed to work as intended - and it did!

So, now I am busy piece by piece bringing this stuff to life, but it is quite a lot of work! The good news is though that I have solved all the technical "challenges" already in the preceding prototyping stages (I hope!), so now it's just a matter of putting some good old time into it!
 
Upvote 0
Since you like information, some more below! (post from Iracing):

-------------------------------------------

:) @steven,

considering the large++ number of hours I have and am putting into this project, .0004 cents/hour is probably about where I will land when I am done... :S

Speaking of large number of hours, as a "side activity" I have during the last number of weeks been evaluating a new USB stack to use with my latest FFB system prototype.

Result is now I know that USB stack code pretty darn well! This was _quite_ far from plug and play for use as FFB wheel USB interface firmware:

* In order to even get the stack to work at all for a FFB wheel device I had to extend it to support the needed "communications means".

* I spent two nights this week, ~8 hours in total, eyeballing some USB stack config code for the FFB device that did not work as it should. I got that sorted too!

* Despite the above fixes, the FFB device behaved funnily during the first tests. When studying some USB traces I saw a strange thing (luckily it only took me 5 mins or so to spot it), and I went back to the USB code to have a look at that. Turned out I had forgotten to remove a WIP code snippet (a classic mistake!) used during FFB device code porting, which did not really help getting the final system to work as it should :)

* When the above was sorted I yesterday fired up rFactor2 only to discover that the USB stack performance was so bad it messed up rF2, which as you know uses high frequency FFB wheel I/O. Luckily I have stared at the USB stack code and microcontroller USB block architecture so much now I quickly understood where the major performance bottleneck was located. In fact, even before rF2 proved the issue, I had made a note to change that part of the USB stack code as it was inefficient.
The code change was done in no more than an hour or so, and is now tested and works just fine, with good performance!

So, now that USB stack is ready to use for me, which is very good news for reasons I will shed light on down the road some!

Nighty folks,
 
Upvote 0
Hello again guys,

multiple things are falling into place right now, so here is another little update for you!

In addition to the new USB stack side-project, I have as you know been working on my next-gen FFB system since the spring of this year (of which the circuit board above is one component).

I am happy to report that since yesterday a fully working version of the next-gen FFB system is up and running in my lab! I just come off a few hour session using it in iRacing, rFactor2 and Assetto Corsa and everything seems to be working just fine, no hiccups or other issues observed.

I performed some initial performance measurements on the new system, and as I had calculated beforehand it should, it indeed absolutely dwarfs anything previous performance-wise. Pretty cool I must say and worthy a true, high end FFB system.

I wish I could show some photos and videos of the components comprising this new system and explain in detail about it, but it is still a bit early for that.

-----------------------------------------

On the new USB stack work: I have continued to make further performance enhancements of the stack, now a bit more tricky and yielding a bit less - but still important for my peace of mind :) It works fine though in the tests I have performed, and I will continue to streamline the stack a bit more. At some point I think I will actually write a fully purpose built USB stack to maximize performance and get rid of the fluff that is in the way! :)
 
Upvote 0
Well sounds like you need some user testing , only one thing for it you are going to have to post the system to me right now along with servo motor controller and PSU :p

Good job though , must be really satisfying having it all fall into place !
 
Upvote 0
I would also be interested to test if you need more peoples.
I m building a belt drive wheel with for now an homemade ampli board to amplify a g25 board signal, but i would be glad to replace the electronic part by your.
The cheap logitech rotary encoder is not precise enough and have the calibration right every time i start my pc become very annoying..
So if your board still support DC motors and proper incremental rotary encoders you can count me on the list to order you a board. ;)
 
Upvote 0

Latest News

Are you buying car setups?

  • Yes

  • No


Results are only viewable after voting.
Back
Top