function [alphas, Lift, Drag, Moment, Lift_error, Drag_error, Moment_error, P_din, P_din_error, t_aquisicao_total] = balanca_aerodinamica(modelo, a_offset, ai, af, delta_a, freq_aq, n_ams, confianca) %% Constantes de calibração das células de carga - balança do túnel de vento soprador calib_lift = 131.1; % [N/V] calib_drag = 90.5; % [N/V] calib_mom = 8.56; % [N.m/V] %% Tempo de aquisição por ponto (cada alpha) e tempo total de aquisição (todos os ângulos de ataque do intervalo) t_aquisicao = (n_ams / freq_aq); % [s] t_aquisicao_total = t_aquisicao * length(ai:delta_a:af); % [s] %% Parâmetro t para cálculo de erro gdl = n_ams - 1; % graus de liberdade t = tinv((confianca+100)/200,gdl); % parâmetro t de Student, distribuição bicaudal %% Realizar a tara (offset) da balança - leitura das células de carga com pressão dinâmica do túnel nula % Aquisição do sinal das células de carga [offset_fore, offset_drag, offset_aft] = balance_signal(a_offset, modelo); % gera o sinal contínuo disponível nas células de carga para leitura [offset_fore, ~] = data_acquisition(offset_fore, freq_aq, n_ams); % faz a aquisição do sinal disponível na célula de carga de fore [offset_drag, ~] = data_acquisition(offset_drag, freq_aq, n_ams); % faz a aquisição do sinal disponível na célula de carga de drag [offset_aft, ~] = data_acquisition(offset_aft, freq_aq, n_ams); % faz a aquisição do sinal disponível na célula de carga de aft % a leitura de interesse é a média dos pontos amostrados a partir do sinal original offset_fore = mean(offset_fore); % offset de fore [V] offset_drag = mean(offset_drag); % offset de drag [V] offset_aft = mean(offset_aft); % offset de aft [V] % o desvio padrão dos dados amostrados é calculado e será usado para cálculo do erro padrão std_offset_fore = std(offset_fore); % desvio padrão do offset de fore [V] std_offset_drag = std(offset_drag); % desvio padrão do offset de drag [V] std_offset_aft = std(offset_aft); % desvio padrão do offset de aft [V] % cálculo do erro padrão da medida de offset (ver item 1.8 da apostila) error_offset_fore = t * std_offset_fore / sqrt(n_ams); % cálculo do erro padrão (ver item 1.8 da apostila) error_offset_drag = t * std_offset_drag / sqrt(n_ams); % cálculo do erro padrão (ver item 1.8 da apostila) error_offset_aft = t * std_offset_aft / sqrt(n_ams); % cálculo do erro padrão (ver item 1.8 da apostila) %% Realizar a leitura das células de carga nos ângulos de ataque desejados alphas = ai:delta_a:af; % define a lista de ângulos de ataque nos quais serão feitas as medidas i = 1; % inicia um contador do loop de medições Fore = zeros(length(alphas),1); % inicializa um vetor que receberá a leitura média de Fore [N] para cada ângulo de ataque Drag = zeros(length(alphas),1); % inicializa um vetor que receberá a leitura média de Drag [N] para cada ângulo de ataque Aft = zeros(length(alphas),1); % inicializa um vetor que receberá a leitura média de Aft [N] para cada ângulo de ataque Fore_error = zeros(length(alphas),1); % inicializa um vetor que receberá o erro de Fore [N] para cada ângulo de ataque Drag_error = zeros(length(alphas),1); % inicializa um vetor que receberá o erro de Drag [N] para cada ângulo de ataque Aft_error = zeros(length(alphas),1); % inicializa um vetor que receberá o erro de Aft [N] para cada ângulo de ataque P_din = zeros(length(alphas),1); % inicializa um vetor que receberá a leitura média o micromanômetro [Pa] para cada ângulo de ataque P_din_error = zeros(length(alphas),1); % inicializa um vetor que receberá o erro do micromanômetro [Pa] para cada ângulo de ataque % loop de medição: para cada ângulo de ataque o sinal das células de carga % e do manômetro são gerados, amostrados, tarados e transformados em % unidades de interesse utilizando-se as constantes de calibração da % balança; também são calculados os erros de cada uma destas medidas for alpha = alphas [fore, drag, aft, p_din] = balance_signal(alpha, modelo); % gera o sinal contínuo disponível nas células de carga para leitura fore = data_acquisition(fore, freq_aq, n_ams); % faz a aquisição do sinal disponível na célula de carga de fore drag = data_acquisition(drag, freq_aq, n_ams); % faz a aquisição do sinal disponível na célula de carga de drag aft = data_acquisition(aft, freq_aq, n_ams); % faz a aquisição do sinal disponível na célula de carga de aft p_din = data_acquisition(p_din, freq_aq, n_ams); % faz a aquisição do sinal disponível no micromanômetro % o desvio padrão dos dados amostrados é calculado e será usado para cálculo do erro padrão fore_std = std(fore); % [V] drag_std = std(drag); % [V] aft_std = std(aft); % [V] p_din_std = std(p_din); % [Pa] % a leitura de interesse é a média dos pontos amostrados a partir do % sinal original menos o valor de offset (tara da balança) fore = mean(fore) - offset_fore; % [V] drag = mean(drag) - offset_drag; % [V] aft = mean(aft) - offset_aft; % [V] pdin = mean(p_din); % [Pa] % acrescenta a i-ésima leitura de cada dado à i-ésima posição do vetor que agrupa todas % as leituras do conjunto de ângulos de ataque escolhido Fore(i) = fore; % [V] Drag(i) = drag; % [V] Aft(i) = aft; % [V] P_din(i) = pdin; % [Pa] % Calcula o erro das leituras em Volts (ou em Pa para o caso do % micromanômetro) Fore_error(i) = t * fore_std / sqrt(n_ams); % [V] Drag_error(i) = t * drag_std / sqrt(n_ams); % [V] Aft_error(i) = t * aft_std / sqrt(n_ams); % [V] P_din_error(i) = max(0.01*pdin+1,t * p_din_std / sqrt(n_ams)); % [Pa] - no caso do micromanômetro, o erro fornecido pelo manual do fabricante é 1% da leitura +- 1 Pa, devemos usar o maior valor dentre os dois % Propagação do erro da operação de tara da balança Fore_error(i) = sqrt(Fore_error(i)^2 + error_offset_fore^2); % [V] Drag_error(i) = sqrt(Drag_error(i)^2 + error_offset_drag^2); % [V] Aft_error(i) = sqrt(Aft_error(i)^2 + error_offset_aft^2); % [V] % incrementa o contador do loop i = i + 1; end % Os valores em N (forças) e N.m (momento) são obtidos a partir da % correlação entre as leituras em V dos instrumentos e as constantes de % calibração: Lift = (Fore + Aft) * calib_lift; % [N] Drag = Drag * calib_drag; % [N] Moment = (Fore - Aft) * calib_mom; % [N.m] Lift_error = ((Fore_error.^2 + Aft_error.^2).^0.5) * calib_lift; % [N] Drag_error = Drag_error * calib_drag; % [N] Moment_error = ((Fore_error.^2 + Aft_error.^2).^0.5) * calib_mom; % [N.m] end