0% ont trouvé ce document utile (0 vote)
11 vues7 pages

Calibration d'un voltmètre analogique

Ce document décrit la calibration d'un voltmètre analogique en utilisant une méthode de comparaison directe avec un multimètre numérique comme référence. Il présente les étapes de calibration, les évaluations d'incertitude de type A et B, le calcul des erreurs, l'incertitude combinée et élargie, ainsi que la vérification de la conformité avec les erreurs maximales tolérées. Enfin, il inclut des graphiques illustrant les erreurs et les incertitudes associées.

Transféré par

armandoreyesalumno2302
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
11 vues7 pages

Calibration d'un voltmètre analogique

Ce document décrit la calibration d'un voltmètre analogique en utilisant une méthode de comparaison directe avec un multimètre numérique comme référence. Il présente les étapes de calibration, les évaluations d'incertitude de type A et B, le calcul des erreurs, l'incertitude combinée et élargie, ainsi que la vérification de la conformité avec les erreurs maximales tolérées. Enfin, il inclut des graphiques illustrant les erreurs et les incertitudes associées.

Transféré par

armandoreyesalumno2302
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

%% ========================================================================

% PRÁCTICA 4: CALIBRACIÓN DE UN APARATO DE MEDICIÓN ANALÓGICO


% Laboratorio de Mediciones Eléctricas
% Método: Comparación Directa
% Equipo A4
% ========================================================================
clear all; close all; clc;
%% ========================================================================
% SECCIÓN 1: DATOS DE ENTRADA
% ========================================================================

% --- Datos del Aparato Bajo Calibración (Voltmetro Analógico) ---


[Link] = 80; % Alcance en Volts [V]
[Link] = 1; % Clase de exactitud
[Link] = 80; % Divisiones totales de la escala
[Link] = 0.1; % Resolución mínima distinguible [V]

% --- Datos del Patrón de Trabajo (Multímetro Digital) ---


[Link] = 200; % Alcance utilizado [V]
PATRON.exactitud_pct = 0.03;% Exactitud en % de la lectura
PATRON.exactitud_dig = 1; % Exactitud en dígitos
PATRON.resolucion_dig = 0.01; % Valor de 1 dígito [V]
%Se debera automatizar el cambio de alcance una vez se pase de los 20V%
% --- Pasos de Calibración ---
% Valores nominales donde se fija el Voltmetro bajo calibración
pasos_calibracion = [5.0, 10.0, 15.0, 20.0, 25.0, 30.0]; % [V]

% --- Lecturas del Patrón (Lp) ---


% Cada fila = un paso de calibración
% Cada columna = una medición repetida (10 mediciones por paso)
% NOTA: Reemplazar estos datos con las lecturas reales de laboratorio

Lp_lecturas = [
% Paso 5.0 V (10 lecturas)
5.047, 5.046, 5.092, 5.063, 5.098, 5.049, 5.096, 5.065, 5.090, 5.098;

% Paso 10.0 V (10 lecturas)


10.34, 10.16, 10.32, 10.30, 10.18, 10.32, 10.18, 10.31, 10.19, 10.30;

% Paso 15.0 V (10 lecturas)


14.82, 14.86, 14.94, 14.83, 14.95, 14.88, 14.92, 14.90, 14.86, 14.88;

% Paso 20.0 V (10 lecturas)


19.94, 19.86, 19.88, 19.96, 19.86, 19.92, 19.90, 19.87, 19.93, 19.86;

% Paso 25.0 V (10 lecturas)


25.36, 25.28, 25.32, 25.33, 25.26, 25.34, 25.30, 25.29, 25.33, 25.8;

% Paso 30.0 V (10 lecturas)


30.12, 29.88, 30.13, 30.00, 29.86, 30.02, 30.15, 30.10, 29.88, 30.00
];

% --- Temperatura Ambiente ---


temperatura_media = 23.0; % [°C]

%% ========================================================================
% SECCIÓN 2: EVALUACIÓN TIPO A (REPETIBILIDAD DEL PATRÓN)
% ========================================================================
fprintf('========================================\n');
fprintf('EVALUACIÓN TIPO A - INCERTIDUMBRE\n');
fprintf('========================================\n\n');

n_mediciones = size(Lp_lecturas, 2); % Número de mediciones por paso


n_pasos = length(pasos_calibracion); % Número de pasos

% Inicializar vectores de resultados


Lp_media = zeros(n_pasos, 1);
Lp_varianza = zeros(n_pasos, 1);
Lp_desv_std = zeros(n_pasos, 1);
u_A = zeros(n_pasos, 1);

for i = 1:n_pasos
% Media aritmética
Lp_media(i) = mean(Lp_lecturas(i, :));

% Varianza experimental
Lp_varianza(i) = var(Lp_lecturas(i, :)); % Usar n-1 en denominador

% Desviación estándar
Lp_desv_std(i) = std(Lp_lecturas(i, :));

% Incertidumbre Tipo A (desviación estándar de la media)


u_A(i) = Lp_desv_std(i) / sqrt(n_mediciones);

fprintf('Paso %.1f V:\n', pasos_calibracion(i));


fprintf(' Media Lp = %.3f V\n', Lp_media(i));
fprintf(' Varianza = %.3e V²\n', Lp_varianza(i));
fprintf(' Desv. Std = %.3e V\n', Lp_desv_std(i));
fprintf(' u_A = %.4e V\n\n', u_A(i));
end

%% ========================================================================
% SECCIÓN 3: EVALUACIÓN TIPO B (RESOLUCIÓN Y ESPECIFICACIONES)
% ========================================================================

fprintf('========================================\n');
fprintf('EVALUACIÓN TIPO B - INCERTIDUMBRE\n');
fprintf('========================================\n\n');

% --- Tipo B del Voltmetro Bajo Calibración (Resolución) ---


% Distribución rectangular: u_B = (a/2) / sqrt(3)
% donde 'a' es el intervalo de resolución

u_B_voltmetro = ([Link] / 2) / sqrt(3);

fprintf('Voltmetro Bajo Calibración:\n');


fprintf(' Resolución = %.3f V\n', [Link]);
fprintf(' u_B(V) = %.4e V\n\n', u_B_voltmetro);

% --- Tipo B del Patrón (Especificación del Fabricante) ---


% u_E(P) = ±(% de lectura + dígitos)
% Distribución rectangular: u_B(P) = u_E(P) / sqrt(3)

u_E_patron = zeros(n_pasos, 1);


u_B_patron = zeros(n_pasos, 1);

fprintf('Patrón de Trabajo (Multímetro Digital):\n');


for i = 1:n_pasos
% Incertidumbre especificada
u_E_patron(i) = ((PATRON.exactitud_pct * Lp_media(i))/100) + ...
PATRON.exactitud_dig * PATRON.resolucion_dig;

% Incertidumbre Tipo B
u_B_patron(i) = u_E_patron(i) / sqrt(3);

fprintf(' Paso %.1f V: u_E = %.4e V, u_B = %.4e V\n', ...


pasos_calibracion(i), u_E_patron(i), u_B_patron(i));
end
fprintf('\n');

%% ========================================================================
% SECCIÓN 4: CÁLCULO DE ERRORES
% ========================================================================

fprintf('========================================\n');
fprintf('CÁLCULO DE ERRORES\n');
fprintf('========================================\n\n');

% Error: e = Lv - Lp
% donde Lv es la lectura del Voltmetro bajo calibración (paso nominal)
% y Lp es la media de las lecturas del patrón

errores = pasos_calibracion' - Lp_media;

fprintf('Paso [V] | Lv [V] | Lp_media [V] | Error e [V]\n');


fprintf('--------------------------------------------------------\n');
for i = 1:n_pasos
fprintf(' %.1f | %.1f | %.4f | %+.4f\n', ...
pasos_calibracion(i), pasos_calibracion(i), Lp_media(i), errores(i));
end
fprintf('\n');

%% ========================================================================
% SECCIÓN 5: INCERTIDUMBRE COMBINADA
% ========================================================================

fprintf('========================================\n');
fprintf('INCERTIDUMBRE COMBINADA\n');
fprintf('========================================\n\n');

% Varianzas combinadas
% u_c²(e) = u_c²(Lv) + u_c²(Lp) + u_c²(P)
% donde:
% u_c²(Lv) = u_B²(Voltmetro) - de la resolución
% u_c²(Lp) = u_A²(patrón) - de la repetibilidad
% u_c²(P) = u_B²(patrón) - de la especificación

u2_c_Lv = u_B_voltmetro^2 * ones(n_pasos, 1); % Constante para todos los pasos


u2_c_Lp = u_A.^2; % Variable por paso
u2_c_P = u_B_patron.^2; % Variable por paso

% Varianza combinada total


u2_c_total = u2_c_Lv + u2_c_Lp + u2_c_P;

% Incertidumbre combinada
u_c = sqrt(u2_c_total);
fprintf('Paso [V] | Error e [V] | u²_c(Lv) | u²_c(Lp) | u²_c(P) | u²_c(e)
| u_c(e)\n');
fprintf('--------------------------------------------------------------------------
\n');
for i = 1:n_pasos
fprintf(' %.1f | %.4f | %.4e | %.4e | %.4e | %.4e | %.4e\n', ...
pasos_calibracion(i), errores(i), u2_c_Lv(i), u2_c_Lp(i),
u2_c_P(i), ...
u2_c_total(i), u_c(i));
end
fprintf('\n');

%% ========================================================================
% SECCIÓN 6: INCERTIDUMBRE EXPANDIDA (95.45% confianza)
% ========================================================================

fprintf('========================================\n');
fprintf('INCERTIDUMBRE EXPANDIDA\n');
fprintf('========================================\n\n');

% Grados de libertad
v_Lp = n_mediciones - 1; % Para tipo A (9 con 10 mediciones)
v_B = 1 / (2 * 0.25^2); % Para tipo B (asumiendo 25% de confianza) ≈ 8

% Grados de libertad efectivos (Welch-Satterthwaite)


v_eff = zeros(n_pasos, 1);

for i = 1:n_pasos
numerador = u2_c_total(i)^2;
denominador = (u2_c_Lp(i)^2 / v_Lp) + ...
(u2_c_Lv(i)^2 / v_B) + ...
(u2_c_P(i)^2 / v_B);
v_eff(i) = numerador / denominador;
end

% Factor de cobertura t (distribución t-Student para 95.45% ≈ 2σ)


% Aproximación: usar tabla t o función de MATLAB
% Para simplificar, usamos valores típicos según v_eff

t_factor = zeros(n_pasos, 1);


for i = 1:n_pasos
v_round = round(v_eff(i));
if v_round <= 8
t_values = [12.71, 4.30, 3.18, 2.78, 2.57, 2.45, 2.36, 2.31];
t_factor(i) = t_values(min(v_round, 8));
elseif v_round <= 15
t_factor(i) = 2.20 - (v_round - 9) * 0.02;
else
t_factor(i) = 2.00; % Para v > 30, aproxima a distribución normal
end
end

% Incertidumbre expandida
U_e = t_factor .* u_c;

fprintf('Paso [V] | v_eff | t_p(v) | U(e) [V]\n');


fprintf('-----------------------------------------------\n');
for i = 1:n_pasos
fprintf(' %.1f | %5.1f | %.2f | %.4e\n', ...
pasos_calibracion(i), v_eff(i), t_factor(i), U_e(i));
end
fprintf('\n');

%% ========================================================================
% SECCIÓN 7: EXPRESIÓN DEL RESULTADO
% ========================================================================

fprintf('========================================\n');
fprintf('EXPRESIÓN DEL RESULTADO (95.45%% confianza)\n');
fprintf('========================================\n\n');

fprintf('Paso [V] | e ± U(e) [V] | Intervalo [V]\n');


fprintf('--------------------------------------------------\n');
for i = 1:n_pasos
limite_inf = errores(i) - U_e(i);
limite_sup = errores(i) + U_e(i);
fprintf(' %.1f | %+.3f ± %.3f | [%+.3f, %+.3f]\n', ...
pasos_calibracion(i), errores(i), U_e(i), limite_inf, limite_sup);
end
fprintf('\n');

%% ========================================================================
% SECCIÓN 8: ERRORES MÁXIMOS TOLERADOS
% ========================================================================

fprintf('========================================\n');
fprintf('ERRORES MÁXIMOS TOLERADOS\n');
fprintf('========================================\n\n');

% Error máximo tolerado según clase de exactitud


% EMT = ± (Clase × Alcance) / 100

EMT = ([Link] * [Link]) / 100;

fprintf('Clase de Exactitud: %.1f\n', [Link]);


fprintf('Alcance: %.1f V\n', [Link]);
fprintf('Error Máximo Tolerado: ±%.3f V\n\n', EMT);

% Verificación de cumplimiento
fprintf('VERIFICACIÓN DE CUMPLIMIENTO:\n');
fprintf('-------------------------------\n');
cumple = true;
for i = 1:n_pasos
if abs(errores(i)) <= EMT
estado = 'CUMPLE';
else
estado = 'NO CUMPLE';
cumple = false;
end
fprintf('Paso %.1f V: Error = %+.3f V --> %s\n', ...
pasos_calibracion(i), errores(i), estado);
end

fprintf('\n');
if cumple
fprintf('*** CONCLUSIÓN: El instrumento CUMPLE con su clase de exactitud ***\n\
n');
else
fprintf('*** CONCLUSIÓN: El instrumento NO CUMPLE con su clase de exactitud
***\n\n');
end

%% ========================================================================
% SECCIÓN 9: GRÁFICAS
% ========================================================================

% --- Gráfica 1: Curva de Errores con Incertidumbre ---


figure('Name', 'Curva de Errores', 'NumberTitle', 'off');
hold on; grid on; box on;

% Zona de errores máximos tolerados


fill([0, [Link], [Link], 0], [EMT, EMT, -EMT, -EMT], ...
[0.9, 0.9, 0.9], 'EdgeColor', 'none', 'DisplayName', 'Zona Tolerada');

% Líneas de referencia
plot([0, [Link]], [EMT, EMT], 'r--', 'LineWidth', 1.5, ...
'DisplayName', 'Límite Superior EMT');
plot([0, [Link]], [-EMT, -EMT], 'r--', 'LineWidth', 1.5, ...
'DisplayName', 'Límite Inferior EMT');
plot([0, [Link]], [0, 0], 'k-', 'LineWidth', 1, ...
'DisplayName', 'Error Cero');

% Errores con barras de incertidumbre


errorbar(pasos_calibracion, errores, U_e, 'bo-', 'LineWidth', 2, ...
'MarkerSize', 8, 'MarkerFaceColor', 'b', ...
'DisplayName', 'Error ± U(e)');

xlabel('Indicación Voltmetro Bajo Calibración [V]', 'FontSize', 12);


ylabel('Error [V]', 'FontSize', 12);
title('Curva de Errores del Voltmetro Analógico', 'FontSize', 14, 'FontWeight',
'bold');
legend('Location', 'best');
xlim([0, [Link]]);
ylim([-EMT*1.5, EMT*1.5]);
hold off;

% --- Gráfica 2: Incertidumbres por Componente ---


figure('Name', 'Componentes de Incertidumbre', 'NumberTitle', 'off');
bar(pasos_calibracion, [sqrt(u2_c_Lv), sqrt(u2_c_Lp), sqrt(u2_c_P)], 'grouped');
xlabel('Paso de Calibración [V]', 'FontSize', 12);
ylabel('Incertidumbre [V]', 'FontSize', 12);
title('Componentes de Incertidumbre por Paso', 'FontSize', 14, 'FontWeight',
'bold');
legend('u_c(Lv) - Resolución', 'u_c(Lp) - Repetibilidad', 'u_c(P) -
Especificación', ...
'Location', 'best');
grid on;

% --- Gráfica 3: Comparación Lv vs Lp ---


figure('Name', 'Comparación Lecturas', 'NumberTitle', 'off');
hold on; grid on; box on;

% Línea ideal (Lv = Lp)


plot([0, [Link]], [0, [Link]], 'k--', 'LineWidth', 1.5, ...
'DisplayName', 'Ideal (Lv = Lp)');
% Lecturas reales
plot(pasos_calibracion, Lp_media, 'ro-', 'LineWidth', 2, ...
'MarkerSize', 8, 'MarkerFaceColor', 'r', ...
'DisplayName', 'Lp (Patrón)');

xlabel('Lv - Voltmetro Bajo Calibración [V]', 'FontSize', 12);


ylabel('Lp - Patrón [V]', 'FontSize', 12);
title('Comparación: Voltmetro vs Patrón', 'FontSize', 14, 'FontWeight', 'bold');
legend('Location', 'best');
axis equal;
xlim([0, [Link]]);
ylim([0, [Link]]);
hold off;
fprintf('\n*** SCRIPT FINALIZADO EXITOSAMENTE ***\n');

Vous aimerez peut-être aussi