brainstorming and matlab report
TRANSCRIPT
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
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
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
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
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
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
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
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
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
%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
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
%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
%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
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
title('Graph of Theta Against Ram Force') %set title of x axis xlabel('Theta (degrees)') %set title of y axis ylabel('Ram force (N)')