Hi,
I’m new to Arduino, even if I have a few basics of C language, and I would like to know if some of You would have advices to give me about my project:
I happily own a 4WD nitro RC car and I would like to apply some sort of traction control to it.
It has 2 differentials (front and rear), so it means that if one of the front/rear wheels is blocked then the second will turn full speed but the blocked one won’t have any torque anymore, and it can lead to a poor control over the car when it is stuck or while it is turning.
On race cars and high-end cars, manufacturers use some “limited” differentials: like normal differentials it will split the power between the wheels except that one wheel will never be blocked, because part of the power is always given to each wheel. It allows wheels to turn at different speeds while the car turns but doesn’t let one wheel get stuck while the other spins full speed.
I don’t know if I’m making myself very clear haha
I would like to implement such a system on my RC car, plus a “pimped up” ABS control that would only work when the wheels are straight, allowing me to control the car when I’m braking on a straight line but also letting me “drift” if i brake while turning.
Mechanically, there is nothing easyer. I would need to check each wheel’s speed and if one wheel is let’s say 30% faster than the opposite one then I’d use a servo to tighten the break on it, and it would slow down until it reaches <30% speed difference.
Also, for the ABS, if there is no tension on the steering servo and one of the wheels is not turning anymore, I would override the braking order by lowering it 5% each step until the wheel starts turning again. It would be deactivated if the speed of the wehicle is lower than a certain limit, to allow me to stop the car and not end in a theoretical infinite substraction.
Now it’s the programming part that is not clear for me.
I would have to read the remote’s commands (by plugging the receiver’s OUT pins to 2 analog IN pins on the Arduino controller), read the wheels speeds, and action 6 analog servos: one for throttle, one for steering, and four for the brakes.
I was thinking of a Hall Effect sensor on each wheel for reading the speed.
The hardware I thought would be useful is:
- an Arduino Uno or 2009, both rev3 (aren’t they the same?)
- a Tinkerkit shield
- 4 micro servos for breaking (1kg/mt is far enhough for pinching each brake)
- 2 normal servos for throttle and steering (actual ones already present on the model)
- 4 Hall Effect sensors, plus “magnet wheels” with 4, 6 or 8 magnets on each (depending on the overall size of the brakes, etc.)
I wrote some piece of code, but I have no idea on how to have an efficient order of execution, as some of the orders have to be given in parallel, some overriding others!
[MESSAGE TOO LONG]