En mi proyecto reciente, estoy trabajando en el control de velocidad del ventilador USB de 5 V CC.
El motor de mi ventilador se ve a continuación:
Aquí el control del ventilador se realiza mediante PWM que proviene del controlador Arduino NANO. Para controlar la velocidad de FAN, desarrollé un circuito que se encuentra a continuación:
Ahora, cuando doy PWM completo significa valor completo 255 y en ese momento cuando mido el voltaje a través del motor, entonces es solo alrededor de 3.50 V. Solo pensé que podría ser 5 V completo. No sé por qué ocurre tanta pérdida. Cualquier sugerencia al respecto.
Y mi código Arduino está a continuación:
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;
}
}
Como seguimiento a mi comentario anterior, si el ventilador consume una corriente de 400 mA cuando está ENCENDIDO y usa para la beta de saturación del BJT, entonces
La hoja de datos del ATmega328P permite una corriente máxima de 40 mA por pin de entrada/salida digital (DIO), por lo que con estás en ese máximo. (nb Basado en el cálculo anterior para , cuando el pin DIO es lógico ALTO, el pin DIO debe suministrar (también conocido como "fuente") una corriente de 40 mA en la base del BJT para saturar correctamente, para ENCENDER completamente, el BJT).
La sección "Características eléctricas" de la hoja de datos del ATmega328P no muestra (por lo que pude encontrar) el valor de (voltaje de salida lógico ALTO) para una corriente de salida de 40 mA. Pero dada la información en la Fig. 33-34 "Voltaje de salida del pin de E/S frente a corriente de fuente (V CC = 5 V)" en la hoja de datos, estimaría .
Puede calcular el valor de la resistencia limitadora de corriente base del BJT de la siguiente manera:
dónde es el voltaje base-emisor del BJT cuando el BJT está operando en modo de saturación con una corriente de colector de . Es probable que pueda determinar el valor de de la información del modo de saturación proporcionada en la hoja de datos del BJT.
El valor real (físico) de la resistencia no necesita ser exactamente igual al valor calculado , pero su valor debe estar cerca de . Por ejemplo, si el calculado el valor es 1234, puede usar una resistencia de 1,2 kohm al 5 % o una resistencia de 1,24 kohm al 1 %.
Cuando el pin DIO es lógico ALTO, la potencia disipada por la resistencia limitadora de corriente base es dado por:
Seleccione una resistencia cuya potencia nominal sea o mas alto. Por ejemplo, si disipa 122 mW, luego use una resistencia cuyo índice de disipación de potencia sea de 244 mW o superior; por ejemplo, puede usar una resistencia de 1/4 vatio (250 mW) o una resistencia de 1/2 vatio (500 mW), pero no debe usar una resistencia de 1/8 Watt (125 mW).
Para reducir la caída de voltaje en el interruptor del transistor, use un transistor MOSFET con baja "resistencia de encendido" en lugar de un transistor BJT
¿Leí correctamente en la imagen que el ventilador consume una corriente de 0,4 A?
En ese caso, suponiendo
, la corriente base sería de 4 mA y provocaría una caída de voltaje de 4 V sobre la resistencia base de 1 kOhm. Esa es una gran cantidad de voltaje que perder. Sugiero hacer
, o incluso
y ver qué pasa con ese valor.
Incluso con
perderías 2 V, más
de aproximadamente 0,7 V o más, ya que el transistor no se satura.
No hay necesidad de un MosFet. El BJT, si se satura, tendrá solo 0.2..0.3 V
durante el estado activado.
Pero gabonator tiene razón por otra razón al recomendar un MOSFet: reducirá la carga actual en la salida PWM de 50 mA (de hecho, la
en el punto de saturación donde
puede ser 0.4 A, como señaló Jim Fischer) si solo se usa un BJT.
Y debido a que no se requiere un comportamiento lineal, es simplemente encendido/apagado, la no linealidad del MOSFet no es un gran problema aquí. Aquí hay un candidato.
jim fischer
vladimir cravero