Code

MATLAB Code:

%code for excel conversion
filename1 = input(“Enter excel filename: “, “s”);
masterfile1 = xlsread(filename1);

m1 = input(“Enter the mass (g) of the AEV: “);
tE1 = masterfile1(9:end,1);
IE1 = masterfile1(9:end,2);
VE1 = masterfile1(9:end,3);
marks1 = masterfile1(9:end,4);
pos1 = masterfile1(9:end,5);

% Time tE=EEPROM time (ms)
t1=tE1./1000;

%Current I=current (amps) IE= EEPROM current (ADC counts) VR= 2.46 volts
i1=(IE1./1024).*(2.46/0.185);

%Voltage V=Voltage (volts) VE= EEPROM voltage (ADC counts)
V1=(15.*VE1)/1024;

%Distance d= distance (meters) marks= wheel counts accumulated by sensors
d1=0.0124.*marks1;

%Position s= AEV position (meters from start) pos= wheel counts
s1=0.0124.*pos1;

%Power Supplied
p1 = V1.* i1; %p is input power

%incremental energy
for interval = 1 : length(p1) – 1
eJ1(interval) = ((p1(interval)+p1(interval+1)) / 2) * (t1(interval + 1) – t1(interval));
end
eJ1=eJ1′;

%Energy Total
eT1 = sum(eJ1(1:(length(eJ1) – 1))) / (m1 / 1000); %weight in kg

%velocity
for interval = 2: length(s1)
vel1(interval) = (s1(interval) – s1(interval -1))/(t1(interval)- t1(interval-1));
end
vel1=vel1′;

%kenetic energy
kE1 = .5 .* m1 .* (V1.^2);

%RPM
rPM1 = (-64.59 .* (i1 .^2) + 1927.25 .* i1 – 84.58) .* .8; %for 3 inch propellor

%Advance Ratio Filter
for interval = 1:length(eJ1)
if (i1(interval) == 0) && (eJ1(interval) <= .15)
eJ1(interval) = 0;

elseif (i1(interval) > 0) && (eJ1(interval) < .15)
eJ1(interval) = .15;
end
end

%propellor advance ratio
J1 = V1 / ((rPM1 / 60) * .8);

%propulsion efficiency
n1 = -454.37 * J1^3 + 321.58 * J1^2 + 22.603 * J1;

%%next model

%code for excel conversion
filename = input(“Enter excel filename: “, “s”);
masterfile = xlsread(filename);

m = input(“Enter the mass (g) of the AEV: “);
tE = masterfile(9:end,1);
IE = masterfile(9:end,2);
VE = masterfile(9:end,3);
marks = masterfile(9:end,4);
pos = masterfile(9:end,5);

% Time tE=EEPROM time (ms)
t=tE./1000;

%Current I=current (amps) IE= EEPROM current (ADC counts) VR= 2.46 volts
i=(IE./1024).*(2.46/0.185);

%Voltage V=Voltage (volts) VE= EEPROM voltage (ADC counts)
V=(15.*VE)/1024;

%Distance d= distance (meters) marks= wheel counts accumulated by sensors
d=0.0124.*marks;

%Position s= AEV position (meters from start) pos= wheel counts
s=0.0124.*pos;

%Power Supplied
p = V.* i; %p is input power

%incremental energy
for interval = 1 : length(p) – 1
eJ(interval) = ((p(interval)+p(interval+1)) / 2) * (t(interval + 1) – t(interval));
end
eJ=eJ’;

%Energy Total
eT = sum(eJ(1:(length(eJ) – 1))) / (m / 1000); %weight in kg

%velocity
for interval = 2: length(s)
vel(interval) = (s(interval) – s(interval -1))/(t(interval)- t(interval-1));
end
vel=vel’;

%kenetic energy
kE = .5 .* m .* (V.^2);

%RPM
rPM = (-64.59 .* (i .^2) + 1927.25 .* i – 84.58) .* .8; %for 3 inch propellor

%Advance Ratio Filter
for interval = 1:length(eJ)
if (i(interval) == 0) && (eJ(interval) <= .15)
eJ(interval) = 0;

elseif (i(interval) > 0) && (eJ(interval) < .15)
eJ(interval) = .15;
end
end

%propellor advance ratio
J = V / ((rPM / 60) * .8);

%propulsion efficiency
n = -454.37 * J^3 + 321.58 * J^2 + 22.603 * J;

figure
plot(t1,p1,”b”,t,p,”g”)
title(‘Power vs Time’)
xlabel(‘Time, S’)
ylabel(‘Power, W’)
grid
legend(‘p1′,’p’)

figure
plot(d1,p1,”b”,d,p,”g”)
title(‘Power vs Distance’)
xlabel(‘Distance, m’)
ylabel(‘Power, W’)
grid
legend(‘p1′,’p’)

figure
plot(d1, vel1, “b”, d, vel, “g”)
title(‘Velocity vs Distance’)
xlabel(‘Distance, m’)
ylabel(‘Velocity, m/s’)
grid
legend(‘vel1′,’vel’)

figure
plot(d1, kE1, “b”, d, kE, “g”)
title(‘Kenetic Energy vs Time’)
xlabel(‘distance, m’)
ylabel(‘Kinetic Energy, J’)
grid
legend(‘kE1′,’kE’)

figure
plot(d1,n1,”b”, d, n,”g”)
title(‘Propultion Efficiency vs Distance’)
xlabel(‘Distance, n’)
ylabel(‘Propultion Efficiency, %’)
grid
legend(‘n1′,’n’)

Arduino Code

Half run code:
reverse(4); //Reverse polarity on all motorsmotorSpeed(4,35); //Set motor speed to 35 for all motorsgoToAbsolutePosition(95); //-for 75 marks in the negative direction from originmotorSpeed(4,14); //Set motor speed to 14 for all motorsgoToAbsolutePosition(110); //-for 85 marks in the negative direction from originbrake(4); //Power down all motors goFor(5); //-for 5 seconds grandreverse(4); //Reverse polarity on all motorscelerate(4,23,15,4.4); //Accelerate all motors from 15 to 33% power in 4.2 seconds.brake(4); //brake all motorsgoFor(2); //-for 2 secondsmotorSpeed(4,20); //Set motor speed to 20% power for all motors and gogoFor(1.0); //-for 1.5 seconds.reverse(4); //Reverse polarity on all motors.celerate(4,33,1,1); //Accelerate all motors from 33 to 1% power in 1 seconds.brake(4); //Brake all motorsgoFor(6); //-for 6 seconds.reverse(4); //Reverse polarity on all motors.motorSpeed(4,33); //Power all motors at 33% power and gogoFor(2.7); //-for 2.7 seconds.reverse(4); //Reverse polarity on all motors.celerate(4,33,1,1.5); //Accelerate all motors from 33 to 1 % power in 1.5 seconds.brake(4); //Brake all motors.
Full run with cart:
// Maint. station to grand reverse(4); //Reverse polarity on all motors motorSpeed(4,27);goToRelativePosition(160);reverse(4);motorSpeed(4,30);goFor(.35);brake(4);goFor(2);rotateServo(60);goFor(5);//wavesmotorSpeed(4,20);goToAbsolutePosition(-63);brake(4);goFor(1);motorSpeed(4,18);goToAbsolutePosition(-288);reverse(4);motorSpeed(4,60);goFor(0.2);brake(4);goFor(4);//alaska
reverse(4);motorSpeed(4,33);goToAbsolutePosition(-590);reverse(4);motorSpeed(4,50);goFor(.2);brake(4);goFor(4);//incline stopmotorSpeed(4,20);goToRelativePosition(52);goFor(0.25);reverse(4);motorSpeed(4,34);goFor(2.5);brake(4); goFor(1);// rocky montainsreverse(4);motorSpeed(4,15);goToRelativePosition(144);reverse(4);motorSpeed(4,50);goFor(.3);brake(4);goFor(2);
// hocking hillsreverse(4);motorSpeed(4,26);goToRelativePosition(240);reverse(4);motorSpeed(4,50);goFor(.4);brake(4);goFor(2);// back to grand
reverse(4);motorSpeed(4,33);goToRelativePosition(200);reverse(4);motorSpeed(4,40);goFor(.4);brake(4);goFor(3);rotateServo(0);goFor(2);motorSpeed(4,23);goToAbsolutePosition(0);reverse(4);motorSpeed(4,70);goFor(.5);brake(4);
Full run with weighted cart:
// Maint. station to grand reverse(4); //Reverse polarity on all motors motorSpeed(4,27);goToRelativePosition(160);reverse(4);motorSpeed(4,30);goFor(.35);brake(4);goFor(2);rotateServo(60);goFor(5);//wavesmotorSpeed(4,27);goToAbsolutePosition(-53);brake(4);goFor(1);motorSpeed(4,20);goToAbsolutePosition(-288);reverse(4);motorSpeed(4,60);goFor(0.4);brake(4);goFor(4);//alaskaFull run with weighted cart// Maint. station to grand reverse(4); //Reverse polarity on all motors motorSpeed(4,27);goToRelativePosition(160);reverse(4);motorSpeed(4,30);goFor(.35);brake(4);goFor(2);rotateServo(60);goFor(5);//wavesmotorSpeed(4,27);goToAbsolutePosition(-53);brake(4);goFor(1);motorSpeed(4,20);goToAbsolutePosition(-288);reverse(4);motorSpeed(4,60);goFor(0.4);brake(4);goFor(4);//alaska
reverse(4);motorSpeed(4,39);goToAbsolutePosition(-590);reverse(4);motorSpeed(4,60);goFor(.3);brake(4);goFor(4);//incline stopmotorSpeed(4,29);goToRelativePosition(52);brake(4);goFor(0.25);reverse(4);motorSpeed(4,35);goFor(2.5);brake(4); goFor(1);// rocky montainsreverse(4);motorSpeed(4,17);goToAbsolutePosition(-300);reverse(4);motorSpeed(4,70);goFor(.35);brake(4);goFor(2);reverse(4);motorSpeed(4,39);goToAbsolutePosition(-590);reverse(4);motorSpeed(4,60);goFor(.3);brake(4);goFor(4);//incline stopmotorSpeed(4,29);goToRelativePosition(52);brake(4);goFor(0.25);reverse(4);motorSpeed(4,35);goFor(2.5);brake(4); goFor(1);// rocky montainsreverse(4);motorSpeed(4,17);goToAbsolutePosition(-300);reverse(4);motorSpeed(4,70);goFor(.35);brake(4);goFor(2);
// hocking hillsreverse(4);motorSpeed(4,28);goToAbsolutePosition(-60);reverse(4);motorSpeed(4,60);goFor(.4);brake(4);goFor(2);// back to grandreverse(4);motorSpeed(4,42);goToRelativePosition(200);reverse(4);motorSpeed(4,70);goFor(.5);brake(4);goFor(3);rotateServo(0);goFor(2);motorSpeed(4,25);goFor(.5);motorSpeed(4,15);goToAbsolutePosition(20);reverse(4);motorSpeed(4,70);
goFor(.5);brake(4);