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!
Hola
¿ Podias poner, de forma reglamentaria (</>), tu código ?
Si has descartado los componentes, es lo único que queda para analizar.
Saludos
Aqui esta el codigo que uso
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);
}
}
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:
pinMode(rOutPin, OUTPUT);
pinMode(gOutPin, OUTPUT);
pinMode(bOutPin, OUTPUT);
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
analogWrite(rOutPin, 127); // Brillo a la mitad
Y...
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
if (statusSensor == 1)
Aunque...
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... :
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 Final prototype v1.0 - YouTube
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.
¿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
Que se vea usando la etiqueta de enlace.
Si no sabes lee las normas.