Commit Briefs

52579f6b80 Ale

docs(readme): actualizar enlace de File Exchange en badge (main)

- Reemplazar enlace existente con URL correcta al proyecto en MATLAB File Exchange.


963cdc354c Ale

chore: agregar `.gitignore` y actualizar README con badges y dependencias MATLAB

- Añadir archivo `.gitignore` con exclusiones específicas para MATLAB, sistemas operativos y herramientas IDE. - Incorporar badges de MATLAB, estado de pruebas y versiones en el README. - Detallar dependencias de MATLAB, incluyendo la toolbox FSDA.


beb86a24e0 Ale

docs(readme): añadir botón MATLAB Online y mejorar formato de tablas

- Integrar botón "Open in MATLAB Online" en la sección inicial - Reformatear tablas de resultados y descripción del hardware para mayor claridad


d8ac06e31f Ale

Cambio en el nombre (tags/v1.0.0)


557398b08a Ale

Merge branch 'main' of codeberg.org:Richard7987/Proyecto-Fisica-2do

Cambios en codeberg README y en el pc


fdd906992d Ale

docs(readme): actualizar hardware y descripcion del montaje

- Tabla hardware: laser D18x65mm, ESP32 fuente 5V, modulo jack ShillehTek, soporte Neiko - Descripcion simulacion 3D actualizada con componentes reales - Pipeline paso 7: agregar modulo Jack ShillehTek


678cc90678 Richard7987

Actualizar README.md

Signed-off-by: Richard7987 <richard7987@noreply.codeberg.org>


9eb1c22501 Ale

docs(imagenes): actualizar capturas con hardware real

- Diagrama circuito: ESP32, laser D18x65mm, jack ShillehTek - Simulacion 3D: nuevo layout con soporte Neiko y componentes separados - Reconstruccion FFT: correlacion 1.0000 confirmada


b965799a9d Richard7987

Actualizar README.md

Signed-off-by: Richard7987 <richard7987@noreply.codeberg.org>


06836bd811 Ale

fix(demo): actualizar referencias de hardware en comentarios

- Comentario hardware: KY-008 → D18x65mm 650nm 5mW - fprintf resumen: actualizar nombre del laser - Parametros fisicos sin cambio (matematica independiente del HW)


Branches

Tags

Tree

.gitignorecommits | blame
.idea/
Imagenes/
LICENSEcommits | blame
README.mdcommits | blame
Scripts/

README.md

# 🔬 Microfono Laser — Reconstruccion de Sonido por Vibracion de Vidrio

**Fisica Ondas, Oscilaciones y Espacios Vectoriales**  
**Autor:** Alejandro B. E.

---

![MATLAB](https://img.shields.io/badge/MATLAB-R2025b-blue?style=flat-square&logo=mathworks)
[![Release](https://img.shields.io/badge/release-v1.0-brightgreen?style=flat-square)](https://github.com/Richard7987/Proyecto-Fisica-2do/releases)
![Tests](https://img.shields.io/badge/tests-passing-brightgreen?style=flat-square)
[![Open in MATLAB Online](https://www.mathworks.com/images/responsive/global/open-in-matlab-online.svg)](https://matlab.mathworks.com/open/github/v1?repo=Richard7987/Proyecto-Fisica-2do)
[![View Proyecto-Fisica-2do on File Exchange](https://www.mathworks.com/matlabcentral/images/matlab-file-exchange.svg)](https://la.mathworks.com/matlabcentral/fileexchange/183431-proyecto-fisica-2do)
## Descripcion

Sistema optico-electronico que captura el sonido dentro de una caja insonorizada **sin contacto fisico**, usando la vibracion que el audio imprime sobre un vidrio. Un laser de 650 nm apunta al vidrio; el reflejo modulado por las vibraciones es capturado por un fotodiodo BPW34, amplificado por un TIA LM358 y un MAX9814, y digitalizado via el jack de microfono de la PC. MATLAB aplica la Transformada de Fourier para reconstruir el audio original.

```
Bocina → vibra vidrio → laser reflejado → BPW34 → TIA LM358 → MAX9814 → jack PC → MATLAB FFT
```

---

## Resultados

### Sistema completo — pipeline BPW34 → TIA → MAX9814 → FFT

![Resultados completos](Imagenes/Sistema%20Laser-Fotosensor%20—%20Resultados%20Completos.png)

| Señal                  | Frec. base  | Error RMS   | SNR (dB)     | Correlacion |
|------------------------|-------------|-------------|--------------|-------------|
| Tono puro              | 1000 Hz     | 2.79 × 10⁻⁶ | **102.1 dB** | 1.0000      |
| Acorde Do Mayor        | 262 Hz      | 2.87 × 10⁻⁴ | **62.1 dB**  | 1.0000      |
| Barrido chirp          | 100–1000 Hz | 1.06 × 10⁻² | **30.5 dB**  | 0.9996      |
| Compleja (5 armonicos) | 262 Hz      | 3.00 × 10⁻⁴ | **63.1 dB**  | 1.0000      |

---

### Analisis SVD — Espacios Vectoriales

![SVD](Imagenes/Analisis%20SVD%20—%20Espacios%20Vectoriales.png)

La descomposicion en valores singulares revela la estructura del espacio vectorial de cada senal. El tono puro concentra el 99% de su energia en 1 modo; el acorde en 3 modos (uno por nota); la senal compleja en 5 modos (uno por armonico).

---

### Reconstruccion FFT

![Reconstruccion](Imagenes/Reconstruccion%20FFT.png)

---

### Simulacion 3D del montaje experimental

![Simulacion 3D](Imagenes/Simulacion%203D%20—%20Microfono%20Laser.png)

Escena 3D animada del montaje completo: caja insonorizada, vidrio vibrante,laser industrial D18x65mm 650nm 5mW sobre soporte Neiko, BPW34 en tubo negro, ESP32 como fuente 5V, circuito TIA LM358 + MAX9814 + modulo jack ShillehTek en protoboard 830pts, y laptop con MATLAB.

---

### Diagrama de circuito

![Diagrama](Imagenes/Diagrama%20de%20Circuito%20—%20Microfono%20Laser.png)

---

## Hardware

| Componente                   | Funcion                    | Valor clave                      |
|------------------------------|----------------------------|----------------------------------|
| Laser D18x65mm 650nm 5mW     | Fuente de luz, enfocable   | P = 5 mW, punto continuo         |
| BPW34 (fotodiodo PIN)        | Luz → corriente            | R = 0.3 A/W @ 650 nm             |
| LM358 (TIA)                  | Corriente → voltaje        | Rf = 10 kΩ, Cf = 100 pF          |
| Capacitor C_ac               | Bloqueo DC                 | 10 µF                            |
| MAX9814 HiLetgo              | Amplificador AGC           | Av = 40 dB (GAIN flotante)       |
| Capacitor C_sal              | Bloqueo offset salida      | 47 µF                            |
| Modulo Jack ShillehTek 3.5mm | Interfaz PC                | Entrada microfono, breakout TRRS |
| ESP32 DIYables               | Fuente de alimentacion 5V  | Pin VIN → rail protoboard        |
| Soporte Neiko con pinzas     | Posicionar laser en angulo | Ajuste ~30° sobre el vidrio      |

**Alimentacion:** ESP32 VIN (+5V) + GND → protoboard

---

## Software

### Dependencias MATLAB

- **MATLAB Student Suite** (Signal Processing Toolbox, Symbolic Math, etc.)
- **[FSDA — Flexible Statistics Data Analysis](https://www.mathworks.com/matlabcentral/fileexchange/72999-fsda)** (para análisis SVD avanzado)

### Estructura del repositorio

```
Proyecto-Fisica-2do/
├── Scripts/
│   ├── script_prueba_demostracion.m   # Simulacion completa del sistema
│   ├── simulacion_3d_laser.m          # Visualizacion 3D animada
│   └── diagrama_circuito.m            # Esquematico del circuito
├── Imagenes/
│   ├── Sistema Laser-Fotosensor — Resultados Completos.png
│   ├── Analisis SVD — Espacios Vectoriales.png
│   ├── Reconstruccion FFT.png
│   ├── Simulacion 3D — Microfono Laser.png
│   └── Diagrama de Circuito — Microfono Laser.png
└── LICENSE
```

### Uso

```matlab
% 1. Simulacion matematica completa (no requiere hardware)
run('Scripts/script_prueba_demostracion.m')

% 2. Simulacion 3D animada del montaje (presionar Q para detener)
run('Scripts/simulacion_3d_laser.m')

% 3. Diagrama de circuito esquematico
run('Scripts/diagrama_circuito.m')
% Guardar en alta resolucion:
print(gcf, '-dpng', '-r300', 'diagrama_circuito.png')
```

**Requisitos:** MATLAB (base) + Signal Processing Toolbox  
No requiere Simulink ni Simscape.

---

## Metodo

### Pipeline optico-electronico

```
1. Audio dentro de la caja → vibra el vidrio (Δx ~ µm)
2. Vidrio vibrante modula la intensidad del reflejo del laser
   P_luz(t) = P_laser × [1 + m × audio(t)]   (m = profundidad de modulacion)
3. BPW34 convierte luz en corriente:
   I_foto = R × P_luz   (R = 0.3 A/W)
4. TIA LM358 convierte corriente en voltaje:
   V_TIA = I_foto × Rf   (Rf = 10 kΩ)
5. C_ac elimina el offset DC
6. MAX9814 amplifica con AGC automatico (40 dB)
7. Modulo Jack ShillehTek 3.5mm → jack microfono PC → MATLAB
```

### Reconstruccion por FFT

```matlab
Y         = fft(senal_capturada);
umbral    = max(abs(Y)) * 0.1;          % conservar componentes > 10%
mascara   = abs(Y) > umbral;            % filtro espectral
mascara   = mascara | flipud(mascara);  % simetria hermitiana
senal_rec = real(ifft(Y .* mascara));   % reconstruccion
```

### Analisis SVD

La matriz de trayectoria M ∈ ℝ^(ventana × cols) captura la estructura temporal de la senal. Su descomposicion M = UΣVᵀ revela cuantos modos son necesarios para representar el contenido espectral — directamente relacionado con el numero de frecuencias presentes.

---

## Licencia

Distribuido bajo los terminos del archivo [LICENSE](LICENSE).

---

*Proyecto integrador — Fisica 2do Semestre · Ondas, Oscilaciones y Espacios Vectoriales*