Go Down

Topic: PWM con arduino nano y tira led RGB (Read 2875 times) previous topic - next topic

MKS2508

Hola buenas, hace un tiempo hice un proyecto con un arduino UNO, una tira led, 3x transistores NPN TIP31C, 3x potenciometros de 10k, un  sensor de sonido y una tira led RGB. Adjunto el circuito. (Sale un bateria lipo, pero es una fuente de alimentacion de 12v) Funcionaba perfectamente, regulaba el brillo de cada color mediante cada potenciometro y con el sensor de sonido cuando lo conectaba. Hoy he probado a hacerlo con mi arduino NANO y me he topado con este problema: Cuando por ejemplo, subo la intensidad al color verde al llegar casi al maximo se me encienden tambien el color rojo y el azul, cosa que no ocurria con el arduino UNO. ¿Esto a que se puede deber? He probado con otra placa y lo mismo, utilizando solo los potenciometros y sigue igual, por lo que he descartado que sean los componentes. ¿Necesito hacer algun cambio en mi circuito? Gracias! ;)

Alfaville

Hola

¿ Podias poner, de forma reglamentaria (</>), tu código ?

Si has descartado los componentes, es lo único que queda para analizar.

Saludos

MKS2508

Aqui esta el codigo que uso :)
Code: [Select]
int const rPotPin = A2;
int const gPotPin = A1;
int const bPotPin = A0;

int const rOutPin = 3;
int const gOutPin = 5;
int const bOutPin = 6;

int rVal;
int gVal;
int bVal;

int soundSensor = 2;
int LED1 = 9;
int LED2 = 10;
int LED3 = 11;
void setup()
{
  pinMode(rOutPin, OUTPUT);
  pinMode(gOutPin, OUTPUT);
  pinMode(bOutPin, OUTPUT);
  pinMode (soundSensor, INPUT);
  pinMode (LED1, OUTPUT);
  pinMode (LED2, OUTPUT);
  pinMode (LED3, OUTPUT);
}

void loop()
{
  rVal = analogRead(rPotPin) / 4;
  gVal = analogRead(gPotPin) / 4;
  bVal = analogRead(bPotPin) / 4;

  analogWrite(rOutPin, rVal);
  analogWrite(gOutPin, gVal);
  analogWrite(bOutPin, bVal);
    int statusSensor = digitalRead (soundSensor);
 
  if (statusSensor == 1)
  {
    digitalWrite(LED1, HIGH);
    digitalWrite(LED2, HIGH);
    digitalWrite(LED3, HIGH);
  }
 
  else
  {
    digitalWrite(LED1, LOW);
    digitalWrite(LED2, LOW);
    digitalWrite(LED3, LOW);
  }
}

_jose_

No se si puede afectar ya que el codigo dices que te funciona en el uno ,pero si declaras un pin analogico como input o output ,lo estas usando como digital ,asi que por si acaso borra esto:
Code: [Select]

  pinMode(rOutPin, OUTPUT);
  pinMode(gOutPin, OUTPUT);
  pinMode(bOutPin, OUTPUT);

Lucario448

#4
Feb 24, 2017, 12:29 am Last Edit: Feb 24, 2017, 12:29 am by Lucario448
Ese no es el problema, el problema que estoy viendo (según diagrama de conexiones) es este:



¿Por qué dos señales parecen juntarse? Lo que va a suceder aquí es que si
Code: [Select]
analogWrite(rOutPin, 127); // Brillo a la mitad
Y...
Code: [Select]
digitalWrite(LED1, HIGH);
Adivina que ocurre... el LED rojo pasa a brillo máximo aunque hayamos hecho analogWrite en el otro pin.

Con esa mezcla de señales, siempre se te encenderán todos los LEDs
Code: [Select]
if (statusSensor == 1)

Aunque...
Code: [Select]
analogWrite(rOutPin, rVal);
analogWrite(gOutPin, gVal);
analogWrite(bOutPin, bVal);





PD: si así vas a accionar un BJT, pues tienes suerte si la carga eléctrica es poca; de lo contrario podrías haber acabado con un pin del Arduino, y/o convertir los transistores en pequeñas máquinas de humo.
Los BJT son accionados por corriente (amperaje), de ahí que en los diagramas siempre encuentres una resistencia entre la base y el accionador. Los que funcionan por voltaje, son los MOSFET.

Si en realidad son MOSFET a pesar de venir en ese encapsulado, pues no he dicho nada... ::)

MKS2508

Hola lucario! Gracias por tu respuesta. El transistor que estoy utilizando es un NPN, el tip31c. ¿Me convendría mas usar mosfets? Lo que hacia con ese circuito y con el uno era lo siguiente: El sensor de sonido sacaba 3 salidas pwm (LED1, LED2 y LED3) y tenia un interruptor entre cada una de esas salidas y la pata del transistor para elegir que colores son los que quiero que sean "audiorritmicos", por así decirlo. Lo que yo quiero es que cuando no estén recibiendo ningún sonido, en lugar de estar apagados, pueda elegir un color mediante el potenciómetro. (EJ: Conecto del sensor de sonido el color rojo y el azul, y cuando recibe sonido se encienden esos dos, ero cuando no recibe no se enciende ninguno. Lo que yo hice con el UNO es eso, tenia encendidos mediante los potenciómetros el rojo y el azul a la mitad por ejemplo, y cuando recibía un sonido se encendían al máximo.) Por si no me he explicado bien y no me entiendes te dejo un vídeo de su funcionamiento, seria genial si me ayudas a hacer los cambios que necesito en mi código y mi circuito para conseguir lo que hice con el arduino UNO!  Muchas gracias :) https://youtu.be/X3Hsb7eq9HE

MKS2508

Por cierto, he olvidado añadir que usando un código y un circuito en el que NO utilizo el sensor de sonido, me ocurre lo mismo.

surbyte

Quote
¿Me convendría mas usar mosfets?
Siempre te conviene porque tendras mas eficiencia y menos disipación de calor en los transitores MOSFET


Por favor edita esto

Quote
https://youtu.be/X3Hsb7eq9HE
Que se vea usando la etiqueta de enlace.
Si no sabes lee las normas.

Go Up