Controlling engine speed without losing power

Greetings to all.

The other day I put together a simple 12 volt engine control circuit. Normal mosfet transistor, capacitor, arduino and motor.

I would like to know from experts: Is it possible with the help of arduino to regulate engine speed without losing power?

Now I use this function:

analogWrite (engine_pin, engineRange);

engineRange from 0 to 255.

At 255 - the engine has good power, but it spins quickly. At about 40 - the opposite - it spins more or less slowly, but you can stop it even with the wind.
a

Please, help!

Power is torque x speed and I presume you actually require an increase n torque
It is armature amps that determines torque (torque is proportional to amps) and to increase amps you therefore need to increase the supply voltage. However increasing voltage will also increases speed (since speed is proportional to voltage) so you will have to compensate by reducing the PWM values further.

Alternatively, if you have a means of measuring motor speed you could use a PID control loop which will then be capable of increasing the PWM duty cycle to compensate for fall-off in speed.

The OP means torque when they say power, which is confusing, but there is a subtlety here that should be
pointed out.

PWM control of motors can be done in various modes, slow-decay, fast-decay, some chips combine these with
mixed-decay mode. However the only mode that gives good torque performance (and is commonly used
in position control applications with servomotors is "synchronous rectification" mode - a bit of a misnomer,
but it requires a half-H-bridge using 2 switching devices. The motor is always connected to either the supply
voltage or ground, in other words it is never left to float, so that the system behaves much more linearly than
the other modes and in particular does active braking and holds up good torque at lower speeds (ultimately
at low speed the resistance of the motor winding limits torque, and the only way round this is to use a
servo-loop around the motor controller to stiffen up the torque response).

So basically no, a simple circuit will not give good torque performance, a better circuit can give better torque
performance and active braking, but for solid torque you need a control loop (ie turn the motor to a servomotor).