dimming leds

Hola!

Tengo montado este circuito:

Las referencias de arduino y las del circuito están conectadas.
pwm 6 esta configurado como OUTPUT.

Cuando subo la luz, todo va bien. Cuando la bajo [analogWrite(6,0)], no se apaga del todo. Se queda un poco de luz encendida. Si hago reset, si que se apaga.

He probado con varios transistores de la misma serie, BD139.

Circula una corriente de 700mA para cuatro leds de potencia (2 y 2 en paralelo).
La tensión se genera a partir de un LM7805A alimentado a 8,5v.

¿Por qué no se apaga si no hago reset?

Gracias!

#define PWM 6


int inByte = 0;         // incoming serial byte
byte bits = 0;

void setup() {

  Serial.begin(9600);

  pinMode(PWM, OUTPUT);   
 
}

void loop() {
  if (Serial.available() > 0) {

      inByte = Serial.read();
      
      switch (inByte){
          case 'a':
              bits += 10;
              break;
          case 's':
              bits -= 10;
              break;
          case 'q':
              bits++;
              break;
          case 'w':
              bits--;
              break;
      }
  
      Serial.println(bits);
      analogWrite(PWM, bits);

  }

}

Arduino NANO.

Si el archivo es grande, adjúntalo completo.
Lo que no entiendo es porque usas un BD139 cuando puedes usar un MOSFET que es para mi mejor alternativa.
Eso por un lado.
Otra cosa es porque los leds no tienes resistencia limitadora de corriente.

Finalmene tu dices que analogWrite(PWM, actualLightning); no llega a 0?
O sea, actuallightning no llega nunca a 0?
0 PWM debería darte un verdadero 0 a la salida?
Probaste sin arduino y con el BD139 conectado a GND si los leds no se iluminan?
Son pruebas simples para detectar el responsable.

He cambiado el programa por uno más sencillo para las pruebas y ocurre lo mismo (editado arriba).
actualLightning si que llega a 0, pero sigue circulando una corriente colector emisor en ese instante.

He usado el BJT xq lo tenía suelto por casa.

Si desconecto la base del transistor del PWM y lo conecto a GND se apaga.
He medido con el polímetro que ocurre y:
Vce =2,5v
Vbe = 40mV

No pongo resistencia limitadora ya que ha nada que ponga un 10ohms los leds iluminan muy poco. Son leds bastante gordos, de 3,3v y 3W.

Ttal vez sea xq el BJT se activa en corriente. Y si quito R=100ohms de base?

Gracias por la respuesta :slight_smile:

si desconectas la base del transistor del PWM y lo pones a GND y se apaga entonces haz esto en tu código.
Es una chapuza como dicen los Españoles pero tal vez funione.

if (actualLightning == 0) {
  digitalWrite(PWM, LOW);
}

De todos modos me llama la atención esas mediciones que has puesto.
Como es posible que conectes la base a GND y me leas Vbe = 40mV? debe ser 0 mV

Me explicado mal, cuando pongo analogWrite(PWM,0) hay 40mV. Si pongo a GND no lo he medido pero seguro que hay 0.

Lo que me extraña es que si reseteo se apaga. Actua como un "tristor" una vez que se ha encendido, no se puede apagar.

Probé lo que me dices y tampoco.

Igual pruebo con un mosfet... Aunque supongo que no debería ser relevante. Me puedes decir alguna serie para que soporte potencia?

También... Cuando pones pinMode(X,OUTPUT), se levanta algún pull-up? Igual pasa una corriente que lo activa.

Gracias de nuevo surbyte

Yo tambien he quedado con la inquietud de que pueda estar pasando ya que supongo que el es esquema debería de funcionar intente simularlo en proteus pero no se porque el analog write en mi proteus no anda con respecto al Mosfet que tal un IRL530

Usa como te dice firuis2010 un IRL530 que funciona bien con Vgs 5V y esa corriente y mas también.

El lunes lo pruebo y os digo. Gracias!