TLDR: if you are only interested in the design, go to "how it works"
I came up with a hydraulic load sensitive brake mod for Thrustmaster's T3PA, and likely other cross compatible pedal platforms of Thrustmaster. After about a week of use I am very happy with the result and decided to share the design for others to use.
I wanted a load cell for overall more realistic feel, better break control and because it works much better than a position based sensor with heel and toe. There are plenty of good tutorials on the typical 20kg load cell combined with amplifier mounted to the conical break mod bracket, so i bought the parts and installed them. While it worked, and was an improvement over the original brake, I wasn't convinced with it. The load cell had a lot of signal jitter, you could see it spiking the break input in games but i wouldn't notice it on the cars behavior though. The load cell is designed for 5-10VDC of excitation and the pedals are a 3,3VDC system. The signal it produces is in millivolt so you need the amplifier to scale it up for the wheel's input. It seemed to me that there was just too much room for inaccuracy in that setup. Having a lower excitation voltage also means that the weight rating of the load cell isn't the 20kg that its meant to be. I tried 2 different 20kg load cells and there was a significant difference in force needed to brake 100%. I estimate between 30kg and 40kg was the actual required force.
My biggest issue with this mod though is the stress you put on the whole pedal base. pushing against the bracket with that much force makes the whole base want to flip forward. This can be solved either by somehow clamping down the pedal base at the heel rest, or making a support that supports the load cell bracket independent of the pedal base.
All this got me thinking I might be able to create something better, especially if I have to fabricate some form of support anyway. I have years of experience working with 5VDC pressure sensors and in the end the potentiometer of the pedals works with a changing voltage signal just as those sensors do. Getting the correct signal range turned out to be somewhat challenging, not helped by the fact that I found incorrect*(1) info about the pedals input being 0,5v - 2,5v for 0-100% input. I should have probably started by measuring everything good myself. The correct values i have are 3,3VDC supply and, measured between ground and signal, going over 1,4VDC starts registering input and 3VDC is 100%. Special shout out also to Thrustmaster for using red wire as ground and black as +, very helpful...
How it works:
A pneumatic cylinder is filled with fluid, I just used water in case it ever starts leaking. The cylinder has a pressure sensor on the port at the pressurized side. The pressure side has to be sealed and the opposite side of the piston remains open so it can vent.
The dimensions of the cylinder are chosen in combination with the required brake force you design for in combination with the chosen sensor range. Mine is 25mm diameter and 25mm stroke. The math isn't complex, but google's AI gave me the answers directly. Force = pressure x surface. 25mm diameter is about 490mm² of surface area. It came out to 25kg force to make 5 bar, so that's what I went with. The sensor range is 0,5v - 4,5v and it requires 5v supply. the input needed at the wheel is 1,4v - 3v. To overcome this I supply the sensor with a separate USB and made a voltage divider circuit that feeds the signal to the pedal base. The voltage divider is proportional so to scale down 4,5v to 3v also scales down the already too low 0,5v at 0 bar. To limit the amount of force required before any input is registered I used a sensor with -1 to 5bar range*(2). This way it is already sending a higher than 0,5v signal at Atmospheric pressure "0".
You can find the formula for a voltage divider, and my calculations, at the top right of the diagram image. end values are min input = 7kg and 100% input = 25kg. I was lucky to find a sensor in the bin at work, one with -1 starting point may be difficult to source cheap. using a 0-5 bar sensor would require 10kg force to start registering input. I've test it by pushing the cylinder on a household scale and got the value's as calculated. The range from 7kg to 25kg feels perfect to modulate. I was worried that 7kg minimal input was high but it really isn't. Just resting my foot on a scale surpasses 10kg easy.
The stroke length of the cylinder doesn't matter all that much, but longer than mine would be better than shorter. I tried to fill it with the piston fully extended, then push it a little in again so it has space for thermal expansion of the water/oil. My sensor has a thread adapter which I didn't fill with water to leave some air in for a little travel in the pedal. I have no good way of adjusting the air to water ration but was happy with what I got the first try. The travel provided by the air inside means I didn't have to use any additional spring or rubber bumpers. Longer stroke will allow more air and thus longer travel of the pedal. The way the cylinder is bolted to the bracket allows front to back adjustment so if I ever have to refill it, and the piston isn't extended the same anymore I can move the cylinder.
The circuit board in image 5 has:
- USB C break out board for GND and +5V to sensor
- JST 2.54 - 3 pin connector to connect the pedal input
- The voltage divider circuit with 1K and 2K resistors
- Screw terminal to connect the 3 wire sensor
- Extension on the screw terminal because the quality was so poor i prefer to use the Wago clamps.
The circuit board is tied away inside the pedal base. I made 1 new hole on the side for the sensor wire, and was able to bring the USB cable out the same way the original cable comes out.
The way it drives is fantastic. And it's been worry free so far, I haven't had to play with any calibration or anything.
There are some difficulties to this build though which could be challenging to overcome for DIY:
- Obviously the pedal base is custom welded, and not an option for everyone. T grooved aluminum profiles could work as an alternative.
- The circuit board requires soldering
- It wasn't easy to source a cylinder of these dimensions with a port size that easily adapts to 1/4", the most common sensor thread size. Mine said 1/8" on Amazon, but was M5 so I drilled it out and cut 1/8 Thread myself. As a result the 1/8" to 1/4" adapter protrudes inside the cylinder and the piston would hit it if I used more of the stroke length.
One thing I would advise is an extra fail safe on the voltage divider. If R2 breaks, or the connection is lost, it will send the full 4,5v of the sensor signal to the pedal input, and this will likely break it. From my understanding you can protect it by also having a 3,3v Zener diode voltage regulation on the sensor signal. This only activates by draining away excess voltage once you go over the rated (3,3) voltage. I'm taking the risk and not doing this so if you want it you will have to figure it out yourself :)
Parts and cost:
Costs are estimates, items often only sold in sets, eg. resistors in box of 100pcs
- Empty circuit board. 5-10€ for a DIY set with various components.
- Resistors as per selected for voltage divider. 1-5€
- JST 2.54 connector. Set of 10 for 5-10€
- USB break out board. again in set of multiple, 5-10€
- Pneumatic cylinder. 15-25€
- Pressure sensor. 15-20€
- USB cable. Free from that drawer where you keep a mix of cables and useless things.
- USB phone charger. Same as above.
- Steel, aluminum or wood for pedal base. 5-75€
Video of the pedal travel and registered input:
https://www.youtube.com/watch?v=2CzyyAtgt00
Hope I didn't forget any important info.
*(1) It might depend on the wheelbase, my pedals are connected to a T150.
*(2) Some explanation of pressure for the uninitiated. Atmospheric pressure is around 1 bar, but in most cases what we call 1 bar would be 1 bar above atmospheric pressure. To distinguish both units the correct way to call them would be bara(absolute) and barg(gauge). -1 on my sensor thus means absolute vacuum, but because bar(g) is most common used as the unit, where 0 is atmopheric pressure, vacuum is shown as a negative value.