En mi proyecto reciente, estoy trabajando en el control de velocidad del ventilador USB de 5V DC.
El motor de mi ventilador se ve como abajo:
AquíelcontroldelventiladorlorealizaPWM,queprovienedelcontroladorArduinoNANO.ParacontrolarlavelocidaddeFAN,desarrolléuncircuitoqueestádebajo:
Ahora, cuando doy PWM completo significa valor completo 255 y en ese momento cuando mido el voltaje a través del motor, entonces solo alrededor de 3.50 V. Pensé que podría estar lleno a 5 V. No sé por qué tanto la pérdida sucede? Cualquier sugerencia al respecto.
Y mi código de Arduino está abajo:
const int kPinSw1 = 8;
const int kPinSw2 = 9;
const int kPinPWM = 3;
int oneBtnState = 0;
int lastOneBtnState = 0;
int twoBtnState = 0;
int lastTwoBtnState = 0;
int count = 0;
void setup() {
Serial.begin(9600);
pinMode(kPinSw1, INPUT_PULLUP);
pinMode(kPinSw2, INPUT_PULLUP);
pinMode(kPinPWM, OUTPUT);
}
void loop() {
//-------------------------------------//
oneBtnState = digitalRead(kPinSw1);
if(oneBtnState != lastOneBtnState)
{
if(oneBtnState == HIGH)
{
count--;
if(count <= 0)
{
count = 0;
}
}
delay(50);
}
lastOneBtnState = oneBtnState;
//-------------------------------------//
twoBtnState = digitalRead(kPinSw2);
if(twoBtnState != lastTwoBtnState)
{
if(twoBtnState == HIGH)
{
count++;
if(count >= 4)
{
count = 4;
}
}
delay(50);
}
lastTwoBtnState = twoBtnState;
Serial.println(count);
//-------------------------------------//
switch(count) {
case 1:
analogWrite(kPinPWM, 0);
break;
case 2:
analogWrite(kPinPWM, 128);
break;
case 3:
analogWrite(kPinPWM, 192);
break;
case 4:
analogWrite(kPinPWM, 255);
break;
default:
analogWrite(kPinPWM, 0);
break;
}
}