Sei sulla pagina 1di 5

clear

close all
clear all

Apartado 1 Comunicaciones por luz visible para la industria Inteligente Año.


2021

Resposividad total

Rpd = 22;
% nA/lux
% Recordar: lux = lumen/m^2 -> lumen = lux*m^2
% Asunciones
% r = 1, el fotodiodo tiene un diagrama de recepción circular. Aplicado a
% una antena, es como decir que es isotrópica.
%
% ---- Concentrador ----- (Opcional)
% Asunción ns = 1; % el filtro deja pasar el 100% de la luz que entra
%
% Field of View
FoV = 45*pi/180; % 40º (en radianes) de Field-of-View
% Ganancia derivada del uso de un concentrador
g_FoV = 1/(sin(FoV)^2);

Número de LEDs L = 4; % Posición de los LEDs LED_pos = [5, 4, 8; 5, 16, 8; 15, 4,


8; 15, 16, 8] Lumens radiados COB18x18 (Por ejemplo)

Iv = 12000;
% Lente para concentrar el flujo lumínico
phi_05 = 60;
% Parámero m de la radiación Lambertian
m= -log(2)/log(cos(phi_05*pi/180));
% Vector de radiación (x, y, z) [Apunta hacia abajo]
U = [0 0 -1];
% ------------------------- %

Número de LEDs
L = 12;
% Posición de los LEDs
LED_pos = [3, 4, 8;
7, 4, 8;
5, 8, 8;
5, 12, 8;
3, 16, 8;
7, 16, 8;
13, 4, 8;
17, 4, 8;
15, 8, 8;
15, 12, 8;
13, 16, 8;
17, 16, 8];
%Lumens radiados COB18x18 (Por ejemplo)
Iv = 12000;
% Lente para concentrar el flujo lumínico (semiángulo)
phi_05 = 60;
% Parámero m de la radiación Lambertian
m= -log(2)/log(cos(phi_05*pi/180));
% Vector de radiación (x, y, z) [Apunta hacia abajo]
U = [0 0 -1];

grano define la precisión de nuestro mapa, cuanto más fino, más larga es

la simulación. Por ejemplo, si grano = 0.1, más preciso pero más lento

grano = 0.1;
[Ax,Ay] = meshgrid([0:grano:20]);
% Altura de los receptores/mesa de trabajo(1 metro)
Zplano = 1;
% Esta variable guarda los lux aportados por cada luminaria
luxLed = zeros(1,L);
% Esta variable guarda el canal en cada punto (x,y) de nuestro mapa
Canal_Led1 = zeros(length(Ax),length(Ay));
Canal_Led2 = zeros(length(Ax),length(Ay));
Canal_Led3 = zeros(length(Ax),length(Ay));
Canal_Led4 = zeros(length(Ax),length(Ay));
Canal_sum = zeros(length(Ax),length(Ay));
for x = 1:length(Ax)
tiempo = [x length(Ax)];
for y = 1:length(Ay)
pos_usu = [Ax(x,x) Ay(y,y) Zplano];
% Consideraos la contribución de todos los LEDs
for led = 1:L
% Distancia entre LED y punto considerado
d_led = sqrt(sum((LED_pos(led,:) - pos_usu).^2));
% Vector entre la posición del led y el punto considerado
V = LED_pos(led,:) - pos_usu;

% Fotodiodo apuntando al techo para hacer analisis de


% iluminación
n = [0 0 1];
% Angulo de radiacion
phi = acos(dot(V,U)/(norm(V)*norm(U)));
% Angulo de incidencia
psi = acos(dot(V,n)/(norm(V)*norm(n)));

% Canal en nA/lumen
% NOTA: Tan solo es necesario multiplicar por el flujo
% transmitido por el LED para obtener los nA a la salidad del
% fotodiodo(jugar con la fórmula de canal, vereís que es facil)
% ---- SIN CONCENTRADOR ----%
% h(1,led) =
Rpd*((m+1)/(2*pi*(d_led^2)))*abs(cos(phi)^m)*abs(cos(psi));

% ---- CON CONCENTRADOR ----%


if abs(psi) < FoV
% Introducimos la ganancia del FoV
h(1,led) =
Rpd*((m+1)/(2*pi*(d_led^2)))*g_FoV*abs(cos(phi)^m)*abs(cos(psi));
else
h(1,led) = eps;
end
end

% Canal obtenido de cada LED, útil para analizar nuestro distema


% Esto va a ser útil para entender el modelo NO COOPERATIVO
Canal_Led1(x,y) = h(1,1);
Canal_Led2(x,y) = h(1,2);
Canal_Led3(x,y) = h(1,3);
Canal_Led4(x,y) = h(1,4);
% Además analizamos la contribución de todos los canales
% Esto va a ser útil para entender el modelo COOPERATIVO
Canal_sum(x,y) = sum(h);
end
end
figure(1)
surf(Ax,Ay,Canal_Led1,'EdgeColor','none')
colorbar
xlabel('Longitud X [m]')
ylabel('Longitud Y [m]')
zlabel('Canal óptico [nA/lumen]')

figure(101)
surf(Ax,Ay,Canal_Led1./(Canal_Led2 +Canal_Led3 +
Canal_Led4),'EdgeColor','none')
colorbar
xlabel('Longitud X [m]')
ylabel('Longitud Y [m]')
zlabel('Relación Señal-Interferencia [dB]')

figure(2)
surf(Ax,Ay,Canal_Led2,'EdgeColor','none')
colorbar
xlabel('Longitud X [m]')
ylabel('Longitud Y [m]')
zlabel('Canal óptico [nA/lumen]')

figure(201)
surf(Ax,Ay,Canal_Led2./(Canal_Led1 +Canal_Led3 +
Canal_Led4),'EdgeColor','none')
colorbar
xlabel('Longitud X [m]')
ylabel('Longitud Y [m]')
zlabel('Relación Señal-Interferencia [dB]')

figure(3)
surf(Ax,Ay,Canal_Led3,'EdgeColor','none')
colorbar
xlabel('Longitud X [m]')
ylabel('Longitud Y [m]')
zlabel('Canal óptico [nA/lumen]')

figure(4)
surf(Ax,Ay,Canal_Led4,'EdgeColor','none')
colorbar
xlabel('Longitud X [m]')
ylabel('Longitud Y [m]')
zlabel('Canal óptico [nA/lumen]')
figure(5)
surf(Ax,Ay,Canal_sum,'EdgeColor','none')
colorbar
xlabel('Longitud X [m]')
ylabel('Longitud Y [m]')
zlabel('Canal óptico [nA/lumen]')

%Histograma
figure(501)
precision = 50; % Histograma de 50 barras (también variable)
[P, X] = hist(Canal_sum(:),precision);
% NOTA: utilizar histfit para analisis
plot(X, P/sum(P), 'lineWidth', 2);
grid on
hold on % <--- Aqui representamos solo una, pero lo útil es comparar
configuraciones
ylabel('Función de densindad de probabilidad')
xlabel('Canal [nA/lumen]')

figure(502)
[Cuartil, Dlux] = ecdf(Canal_sum(:));
plot(Dlux, Cuartil, 'lineWidth', 2)
hold on
grid on % <--- Aqui representamos solo una, pero lo útil es comparar
configuraciones
xlabel('Canal [nA/lumen]')
ylabel('Función de distribución acumulativda')

Media = mean(Canal_sum(:))
Desviacion = std(Canal_sum(:))

Potrebbero piacerti anche