Driving an Object at Half the Speed of the main Object
Use one property to drive many

In leiu of setting up a property for RPM of the engine, will use the current frame.  All drivers added will be a function of frame.
A simple driver to rotate one revolution per second on a file using 24 fps
2 * pi * frame / 24

A driver for half this rotational speed  would be
pi * frame / 24

To rotate in equal but opposite direction, negate the value.
Can create this  driver by typing   #2 * pi * frame / 24  directly into a property. The hash designates it is a driver. (turns purple) Only need the hash first time
Here are the six drivers I have added to create animation.

Turning off use selected in the drivers editor allows us to quickly navigate from one to another.
Instead of using frame could instead set up a custom property RPM and use that in any driver for a component driven by shaft revs.
PS. Not sure I have animated the correct items, but hopefully it shows the theory of using one property to drive many based on its value.