Voltaje de salida del USB FAN

1

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;
  }
}
    
pregunta Hasan

3 respuestas

0

Para reducir la caída de voltaje en el interruptor del transistor, use transistor MOSFET con bajo "en resistencia" en lugar de transistor BJT

    
respondido por el gabonator
0

¿Leí correctamente en la imagen que el ventilador consume una corriente de 0.4 A?
En ese caso, asumiendo que \ $ h_ {FE} = 100 \ $, la corriente de base sería de 4 mA y causaría una caída de voltaje de 4 V sobre la resistencia de base de 1 kOhm. Esa es una gran cantidad de voltaje para perder. Sugeriría hacer \ $ R_b = 200 \ Omega \ $, o incluso \ $ 100 \ Omega \ $ y ver qué pasa con ese valor.
Incluso con \ $ h_ {FE} = 200 \ $ perdería 2 V, más \ $ V_ {CE} \ $ de alrededor de 0.7 V o más, ya que el transistor no llega a la saturación.
No hay necesidad de un MosFet. El BJT, si se conduce a la saturación, tendrá un mero 0.2..0.3 V \ $ V_ {CE} \ $ durante el encendido.

Pero el gabonador tiene razón por otro motivo al recomendar un MOSFet: reducirá la carga actual en la salida de PWM de 50 mA (de hecho, \ $ h_ {FE} = 10 \ $ en el punto de saturación donde \ $ I_C \ $ puede ser de 0,4 A, como señaló Jim Fischer) si solo se utiliza un BJT.
Y como el comportamiento lineal no es obligatorio, simplemente está activado / desactivado, la no linealidad del MOSFet no es un gran problema aquí. Aquí es un candidato.

    
respondido por el HarryH
0

Como seguimiento a mi comentario anterior, si el fan consume una corriente de 400 mA cuando está ENCENDIDO y usa \ $ \ beta_ {sat} = 10 \ $ para la beta de saturación del BJT, entonces

$$ I_ {B (sat)} = I_ {C_ {sat}} / \ beta_ {sat} = 400 \, mA / 10 = 40 \, mA $$

La hoja de datos del ATmega328P permite una corriente máxima de 40 mA por cada pin de entrada / salida digital (DIO), por lo que con \ $ I_ {B (sat)} = 40 \, mA \ $ se encuentra en ese máximo. (nb Basado en el cálculo anterior para \ $ I_B \ $, cuando el pin DIO tiene una lógica ALTA, el pin DIO debe suministrar (también conocida 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 \ $ V_ {OH} \ $ (voltaje lógico de salida HIGH) 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 vs. corriente de fuente (V CC = 5V)" en la hoja de datos estimaría \ $ V_ {OH} \ approx4 \, V \, @ \, I_ {OH} = 40 \, mA \ $.

Puede calcular el valor del resistor limitador de corriente base del BJT de la siguiente manera:

$$ R_B = \ frac {V_ {R_B}} {I_ {R_B}} = \ frac {V_ {OH} -V_ {BE (sat)}} {I_ {B (sat)}} = \ frac {(4 \, V) -V_ {BE (sat)}} {(40 \, mA)} $$

donde \ $ V_ {BE (sat)} \ $ es el voltaje del emisor de base del BJT cuando el BJT está funcionando en modo de saturación con una corriente de colector de \ $ I_ {C_ {sat}} = 400 \, mA \ PS Es probable que pueda determinar el valor de \ $ V_ {BE (sat)} \ $ a partir de la información del modo de saturación que se proporciona en la hoja de datos del BJT.

El valor del resistor real (físico) no necesita ser exactamente igual al valor calculado \ $ R_B \ $, pero su valor debe estar cerca de \ $ R_B \ $. Por ejemplo, si el valor calculado de \ $ R_B \ $ es 1234, podría usar una resistencia de 5% de 1,2 kohm, o una resistencia de 1% de 1,24 kohm.

Cuando el pin DIO es lógico ALTO, la potencia disipada por la resistencia limitadora de corriente base \ $ R_B \ $ viene dada por:

$$ P_ {R_B} = I_ {B (sat)} ^ 2 \ cdot R_B = (40 \, mA) ^ 2 \ cdot R_B $$

Seleccione una resistencia cuya potencia nominal sea \ $ 2 \ cdot P_ {R_B} \ $ o superior. Por ejemplo, si \ $ R_B \ $ disipa 122 mW, entonces use una resistencia cuya capacidad de disipación de potencia sea de 244 mW o más, por ejemplo, podría usar una resistencia de 1/4 Watt (250 mW) o una 1/2 Watt (500). mW) resistencia, pero no debe usar una resistencia de 1/8 vatio (125 mW).

    
respondido por el Jim Fischer

Lea otras preguntas en las etiquetas