Motors are basically resistors. While others here will crucify me for saying that, this a basic analogy that's useful for beginners to understand. A motor is a long wire wrapped around a core, that interacts with magnets to spin. All wires have resistance and can be measured like a resistor (use the ohmmeter part of your multimeter).
A basic implementation of ohm law can be used. V = IR.
As you have noticed, the motor is intended for 1.5V to 3V. Motor specs are averages, and rely on specific conditions. Your motor provides X RPM and consumes Y current at Z volts. It will be faster/stronger at 3V than it is at 1.5V, while consuming more current, just like a resistor consumes more current at a higher voltage.
You can use PWM to control the motor, reducing the power compared to the percentage of the PWM signal. Or you can use a resistor to lower the current of the motor (two resistors in series combine the total resistance). Or you can realize that since the motor can accept more or less than its "Typical" voltage, you can give it 3.3V without much issue. It will just be a bit faster and consume a bit more energy (10% more).
Alternatively, you can use a silicon diode in series to drop the voltage 0.7V.
I assume this is a 2-stroke engine.
So you want to use the stepper to deliver power, and hence maintain a relatively constant angular velocity as the power stroke finishes, and continue through compression until the IC engine fires and generates power again.
That should be two fixed points on each rotation, though it might take a bit of care finding where those points are (hence, partly, my comment lower-down about using a high-resolution sensor)
You could sense those positions with two Hall switches and magnets attached to the shaft. That is how some motor vehicle engines sense shaft position.
Hall effect sensors should be good for more than 1000 rps, e.g. 60,000 rpm.
Most reasonable microcontrollers could track 4,000rpm with much better than 0.1% accuracy.
However, driving the stepper, with only 12 steps might be tricky to set up, and drive. 12 steps is 30 degrees per step, which is quite a lot compared to the motor's cycle. This sounds more like a BLDC motor than a stepper motor.
Even with 8 step micro-stepping, the angle is quite big. AND, 8hp is about 6kW+, which is quite a lot of power to switch and control.
Further, to maintain near-maximum torque, the movement of the magnetic field needs to track the motor's rotation reasonably accurately. I'd be tempted to go for 'overkill' and use a high resolution rotation sensor. That might be Hall Effect, like something from AustriaMicroSystems (AMS), or something optical.
Edit:
Texas instruments (TI) have some useful documentation and videos on 'Feld Oriented Control' (FOC) for BDC motors which may help. A web search will find this stuff.
TI have some affordable (sub $100) development boards for low-power (10W?) control too, as does ST Micro, and I'm sure, others. There are 'fast/easy start development kits' for motor control. I haven't used them, but they claim to have control software 'ready to go'.
Summary:
Sensing the shaft position for the IC engine might be a relatively easy part of the project.
Best Answer
Without a datasheet it's really hard for all of us to help you.
I will keep it simple:There are 2 possible reasons for overheating:
possible soultion:
smaller fan means a smaller load. So you can try replacing the fan with a smaller one.
try to connect a small resistor is series. you should try and find the ideal value but you could try a value near 10ohm. the resistor will create a voltage drop and the fan will run at a lower voltage than 5V. The fan will run slower ofcourse
other solutions: