commit - 6ab2ea02e3b2182d5d9123f9bb64c7df15f30e29
commit + 9ed0fcb7ca4c03d53491326b279520821be6fff7
blob - /dev/null
blob + c578a92abb852e7ed90dbc89daf0ec4004ff5b1c (mode 644)
--- /dev/null
+++ diagrama_circuito.m
+%% DIAGRAMA DE CIRCUITO — Microfono Laser
+% BPW34 → TIA (LM358) → C_ac → MAX9814 → Jack PC
+%
+% Autor: Alejandro B. E. — Fisica 2do Semestre
+
+clear; close all; clc;
+
+fig = figure('Name','Diagrama de Circuito — Microfono Laser', ...
+ 'NumberTitle','off','Position',[40 40 1600 900], ...
+ 'Color',[0.07 0.07 0.10]);
+
+ax = axes('Position',[0 0 1 1],'Color',[0.07 0.07 0.10]);
+hold(ax,'on'); axis(ax,'off');
+xlim(ax,[0 160]); ylim(ax,[0 95]);
+
+%% ─── HELPERS ────────────────────────────────────────────────────
+
+ function wire(ax,x1,y1,x2,y2,col,lw)
+ if nargin<6, col=[0.85 0.85 0.85]; end
+ if nargin<7, lw=1.4; end
+ plot(ax,[x1 x2],[y1 y2],'Color',col,'LineWidth',lw);
+ end
+
+ function node(ax,x,y,col)
+ if nargin<4, col=[0.85 0.85 0.85]; end
+ plot(ax,x,y,'o','MarkerFaceColor',col,'MarkerEdgeColor',col,'MarkerSize',5);
+ end
+
+ function dibujar_R(ax,xc,yc,W,H,lbl_txt,val_txt)
+ xs = xc - W/2;
+ xx = linspace(xs, xs+W, 9);
+ yy = yc + H/2 * [0 1 -1 1 -1 1 -1 1 0];
+ plot(ax,xx,yy,'Color',[0.9 0.6 0.2],'LineWidth',1.5);
+ plot(ax,[xc-W/2-1.5 xc-W/2],[yc yc],'Color',[0.85 0.85 0.85],'LineWidth',1.4);
+ plot(ax,[xc+W/2 xc+W/2+1.5],[yc yc],'Color',[0.85 0.85 0.85],'LineWidth',1.4);
+ text(ax,xc,yc+H*0.9+0.3,lbl_txt,'Color',[0.9 0.7 0.3],'FontSize',7.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New','FontWeight','bold');
+ text(ax,xc,yc-H*0.9-0.5,val_txt,'Color',[0.65 0.65 0.65],'FontSize',7, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+ end
+
+ function dibujar_C(ax,xc,yc,gap,H,lbl_txt,val_txt)
+ g = gap/2;
+ plot(ax,[xc-g xc-g],[yc-H/2 yc+H/2],'Color',[0.3 0.75 1.0],'LineWidth',2.2);
+ plot(ax,[xc+g xc+g],[yc-H/2 yc+H/2],'Color',[0.3 0.75 1.0],'LineWidth',2.2);
+ plot(ax,[xc-g-2 xc-g],[yc yc],'Color',[0.85 0.85 0.85],'LineWidth',1.4);
+ plot(ax,[xc+g xc+g+2],[yc yc],'Color',[0.85 0.85 0.85],'LineWidth',1.4);
+ text(ax,xc,yc+H/2+0.9,lbl_txt,'Color',[0.3 0.85 1.0],'FontSize',7.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New','FontWeight','bold');
+ text(ax,xc,yc-H/2-1.2,val_txt,'Color',[0.55 0.55 0.65],'FontSize',7, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+ end
+
+ function gnd(ax,x,y)
+ plot(ax,[x x],[y y-1.2],'Color',[0.55 0.55 0.55],'LineWidth',1.3);
+ w = [2.2 1.5 0.7];
+ for i=1:3
+ plot(ax,[x-w(i) x+w(i)],[y-1.2-(i-1)*0.7 y-1.2-(i-1)*0.7], ...
+ 'Color',[0.55 0.55 0.55],'LineWidth',1.2);
+ end
+ end
+
+ function vcc(ax,x,y,lbl_txt)
+ if nargin<4, lbl_txt='+5V'; end
+ plot(ax,[x x],[y y+1.5],'Color',[0.9 0.35 0.35],'LineWidth',1.3);
+ plot(ax,[x-1.2 x+1.2],[y+1.5 y+1.5],'Color',[0.9 0.35 0.35],'LineWidth',2);
+ text(ax,x,y+2.8,lbl_txt,'Color',[0.95 0.4 0.4],'FontSize',7.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New','FontWeight','bold');
+ end
+
+%% ─── LAYOUT: el circuito ocupa y=30..92, tabla y=2..17 ─────────
+% GND rail en y=30 (antes 18) — deja espacio para tabla abajo
+Y_GND = 30; % rail GND
+Y_VCC = 82; % rail +5V
+Y_UP = 12; % desplazamiento vertical respecto a version anterior (+12)
+
+%% ═══════════════════════════════════════════════════════════════
+% TITULO
+%% ═══════════════════════════════════════════════════════════════
+text(ax,80,93,'Diagrama de Circuito — Microfono Laser', ...
+ 'Color',[1 0.75 0.15],'FontSize',14,'HorizontalAlignment','center', ...
+ 'FontWeight','bold','FontName','Courier New');
+text(ax,80,90,'BPW34 → TIA LM358 → C_{ac} → MAX9814 → Jack PC → MATLAB FFT', ...
+ 'Color',[0.6 0.6 0.6],'FontSize',9,'HorizontalAlignment','center', ...
+ 'FontName','Courier New');
+plot(ax,[3 157],[87.5 87.5],'Color',[0.25 0.25 0.3],'LineWidth',0.8);
+
+%% ═══════════════════════════════════════════════════════════════
+% RAILS
+%% ═══════════════════════════════════════════════════════════════
+plot(ax,[5 155],[Y_VCC Y_VCC],'Color',[0.7 0.2 0.2],'LineWidth',1,'LineStyle','--');
+text(ax,4,Y_VCC+0.6,'+5V','Color',[0.9 0.4 0.4],'FontSize',7,'FontName','Courier New');
+plot(ax,[5 155],[Y_GND Y_GND],'Color',[0.4 0.4 0.4],'LineWidth',1,'LineStyle','--');
+text(ax,4,Y_GND-0.8,'GND','Color',[0.55 0.55 0.55],'FontSize',7,'FontName','Courier New');
+
+% Separador entre circuito y tabla
+plot(ax,[3 157],[27.5 27.5],'Color',[0.2 0.2 0.25],'LineWidth',1.2);
+
+%% ═══════════════════════════════════════════════════════════════
+% BLOQUE 1: SENSOR OPTICO (y += 12 respecto a version anterior)
+%% ═══════════════════════════════════════════════════════════════
+rectangle(ax,'Position',[5 42 28 30],'EdgeColor',[0.4 0.4 0.5], ...
+ 'LineWidth',0.8,'LineStyle',':');
+text(ax,19,73.5,'SENSOR OPTICO','Color',[0.5 0.5 0.6],'FontSize',7, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+% Laser KY-008
+rectangle(ax,'Position',[7 44 8 6],'EdgeColor',[0.3 0.9 0.3], ...
+ 'FaceColor',[0.05 0.15 0.05],'LineWidth',1.3,'Curvature',0.2);
+text(ax,11,47.2,'LASER','Color',[0.3 1.0 0.3],'FontSize',7.5, ...
+ 'HorizontalAlignment','center','FontWeight','bold','FontName','Courier New');
+text(ax,11,45.8,'KY-008','Color',[0.3 0.7 0.3],'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+text(ax,11,44.6,'650 nm','Color',[0.5 0.5 0.5],'FontSize',6, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+% Haz laser
+x_beam = linspace(15,25,60);
+y_beam = 47 + 0.15*sin(linspace(0,6*pi,60));
+plot(ax,x_beam,y_beam,'Color',[1 0.2 0.2],'LineWidth',1.8);
+text(ax,20,48.3,'haz 650nm','Color',[1 0.4 0.4],'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+% Vidrio
+plot(ax,[26 26],[40 56],'Color',[0.4 0.75 1.0],'LineWidth',3);
+plot(ax,[26.8 26.8],[40 56],'Color',[0.3 0.6 0.9],'LineWidth',1);
+text(ax,26,57.2,'VIDRIO','Color',[0.4 0.85 1.0],'FontSize',7, ...
+ 'HorizontalAlignment','center','FontName','Courier New','FontWeight','bold');
+text(ax,26,56.0,'(vibra con','Color',[0.4 0.7 0.85],'FontSize',6.2, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+text(ax,26,55.0,'el sonido)','Color',[0.4 0.7 0.85],'FontSize',6.2, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+% Reflexion
+x_ref = linspace(27,22,30);
+y_ref = linspace(47,62,30);
+plot(ax,x_ref,y_ref,'Color',[1 0.4 0.4],'LineWidth',1.5,'LineStyle','--');
+text(ax,23.5,56,'reflexion','Color',[1 0.5 0.5],'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+% BPW34
+xd = 20; yd = 65;
+patch(ax,[xd-1.5 xd+1.5 xd-1.5],[yd-1.8 yd yd+1.8], ...
+ [0.2 0.2 0.2],'FaceColor',[0.15 0.15 0.25], ...
+ 'EdgeColor',[1 0.8 0.2],'LineWidth',1.5);
+plot(ax,[xd+1.5 xd+1.5],[yd-1.8 yd+1.8],'Color',[1 0.8 0.2],'LineWidth',2);
+plot(ax,[xd-3 xd-1.5],[yd yd],'Color',[0.85 0.85 0.85],'LineWidth',1.4);
+plot(ax,[xd+1.5 xd+3],[yd yd],'Color',[0.85 0.85 0.85],'LineWidth',1.4);
+for ang = [-25 0 25]
+ dx_p = 1.8*cosd(ang+180); dy_p = 1.8*sind(ang+180);
+ plot(ax,[xd+dx_p xd-0.2],[yd+dy_p yd], ...
+ 'Color',[1 0.9 0.3],'LineWidth',1,'LineStyle','--');
+end
+text(ax,xd,yd+4.2,'BPW34','Color',[1.0 0.85 0.15],'FontSize',8.5, ...
+ 'HorizontalAlignment','center','FontWeight','bold','FontName','Courier New');
+text(ax,xd,yd+2.8,'Fotodiodo PIN','Color',[0.7 0.7 0.0],'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+text(ax,xd-3.8,yd+0.3,'K','Color',[0.65 0.65 0.65],'FontSize',7,'FontName','Courier New');
+text(ax,xd+2.5,yd+0.3,'A','Color',[0.65 0.65 0.65],'FontSize',7,'FontName','Courier New');
+
+wire(ax,xd-3,yd,xd-3,Y_VCC); vcc(ax,xd-3,Y_VCC,'+5V');
+wire(ax,xd+3,yd,xd+3,Y_GND); gnd(ax,xd+3,Y_GND);
+text(ax,xd,yd-3.5,'polariz. inversa','Color',[0.5 0.5 0.5],'FontSize',6, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+wire(ax,xd+3,yd,35,yd);
+node(ax,35,yd);
+text(ax,32,yd+1.5,'I_{foto}','Color',[1.0 0.85 0.2],'FontSize',7.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New','FontWeight','bold');
+
+%% ═══════════════════════════════════════════════════════════════
+% BLOQUE 2: TIA — LM358
+%% ═══════════════════════════════════════════════════════════════
+rectangle(ax,'Position',[35 40 42 36],'EdgeColor',[0.3 0.5 0.8], ...
+ 'LineWidth',0.8,'LineStyle',':');
+text(ax,56,77.5,'TIA — LM358','Color',[0.4 0.6 0.9],'FontSize',7, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+xop=58; yop=56; sz=7;
+patch(ax,[xop-sz xop-sz xop+sz],[yop-sz yop+sz yop], ...
+ [0.1 0.1 0.2],'FaceColor',[0.08 0.08 0.18], ...
+ 'EdgeColor',[0.4 0.6 1.0],'LineWidth',1.8);
+text(ax,xop-1,yop,'LM358','Color',[0.5 0.7 1.0],'FontSize',7, ...
+ 'HorizontalAlignment','center','FontWeight','bold','FontName','Courier New');
+
+xin=xop-sz; yin_n=yop+3.5; yin_p=yop-3.5; yout=yop;
+text(ax,xin-0.6,yin_n,'−','Color',[0.7 0.7 0.9],'FontSize',10,'FontName','Courier New');
+text(ax,xin-0.6,yin_p,'+','Color',[0.7 0.7 0.9],'FontSize',10,'FontName','Courier New');
+
+xout_node = xop+sz+2;
+wire(ax,xop+sz,yout,xout_node,yout);
+
+wire(ax,35,yd,35,yin_n);
+wire(ax,35,yin_n,xin,yin_n);
+node(ax,35,yin_n);
+
+% Retroalimentacion Rf
+wire(ax,xout_node,yout,xout_node,yop+12);
+wire(ax,xout_node,yop+12,xin-2,yop+12);
+wire(ax,xin-2,yop+12,xin-2,yin_n);
+node(ax,xin-2,yin_n);
+node(ax,xout_node,yout);
+dibujar_R(ax,(xout_node+xin-2)/2,yop+12,14,1.8,'R_f','1 MOhm');
+
+% Cf paralelo con Rf
+wire(ax,xout_node,yop+15.5,xin-2,yop+15.5);
+wire(ax,xout_node,yop+12,xout_node,yop+15.5);
+wire(ax,xin-2,yop+12,xin-2,yop+15.5);
+dibujar_C(ax,(xout_node+xin-2)/2,yop+15.5,1.5,2.5,'C_f','100pF');
+
+% Divisor Vref
+wire(ax,xin,yin_p,xin-4,yin_p);
+dibujar_R(ax,xin-8,yin_p,6,1.5,'R1','100k');
+wire(ax,xin-11,yin_p,xin-11,Y_VCC); vcc(ax,xin-11,Y_VCC,'+5V');
+wire(ax,xin-4,yin_p,xin-4,yin_p-3);
+dibujar_R(ax,xin-4,yin_p-6,6,1.5,'R2','100k');
+wire(ax,xin-4,yin_p-9,xin-4,Y_GND); gnd(ax,xin-4,Y_GND);
+node(ax,xin-4,yin_p);
+text(ax,xin-5.5,yin_p+2,'V_{ref}','Color',[0.8 0.5 0.5],'FontSize',7, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+text(ax,xin-5.5,yin_p+0.7,'2.5V','Color',[0.6 0.4 0.4],'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+wire(ax,xop,yop+sz,xop,Y_VCC); vcc(ax,xop,Y_VCC,'+5V');
+wire(ax,xop,yop-sz,xop,Y_GND); gnd(ax,xop,Y_GND);
+
+text(ax,xout_node+1,yout+1.5,'V_{TIA}','Color',[0.4 0.7 1.0],'FontSize',7.5, ...
+ 'HorizontalAlignment','left','FontName','Courier New','FontWeight','bold');
+text(ax,xout_node+1,yout-1.5,'= I x R_f','Color',[0.35 0.55 0.8],'FontSize',6.5, ...
+ 'HorizontalAlignment','left','FontName','Courier New');
+
+%% ═══════════════════════════════════════════════════════════════
+% BLOQUE 3: ACOPLAMIENTO AC
+%% ═══════════════════════════════════════════════════════════════
+rectangle(ax,'Position',[78 48 18 16],'EdgeColor',[0.3 0.6 0.6], ...
+ 'LineWidth',0.8,'LineStyle',':');
+text(ax,87,65.5,'C_{ac} (bloqueo DC)','Color',[0.35 0.7 0.7],'FontSize',6.8, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+wire(ax,xout_node,yout,79,yout);
+wire(ax,79,yout,79,56);
+wire(ax,79,56,82,56);
+dibujar_C(ax,87,56,1.8,3.5,'C_{ac}','10 uF');
+wire(ax,89,56,93,56);
+wire(ax,93,56,93,52);
+dibujar_R(ax,93,49,5,1.5,'R_{in}','10k');
+wire(ax,93,46,93,Y_GND); gnd(ax,93,Y_GND);
+node(ax,93,56);
+wire(ax,93,56,96,56);
+text(ax,87,53.5,'elimina V_{DC}','Color',[0.35 0.65 0.65],'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+text(ax,87,52.3,'pasa V_{AC}','Color',[0.35 0.65 0.65],'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+%% ═══════════════════════════════════════════════════════════════
+% BLOQUE 4: MAX9814
+%% ═══════════════════════════════════════════════════════════════
+rectangle(ax,'Position',[96 42 30 36],'EdgeColor',[0.7 0.3 0.9], ...
+ 'FaceColor',[0.08 0.04 0.12],'LineWidth',1.8,'Curvature',0.08);
+text(ax,111,79.5,'MAX9814','Color',[0.9 0.5 1.0],'FontSize',10, ...
+ 'HorizontalAlignment','center','FontWeight','bold','FontName','Courier New');
+text(ax,111,77.5,'HiLetgo Module','Color',[0.65 0.35 0.75],'FontSize',7.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+pins_y = [74 69 64 59 54 49 44];
+pins_lbl = {'VCC','GND','OUT','GAIN','AR','MIC\_IN','MIC\_BIAS'};
+pins_col = {[0.9 0.35 0.35],[0.55 0.55 0.55],[0.3 0.9 0.6], ...
+ [0.8 0.8 0.3],[0.7 0.6 0.5],[0.9 0.6 0.3],[0.6 0.5 0.7]};
+for i = 1:length(pins_y)
+ plot(ax,[96 99],[pins_y(i) pins_y(i)],'Color',pins_col{i},'LineWidth',1.5);
+ plot(ax,97,pins_y(i),'s','MarkerFaceColor',pins_col{i}, ...
+ 'MarkerEdgeColor',pins_col{i},'MarkerSize',5);
+ text(ax,100.5,pins_y(i),pins_lbl{i},'Color',pins_col{i},'FontSize',7, ...
+ 'VerticalAlignment','middle','FontName','Courier New','FontWeight','bold');
+end
+
+wire(ax,96,74,88,74); wire(ax,88,74,88,Y_VCC); vcc(ax,88,Y_VCC,'+5V');
+wire(ax,96,69,88,69); wire(ax,88,69,88,Y_GND); gnd(ax,88,Y_GND);
+wire(ax,96,56,96,49); node(ax,96,56);
+wire(ax,96,59,94,59);
+text(ax,93,59,'NC','Color',[0.5 0.5 0.5],'FontSize',7, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+text(ax,91,57.5,'(float=40dB)','Color',[0.55 0.55 0.35],'FontSize',6.2, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+wire(ax,96,54,94,54);
+dibujar_C(ax,92,54,1.5,2.5,'C_{AR}','4.7uF');
+wire(ax,89.5,54,89.5,Y_GND); gnd(ax,89.5,Y_GND);
+plot(ax,[123 127],[64 64],'Color',[0.3 0.9 0.6],'LineWidth',1.8);
+plot(ax,126.5,64,'s','MarkerFaceColor',[0.3 0.9 0.6], ...
+ 'MarkerEdgeColor',[0.3 0.9 0.6],'MarkerSize',5);
+text(ax,122,64,'OUT','Color',[0.3 0.9 0.6],'FontSize',7, ...
+ 'HorizontalAlignment','right','FontName','Courier New','FontWeight','bold');
+wire(ax,126,64,131,64);
+
+text(ax,113,59,'AGC','Color',[0.8 0.5 0.9],'FontSize',8.5, ...
+ 'HorizontalAlignment','center','FontWeight','bold','FontName','Courier New');
+text(ax,113,57.5,'auto-ganancia','Color',[0.6 0.35 0.7],'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+text(ax,113,56.2,'40 / 50 / 60 dB','Color',[0.6 0.35 0.7],'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+%% ═══════════════════════════════════════════════════════════════
+% BLOQUE 5: CAPACITOR DE SALIDA
+%% ═══════════════════════════════════════════════════════════════
+rectangle(ax,'Position',[130 56 12 14],'EdgeColor',[0.3 0.5 0.6], ...
+ 'LineWidth',0.8,'LineStyle',':');
+text(ax,136,71,'C_{sal}','Color',[0.35 0.6 0.7],'FontSize',7, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+wire(ax,131,64,133,64);
+dibujar_C(ax,136,64,1.8,3.5,'C_{sal}','47 uF');
+wire(ax,139,64,142,64);
+wire(ax,139,64,139,60);
+dibujar_R(ax,139,57,5,1.5,'R_L','10k');
+wire(ax,139,54,139,Y_GND); gnd(ax,139,Y_GND);
+node(ax,139,64);
+text(ax,136,61.5,'bloquea offset','Color',[0.35 0.55 0.65],'FontSize',6.2, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+text(ax,136,60.3,'1.25V MAX9814','Color',[0.35 0.55 0.65],'FontSize',6.2, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+%% ═══════════════════════════════════════════════════════════════
+% BLOQUE 6: JACK 3.5mm
+%% ═══════════════════════════════════════════════════════════════
+rectangle(ax,'Position',[142 56 16 16],'EdgeColor',[0.3 0.7 0.4], ...
+ 'FaceColor',[0.04 0.1 0.06],'LineWidth',1.5,'Curvature',0.1);
+xj=150; yj=64;
+th=linspace(0,2*pi,60);
+plot(ax,xj+2*cos(th),yj+2*sin(th),'Color',[0.4 0.8 0.4],'LineWidth',1.5);
+plot(ax,xj+1*cos(th),yj+1*sin(th),'Color',[0.6 0.9 0.6],'LineWidth',1);
+plot(ax,[xj-2 xj+2],[yj yj],'Color',[0.4 0.8 0.4],'LineWidth',1.5);
+plot(ax,[xj xj],[yj-2 yj+2],'Color',[0.4 0.8 0.4],'LineWidth',1.5);
+wire(ax,142,64,148,64);
+text(ax,150,69.8,'JACK 3.5mm','Color',[0.35 0.85 0.45],'FontSize',7.5, ...
+ 'HorizontalAlignment','center','FontWeight','bold','FontName','Courier New');
+text(ax,150,68.5,'Microfono PC','Color',[0.3 0.65 0.35],'FontSize',6.8, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+wire(ax,150,yj-2,150,Y_GND); gnd(ax,150,Y_GND);
+
+%% ═══════════════════════════════════════════════════════════════
+% BLOQUE 7: PC + MATLAB
+%% ═══════════════════════════════════════════════════════════════
+rectangle(ax,'Position',[154 47 5 26],'EdgeColor',[0.2 0.6 0.8], ...
+ 'FaceColor',[0.03 0.08 0.12],'LineWidth',1.5,'Curvature',0.05);
+wire(ax,152,64,154,64);
+plot(ax,[153.5 154.5],[64.4 64],'Color',[0.3 0.75 0.95],'LineWidth',1.5);
+plot(ax,[153.5 154.5],[63.6 64],'Color',[0.3 0.75 0.95],'LineWidth',1.5);
+text(ax,156.5,67,'PC','Color',[0.3 0.75 0.95],'FontSize',8, ...
+ 'HorizontalAlignment','center','FontWeight','bold','FontName','Courier New');
+text(ax,156.5,63,'+','Color',[0.25 0.6 0.8],'FontSize',7, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+text(ax,156.5,60,'MAT','Color',[0.25 0.6 0.8],'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+text(ax,156.5,58,'LAB','Color',[0.25 0.6 0.8],'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+text(ax,156.5,55,'FFT','Color',[0.2 0.5 0.7],'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+%% ═══════════════════════════════════════════════════════════════
+% FLUJO DE SENAL — debajo del separador (y < 27)
+%% ═══════════════════════════════════════════════════════════════
+y_flow = 23.5;
+puntos_x = [20 35 58 87 111 136 150 156];
+nombres = {'I_{foto}','->V_{TIA}','V_{TIA}','V_{AC}','V_{amp}','V_{out}','V_{PC}','AUDIO'};
+colores = {[1.0 0.85 0.2],[0.4 0.7 1.0],[0.4 0.7 1.0],[0.3 0.8 0.8], ...
+ [0.85 0.5 1.0],[0.85 0.5 1.0],[0.35 0.85 0.45],[0.3 0.75 0.95]};
+for i = 1:length(puntos_x)-1
+ plot(ax,[puntos_x(i)+0.5 puntos_x(i+1)-0.5],[y_flow y_flow], ...
+ 'Color',[0.3 0.3 0.35],'LineWidth',1.2);
+ plot(ax,[puntos_x(i+1)-1.2 puntos_x(i+1)-0.3 puntos_x(i+1)-1.2], ...
+ [y_flow+0.5 y_flow y_flow-0.5], ...
+ 'Color',[0.3 0.3 0.35],'LineWidth',1.2);
+end
+for i = 1:length(puntos_x)
+ plot(ax,puntos_x(i),y_flow,'o','MarkerFaceColor',colores{i}, ...
+ 'MarkerEdgeColor',colores{i},'MarkerSize',4);
+ text(ax,puntos_x(i),y_flow+1.5,nombres{i},'Color',colores{i},'FontSize',6.5, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+end
+text(ax,80,y_flow-1.2,'← Flujo de senal →','Color',[0.4 0.4 0.45],'FontSize',7, ...
+ 'HorizontalAlignment','center','FontName','Courier New');
+
+%% ═══════════════════════════════════════════════════════════════
+% TABLA DE VALORES — bien separada abajo del flujo
+%% ═══════════════════════════════════════════════════════════════
+xT = 20; yT = 11; % y=10..21, debajo del flujo (y=23.5)
+rectangle(ax,'Position',[xT yT-1 120 11],'EdgeColor',[0.25 0.25 0.3], ...
+ 'FaceColor',[0.07 0.07 0.09],'LineWidth',0.8);
+text(ax,xT+60,yT+9.5,'Valores del circuito','Color',[0.75 0.75 0.8],'FontSize',8.5, ...
+ 'HorizontalAlignment','center','FontWeight','bold','FontName','Courier New');
+
+datos = {
+ 'BPW34', 'Responsividad:', '0.3 A/W @ 650 nm', [1.0 0.85 0.2];
+ 'LM358 TIA', 'Rf = 1 MOhm,', 'Cf = 100 pF', [0.4 0.7 1.0];
+ 'C_ac', '10 uF fc =', '1.6 Hz (paso AC)', [0.3 0.8 0.8];
+ 'MAX9814', 'Av = 40 dB,', 'AGC automatico', [0.85 0.5 1.0];
+ 'C_sal', '47 uF fc =', '0.34 Hz', [0.35 0.7 0.45];
+ 'Alimentacion', '+5V + GND,', 'VCC LM358 + laser', [0.9 0.4 0.4];
+};
+col_x = [xT+2, xT+28, xT+60];
+for i = 1:size(datos,1)
+ yi = yT + 8.0 - (i-1)*1.55;
+ text(ax,col_x(1),yi,datos{i,1},'Color',datos{i,4},'FontSize',7.5, ...
+ 'FontWeight','bold','FontName','Courier New');
+ text(ax,col_x(2),yi,datos{i,2},'Color',[0.65 0.65 0.65],'FontSize',7.5,'FontName','Courier New');
+ text(ax,col_x(3),yi,datos{i,3},'Color',[0.5 0.5 0.55],'FontSize',7.5,'FontName','Courier New');
+end
+
+%% ─── Pie ──────────────────────────────────────────────────────
+plot(ax,[3 157],[9.5 9.5],'Color',[0.2 0.2 0.25],'LineWidth',0.8);
+text(ax,80,1.8, ...
+ 'Fisica 2do Semestre | Ondas y Oscilaciones | BPW34 + LM358 + MAX9814 + MATLAB FFT', ...
+ 'Color',[0.35 0.35 0.4],'FontSize',7.5,'HorizontalAlignment','center', ...
+ 'FontName','Courier New');
+
+fprintf(' Diagrama generado.\n');
+fprintf(' Para guardar: print(gcf,''-dpng'',''-r300'',''diagrama_circuito.png'')\n');
\ No newline at end of file