Excuses for a lengthy delay ― a bit of holidays (and then catching up with lots of work meanwhile accumulated) interrupted the posting routine. While I'm toying with a Lego project for which I hope to put a text together in near future, I got intrigued by a problem of simple yet effective Technic power steering.
Sounds simple on the surface, doesn't it? Attach some kind of force meter (probably a differential with a spring) between the rack's pinion and the steering wheel, power the axle with a motor if a given threshold of force is exceeded, and you've got your power steering. Looking something like this (here implemented with NXT rather than Power Functions, but the working principle is the same):
So, as you can see, an arm sufficiently tilted by a differential when the force between the pinion (at the top) and the steering wheel (bottom) becomes large enough, will push on one of the mechanical sensors, depending on the rotation direction. The motor will start spinning accordingly and thus assisting the steering wheel, as long as there is force between the pinion and the steering wheel. When it's gone, the arm will return to the neutral position between the sensors and the motor will interject no longer.
In its basic principle, this does work as a power steering ― it will assist in rotating the pinion against significant resistance, and not activate unless the pinion is resisting the motion set by the steering wheel, or vice versa. Yippee, problem solved, and we can return to playing Portal 2.
No, not really. The trouble is that this sort of system doesn't even remotely provide the continuous and soft feel which it should. It works far too jerky: once the motor threshold is reached, its abrupt intrusion easily turns (and over-turns) the steering wheel and the pinion in the desired direction, releases the arm, and stops. Nothing like the smooth operation found in real cars.
The basic problem here is in the binary operation of the motors and sensors. It can either be on and off, while a smoothly working power steering should have a range of intermediate levels, keeping the motor force proportional to the wheel-pinion tension, and yet sensitive enough to start at low thresholds.
One method could rely on a gradient colour disk being spun according to the tension instead of a pusher arm, which is in turn scanned by an NXT colour sensor. It could determine the force with greater precision and thus run the NXT motor with different power, as required. But this approach would be unacceptably complicated and cumbersome, especially if we confine the project only to standard Lego parts ― in which case building the gradient colour disk would be even more complicated. After all, this system should easily fit in the front of a medium-sized Technic car (say, 8070), and yet keep enough room for the steering, suspension, etc.
Ideas? Post them in the comments if you've got any. If I come up with something, I'll add an update :)