% Thrust and current mesurements of each individual thruster % Author: Hari Krishna Hari Prasad % Date : 12/17/19 %% Quad 1 - Computation: % Defining the voltage range vector - All plots are made with respect to % this: Volt = transpose(0:0.2:5.2); g = 9.80665; % Number of measurements for each thrust/current value: N = 4; % Multiplier to convert to SI units: mult_si = 10^-7; % Multiplier to convert from 0.1mg/uA to kg/A. mult_p = 10^-1; % Convert to mg/uA - plotting units. % Current measurements: % IN mA*(10^4) ******** Current_1 = [zeros(15,4); 2, 2, 1, 1; 4, 3, 2, 2; 6, 5, 4, 3; 7, 8, 5, 5; 9, 28, 29, 29; 17, 30, 29, 29; 21, 41, 40, 41; 52, 53, 69, 71; 85, 88, 90, 89; 102, 120, 118, 118; 138, 143, 148, 144; 167, 179, 174, 175]; Current_2 = [zeros(15,4); 0, 0, 0, 0; 2, 2, 3, 3; 5, 5, 6, 7; 8, 8, 8, 8; 11, 12, 12, 11; 14, 15, 15, 15; 18, 17, 19, 19; 54, 67, 58, 62; 85, 81, 83, 84; 108, 107, 110, 105; 135, 147, 144, 187; 0, 0, 0, 0]; Current_3 = [zeros(15,4); 2, 2, 2, 2; 2, 3, 2, 3; 4, 4, 4, 4; 9, 10, 8, 9; 13, 14, 11, 16; 19, 17, 21, 28; 31, 30, 32, 33; 40, 41, 42, 40; 56, 57, 56, 57; 94, 93, 92, 96; 126, 127, 125, 187; 215, 217, 220, 215]; Current_4 = [zeros(15,4); 0, 0, 0, 0; 4, 3, 3, 3; 7, 8, 5, 4; 9, 10, 10, 9; 15, 19, 11, 18; 20, 45, 23, 24; 52, 54, 58, 50; 77, 83, 70, 72; 99, 101, 105, 97; 126, 121, 127, 140; 160, 170, 180, 204; 215, 217, 220, 215]; % Related Stats: Curr_avg_1 = (Current_1(:,1) + Current_1(:,2) + Current_1(:,3) + Current_1(:,4))/4; % Standard deviation: Curd_1 = (((Curr_avg_1 - Current_1(:,1)).^2 + (Curr_avg_1 - Current_1(:,2)).^2 + ... (Curr_avg_1 - Current_1(:,3)).^2 + (Curr_avg_1 - Current_1(:,4)).^2)/N).^(1/2); % Related Stats: Curr_avg_2 = (Current_2(:,1) + Current_2(:,2) + Current_2(:,3) + Current_2(:,4))/4; % Standard deviation: Curd_2 = (((Curr_avg_2 - Current_2(:,1)).^2 + (Curr_avg_2 - Current_2(:,2)).^2 + ... (Curr_avg_2 - Current_2(:,3)).^2 + (Curr_avg_2 - Current_2(:,4)).^2)/N).^(1/2); % Related Stats: Curr_avg_3 = (Current_3(:,1) + Current_3(:,2) + Current_3(:,3) + Current_3(:,4))/4; % Standard deviation: Curd_3 = (((Curr_avg_3 - Current_3(:,1)).^2 + (Curr_avg_3 - Current_3(:,2)).^2 + ... (Curr_avg_3 - Current_3(:,3)).^2 + (Curr_avg_3 - Current_3(:,4)).^2)/N).^(1/2); % Related Stats: Curr_avg_4 = (Current_4(:,1) + Current_4(:,2) + Current_4(:,3) + Current_4(:,4))/4; % Standard deviation: Curd_4 = (((Curr_avg_4 - Current_4(:,1)).^2 + (Curr_avg_4 - Current_4(:,2)).^2 + ... (Curr_avg_4 - Current_4(:,3)).^2 + (Curr_avg_4 - Current_4(:,4)).^2)/N).^(1/2); % Model current: C = 2.2; modelcurrent = zeros(size(Volt)); for i = 1:length(Volt) if(C*Volt(i)*(Volt(i)- 3.6)>0) modelcurrent(i) = C*Volt(i)*(Volt(i)- 3.6); else modelcurrent(i) = 0; end end % % Declare and initialize vectors to store upper and lower bounds of the % % data: % Curr_lb = zeros(size(Volt)); % Curr_ub = zeros(size(Volt)); % % Computing the upper and lower bounds: % for i = 1:length(Volt) % for j = 1:N % if (Curr_avg_1(i,1)-Current_1(i,j)>0) % if abs(Curr_avg_1(i,1)-Current_1(i,j))>Curr_lb(i,1) % Curr_lb(i,1) = abs(Curr_avg_1(i,1)-Current_1(i,j)); % end % elseif (Curr_avg_1(i,1)-Current_1(i,j)<0) % if abs(Curr_avg_1(i,1)-Current_1(i,j))>Curr_ub(i,1) % Curr_ub(i,1) = abs(Curr_avg_1(i,1)-Current_1(i,j)); % end % end % end % end % Thrust measurements: % IN G*(10^4) ******** Thrust_1 = [zeros(15,4); 0, 9, 5, 0; 3, 13, 13, 3; 5, 16, 15, 10; 9, 25, 18, 14; 13, 36, 27, 36; 49, 50, 45, 42; 55, 68, 61, 60; 80, 87, 89, 87; 138, 140, 140, 123; 217, 203, 170, 175; 267, 261, 247, 281; 275, 319, 291, 301]; Thrust_2 = [zeros(15,4); 0, 0, 0, 0; 6, 9, 7, 5; 11, 13, 9, 11; 19, 17, 16, 13; 26, 34, 26, 25; 41, 38, 59, 37; 48, 42, 71, 56; 74, 64, 79, 66; 123, 125, 126, 129; 207, 187, 185, 176; 210, 247, 207, 259; 0, 0, 0, 0]; Thrust_3 = [zeros(15,4); 0, 0, 0, 0; 5, 4, 4, 5; 7, 8, 6, 8; 9, 13, 12, 13; 25, 32, 22, 19; 30, 32, 32, 31; 35, 36, 35, 35; 56, 60, 77, 56; 137, 141, 122, 130; 158, 179, 126, 175; 207, 243, 200, 250; 268, 274, 249, 256]; Thrust_4 = [zeros(15,4); 0, 0, 0, 0; 7, 5, 4, 3; 5, 8, 6, 8; 9, 10, 11, 8; 15, 12, 20, 19; 21, 15, 33, 31; 40, 60, 57, 45; 80, 74, 79, 69; 110, 121, 97, 101; 159, 183, 197, 175; 203, 255, 260, 243; 293, 279, 288, 259]; % Related Stats: Thrus_avg_1 = (Thrust_1(:,1) + Thrust_1(:,2) + Thrust_1(:,3) + Thrust_1(:,4))/4; % Standard deviation: Thrud_1 = (((Thrus_avg_1 - Thrust_1(:,1)).^2 + (Thrus_avg_1 - Thrust_1(:,2)).^2 + ... (Thrus_avg_1 - Thrust_1(:,3)).^2 + (Thrus_avg_1 - Thrust_1(:,4)).^2)/N).^(1/2); % Related Stats: Thrus_avg_2 = (Thrust_2(:,1) + Thrust_2(:,2) + Thrust_2(:,3) + Thrust_2(:,4))/4; % Standard deviation: Thrud_2 = (((Thrus_avg_2 - Thrust_2(:,1)).^2 + (Thrus_avg_2 - Thrust_2(:,2)).^2 + ... (Thrus_avg_2 - Thrust_2(:,3)).^2 + (Thrus_avg_2 - Thrust_2(:,4)).^2)/N).^(1/2); % Related Stats: Thrus_avg_3 = (Thrust_3(:,1) + Thrust_3(:,2) + Thrust_3(:,3) + Thrust_3(:,4))/4; % Standard deviation: Thrud_3 = (((Thrus_avg_3 - Thrust_3(:,1)).^2 + (Thrus_avg_3 - Thrust_3(:,2)).^2 + ... (Thrus_avg_3 - Thrust_3(:,3)).^2 + (Thrus_avg_3 - Thrust_3(:,4)).^2)/N).^(1/2); % Related Stats: Thrus_avg_4 = (Thrust_4(:,1) + Thrust_4(:,2) + Thrust_4(:,3) + Thrust_4(:,4))/4; % Standard deviation: Thrud_4 = (((Thrus_avg_4 - Thrust_4(:,1)).^2 + (Thrus_avg_4 - Thrust_4(:,2)).^2 + ... (Thrus_avg_4 - Thrust_4(:,3)).^2 + (Thrus_avg_4 - Thrust_4(:,4)).^2)/N).^(1/2); % Model Force: d = 3.5*(10^-3); % Inter-electrode distance. mew = 2*10^-4; % Ion mobility. modelForce = modelcurrent*d/mew; % Coulomb force on the volume of fluid. % Corona Power - Computed about mean value: CP_1 = Volt*(10^3).*Curr_avg_1*mult_p*(10^-6); CPd_1 = Volt*(10^3).*Curd_1*mult_p*(10^-6); % Standard deviation - 1. CP_2 = Volt*(10^3).*Curr_avg_2*mult_p*(10^-6); CPd_2 = Volt*(10^3).*Curd_2*mult_p*(10^-6); % Standard deviation - 2. CP_3 = Volt*(10^3).*Curr_avg_3*mult_p*(10^-6); CPd_3 = Volt*(10^3).*Curd_3*mult_p*(10^-6); % Standard deviation - 3. CP_4 = Volt*(10^3).*Curr_avg_4*mult_p*(10^-6); CPd_4 = Volt*(10^3).*Curd_4*mult_p*(10^-6); % Standard deviation - 4. % Thrust density - Computed about mean value: c = 10^-3; % Dimensions are in mm -> m. a = 0.4*c; % Edge-length of one square opening in m. A = a^2; % Area of one square opening - m^2. n = 15*9; % Number of square openings. TA = n*A; % Total area of openings. Thrus_d_1 = mult_p*Thrus_avg_1*g/TA*(10^-6); % Thrust density of thruster 1 - N/(m^2) Thrusd_1 = mult_p*Thrud_1*g/TA*(10^-6); % Standard deviation - 1. Thrus_d_2 = mult_p*Thrus_avg_2*g/TA*(10^-6); % Thrust density of thruster 2. Thrusd_2 = mult_p*Thrud_1*g/TA*(10^-6); % Standard deviation - 2. Thrus_d_3 = mult_p*Thrus_avg_3*g/TA*(10^-6); % Thrust density of thruster 3. Thrusd_3 = mult_p*Thrud_1*g/TA*(10^-6); % Standard deviation - 3. Thrus_d_4 = mult_p*Thrus_avg_4*g/TA*(10^-6); % Thrust density of thruster 4. Thrusd_4 = mult_p*Thrud_1*g/TA*(10^-6); % Standard deviation - 4. % % Declare and initialize vectors to store upper and lower bounds of the % % data: % Thrus_lb = zeros(size(Volt)); % Thrus_ub = zeros(size(Volt)); % % Computing the upper and lower bounds: % for i = 1:length(Volt) % for j = 1:N % if (Thrus_avg_1(i,1)-Thrust_1(i,j)>0) % if (abs(Thrus_avg_1(i,1)-Thrust_1(i,j))>Thrus_lb(i,1)) % Thrus_lb(i,1) = abs(Thrus_avg_1(i,1)-Thrust_1(i,j)); % end % elseif (Thrus_avg_1(i,1)-Thrust_1(i,j)<0) % if (abs(Thrus_avg_1(i,1)-Thrust_1(i,j))>Thrus_ub(i,1)) % Thrus_ub(i,1) = abs(Thrus_avg_1(i,1)-Thrust_1(i,j)); % end % end % end % end %% Quad 1 - Plots: % Plotting results: fig_count = 1; figure(fig_count) errorbar(Volt, mult_p*Curr_avg_1, mult_p*Curd_1,'ro','LineStyle',':','LineWidth',1.2); hold on; grid on; xlim([3 5.4]); ylim([0 23]); errorbar(Volt(length(Volt)-1,:), mult_p*Curr_avg_2(length(Volt)-1,:), mult_p*Curd_2(length(Volt)-1,:),'bo','LineStyle',':','LineWidth',1.2); % removing the last point since it arcs earlier. errorbar(Volt, mult_p*Curr_avg_3, mult_p*Curd_3,'go','LineStyle',':','LineWidth',1.2); errorbar(Volt, mult_p*Curr_avg_4, mult_p*Curd_4,'mo','LineStyle',':','LineWidth',1.2); plot(Volt,modelcurrent,'k','LineWidth',1.5); xlabel('Actuation Voltage (kV)'); ylabel('Corona Current (\muA)'); legend('Thruster 1','Thruster 2','Thruster 3','Thruster 4','Townsend Model','Location','northwest'); fig_count = fig_count + 1; figure(fig_count) errorbar(Volt, mult_p*Thrus_avg_1*g, mult_p*Thrud_1*g,'rx','LineStyle',':','LineWidth',1.2); hold on; grid on; xlim([3 5.4]); ylim([0 350]); errorbar(Volt(length(Volt)-1,:),mult_p*Thrus_avg_2(length(Volt)-1,:)*g, mult_p*Thrud_2(length(Volt)-1,:)*g,'bx','LineStyle',':','LineWidth',1.2); % removing the last point since it arcs earlier. errorbar(Volt, mult_p*Thrus_avg_3*g, mult_p*Thrud_3*g,'gx','LineStyle',':','LineWidth',1.2); errorbar(Volt, mult_p*Thrus_avg_4*g, mult_p*Thrud_4*g,'mx','LineStyle',':','LineWidth',1.2); plot(Volt,modelForce,'k','LineWidth',1.5); xlabel('Actuation Voltage (kV)'); ylabel('Thrust (\muN)'); legend('Thruster 1','Thruster 2','Thruster 3','Thruster 4','Model','Location','northwest'); fig_count = fig_count + 1; figure(fig_count) plot(CP_1,Thrus_d_1,'ro','LineWidth',2,'LineStyle',':'); grid on; hold on; plot(CP_2(1:length(Volt)-1,:),Thrus_d_2(1:length(Volt)-1,:),'bo','LineWidth',2,'LineStyle',':'); plot(CP_3,Thrus_d_3,'go','LineWidth',2,'LineStyle',':'); plot(CP_4,Thrus_d_4,'mo','LineWidth',2,'LineStyle',':'); xlabel('Corona Power (W)'); ylabel('Thrust Density (N/m^2)'); legend('Thruster 1','Thruster 2','Thruster 3','Thruster 4','Location','northwest'); %% COMPARISON with Drew CP = 0.048; % in W - corona power. % 25 26 25 24 - thrust_avg Values to add, then *g*0.1 T_comp = (Thrus_avg_1(25)+Thrus_avg_2(26)+Thrus_avg_3(25)+Thrus_avg_4(24))*0.1*g;