design and analysis of scissor jack presentation 4.pptx
Brainstorming and MATLAB report
1. Mechanical Engineering Design Principles 3 Crane Brainstorming and MATLAB Assignment 2014/15
1
Mechanical Design Principles 3: Crane Brainstorming and MATLAB
Assignment
Tommy Reynolds s1230460
10/11/2014
INTRODUCTION
Part 1: Crane Brainstorming
The design of a new crane to assist with offshore renewables installation is brought
forward. The crane is required to lift 4 tonnes, operate in depths of 7m and cope with
tidal current speeds in the region of 10kn. A small level of precision is necessary to
ensure accurate installation of the crane.
A brainstorming session was held and ideas collected and analysed. The top 3 ideas
were selected by the team and the best idea is taken further individually. More detailed
drawings, analysis of materials and dimensions are given.
Part 2: MATLAB
Additionally, a MATLAB program was created to aid the choice of a hydraulic ram
required for a small crane. This program was required to find the minimum peak force
required by the hydraulic ram when placed under certain loading conditions. Design
constraints were given and useful values should be calculated and displayed by the
program. A GUI (Graphical User Interface) should be integrated into the program,
allowing for quick and easy changes to the input data.
Part 1: Crane Brainstorming
1 IDEAS GENERATED
Each member of the brainstorming team took part in the brainsketching meeting and
this produced a total of roughly 20 drawings. Each drawing was re-sketched and the
original information included was re-written for clarity. A selection of these ideas are
shown in figures 1-15. Additional drawings shown in appendix.
Figure 1
Submersible vehicle with a
tower leading to a platform
with a crane on it.
Figure 2
Catapult which fires object
in a capsule and then
drops it with a parachute.
.into place.
Figure 3
Simple boat with crane
attached to one end which is
held stable by anchors and
powered by rowers.
2. 2
Figure 4
Hovercraft with small crane
on top, powered by a fan and
held stable by a subsea
winch.
Figure 5
Submarine with boom crane
magnet attached, stability
improvements from the
retractable supports.
Figure 6
Platform with foldable crane
centered, ballast tanks for
stability and heli fans used to
move.
Figure 7
Extremely strong man who is
able to carry the object in to the
ocean and place it.
Figure 8
Catamaran type set up with
two skis and a magnet crane
suspended between them.
Powered using thrusters on
each ski.
Figure 9
Crane with cutout to allow
good COM, powered by
thrusters.
Figure 10
Large robot with two cranes
for hands and powered by
human in the head area.
Figure 11
Sea plane with a retractable
boom crane and skis to help
stabilize when in the water.
Figure 12
Platform with legs for
stability, crane able to rotate
360 degrees.
Figure 13
Telescopic crane with
magnet, powered by
thrusters. Ballast tanks filled
to hit sea bed and stable
with legs.
Figure 14
Circular base with runners to
help land, powered by a heli
blade with the crane situated
directly under the blade.
Figure 15
Platform with cutout in
middle, crane situated
above platform. Moved via a
tug boat and held stable by
anchors.
3. 3
2 CRITICAL ANALYSIS OF TOP THREE DESIGNS
2.1 Constraints
To ensure the top three designs were suitably chosen, a number of constraints were
determined by the brainstorming team. These were:
Must be mobile
Able to lift 4 tonnes
Stable in rough water
Corrosion resistant
Economically viable
Capable of precision placement
Able to operate in water with a depth of up to 7metres.
2.2 Design Number One
Chosen because of the simplicity and ability to meet constraints given in section 2.1.
The design is based on a square platform with 4 individually extendable legs which
are inclined at a small angle to aid in stability. Crane is centred and can rotate about
360 degrees. Because of the square base, the platform can be used for storage and/or
living space. The crane can be self propelled or tugged depending on speed of
movement required. This design is shown in figure 16.
Advantages
Very stable thanks to four strong legs
Highly manoeuvrable crane which can rotate
360 degrees
Has a lot of storage on board and could have
living quarters
Especially useful when used in long term
situations as will not move
Can alter each leg height individually to allow
for any difference in depth of the sea bed
Disadvantages
Requires jacked up before it can be put into operation
Has a high centre of gravity so may be unstable when being moved
Will not work straight away so not as effective for short term work
2.3 Design Number Two
Chosen because extremely stable and has high precision. Gantry is placed on rails to
increase precision. Because of the design requiring full support of the crane, the
surrounding area can be used for storage or living quarters. Unfortunately this design
Figure 16
First chosen design.
4. 4
is unable to self propel so a tugboat would be necessary for operation. This design is
shown in figure 17.
Advantages
Very stable when in use
Quick to set up so would be useful for short
term applications
Very high precision when placing due to
multidirectional crane
Lots of storage space for parts or living
quarters
Disadvantages
Unable to pick up items unless placed inside
the crane operation area
Must be tugged when in use so could disrupt other marine transport/wildlife
Unable to lift very tall objects such as wind turbines
2.4 Design Number Three
Chosen because very well placed centre of gravity and large amount of storage area.
The crane operates by self propulsion and places objects using the cut out area and
the crane above this. The crane has no solid supports so relies on its centre of mass
to provide stability when in operation. The area behind the crane can be used for
storage or for living quarters.
Advantages
Has a very stable centre of mass
Manoeuvrable and self propelled
Able to operate at a large range of depths
Disadvantages
Crane can only operate in small cut out
area
May not be stable in rough water due to
lack of solid supports
3 CHOSEN DESIGN
After consideration and reference to the constraints decided by the brainstorming
team, the design which was individually deemed to be most suitable is design number
2.
After selecting the design, a few improvements were implemented and are
demonstrated in figure 19 and 20. Figure 20 also shows the impact that a load on the
gantry will have:
Figure 17
Second chosen design.
Figure 18
Third chosen design.
5. 5
Rails extended to either end of boat to ensure maximum
accuracy of placement and to allow objects to be placed in
storage area.
One side of platform opened to ease collection of loads.
Crane claw fitted with a quick
release system to aid in fast changing of
the lifting tool.
Gantry system modified to be
telescopic to be capable of dealing with
taller units or when the water level is
very low. Achieved via 2 hydraulic rams which determine
the extension and an expandable and lockable frame.
Retractable legs added replacing anchors and
provide a stronger base support. Legs can be brought all
the way in when tugged and also moved individually for
better stability on uneven ground.
After some research into the area of offshore
renewable installations, it was discovered that the
main use of the crane will be for generators and
perhaps micro containers, allowing the size of the
crane to be calculated. A micro container when
loaded has a mas of 4000kg and dimensions of
approximately 2m x 2m x 3m. A generator with a
mass of 4000kg was found to be of a similar size.1,2
From this information the dimensions of the
platform and gantry are as shown in figure 21. All
dimensions are in metres.
When considering the buoyancy aspect of the platform, a simple approach was taken.
The volume of the total base was calculated to give the upward force given by the
water. The value obtained was roughly 6million Newtons. The material selection would
need to ensure the total downward force of the unit is not more than this buoyancy
value. Materials such as Airtex® provide a large buoyancy force at a low mass however
may not be strong enough to support the gantry.3 Stainless steel is resistant to the
corrosion of the sea water but is very heavy.
4 GROUP EFFECTIVENESS
The group members were: Tommy Reynolds, David Hughes, Sherif Hennawy, Callum
Girdwood, Russel Bowring, Max Abbott and Elliot Hunter.
When the group first met, the initial idea of brainstorming quickly and accidentally
transferred to a morphological analysis. This was due to a lack of understanding
between the group and also a lack of leadership. After receiving feedback explaining
Figure 20
3D drawing of the base, legs
and gantry. FEA analysis on
gantry.
Figure 19
Side view of
telescopic gantry
with rams to aid
extension.
Figure 21
Dimensions of base of crane (m)
6. 6
the error, another meeting was held. This time the facilitator was decided as Tommy
Reynolds and it was ensured that a brainstorming session was followed. After some
team research of the various available methods, brainsketching was chosen. This
involved each team member drawing an individual basic sketch and then passing each
on to next member who added any changes/improvements they could think of. This
was repeated 4 times and then all ideas were collected. All ideas were treated with full
respect and some interesting concepts were brought up. Although some ideas may
have been considered inappropriate, certain ideas within these were of use.
Part 2: MATLAB
1 DESIGN CONSTRAINTS AND SAMPLE OUTPUT
Design Constraints given in brief4:
retracted ram length = 1.2m
extended ram length = 2.2m
load = 4 tonnes
boom length (OC) = 4m
Θmin= -20°, Θmax= 80°
angle BOC = 20°
The increments used for phi were
5 degrees and for theta a linspace
was used such that there was 50
increments between the
minimum and maximum value
input. The values a, b, ram force
and theta are rounded to 3
significant figures.
When the program was run using
the initial design constraints
given in the brief, the output
shown in figure 23 was attained.
The program allows for the user
to change all inputs and also
gives the user the option to
display different graphs at
varying phi values.
Figure 22
Crane being optimized.
Figure 23
Sample output from crane optimization code.
Figure 23
Sample output from MATLAB program.
7. 7
2 FLOWCHART
CONCLUSION
Part 1: Crane Brainstorming
The brainstorming session resulted in 25 ideas, 15 shown. The three top designs were
chosen by the brainstorming team and an optimum design was individually selected,
analysed, and drawn. This design was improved and simple calculations observed.
The group effectiveness was deemed to be poor at first but a re-meet provided a
significant improvement.
Part 2: MATLAB
The output from the script was found and a GUI was implemented to offer a simple
method of changing the values given in the brief. A flowchart demonstrated the
algorithm used and a sample output was given.
Figure 24.
Flowchart of the algorithm used to calculate the optimized crane design.
8. 8
REFERENCES
1. TLS Offshore Containers. (Unknown). Offshore Mini Container.Available:
http://www.tls-containers.com/mini-container.html. Last accessed 08/11/2014.
2. IKM Gruppen. (Unknown). Stream Generators. Available:
http://www.ikm.com/rental/subsea-/-completion-/-commissioning/equipment-
catalogue/water--/-chemical-circulation/steam-generators/bb886da5-76ca-
480e-8c46-9b835058da95. Last accessed 08/11/2014.
3. Airex AG. (2014). Always on the right course with lightweight
composites. Available: http://www.3accorematerials.com/market-
solutions/marine.html. Last accessed 07/11/2014.University of Edinburgh.
4. John Chick. (30/09/2014) Brainstorming and MATLAB Assignment: Tidal
Stream Crane Design. Last Accessed 01/11/2014.
APPENDIX
1. Equations used for buoyancy force calculation
𝑉𝑏𝑎𝑠𝑒 = (𝑇𝑜𝑡𝑎𝑙 𝐴𝑟𝑒𝑎 − 𝐶𝑢𝑡𝑜𝑢𝑡 𝐴𝑟𝑒𝑎) × 𝐷𝑒𝑝𝑡ℎ (1)
Assume that half of the boat will be submerged:
𝑉𝑑𝑖𝑠𝑝𝑙𝑎𝑐𝑒𝑑 =
𝑉 𝑏𝑎𝑠𝑒
2
(2)
𝐹𝑏𝑢𝑜𝑦𝑎𝑛𝑐𝑦 = 𝜌 𝑤𝑎𝑡𝑒𝑟 × 𝑔 × 𝑉𝑑𝑖𝑠𝑝𝑙𝑎𝑐𝑒𝑑 (3)
2. Additional initial concepts
Figure 25
Rounded rectangular base with ballast tank
and rotatable crane.
Figure 26
Rounded rectangular base with cutout and
ballast tank. Crane operates in cut out area.
9. 9
3. MATLAB Script
% --- Executes just before craneGUI is made visible.
function craneGUI_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to craneGUI (see VARARGIN)
% Choose default command line output for craneGUI
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
%show diagram of crane in the axes number 5
axes(handles.axes5)
imshow('Crane2.jpg')
%show startup picture in axis 4
axes(handles.axes4)
imshow('startup.jpg')
Figure 27
Rounded square base anchors for
support and a rotating crane.
Figure 28
Rounded rectangular base with
rotating crane and legs for
support.
Figure 29
Circular base with hole in middle for
crane operation, tugged. Legs for stability
when in operation.
10. 10
%START
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%retrieve user input for maximum ram extension
rmax = str2double(get(handles.rmax_enter, 'String'));
%retrieve user input for minimum ram extension
rmin = str2double(get(handles.rmin_enter,'String'));
%retrieve user input for maximum theta value
thetamax = str2double(get(handles.maxtheta_input, 'String'));
%retrieve user input for minimum theta value
thetamin = str2double(get(handles.mintheta_enter, 'String'));
%retrieve user input for load applied on boom
Load = str2double(get(handles.Load_enter, 'String'));
%calculate force on boom by multiplying load by gravity
W = (Load * 9.8);
%retreive user input for length of boom
L = str2double(get(handles.Boomlength_enter, 'String'));
%retrieve user input for angle BOC
BOC = str2double(get(handles.BOC_enter, 'String'));
%CHECK INPUTS ARE WITHIN SENSIBLE CONSTRAINTS
%check rmin is more than 0 and if not display error message
if rmin < 0 || rmax < 0
errordlg('Value entered for rmin or rmax is below zero, please enter a
number above 0.')
return
end
%check rmax is more than rmin and if not display error message
if rmax<=rmin
errordlg('rmax entered value is smaller than or equal to rmin entered
value. Please try again.')
return
end
%check thetamax is more than thetamin and if not display error message
if thetamax<=thetamin
errordlg('thetamax entered value is smaller than or equal to thetamin
entered value. Please try again.')
11. 11
return
end
%ensure boom length is entered as a positive number, if not display error
message
if L <= 0
errordlg('Value entered for boom length is below or equal to zero,
please enter a number above 0')
return
end
%check load applied is more than 0 and if not display error message
if W <= 0
errordlg('Value entered for applied load is below or equal to zero,
please enter a number above 0')
return
end
%CHECK FOR COMPLEX NUMBERS
%set variable tf to 1 to allow while loop to have this as initial value
tf = 1;
%set 0 for phi to allow increments in the while loop
phi = 0;
%as long as tf is equal to 1
while tf == 1
% calculate gamma using initial value of 0 for phi and increments after
each loop
%gamma is angle phi plus angle BOC which is 20 degrees in this case
gamma = phi+BOC;
%c2 found using cosine rule
c2 = ((rmax).^2 - (rmin).^2)./(cosd(gamma+thetamin)-
cosd(gamma+thetamax));
%c1 found using cosine rule
c1 = (rmax).^2 + c2*cosd(gamma+thetamax);
%calculate a using c1 and c2
a = ((c1+c2).^.5+(c1-c2).^.5)/2;
%if a is real then tf will stay 1, if not will become 0
tf = isreal(a);
%if tf = 0 (a not real) then the maximum phi value will be assigned to
%the most recent value at which it was real.
if tf == 0;
%find max phi value before goes complex
phimax = phi - (5);
end
%add increments of phi using linspace divider(can be altered for
%varying levels of accuracy)
phi = phi + (5);
end
%define variable phiarray to allow for calculation at each phi increment
phiarray = (0:5:phimax);
%define variable thetaarray for calculation at each theta increment
thetaarray = linspace(thetamin,thetamax,100);
12. 12
%set counter n = 0
n = 0;
%calculate each output for each value of phi
for phi = phiarray;
%add 1 to the counter each time the loop is completed
n = n+1;
%calculate gamma value using each increment of phi and defined angle
BOC
gamma = phi+BOC;
%calculate c2 using values input by user
c2 = ((rmax).^2 - (rmin).^2)./(cosd(gamma+thetamin)-
cosd(gamma+thetamax));
%calculate c1 using values input by user and previous calculations
c1 = (rmax).^2 + c2*cosd(gamma+thetamax);
%calculate a using values obtained from c1 and c2
a = ((c1+c2).^.5+(c1-c2).^.5)/2;
%calculate b using values for a and c2
b = c2./(2*a);
%initialise fmax
Fmax = 0;
%start loop testing all values of theta between thetamin and thetamax
for theta = thetaarray;
%calculate the ram length
r = (c1 - c2*cosd(gamma+theta)).^.5;
%calculate the force on the ram
F = (r * W * L * cosd(theta))./(b*a*sind(gamma+theta));
%if the F value calculated is larger than the original F value then
%set newest F to F max.
if F > Fmax;
Fmax = F;
%set new theta variable to the theta value if F>Fmax
theta_Fmax = theta;
end
end
%create Fmax values for each n value and save in matrix k
k (n) = Fmax;
%create theta values for each n value and save in matrix l
l (n) = theta_Fmax;
end
%find minimum Fmax value
[~, loc] = min(k);
%use the location of the minimum Fmax to find optimum phi value
optimum_phi = phiarray(loc);
%use location again to find the optimum theta value
optimum_theta = l(loc);
%use the location to set the minimum peak force to variable F_max
F_max = k(loc);
%CALCULATE THE OPTIMUM VALUES FOR OA AND OB USING OPTIMUM PHI
%find optimum gamma using the optimum phi found above
optimum_gamma = optimum_phi+BOC;
%find optimum c2 using optimum gamma value
optimum_c2 = ((rmax).^2 - (rmin).^2)./(cosd(optimum_gamma+thetamin)-
cosd(optimum_gamma+thetamax));
13. 13
%find optimum c2 found using the optimum gamma value
optimum_c1 = (rmax).^2 + optimum_c2*cosd(optimum_gamma+thetamax);
%find optimum a using the optimum values calculated for c1 and c2
optimum_a = ((optimum_c1+optimum_c2).^.5+(optimum_c1-optimum_c2).^.5)/2 ;
%find optimum b using the optimum values obtained for c2 and a
optimum_b = optimum_c2./(2*optimum_a);
%FIND VALUES OF F FOR GRAPH AGAINST THETA
%initialise variable y
y = 0;
%set up loop to find values of F at each theta at the optimum value of phi
%tell loop to go from 1 to the length of array thetaarray
for graphloop = 1:length(thetaarray)
%set new variable equal to each individual step of the loop
theta_graph = thetaarray(graphloop);
%add 1 on to y each loop iteration
y = y + 1;
%calculate optimum r value using other values obtained
r_graph = (optimum_c1 -
optimum_c2.*cosd(optimum_gamma+theta_graph)).^.5;
%calculate peak force value and save each value in matrix y
F_graph (y) = (r_graph .* W .* L .*
cosd(theta_graph))./(optimum_b.*optimum_a.*sind(optimum_gamma+theta_graph))
;
end
%plot graph of theta against ram force in axes 4
axes(handles.axes4);
plot(thetaarray, F_graph);
%set title of graph
title('Graph of Theta Against Ram Force')
%set x axis title
xlabel('Theta (degrees)')
%set y axis title
ylabel('Ram force (N)')
%put optimum phi value into the edit text box for phi
set(handles.phi_enter, 'String', sprintf('%.3g', optimum_phi));
%set GUI output boxes to display the necessary variable
%retreive optimum a value and round to 3 significant figures and show units
set(handles.aopt, 'String',sprintf('%.3g m', optimum_a));
%retreive optimum b value and round to 3 significant figures and show units
set(handles.bopt, 'String',sprintf('%.3g m', optimum_b));
%retreive optimum phi value and round to 3 significant figures and show
units
set(handles.phiopt, 'String',sprintf('%.3g degrees', optimum_phi));
%retreive optimum theta value and round to 3 significant figures and show
units
set(handles.thetaopt, 'String',sprintf('%.3g degrees', optimum_theta));
%retreive optimum peak force value and round to 3 significant figures and
show units
set(handles.Fmax, 'String',sprintf('%.3g N', F_max));
%show diagram of crane in the axes number 5
14. 14
axes(handles.axes5)
imshow('Crane2.jpg')
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%get user input for all values again to use in second pushbutton
thetamax = str2double(get(handles.maxtheta_input, 'String'));
thetamin = str2double(get(handles.mintheta_enter, 'String'));
rmax = str2double(get(handles.rmax_enter, 'String'));
rmin = str2double(get(handles.rmin_enter,'String'));
Load = str2double(get(handles.Load_enter, 'String'));
W = (Load * 9.8);
L = str2double(get(handles.Boomlength_enter, 'String'));
BOC = str2double(get(handles.BOC_enter, 'String'));
guiphi = str2double(get(handles.phi_enter, 'String'));
guigamma = guiphi + BOC;
%set value for thetaarray as before for use in this pushbutton
thetaarray = linspace(thetamin,thetamax,100);
%find optimum c2 using optimum gamma value
optimum_c2 = ((rmax).^2 - (rmin).^2)./(cosd(guigamma+thetamin)-
cosd(guigamma+thetamax));
%find optimum c2 found using the optimum gamma value
optimum_c1 = (rmax).^2 + optimum_c2*cosd(guigamma+thetamax);
%find optimum a using the optimum values calculated for c1 and c2
optimum_a = ((optimum_c1+optimum_c2).^.5+(optimum_c1-optimum_c2).^.5)/2 ;
%find optimum b using the optimum values obtained for c2 and a
optimum_b = optimum_c2./(2*optimum_a);
%initialise variable o
o = 0;
%retrieve value entered into the phi edit text box
guiphi = str2double(get(handles.phi_enter, 'String'));
%calculate the new gamma value using the entered phi and the entered angle
%BOC
guigamma = guiphi + BOC;
%find values for F at new value of phi input by user
%set loop to go from 1 to the length of the array thetaarray
for phigraph = 1:length(thetaarray)
thetaphi = thetaarray(phigraph);
%calculate r using new value
r_phigraph = (optimum_c1 - optimum_c2.*cosd(guigamma+thetaphi)).^.5;
%add 1 to the counter each time loop is completed
o = o + 1;
%calculate new F and save value in matrix o
F_phigraph (o) = (r_phigraph .* W .* L .*
cosd(thetaphi))./(optimum_b.*optimum_a.*sind(guigamma+thetaphi));
end
%plot graph in axis 4
axes(handles.axes4);
%plot graph of theta against ram force
plot(thetaarray,F_phigraph);
%set title of graph
15. 15
title('Graph of Theta Against Ram Force')
%set title of x axis
xlabel('Theta (degrees)')
%set title of y axis
ylabel('Ram force (N)')