I have a servo which ı want to sweep from 0 to 180 degrees with 25ms delays. The servo is making a door move linearly. Because of that, I can observe how much did the servo actually turn. When I use an arduino nano and a potentiometer to move the servo everything works fine, the door moves through the whole distance. When I move the servo using a for loop like
for(int i = 0; i <= 180; i++){
myservo.write(i);
delay(25);
}
everything works fine, the servo makes the whole sweep. Even when I use this simple code,
everything is fine! But when I use the same methods with a 3.3V Pro Mini, the servo moves less then it moves with nano. the door cant go the whole distance.
I power the servo and arduino from a DC source and they share the common ground.
TLDR:
servo should move a door with 4cm displacement. Using the same code, when arduino nano controls the servo it works fine. When pro mini controls the servo it moves the door about 2.7cm which is not acceptable.
Are you talking about the old real "Nano" board with a ATmega328P ?
Some servo motors need a servo signal that has 5V levels.
Some servo motors mention that they work with a 3.3V servo signal, but the cheap ones might not work with it.
A 8MHz 3.3V Pro Mini can run on 5V as well. You may lift the voltage to 5V and see what happens.
I don't see a problem with a 16MHz Arduino board versus a 8MHz Arduino board, unless you have specific timing code and do bad things with interrupts. If you run a VirtualWire or RadioHead or SoftwareWire library, then it makes a difference.
You can try to apply 5V to the VCC pin. That will put reverse voltage to the voltage regulator, therefor you need a weak power of 5V (for example 500mA). Or connect the 5V power first, and then turn the power supply on.
Which servo motor is it ?
The easiest solution is perhaps to buy an other (better) servo motor.
I think that I have read before on this forum that a 3.3V signal did not work well for some servo motors. Here is someone having trouble with a 3.3V servo signal. Here is a problem with a different servo signal generated by the ESP8266, I think that is not your problem, since you use the Arduino Servo library on both boards.