MIC o Microphone es un transductor sensor de sonido , que básicamente convierte la energía del sonido en energía eléctrica, por lo que con este sensor tenemos el sonido como voltaje cambiante. Por lo general, grabamos o detectamos sonido a través de este dispositivo. Este transductor se utiliza en todos los teléfonos móviles y computadoras portátiles. Los materiales necesarios son:
- ARDUINO UNO
- Fuente de alimentación (5v)
- Un micrófono de condensador
- Transistor 2N3904 NPN,
- Condensadores de 100 nF (2 piezas), un condensador de 100 uF.
- 1K Ω, 1MΩ, 15KΩ Resistencia (2 piezas),
- un LED
- Tablero de circuitos
- ¿Cuál es la mejor manera de trabajar en IoT para una persona que ya trabaja en sistemas integrados?
- ¿Qué tan importante es el lenguaje ensamblador para un estudiante de ECE? ¿De dónde debería aprenderlo mejor, si es significativo?
- ¿Alguien ha realizado capacitación en sistemas integrados de Mumbai o Thane?
- ¿Qué curso debo seleccionar entre vlsi y sistemas integrados?
- ¿Existe un marco de software que me ayude a hacer actualizaciones de firmware remotas seguras en miles de dispositivos Linux integrados?
Hemos dividido el trabajo en cuatro partes , es decir: filtración, amplificación, conversión analógica-digital y programación para alternar el LED.
Cada vez que hay sonido, el MIC lo recoge y lo convierte en voltaje, lineal a la magnitud del sonido. Entonces, para un sonido más alto tenemos un valor más alto y para un sonido más bajo tenemos un valor más bajo. Este valor se alimenta primero al filtro de paso alto para la filtración . Luego, este valor filtrado se alimenta al transistor para amplificación y el transistor proporciona la salida amplificada en el colector. Esta señal de colector se alimenta al canal ADC0 de UNO, para la conversión de analógico a digital . Y, por último, Arduino está programado para alternar el LED , conectado al PIN 7 de PORTD, cada vez que el canal ADC A0 va más allá de un nivel particular.
1. Filtración:
En primer lugar, hablaremos brevemente sobre RC High Pass Filter, que se ha utilizado para filtrar los ruidos . Es fácil de diseñar y consta de una sola resistencia y un solo condensador. Para este circuito no necesitamos muchos detalles, por lo que lo mantendremos simple. Un filtro de paso alto permite señales de paso de alta frecuencia de entrada a salida, en otras palabras, la señal de entrada aparece en la salida si la frecuencia de la señal es mayor que la frecuencia prescrita por el filtro. Por ahora, no debemos preocuparnos por estos valores porque aquí no estamos diseñando un amplificador de audio. Se muestra un filtro de paso alto en el circuito.
Después de este filtro, la señal de voltaje se alimenta al transistor para su amplificación.
2. Amplificación:
El voltaje de MIC es muy bajo y no se puede alimentar a UNO para ADC (conversión analógica a digital), por lo que para esto diseñamos un amplificador simple usando un transistor . Aquí hemos diseñado un único amplificador de transistores para amplificar los voltajes MIC. Esta señal de voltaje amplificada se alimenta al canal ADC0 de Arduino.
3. Conversión analógica a digital:
ARDUINO tiene 6 canales ADC . Entre ellos, uno o todos ellos pueden usarse como entradas para voltaje analógico. El UNO ADC tiene una resolución de 10 bits (por lo que los valores enteros de (0- (2 ^ 10) 1023)). Esto significa que asignará los voltajes de entrada entre 0 y 5 voltios en valores enteros entre 0 y 1023. Entonces, para cada (5/1024 = 4.9mV) por unidad.
Ahora, para que UNO convierta la señal analógica en señal digital, necesitamos usar ADC de Arduino, con la ayuda de las siguientes funciones:
1. analogRead (pin); 2. analogReference ();
Los canales UNO ADC tienen un valor de referencia predeterminado de 5V . Esto significa que podemos dar un voltaje de entrada máximo de 5V para la conversión de ADC en cualquier canal de entrada. Dado que algunos sensores proporcionan voltajes de 0-2.5V, entonces con una referencia de 5V, obtenemos una menor precisión, por lo que tenemos una instrucción que nos permite cambiar este valor de referencia. Entonces, para cambiar el valor de referencia tenemos “analogReference ();”
En nuestro circuito , hemos dejado este voltaje de referencia por defecto, para que podamos leer el valor del canal 0 del ADC, llamando directamente a la función “analogRead (pin);”, aquí “pin” representa el pin donde conectamos la señal analógica, en en este caso sería “A0”. El valor de ADC puede tomarse en un entero como “int sensorValue = analogRead (A0); “, Mediante esta instrucción, el valor del ADC se almacena en el entero” sensorValue “. Ahora, tenemos el valor del transistor en forma digital, en la memoria de UNO.
4. Programe Arduino para alternar el LED en cada aplauso:
En casos normales, el MIC proporciona señales normales y, por lo tanto, tenemos valores digitales normales en la UNO, pero al aplaudir allí un pico proporcionado por el MIC, con esto tenemos un valor digital pico en la UNO, podemos programar la UNO para alternar un LED encendido y apagado siempre que haya un pico. Entonces, en el primer aplauso, el LED se enciende y permanece encendido. En el segundo aplauso, el LED se apaga y permanece apagado hasta el siguiente aplauso. Con esto tenemos el circuito de badajo. Verifique el código del programa a continuación.
// ------------------------------------------------ --------------------- // Programa: interruptor de aplauso // // Descripción: enciende un LED cuando se aplauden las manos. // Micrófono Electret conectado a A2, LED y serie // resistencia conectada al pin digital // ------------------------------------------------ --------------------- configuración nula () { Serial.begin (9600); // usando el puerto serie para verificar el valor analógico pinMode (2, SALIDA); // LED en pin digital 2 } bucle vacío () { int analog_val; // valor analógico leído de A2 static bool led_state = false; // estado actual del LED analog_val = analogRead (A2); if (analog_val> 10) {// umbral de activación // alternar LED if (led_state) { led_state = false; // LED encendido, ahora apagado digitalWrite (2, BAJO); Serial.println (analog_val); // imprime valor analógico para propósitos de depuración } más { led_state = true; digitalWrite (2, ALTO); // LED apagado, ahora encendido Serial.println (analog_val); } retraso (50); // espera a que disminuya el ruido de aplausos } }