Este documento describe un proyecto de semáforo control de ruido realizado con Arduino. El proyecto incluye un circuito electrónico con un sensor de sonido LM358N, cuatro LEDs para indicar diferentes niveles de ruido, y cuatro LEDs adicionales para mostrar caritas felices o enfadadas. El documento explica el esquema electrónico, la placa PCB diseñada, el programa de Arduino utilizado y las pruebas realizadas para controlar el semáforo en función del nivel de decibelios detectado.
1. Joaquín Berrocal Piris 1
PROYECTO:
Semáforo control de ruido
Nombre del programa en arduino:
"Sonometro_fco.ino"
(Realizado en Arduino 1.6.4)
Construcción / Esquema electrónico. / programa / placa PCB circ. sensor y activador
Autor: Joaquín Berrocal Piris
Fecha: Nov/Dic 2016
2. Joaquín Berrocal Piris 2
Localización de las lamparitas leds
Comienzo del corte del tablet de 5mm de espesor
PROCESO DE CONSTRUCCIÓN (Nov/Dic 2016)
Vídeo en youtube de éste y otros proyectos míos: https://youtu.be/WuA_KYJCULY
Otros https://www.youtube.com/user/joaquininbp/videos?view=0&shelf_id=0&sort=dd
11. Joaquín Berrocal Piris 10
---------------------------------------------------- PINES DE PLACAS ARDUINO -------------------------------------------
Muestro la estructura de algunas placas Arduino, que se pueden utilizar para el control del semáforo de ruido,
siendo más que suficiente con la NANO (3€) o la Uno (10€)
La Arduino UNO R3
La Arduino NANO V3.1
12. Joaquín Berrocal Piris 11
La Arduino MEGA 2560
EL PROYECTO SE PUEDE MEJORAR incluyendo una tarjeta de 4 dígitos de 7 segmentos para el contaje de las
veces que se supere un cierto nivel de decibelios. Así se motivaría al alumnado a reducir el nivel de ruido
mantenido.
En este proyecto, no está dispuesto, por no tener la citada tarjeta. Muestro una que podría ser utilizada:
13. SEMÁFORO CONTROL DE RUIDO
Realizado: Noviembre 2016
+
(--)
(+ 5 V)
NC
A0
+ microfono
-- microfono
Pot de ajuste sensibilidad
Alimentacion + 5V
ETAPA DE POTENCIA PARA ACTIVAR
LOS LEDS DE CADA SEMAFORO
OBSERVACIONES:
cada conjunto de LEDS alimentados a + 5V
y sin resistencia limitadora consumen 0,43A (430mA)
"tenían 3 pilas de 1,5V = 4,5V"NO SE ESTROPEAN
He probado incluso a darle hasta 9 - 12 V y sin problemas
*Le pongo R limitadora de 390 ohmios 1/2W al ser
alimentados a 12V garantizando una buena luminosidad
y seguridad.
SENSOR DE SONIDO
Con LM358N
Leds señalizadores de las caras
de la sonriente (led5) a la de enfado (led8)
Son Leds blancos Tensión de alimentación 3,4V
CONEXION JP4
JP4 ARDUINO
1 --- Al Pin 2 activa T1 (Q1)
2 --- Al Pin 4 activa T2 (Q2)
3 --- Al Pin 5 activa T3 (Q3)
4 --- Al Pin 6 activa T4 (Q4)
------------------------------------------------------------------
5 --- NO CONEXIÓN (NC)
6 --- "Conectar +12V y los (+) de todos los LEDS"
7 --- NO CONEXIÓN (NC)
8 --- GND
-------------------------------------------------------------------
09 --- A CÁTODO (--) DE LOS LEDS 1 VERDES
10 --- A CÁTODO (--) DE LOS LEDS 2 AMBAR
11 --- A CÁTODO (--) DE LOS LEDS 3 ROJO1
12 --- A CÁTODO (--) DE LOS LEDS 4 ROJO2
+5V
+5V
+5V
+5V
+12 V
Pines de Arduino
Pin 2
Pin 4
Pin 6
Pin 8
LEDS SEMAFOROS
LEDS1 ES EL VERDE
LEDS2 ES EL AMBAR
LEDS3 ES EL ROJO1
LEDS4 ES EL ROJO2
Pin 3 arduino
Pin 5 arduino
Pin 7 arduino
Pin 9 arduino
GND
¡¡LOS ELEMENTOS EXTERNOS A LA PLACA PCB!
¡¡SON TODOS LOS QUE ESTÁN FUERA DEL RECUADRO !!
Led de las Caritas
alPinA0deArudino
GNDMicrofono
+Microfono
+ 5V Conectar de la placa Arduino
GND Conectar de la placa Arduino
NOTA:
LAS MASAS "GND" TANTO DE LA PLACA ARDUINO
COMO DEL CARGADOR DE 12V DEBEN ESTAR UNIDAS
GND
4K7
LM358N
LM358N
GND
GND
10k
10k
10k
10k
10k
1k
1k
4,7uF
4,7uF
0,1uF
0,1 uF
0,1 uF
BC338-40
390-1/21k-1/4W
GND
BC338-40
390-1/21k-1/4W
GND
BC338-40
390-1/21k-1/4W
GND
BC338-40
390-1/21k-1/4W
GND
+12V
VCC
GND
VCC
VCC
VCC
330-1/4W
330-1/4W
330-1/4W
330-1/4W
LEDS VERDES (<40 dB)
LEDS AMBAR (>40 dB)
LEDS ROJOS1 (>55 dB)
LEDS ROJOS2 (>65 dB)
R1
AE
S
IC1A
2
3
1
IC1B
6
5
7
R2
R3
R5
R8
R10
R11
R12
C3
C4
C1
C2
C6
JP1
1
2
3
JP2
1
2
3
Q1R4
R6
Q2R7
R9
Q3R13
R14
Q4R15
R16
JP4
1
2
3
4
5
6
7
8
9
10
11
12
84
LED1
LED2
LED3
LED4
LED5
R17
LED6
R18
LED7
R19
LED8
R20
Autor: Joaquín Berrocal Piris
+
+
sup0
pas0pas0
pas 0
in 0
in 0
out 0
in 0
in 0
out 0
sup0
sup0
pas 1 pas 1
pas1pas1
pas1pas1
pas1pas1
pas 1pas 1
pas 1pas 1
pas 1 pas 1
pas0pas0
pas 0pas 0
pas 1pas 1
pas1pas1
pas1pas1
pas 0
pas 0
pas 0
pas 0
pas 0
pas 0
pas1
pas 3pas 2
pas1pas1
pas1pas1
sup0
pas1
pas 3pas 2
pas1pas1
pas1pas1
sup0
pas1
pas 3pas 2
pas1pas1
pas1pas1
sup0
pas1
pas 3pas 2
pas1pas1
pas1pas1
sup0
sup0
pas0
pas0
pas0
pas0
pas0
pas0
pas0
pas0
pas0
pas0
pas0
pas0
sup0sup0
V+V-
pwr0pwr0
sup0
sup0
sup0
pas0pas0
pas0pas0
pas0pas0
pas0pas0
pas 0pas 0pas 1 pas 1
pas 0pas 0pas 1 pas 1
pas 0pas 0pas 1 pas 1
pas 0pas 0pas 1 pas 1
15. +12V
GND
GNDMicrófono
+Micrófono
ArduinoPinA0
+5V
NC
GND
Pin2ActivaLED1SemáforoVerde
Pin4ActivaLED2SemáforoAmbar
Pin6ActivaLED3SemáforoRojo1
Pin8ActivaLED4SemáforoRojo2
NC
NC
GND
NC
Pin3a+LedCarita1
Pin5a+LedCarita2
Pin7a+LedCarita3
Pin9a+LedCarita4
PINESDEARDUINO
PINESDEARDUINO
LED 1 >> Semáforo Verde
LED 2 >> Semáforo Ambar
LED 3 >> Semáforo Rojo1
LED 4 >> Semáforo Rojo2
LEDdelasCARITAS
COMPONENTES:
4 Transistores NPN bc338-40 "CBE" I.max 0,8A / Pot 0,625W /hfe > 250
4 R 390 Ohmios 1/2W
6 R 1K 1/4W
1 Amplificador Operacional doble LM358 + zocalo 8 patillas
3 Condensadores poliester o papel de 0.1 uF (u1J100)
2 Condensadores electrolíticos 4,7uF / 25V
1 Potenciómetro de 4K7 o 10K
1 barra de pines de 2,5mm separacion entre pines
COMPONENTES EXTERNOS A LA PLACA PCB
1 Micrófono
4 LEDS para ilumiar las caritas
4 Cajitas de LES (cada una lleva 24 leds tranparentes; estos trabajan a > 3V a 12 V
4 R330 ohmios 1/4W
1 Conector Hembra para la alimentación de +12V de 5,5mm X 2,5mm
1 Cargador o F. Alimentación de +12V y >= 1,5A
330ohmios
SEMÁFORO CONTROL DE RUIDO
DIMENSIÓN PLACA : 49,55mm X 88.9 mm
R1
IC1
R2
R3
R5
R8
R10
R11
R12
C3
C4
C1C2
C6
JP1 JP2
Q1
R4
R6
Q2
R7
R9
Q3
R13
R14
Q4
R15
R16
JP4
LED1
LED2
LED3
LED4
R17
R18
R19
R20
LED5
LED6
LED7
LED8
4K7
LM358N
10k
10k
10k
10k
10k
1k
1k
4,7uF
4,7uF
0,1uF
0,1uF
0,1 uF
BC338-40
390-1/2
1k-1/4W
BC338-40
390-1/2
1k-1/4W
BC338-40
390-1/2
1k-1/4W
BC338-40
390-1/2
1k-1/4W
16. +12V
GND
GNDMicrófono
+Micrófono
ArduinoPinA0
+5V
NC
GND
Pin2ActivaLED1SemáforoVerde
Pin4ActivaLED2SemáforoAmbar
Pin6ActivaLED3SemáforoRojo1
Pin8ActivaLED4SemáforoRojo2
NC
NC
GND
NC
Pin3a+LedCarita1
Pin5a+LedCarita2
Pin7a+LedCarita3
Pin9a+LedCarita4
PINESDEARDUINO
PINESDEARDUINO
LED 1 >> Semáforo Verde
LED 2 >> Semáforo Ambar
LED 3 >> Semáforo Rojo1
LED 4 >> Semáforo Rojo2
LEDdelasCARITAS
COMPONENTES:
4 Transistores NPN bc338-40 "CBE" I.max 0,8A / Pot 0,625W /hfe > 250
4 R 390 Ohmios 1/2W
6 R 1K 1/4W
1 Amplificador Operacional doble LM358 + zocalo 8 patillas
3 Condensadores poliester o papel de 0.1 uF (u1J100)
2 Condensadores electrolíticos 4,7uF / 25V
1 Potenciómetro de 4K7 o 10K
1 barra de pines de 2,5mm separacion entre pines
COMPONENTES EXTERNOS A LA PLACA PCB
1 Micrófono
4 LEDS para ilumiar las caritas
4 Cajitas de LES (cada una lleva 24 leds tranparentes; estos trabajan a > 3V a 12 V
4 R330 ohmios 1/4W
1 Conector Hembra para la alimentación de +12V de 5,5mm X 2,5mm
1 Cargador o F. Alimentación de +12V y >= 1,5A
330ohmios
SEMÁFORO CONTROL DE RUIDO
DIMENSIÓN PLACA : 49,55mm X 88.9 mm
R1
IC1
R2
R3
R5
R8
R10
R11
R12
C3
C4
C1C2
C6
JP1 JP2
Q1
R4
R6
Q2
R7
R9
Q3
R13
R14
Q4
R15
R16
JP4
LED1
LED2
LED3
LED4
R17
R18
R19
R20
LED5
LED6
LED7
LED8
4K7
LM358N
10k
10k
10k
10k
10k
1k
1k
4,7uF
4,7uF
0,1uF
0,1uF
0,1 uF
BC338-40
390-1/2
1k-1/4W
BC338-40
390-1/2
1k-1/4W
BC338-40
390-1/2
1k-1/4W
BC338-40
390-1/2
1k-1/4W
17. /*
Sonometro-Fco.ino (Nov/dic 2016)
proyecto para captar el nivel de ruido en decibelios
De 0 a 40 db --- nivel aceptable lámpara verde activa
De 40 a 55 db --- nivel alto lámpara Ambar activa
De 55 a 65 db --- nivel Muy Alto lampara Roja1 activa
De 65 en adelante -- nivel Excesivo lámpara Roja2 Activa
Con el potenciómetro podremos aumentar o disminuir la
sensibilidad.
También podremos modificar el programa cambiando los valores a los
que se activan los leds.
*/
#define MIC A0
int sig = 0;
int counter = 0;
void setup () {
//configuración de los puertos 2 al 9 como SALIDA
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
Serial.begin(9600);
Serial.println ("estoy en el setup");
}
//+++FUNCIÓN PARA INCREMENTAR LA APRECIACIÓN Y LIMITAR VALOR A 1023+++++
void led ()
{
//------------lecturaanalógicadelMicrófono-------------
sig = ((analogRead(MIC) * 70)); //Multiplicoparamayorsensibilidad
if (sig> 1023)
{
sig = 1023; // para poner como límite el valor 1023
}
//-------LED VERDE SE ENCIENDE A PARTIR DE 0DB ----------------
if (sig>=0)
{
digitalWrite(2, HIGH); //activa LEDS VERDES del semaforo
digitalWrite(3, HIGH); //Activa Led Verde Carita
}
else
{
digitalWrite(2, LOW); // los apaga
digitalWrite(3, LOW);
}
//-------LED AMBAR SE ENCIENDE A PARTIR DE >= 40dB----------------
if (sig>=300)
{
digitalWrite(4, HIGH); //activa LEDS AMBAR del semaforo
digitalWrite(5, HIGH); //Activa Led Ambar Carita
}
else
18. {
digitalWrite(4, LOW); // los apaga
digitalWrite(5, LOW);
}
//------ LED ROJO1 SE ENCIENDE A PARTIR DE >= 55dB -------------
if (sig>=700)
{
digitalWrite(6, HIGH); //activa LEDS ROJO1 del semaforo
digitalWrite(7, HIGH); //Activa Led Rojo1 Carita
}
else
{
digitalWrite(6, LOW); // los apaga
digitalWrite(7, LOW);
}
//------LED ROJO2 SE ENCIENDE A PARTIR DE >= 65dB -------
if (sig>=1000)
{
digitalWrite(8, HIGH); //activa LEDS ROJO2 del semaforo
digitalWrite(9, HIGH); //Activa Led Rojo2 Carita
}
else
{
digitalWrite(8, LOW); // los apaga
digitalWrite(9, LOW);
}
//--------------------------------------------------------------
} //fin de la función void led()
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void loop () {
led ();
// si detecta un sonido lo refleja
//no es necesario, pero si, para permitir ajuste
//viendo los valores en la pantalla del puerto Serial de ARDUINO
if (sig > 1)
{
Serial.print(sig, DEC);
Serial.print(" ");
counter++; //para que en pantatalla serial se vean columnas de 30 valores
if(counter==30)
{
Serial.println();
counter = 0;
}
}
delay(2); // 2ms. Si pongo mas tiempo estarán mas tiempo encendido
}// fin del void loop()