Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
NUMERICAL CONTROLLED ELECTROCHEMICAL MACHINING OF
SILICON CARBIDE/ALUMINUM METAL MATRIX COMPOSITES
A THESIS SUBMITTED TO THE GRADUATE DIVISION OF THEUNIVERSITY OF HAWAI'I IN PARTIAL FULFILLMENT
OF THE REQUIREMENTS FOR THE DEGREE OF
MASTER OF SCIENCE
IN
MECHANICAL ENGINEERING
DECEMBER 2004
ByPrasath Mungundu Sugadev
Thesis Committee
Lloyd H. Hihara, ChairpersonBruce Liebert
Mehrdad N Ghasemi Nejhad
3'1'2 S
111
Acknowledgments
I would like to thank my supervisor, Prof. Lloyd H.Hihara for giving me an opportunity to
pursue a master's degree in Mechanical Engineering. I am grateful for his kindness and
patience and for teaching me how to develop ideas for this project. I would also like to
thank Dr. Bruce Liebert and Dr. Mehrdad N Ghasemi Nejhad for agreeing to serve on the
thesis committee. I am greatly indebted to TRW, Inc (Contract #HA 6341RA3S) for their
financial support for the project.
Finally, I would like to thank Mr. Ben Respicio for helping in the machining of the
electrochemical tool and Ms. Carrie Matsuzaki for helping in the purchase of various
instruments. I would also like to thank Mr. Thanigai arasu Govindaraju for his comments
and useful suggestions.
IV
ABSTRACT
The possibility of machining cavities and channels on aluminum reinforced silicon carbide
metal matrix composites (SiC/AI MMCs) was studied using a numerically controlled
electrochemical milling machine (NC-ECM). At first, potentiodynamic anodic
polarization experiments were conducted to study pitting potentials and dissolution rates;
and the results revealed that the silicon carbide particles do not significantly participate in
the dissolution of SiC/AI MMCs. Next, an NC-ECM was designed and feasibility studies
were conducted on machining SiC/AI MMCs. ECM is a controlled anodic electrochemical
dissolution process of the workpiece (anode) with the tool (cathode) in an electrolytic cell.
A simple universal electrochemical tool was designed for the ECM. The tool position and
power supply were controlled using software written in Microsoft Visual Basic 6.0. Metal
removal rates were governed by Faraday's law of electrolysis. Cavities in the SiC/AI
MMCs were machined by advancing the electrochemical tool into the workpiece and
channels were done by scanning the electrochemical tool over the workpiece. Results
obtained from electrochemical experiments conducted at 60 Alcm2 current density
showed the best surface finish, proving that the NC-ECM might be a promising
supplement to existing traditional machining of SiC/AI MMCs.
Figure 3.1
Figure 3.2
Figure 3.3
Figure 3.4
Figure 4.1
Figure 4.2
Figure 4.3
Figure 4.4
Figure 4.5
Figure 4.3.1
Figure 4.3.2
Figure 4.6
Figure 4.7
Figure 4.8
Figure 4.9
Figure 4.10
Figure 4.11
Figure 4.12
Figure 4.13
v
LIST OF FIGURES
Page
Typical anodic polarization curve for aluminum 13
SiC40piAl MMC polarization electrode , 13
Potentiodynamic polarization cell arrangement 14
Potentiodynamic polarization of SiC40piAl MMC at l.OmVIsec in
de-aerated condition under natural convection 14
Cylindrical cross section tool 17
Square cross section tool 18
Square cross section tool modified 18
Electrochemical tool after fabrication 18
Plexi-glass sample holder 19
Flowchart for ECM software , , 23
Screenshot of the plunge experiment program 25
Software user interface 29
ECM plunge experiment 31
Cham1el in Al/SiC MMC 33
ECM Channel experiment I 34
ECM Channel experiment II 35
Numerical controlled electrochemical machine 37
CNC machine 38
Electrolyte system 38
Page
VI
Figure 4.14 Plunge experiment on 6061-T6 Al at 30A/cm2 depth =0.0625in
Electrolyte: 2M Sodium nitrate solution 040
Figure 4.15 Plunge experiment on SiCsop/AI MMC at 10 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution 040
Figure 4.16 Plunge experiment on SiCsoplAl MMC at 20 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution Al
Figure 4.17(a) Plunge experiment on SiCsop/AI MMC at 20 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution '" Al
Figure 4.17(b) Plunge experiment on SiCsop/AI MMC at 20 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution 42
Figure 4.18(a) Plunge experiment on SiCsop/AI MMC at 30 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution 42
Figure 4.18(b) Plunge experiment on SiCsoplAl MMC at 30 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution 043
Figure 4.19 Plunge experiment on 6061-T6 Al at 60A/cm2 depth = 0.0625 in
Electrolyte: 2M Sodium nitrate solution 043
Figure 4.20(a) Plunge experiment on SiC40p/AI MMCs at 10 A/cm2 depth = 0.05 in.
Electrolyte: 2M Sodium nitrate solution 44
Figure 4.20(b) Plunge experiment on SiC40p/AI MMCs at 10 A/cm2 depth = 0.05 in.
Electrolyte: 2M Sodium nitrate solution 044
Figure 4.21 (a) Plunge experiment on SiC40plAI MMCs at 40 A/cm2 depth = 0.05 in.
Electrolyte: 2M Sodium nitrate solution 045
vii
PageFigure 4.21 (b) Plunge experiment on SiC4op!Al MMCs at 40 A/cm2 depth = 0.05 in.
Electrolyte: 2M Sodium nitrate solution .45
Figure 4.22(a) Plunge experiment on SiC40p/AI MMCs at 60 A/cm2 depth = 0.05 in.
Electrolyte: 2M Sodium nitrate solution 46
Figure 4.22(b) Plunge experiment on SiC4op!A1 MMCs at 60 A/cm2 depth = 0.05 in.
Electrolyte: 2M Sodium nitrate solution .46
Figure 4.23(a) Plunge experiment on SiCsop/AI MMCs at 20 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution + 0.4% acetic acid .47
Figure 4.23(b) Plunge experiment on SiCsop/AI MMCs at 20 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution + 0.4% acetic acid .47
Figure 4.23(c) Plunge experiment on SiCsop/AI MMCs at 20 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution + 0.4% acetic acid , .48
Figure 4.24(a) Channel experiment on 6061-T6 Al at 20A/cm2
Electrolyte: 2M Sodium nitrate solution .48
Figure 4.24(b) Channel experiment on 6061-T6 Al at 20A/cm2
Electrolyte: 2M Sodium nitrate solution .49
Figure 4.25(a) Channel experiment on SiCsop/AI MMCs at 20 A/cm2
Electrolyte: 2M Sodium nitrate solution .49
Figure 4.25(b) Channel experiment on SiCsop/A1 MMCs at 20 A/cm2
Electrolyte: 2M Sodium nitrate solution 50
Figure 4.25(c) Channel experiment on SiCsop/AI MMCs at 20 A/cm2
Electrolyte: 2M Sodium nitrate solution 50
Page
Vlll
Figure 4.26(a) Channel experiment on 6061-T6 Al at 60 A/cm2
Electrolyte: 2M Sodium nitrate solution 51
Figure 4.26(b) Channel experiment on 6061-T6 Al at 60 A/cm2
Electrolyte: 2M Sodium nitrate solution 51
Figure 4.27(a) Square channel experiment on 6061-T6 Al at 60 A/cm2
Electrolyte: 2M Sodium nitrate solution 52
Figure 4.27(b) Square channel experiment on 6061-T6 Al at 60 A/cm2
Electrolyte: 2M Sodium nitrate solution 52
Figure 4.28(a) Channel experiment on SiC40p/AI MMCs at 60 Alcm2
Electrolyte: 2M Sodium nitrate solution 53
Figure 4.28(b) Channel experiment on SiC40p/AI MMCs at 60 Alcm2
Electrolyte: 2M Sodium nitrate solution 53
Figure 4.29(a) Square channel experiment on SiC40p/AI MMCs at 60 A/cm2
Electrolyte: 2M Sodium nitrate solution 54
Figure 4.29(b) Square channel experiment on SiC40p/AI MMCs at 60 A/cm2
Electrolyte: 2M Sodium nitrate solution 54
Figure 4.29(c) Square channel experiment on SiC40p/AI MMCs at 60 Alcm2
Electrolyte: 2M Sodium nitrate solution 55
Table 3.1
Table 4.1
Table 4.2
Table 4.3
IX
LIST OF TABLESPage
Anodic polarization ofSiC4op/AI MMCs 11
Theoretical weight loss calculation ,. " 56
Current efficiency for ECM plunge experiment. 56
Electrolyte conductivity 57
TABLE OF CONTENTS
Page
Acknowledgelnents .iii
Abstract .iv
List of Figures v
List of Tables viii
Chapter 1: Introduction 1
1.1 Purpose of Research 1
1.2 Research Objectives 3
1.3 Thesis FOflTIat 3
Chapter 2: Literature Survey .4
Chapter 3: Anodic Polarization Experiment 6
3.1 General Background 6
3.2 Material Description 7
3.3 Fabrication of Samples 9
3.4 Experiment Procedure, Conditions, and Set up 10
3.5 Results 10
3.6 Discussion 11
3.7 Conclusions 12
Page
Chapter 4: Electrochemical Machining Experiment 15
4.1 General Background .15
4.2 Machine Tool Design .17
4.3 Numerical Controlled Programming 20
4.3.1 Programming CNC machine 20
4.3.2 Programming Power Supply 21
4.3.3 Program Description 22
4.3.4 ECM software 29
4.4 Experiment Calculation '" 30
4.4.1 Plunge experiments in constant current mode 31
4.4.2 Channel experiments in constant current mode ..33
4.5 Experiment Procedure, Conditions, and Set up 36
4.6 Results 39
4.3.1 ECM Plunge experiment 39
4.3.2 ECM channel experiment I .48
4.3.2 ECM channel experiment II 50
4.7 Discussion 58
4.8 Conclusions 61
Chapter 5: Conclusions 62
Page
Appendix A 64
Appendix B 65
References 83
Chapter 1
INTRODUCTION
1.1 Purpose of Research
Metal-matrix composites (MMC) are composite materials in which metal is
reinforced with either particles or fibers. Mechanical, physical, and thermal properties of
MMCs are controlled by the volume fraction of particles or fibers. MMCs find
applications in various fields such as ground vehicles, satellites, and various industrial
applications (1). The coefficient of thermal expansion (CTE) for aluminum reinforced
silicon carbide (SiC/AI) MMCs is less than half of that of 6061-T6 AI. SiC/AI MMC is an
excellent material for electronic packaging due to its light weight and low thermal CTE,
which is relatively close to gallium arsenide (2).
Although SiC/AI MMCs have been used in many fields, they are difficult to
machine because of its high hardness and abrasive property. Conventional machining
failed due to excessive tool wear and high cost (3). Electrochemical machining (ECM) can
be an alternate method for machining SiC/AI MMCs. ECM is a non-conventional
machining process used mainly for machining high-strength metals. ECM is a controlled
anodic electrochemical dissolution process of the workpiece (anode) with the tool
(cathode) in an electrolytic cell (4). An ECM involves passing a current through an
electrolyte in the gap between a workpiece and a suitably shaped tool. The dissolution of
the workpiece occurs due to electrolytic action and the workpiece gets the mirror shape of
the tool (5). ECM is used to machine jet engines, turbines blades, and all processes that
2
require making complicated shapes (4) Applications of ECM are restricted due to the
difficulties involved in preparing a pre-shaped cathode tool and low accuracy of
machining caused by uncontrollable local gaps between the anode and cathode (4) The
primary objective of this research is to develop a prototype numerically controlled ECM
(NC-ECM) with a universal electrode tool that can make cavities and channels in SiC/AI
MMCs with a good surface finish.
3
1.2 Research Objectives
The basic objective of this research was to develop a NC-ECM with a universal
electrochemical tool for making cavities and channels in SiC/AI MMCs and to identify
parameters for producing an excellent surface finish on SiC/AI MMCs. The first approach
of excellent surface finish was made by varying the current densities at an electrochemical
tool surface. The second approach was made by changing the electrochemical tool cross
section.
1.3 Thesis Format
The literature review of nontraditional machining on a metal matrix composite
material is discussed in Chapter 2. Descriptions of electrode fabrication, experiment
procedure, setup, conditions, and results obtained on anodic polarization of MMC are
discussed in Chapter 3. Chapter 4 gives a detailed description of electrochemical
machining tool, numerically controlled programming, sample fabrication, experiment
setup, procedure and results obtained on electrochemical machining experiment. Chapter 5
provides a conclusion.
4
Chapter 2
LITERATURE SURVEY
The increasing number of aluminum based MMCs applications in the aerospace
and automobile industries explains why many researchers have studied them exclusively.
High hardness of this material resulted in severe abrasive wear on conventional tools even
with a high strength diamond cutter. Narahari, Pai, and Pillai (7) studied machining of
SiC/AI MMCs with conventional high speed steel and tungsten carbide tools by varying
cutting speed, feed rate, and depth of cut for different volume fractions of SiC
reinforcement particles. The tool life of both conventional high speed steel and tungsten
carbide tools decreased as the coarseness of SiC particles increased in the MMCs.
Durante, Rutelli, and Rabezzana (8) compared performances of standard tungsten
carbide tools, polycrystalline diamond tools, and chemical vapor deposited (CVD)
diamond coated carbide tools in machining SiC/AI MMCs. Results obtained showed
increased tool life but frequent detachment of the coating in the diamond coated tool.
Manna and Bhattacharyya (9)(10) studied machining of SiC/AI MMCs with
uncoated/coated tungsten carbide tool materials and found the relationship between
1. average flank wear and cutting time
2. maximum flank wear and machining length
3. surface roughness and cutting speed
4. surface roughness and feed rate
5. surface roughness and depth of cut
6. surface roughness and inclination angle
5
Studies provided an economic machining solution by utilizing fixed rhombic
tooling during processing of SiC/AI MMCs.
Xiaoping and Seah (II) observed that the main reason for tool wear in cutting
SiC/AI MMCs using tungsten carbide was that the percentage of the reinforcement in the
MMC exceeds a critical value. They developed a map showing the critical reinforcement
percentage of MMCs varying with the density and size of reinforced particles and the
radius of cutting edge.
Research on non-conventional machining MMCs includes examining the electric
discharge machine (EDM) and ECM. The advantage of using a non-conventional
machining is that it does not depend on the hardness of the workpiece. The EDM uses a
process that removes the metal by generating high frequency sparks through a small gap
filled with a dielectric fluid. Ramulu and Taya (12) conducted feasibility studies on
machining SiC/AI MMCs with EDM. Mohan, Rajadurai and Satyanarayana (13) also
evaluated the feasibility of machining SiC/AI MMCs using an EDM. The studies revealed
the optimum process parameters for different volume percentages of SiC and electrodes
for maximum material removal rate were obtained. Hihara and Panquites, IV studied the
feasibility of using ECM of SiC/AI MMCs using electrochemical techniques (2).
6
Chapter 3
ANODIC POLARIZATION EXPERIMENT
3.1 General Background
Potentiodynamic anodic polarization yields information on corrosion rates,
passivity, pitting potential, and maximum dissolution current density. Figure 3.1 shows the
typical potentiodynamic polarization curve for aluminum (AI). At the open-circuit
potential (OCP) the reaction occurring at the electrode under de-aerated conditions is
given below:
Anodic reaction:
Al~ Ae++3e-
Cathode reaction:
2H+ +2e- ~ H2
The oxidation of aluminum that produces electrons is termed as the anodic
reaction. The hydrogen evolution reaction occurring at the cathode consumes electrons
produced by anodic reaction. Anodic polarization was conducted by changing the
potential to a more positive direction causing the working electrode to become an anode.
Anodic polarization enhances the anodic reaction. Region AB in Figure 3.1 represents the
increase in current density due to the anodic pOlarization. A passive film of aluminum
oxide is formed on the electrode surface and is due to aluminum ions reacting with
hydroxyl ions in the electrolyte (16). Region BC in Figure 3.1 represents the passive region
due to the formation of a film on the surface of the metal. The passive film breaks down
7
above a critical potential called as pitting potential. Region CD represents the pitting
regime where formation of pits on the metal surface causes a steep increase in the
corrosion current. ECM experiments were conducted above the pitting potential of
aluminum. Region DE represents diffusion-limited, dissolution of aluminum ions from the
electrode to the bulk solution.
3.2 Material Description
3.2.1 Electrolytes
The electrolytes used for polarization and ECM experiment are given below.
3.2.1.1 Sodium nitrate (2M)
A solution of 2M sodium nitrate (NaN03) was prepared by mixing 2M of reagent
grade crystalline sodium nitrate in 1L of ultra pure water (18mO.cm).
3.2.1.2 Sodium nitrate (2M) in 0.4% acetic acid solution
The solution was prepared by mixing 2M of reagent grade crystalline sodium
nitrate in 0.4% acetic acid solution. The 0.4% acetic acid solution was prepared by adding
4ml of acetic acid in 1L of ultra pure water (18mO.cm) in a standard measuring flask.
3.2.2 Electrodes
The electrodes used for polarization and ECM experiment are given below.
8
3.2.2.1 SiC4op/6061 Al MMCs
SiC4op/6061 Al MMCs were manufactured by Advanced Composite Materials
Corporation. Powdered 6061 Al and SiC particles were homogeneously blended and
vacuum hot pressed into a solid billet. The instrument grade MMC was used to make
electrodes for both polarization and ECM experiments. MMCs contain SiC particles
with a mean diameter of 3.5 11m.
3.2.2.2 SiCsop/AI Alloy MMCs
SiCsop!Al Alloy MMCs were also used to make electrodes for ECM experiments.
3.2.2.3 Copper-nickel (C71500) alloy
A copper-nickel alloy (C71500) was used to make cathode for ECM experiment.
Copper-nickel alloys (C71500) were manufactured by the Alaskan Copper and Brass
Company. Copper-nickel alloy (C71500) containing a chemical composition of 69.5%,
copper, 30.0%, nickel and 0.5%, iron was used for the electrochemical machine tool.
C71500 has an excellent corrosion resistance and a good creep resistance at elevated
temperatures. C71500 can withstand high temperature generated in the electrochemical
cell.
3.2.2.4 6061-T6 Al
Initial ECM experiments were conducted using 6061-T6 AI. The alloying elements
in weight percents are 0.3% Cu, 1.0% Mg, 0.6% Si, and 0.2% Cr.
9
3.3 Fabrication of Samples
SiC/AI MMCs samples having dimensions of 5.5x5.5mm were fabricated for the
polarization experiments. The samples were cut using a Buehler-Isomet™ low-speed
diamond saw with a Buehler diamond blade series 15 high carbon (HC) diamond and
Buehler Isocut fluid. After they were cut, samples were ultrasonically cleaned and dried.
GC electronics conductive silver paint was applied to one side of the sample and allowed
to dry for 30 minutes at 70°C. A copper wire was attached to the back of the specimen
using silver conductive epoxy, which was cured for 30 minutes at 70°C to form an
electrical connection between the sample and the copper wire. The copper wire was
enclosed in a glass tube and sealed with epoxy adhesive to isolate the copper wire from the
solution. All sides of the composite sample were sealed in epoxy except the face. The
surface of the electrodes was ground on a variable speed Buehler 6 grinder/polisher using
the 120, 180, 320, and 400 grit SiC grinding paper and was polished in a 0.3j1m finish
with an alpha alumina powder followed by 0.05j1m finish with gamma alumina powder.
The surfaces were kept wet and rinsed with 18 MO.cm ultra pure water before the
experiment. The electrode after fabrication was shown in Figure 3.4.
3.4 Experiment Procedure, Conditions, and Set-up
Potentiodynamic polarization experiments were performed with a computer
controlled EG&G Princeton applied research model 283 Potentiostat. The polarization
experiment was conducted in a double-walled glass electrochemical cell. The temperature
was maintained at 30oC±0.IOC with a Fisher Scientific Isotemp refrigerated circulator
attached to the cell. The three electrodes system consisted of a test specimen as the
10
working electrode (WE), platinum counter (CE), and a saturated calomel reference
electrode (RF). A salt bridge and a Lugin probe provided ionic contact between the
working and reference electrode. Nitrogen was circulated in the cell to conduct
experiments in the de-aerated condition. Experiments were conducted with the setup
shown in the Figure 3.3.
The open-circuit potential was recorded for one hour before the polarization
experiment started. Anodic polarization of the electrode was conducted in a de-aerated
condition at 30°C at a scan rate was 0.1 mV/ sec.
3.5 Results
The open circuit potential (Ecorr) was recorded for one hour in de-aerated
condition. Anodic polarization experiments of a SiC40plAI electrode were conducted in a
2M NaNG3 and a 2M NaNG3 solution with 0.4% acetic acid. The corrosion potential
(Ecorr), pitting potential (Epit), passive-current density (ipass), and maximum dissolution
current density (imax) are tabulated in Table 3.1.
11
Table 3.1. Anodic polarization of SiC40piAl MMCs
Ecorr Epit ipass imax
Experiment SO' SO' SO' SO'
(V) (V) (A/cm2) (A/cm2
)
SiC40p/Al in -0.835 3.42E-02 1.83 0.03 3.IOE-06 1.147E-05 0.129 0.0212M NaNO)
SiC40plAI in2M NaNO)
-0.526 3.69E-02 1.85 0.03 3.87E-06 1.147E-05 0.134 0.016+
O.4%aceticacid
Standard deViation
3.6 Discussion
The potentiodynamic polarization curves for SiC40piAl MMC were found to be
similar to ultra pure Al under natural convection. Corrosion potentials were found to be
significantly less than the pitting potential, and therefore, corrosion at the open-circuit
potential (zero current) should be negligible. Therefore, the metal removal in the sodium
nitrate should be caused only by the ECM process. The pitting potential for SiC4op!Al
MMC was found to be about 1.8VseE. The pitting potential for SiC40piAl MMC and ultra
pure Al was found to be in the same range, revealing that the SiC particles in SiC40piAl
MMC did not significantly affect the breakdown of potential.
12
3.7 Conclusions
1. SiC particles do not significantly participate in the dissolution of SiC4op/6061 Al
MMCs
2. SiC4op/6061 Al MMCs has a good corrosion resistance in a 2M sodium nitrate
solution and a 2M sodium nitrate + 0.4% acetic acid solution at the open-circuit
potential.
3. Potential above pitting potential (~ 1.9VseE) can be used for ECM.
Anodic polarization -Aluminum
c
AOcp ---
CurreJi: density I (Als q. an)
D
E
13
Figure 3.1. Typical anodic polarization curve for aluminum
Figure 3.2. SiC40p!AI MMC polarization electrode
14
Figure 3.3. Potentiodynamic polarization cell arrangement
3
2.5
0.5
Anodic polarization iC~C
- Sodium ttrate
---..- SodiumNitrate in0.4% Acetic Acid
O+----..,.------.-------r------r------r-----,
l.ooE-06 l.ooE-05 l.ooE-04 1.00E-03 1.00E-02 l.ooE-01 1.00E+OO
Current Density I (Alsq.cm)
Figure 3.4. Potentiodynamic polarization ofSiC.wpIAl MMC at 1.0 mY/sec in de-aeratedcondition under natural convection
15
Chapter 4
ELECTROCHEMICAL MACHININGEXPERIMENT
4.1 General Background
ECM is a method of machining metal that uses electrolysis techniques. A high-
ampere and low-voltage direct current is applied between the cathode and the anode. A
metal dissolution reaction occurs at the surface of the anode and a hydrogen evolution
reaction occurs at the cathode. An ECM electrolytic cell consists of an anode, which is
referred to as the workpiece; a cathode, which is referred to as a tool; an electrolyte; and a
direct current (DC) power source. In this ECM method, the current distribution in the tool
shapes the workpiece. Therefore, the method does not need a hard shaping tool (3). The
distance between the tool and the workpiece is referred to as the working gap. Maintaining
a constant working gap produces a constant dissolution rate at the workpiece. At the end
of machining, the workpiece gets the inverse of the tool detail (5). Typical tool materials
are copper, brass, and stainless steel (6). The electrolyte provides ionic conductivity for the
ECM cell. Due to high current density, metal oxide forms as a result of the oxidation
reaction at the workpiece (anode). Hydrogen gas, which bubbles from the reduction
reaction at the tool (cathode), accumulates in the small working gap. Therefore, fresh
electrolyte is pumped at high velocity through the gap to remove the metal oxides and heat
generated between the two electrodes.
16
In electrochemical drilling, a hollow tool insulated on the side is used, and the
electrolyte is pumped down through the center of the hollow tool. When the tool is slowly
lowered, the material at the bottom of the tool is removed. Electrochemical machining of
particle reinforced MMCs shows that the particles are not involved in the electrochemical
process. Therefore, the surface finish depends on the mean diameter of the reinforced
particles (2).
17
4.2 Machine Tool Design
Experiments were conducted using cylindrical and square flat profile tools with the
dimensions as shown in Figure 4.1 to Figure 4.3. A 15 AWG (American Wire Gauge)
copper wire was attached to the tool using conductive silver paint (GC Electronic), which
was allowed to dry for 30 minutes at 70°C. The connection was later sealed in an epoxy
adhesive (Loctite 0151 Hysol), which was cured for 2 hours at 70°C. The tool sides were
also insulated with epoxy adhesive. Excess epoxy was machined off using a small lathe
(Sherline). Figure 4.4 shows the tool after fabrication.
For the ECM experiment, a workpiece was fixed on a plexi glass substrate (Figure
4.5) using the epoxy adhesive around the workpiece perimeter. A 15 AWG copper wire
was attached at the bottom of work-piece with a conductive silver epoxy (Mgchemicals)
and allowed to cure for 30 minutes at 70°C. The epoxy adhesive was applied to the
workpiece bottom to insulate the copper wire from the electrolyte.
4mm:to.15mll -
2.3l1125mm~inl .!'l:LI
6.35mmfJ25inl_ :_ItIII,-I
III,IIII
5lIm:tOD5mm _ -
14mm±.O.15mm
3mm_O.15mm
2mm_015mm
18mmt015mm
O.5mllli005mmf;lnlyll!giln .OD5mm is criltaJ)
Figure 4.1. Cylindrical cross-section tool
2.98125mm(3.e2in) J.i :.LI I
MSmIl~l25"m)_ : : _I II II II I
5 IItD.ISIIl _::_
6.35mIllG)25i11) - I I
I II II I
4mllUl.1Smm -: : I II I, I -
14mm±'OJ5mm
3mmtO 15mm
2mm±'015mm
lBmm±'O.15mm
o5mm to 05mm(on~ region with005mmiscriOCaJ)
Figure 4.2. Square cross-section tool
18
1.51n
O.25in
O.25in;.1" ,l'
IIIIII
I
l1jf:~-I II I
I '
A >1
O.157in
3/32 in
Figure 4.3. Square cross-section tool modified
Figure 4.4. Electrochemical tool after fabrication
19
TOP VIEW
0.61n
0.261n
o0.261n
o1.6in
21n
>Ie Ieh
0.61 In'I'" hI<
0.61 In
~r1.61n
-1'--------------,...+31n
SIDE VIEW
rO
.
SinI1 In
~rv
1.61n 7\
:>r ..f31n
Figure 4.5. Plexi-glass sample holder
20
4.3 Numerically Controlled Programming
NC- ECM system has the following subsystems:
• A computer numerically control (CNC) machine
• A power supply
• An electrolyte circulation system
The basic operating parameters controlled are as follows:
• Tool feed rate and tool position
• Current density at the tool surface
• Inlet and outlet pressure of the electrolyte (or electrolyte flow rate)
NC-ECM was conducted at constant current condition. The electrolyte entrance
and outlet conductivity, electrolyte temperature, gas concentration in the electrolyte, and
voltage across the electrodes were not considered for the ECM experiments.
4.3.1 Programming computer numerically controlled (CNC) Machine
A Sherline 3 axis CNC milling machine was modified to create the NC-ECM. The
milling machine has a step-motor on each axis, one for moving the tool vertically and two
others for moving the work-piece in the horizontal direction. The stepper motors were
controlled by a QuickPhase-PC card from MicroKinetics Corporation. QuickPhase is a
driver and indexer for stepper motors and is compatible with an IBM PC. A 12 VDC
PWR14E power source was used to provide power for the stepper motors. An Instep for
Windows motion control software was installed. It includes a device driver for
QuickPhase-PC card and commands for the following operations:
1. Machine four axis linear
2. Two axis circular interpolation
21
3. Ramping
4. Keyboard interactive jog with dispense
5. Jog key selection
6. External device control and more.
A device driver and library files were loaded every time Windows was loaded. The
software driver and commands were royalty free and designed to be used from any
programming language . Microsoft Visual Basic 6.0 language was used to communicate
with the CNC machine throught the standard command. The PC card was initialized using
a specific sequence of commands before using the full command set.
1) K command was used to specify the card address
2) Z command was used to set the card type
3) U command was used to set the motor power
After these commands were issued, the card was ready to accept any command on
the command list.
4.3.2. Programming power supply
Agilent 6032A auto~ranging DC power supply was programmed using Microsoft
Visual Basic. The instrument driver installs dynamic linked library files (Hp66xx_32.dll)
that contain a set of executable functions and constants that are used for control of the
power supply. The software driver and functions are royalty free and designed to be used
from any programming language.
22
4.3.3. Program Description
Visual Basic (VB) programs were created as event-driven applications. The code
representing the main body of the program was stored in an FRM file. The code executes
when a VB fonn receives an event such as a button click (14).
4.3.1) for the ECM software is given below:
The flowchart (Figure
Plungt'experi men!
y's
set CUITelit '" IIlpUt valueres,dt '" c,111 (plunge)
channelexperi ment
Get Inputchannel speed,charmellength
set cllrrellt '" input valueset motor xaxis speed'" channelspeed
r!love to distance'" dl.'lllneIlellgtllresult'" call (plunge)
set Inotor xaxls speed'" channelspeedmove to distance'" -ehannellength
result =call (plunge)
no
no
RechUlgleexperiment
, sGet input
channel speed ,chamIeIlength,channel width
set current'" input valuemotor x-yaxis speed'" clwnnelspeedmove lTIotor in rect,mgular manner
input = c!wnnel length, channeJwidlhresult = call (plunge)
no
Figure 4.3.1. Flowchart for ECM software (continued on next page)
23
plunge subroutine
Get inputplunge speed. plunge depth
nearestspeedround(plungespeed/O.OOO 125)*0.000 125
loopinterval··( neares tspeed * 1000lip lunges peedInitalize driver for CNC and powersupply
i~1
move tool to a distance = nearestspeedloopcount = nearestspeed*i
delay = loop interval set in milliseconds
loopcount >.=plungeclepth
yes
Return Plunge
no
Figure 4.3.1. Flowchart for ECM software
The following shows the step by step list of instructions on how the ECM plunge
experiment program was developed using Microsoft Visual Basic 6.0.
To create a new project:
Select File INew Project Workspace
Click OK
To add the hp66xx.bas file to the project:
Select File IAdd File
Browse to and select the hp66xx.bas file
24
Click Open
To change the focus to Forml and insert three text boxes and a button on the form:
Click on Form I
Click on the text box on the toolbox
With the mouse point over Form I hold down the right mouse button and drag a rectangle
where the text box will be placed. Release the right mouse button and a text box will be
placed on Form I (see Figure 4.3.2). Repeat the same to insert three text boxes.
Click on the command button on the toolbox.
With the mouse point over Form I hold down the right mouse button and drag a rectangle
where the button will be placed. Release the right mouse button and a command button
will be placed on Forml.
To change the name on the button:
Click on the command button just created.
Change the focus to Properties-Form I, with Command1 CommandButton visible in the
drop down list box.
Edit the name of the caption to be Run
Press <Enter> to enter the change
25
xID 1335 x515
Pro ectl (Projed:l.vbp)
- 'Forms~ Forml (Forml.frm)
"' ':"1 Modules4 Modulel (hp66xx,bas)
rope.ltles - (omnl<Jndt £!
Name) Corrrnarxj I
I· 3Do&tflOOOCOJF&.False_._Run
ausesValfdatlon Trueault False
DisabledP~t\te (None)• ture (None)
aglCClll (None)
IlOllllTlilndl~on
Alphabetic ICaleqorlzed I
TexlL
: 1exll
. • ....• ·1'· .. '." ..••.•
:'::::':Text-3-- .::~::::: : : : ,: : . _:. RI6I •. : : :
..•• a. ::.:::::.::: ... :'. .... ,I..•.. ."::.
~j~ct1 •"form1 (form)
laption'-----~~-----~---.... Returns/sets the text !isplayed il an object's ttle bar or below an object's
"--- ~ ~ icon,
~. ~.
X
Geileral
Eile ~dit :tiew ~oject F!2rmat ~ebU\l Bun Q!!ery Dicqam lools !?ldd-Ins W"ndow ~
• it] (] EJ gJ ~
00-.J~
r5l "-
~~
Figure 4.3.2. Screenshot of the plunge experiment program
Change the focus to the project window
Highlight Form I
Click View Code
Insert the following code:
__.m..m_l( -V1 PlUI Ig:: experiment_m.•..nnm.m.._....m .._•....•....•..
\ \\p\I'io.!hi (,) }O(('_ I'ra'ath. lIa\vaii C\)no,ion lab. lJII Manoa. III, USA
Dim plungespeed, plungedepth, step, distance 'declare variablc'iDim dist As IntegerDim voltage As Double, current As DoubleDim measvoltage As Double, meascurrent As DoubleDim instrumentHandle As Long, err As Long\ till' Ihm( \llIi,lhlc, dcdllcd are Public
Public Sub Commandt_Click 0'On !Ill' c(Jlllrnand butt,)]) click event the program will do following events
26
plungespeed = Val(Textl.Text)' value in the textboxl is assigned to plunge speed.plungedepth = Val(Text2.Text) , value in the textbox2 is assigned to plunge depth.nearestspeed = Round(plungespeed / 0.000125) *0.000125
motor can move in number of steps that is in multiple oro.oon 125in.herC'i'r're of steps \vas found and was set to stepper motor speed
Timerl.Interval = (nearestspeed * 1000) / plungespeedTimerl.Enabled = True
function.[UI1Ct!C)i1 o,t:clHes the codes in the loop at regular interval specilied.
in milliseconds.of nearest and plunge speeds ~"""·;f;,,d
and 1.5
Communicationerr'= hp66xxJnit("GPIBO::5::INSTR", VI_TRUE, VI_TRUE, instrumentHandle)check instrumentHandle, err
err = hp66xx_reset(instrumentHandle)check instrumentHandle, err'[.nable error done at the end of every function callerr = hp66xx_errorQueryDetect(instrumentHandle, VI_TRUE)check instrumentHandle, err
voltage = 60current = Val(Text3.Text) textbox3 is assligm;d to ECM current
rum onerr = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, err
Currenterr = hp66xx_getVolt(instrumentHandle, HP66XX_VOLT_Q, voltage)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, errerr = hp66xx_measureVolt(instrumentHandle, measvoltage)check instrumentHandle, ert
level the output term inalserr = hp66xx_measureCurr(instrumentHandle, meascurrent)check instrumentHandle, err
the sessionhp66xx_close (instrumentHandle)
End Sub
Private Sub Form_LoadO'On the event the program will do j()lIowing events
MyCommand$ = "k592" Dip Switch setting for MicroKinetics PC cardsCall DriverSend(MyCommand$) 'Send the command to the DriverSend rountineMyCommand$ = "zl" 'Selects the controller model, I selects the QuickPhase half stepping modeCall DriverSend(MyCommand$)MyCommand$ = "uI5" 'selects power settings,15 selects the IOOi)~O power levelCall DriverSend(MyCommand$)Timerl.Enabled = False
Textl.Text = 0.00025Text2.Text '= 0.001Text3.Text = 3.92End Sub
Public Sub DriverSend(MyCommandS)FileNumber = FreeFile 'tlse the FreeFik function to tind the next available
file number to avoid crashingOpen "ISDRV "For Output As #FileNumber 'Open the driver for Output of command
Print #FileNumber, MyCommand$ 'Send command string to driverClose #FileNumber 'Close driverEnd Sub
Private Sub Form_Unload(Cancel As Integer)I(mn unload even! DC power supply voltage and current is set to zero
err = hp66xx_init("GPIBO::5::INSTR", VI_TRUE, VI_TRUE, instrumentHandle)check instrumentHandle, errerr = hp66xxJeset(instrumentHandle)check instrumentHandle, errerr = hp66xx_errorQueryDetect(instrumentHandle, VI_TRUE)check instrumentHandle, errvoltage = 0current =0err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getVolt(instrumentHandle, HP66XX_VOLT_Q, voltage)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, errerr = hp66xx_measureVolt(instrumentHandle, measvoltage)check instrumentHandle, errerr = hp66xx_measureCurr(instrumentHandle, meascurrent)check instrumentHandle, errhp66xx_close (instrumentHandle)
End Sub
Private Sub Timert_TimerOstep = step + 1dist = nearestspeed! 0.000125 'convert inches to steps
MyCommand$ = "M" & "0" & "," & "0" & "," & -dist & "," & "0"moves to a distance dis! vertically downwards.
Call DriverSend(MyCommand$)distance = nearestspeed *step '"fotal djsli.UJce movedIfdistance >'= plungedepth Then
time move to a distance of nearest speedit to the plunge depth
'Once was reached. current was set to zero and timer was disablederr = hp66xx_init("GPIBO::5::INSTR", VCTRUE, VI_TRUE, instrumentHandle)
check instrumentHandle, errerr = hp66xx_reset(instrumentHandle)check instrumentHandJe, errerr = hp66xx_errorQueryDetect(instrumentHandle, VI_TRUE)check instrumentHandle, errvoltage = 0current =0err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)checkinstrumentHandle, errerr =hp66xx_getVolt(instrumentHandle, HP66XX_VOLT_Q, voltage)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)
27
check instrumentHandle, errerr = hp66xx_measureVolt(instrumentHandle, measvoltage)check instrumentHandle, errerr = hp66xx_measureCurr(instrumentHandle, meascurrent)check instrumentHandle, errhp66xx_close (instrumentHandle)
TimerI.Enabled = FalseEnd IfEnd SubSub check (instrumentHandle As Long, errStatus As Long)
code and messageDim inseerr As LongDim err_message As String *256, SUCCESS 0 is defined in V!SATYPE.hIf errStatus < VI_SUCCESS Then
10 ensure communication with the instrumenthp66xx_dcl (instrumentHandIe)
L,,,,n)',, nL"TL'r"TC'n is defined in hp66xx.basIf HP66XX_INSTR_ERROR_DETECTED = errStatus Then
quefY for the errorhp66xx_error_query instrumentHandle, inst_err, err_message
msg$ = "Instrument Error :" +Str(inst_err) + ": " + err_messageElse .
messagehp66xx_error_message instrumentHandle, errStatus, err_message
End Ifmsg$ = "Driver Error :" + Str(errStatus) + ": " + err_messageIfMsgBox(msg$, vbRetryCancel) = vbCancel Then
the instrument handlehp66xx_reset instrumentHandlehp66xx_c1ose instrumentHandleEnd
End IfEnd If
End Sub
Save the project
Select File ISave Project
Navigate to the desire directory to save the project in.
Click Save to save the form.
Click Save to save the project.
To run the program:
Select Run IStart
Click Run
28
PlungeLineRectllngle
29
4.3.4. ECM Software
ECM software was developed to control both the CNC machine and the power
supply simultaneously. The software enabled the researcher to conduct the following
ECM experiments:
• Plunge experiments in constant current current mode
• Channel experiments in constant current mode
• Rectanglar groove experiments in constant current mode
ECM plunge and channel experiments in constant current mode were conducted
using ECM software. Figure 4.6 shows the software user interface.
Please enter the data required for ECM Rectangle moveI""--_--~
Enter the Motor speed for plunge (in/s):
Enter the Plunge Depth(in):
Enter the Motor speed for Channel (inh):
Enter the length(in):
Enter the breadth(in):
POWeI Supply Data-~-----------------'
Const~nt Current Mode
Enter Current in Arapent:
Aun
Figure 4.6. Software user interface
30
4.4 Experiment Calculations
ECM plunge and channel experiments were conducted on 6061-T6 Al and SiC/AI
MMCs. Tool feed rate was calculated based on the metal removal rate at the workpiece.
Metal removal rates are governed by Ohm's law and by Faraday's law of electrolysis.
By Faraday's law,
1. The amount of dissolved substance at the anode is directed proportional to the
quantity of electricity (current x time) passed.
M a It
M=ZIt
Z=AwnF
1= i Atool
Substituting equation 4.2, equation 4.3, and equation 4.4 in equation4.1
[i At IAwt] g mole Al
M = 00 (At constant current)nF C
Where,
M = Mass of materials dissolved at anode (g)
I = Current density at cathode (A/cm2)
t = Time (s)
(equation 4.1)
(equation 4.2)
(equation 4.3)
(equation 4.4)
(equation 4.5)
Z = Electrochemical equivalent (the mass of a substance that IS
dissolved/deposited at an electrode when one coulomb of charge IS
passed)
n = Number of electrons involved in electrochemical reaction. (For AI, n = 3)
31
F = Faraday's constant (equal to the amount of electricity that liberates one gram
equivalent ofany ion from an electrode)
Atool = Cathode surface area (cm2)
Aw = Atomic weight ofAnode (g)
To determine the rate of volume of metal removed by any quantity of electricity,
we used the following formula:
(equation 4.6)
Where,
v = Volume ofmaterial dissolved at the electrode (cm3)
D = Density ofworkpiece (glcm3)
4.4.1 Plunge experiments in constant current mode
In the plunge experiment, a hollow tool insulated on the outside was advanced into
the workpiece and the electrolyte was pumped at high pressure down through the center of
the tube.
Electrolyte Is pumped athigh pressure
,athode(ecmtool)
AIiSiC MMC
InsulOltlon
,.-- -H
+)
I I I I- - I
PowersuppJy
(
I' tI', r-tool ..
~ 1r·.node • 1.10' r·tool
Figure 4.7. ECM plunge experiment
32
The rate of volume ofmetal removed at the workpiece,
dxdt
dv =A dxdt dt
Where,
= tool feed rate (cm/s)
(equation 4.7)
A = Area calculated taking the radius as 1.10 times the radius of tool providing
clearance for electrolyte flow. For the square tool, the area was calculated taking the sides
as 1.10 times the sides of tool.
Substituting equation 4.6 in equation 4.7 gives,
dx _ iAtooAwCit- nFDA (equation 4.8)
To determine the rate of volume of metal removed by any quantity of electricity,
the following formula was used:
dv = i Atoo1Aw
dt nFD
Where,
v = Volume ofmaterial dissolved at the electrode. (cm3)
D = Density ofworkpiece (g/cm3)
USiC = Volume fraction of SiC particles in the MMC
The rate of volume ofmetal removed deals only with the Al loss, for SiC/AI
MMCs, the rate ofvolume removed is given by
dVrnmc
dt
dv 1
dt (1- VsiC)(equation 4.8)
33
4.4.2 Channel experiments in constant current mode
Channel experiment - I
Channels on 606l-T6 AI and SiC/AI MMCs were created by allowing the tool to
scan the programmed area of the workpiece. Between every scan, the tool was advanced
into the workpiece by a distance equal to the thickness of material removed by one scan.
The scan rate for the experiment was calculated as follows:
T~
!w;I' iI'
)\
Figure 4.8. Channel in Al/SiC MMC
Where,
T = Thickness ofmaterial removed on one scan (cm)
W = Width of the channel (cm)
L = Length ofthe channel (cm)
dLdt = Scan rate (cm/s)
v = Volume ofmaterial dissolved at the electrode (cm3)
V=WLT
dV =WTdLdt dt
dL 1 dV-=--dt WT dt
(equation 4.9)
(equation 4.10)
(equation 4.11)
34
1 iA.o.AwelL=
dt WT nFDA (equation 4.12)
W = Constant = 110% ofdiameter of tool electrode
L = Length ofchannel was kept constant for all the experiments (=1.27cm (O.Sin»
T = Distance equal to plunge in one second
Width (W), thickness (T), atomic weight (Aw), area of tool (Atool), number of
electrons participating in the electrolytic reaction for AI, and MMCs are constant.
Therefore the channel speed was fixed for Al and for SiC/AI MMCs.
Electrolyte is pumped lithigh pressure
cathode(ecmtool)
Insulation
AllSiCMMC
- --)
L,;T
+)
• _I,..., ,. '--..
(Powersupply
(
Figure 4.9. ECM Channel experiment I
Results obtained from the above experiment were not satisfactory due to spark
damage at the workpiece comer, tool erosion by erosion by spark damage, and poor
machined profile. Therefore, an alternate method was used to create channels on SiC/AI
MMCs.
35
Channel experiment - II
Channels on 6061-T6 AI and SiC/AI MMCs were created by a series of plunging
operations. After every plunge, the tool was moved to a distance slightly greater than the
tool length. Square cross sectional tool was designed to make channels by a series of
plunging operations.
Electrolyte is l)Umped athigh Inessure
cathode(ecmtool)
AlJ'SiC MMC
Insulation
,..... r--
(-)...+)
I 11 I
Powersupply
(
Figure 4.10. ECM Channel experiment II
36
4.5 Experiment Procedure, Conditions and Setup
A numerically controlled electrochemical machine consists of a CNC machine that
provides movement to the tool and work-piece, an electrolyte system that provides high
velocity electrolyte flow between the electrodes, and an electrical power supply that
supplies the electrolyzing current to the electrodes. Figure 4.11 shows the prototype NC
ECM. The hardware for the NC-ECM was designed and built by Darren N. Horiuchi.
Software was developed to interface the hardware design with a computer. The Sherline 3
axis CNC machine is a prototype milling machine that has a stepper motor on each axis,
with one for the vertical motion of the tool and two others for the horizontal movement of
the workpiece. The electrolyte system consists of a dual-head proportional pump (Fluid
Metering Inc (FMI) Q2V), shock block pump pulsation dampener (ARO), pressure relief
value (Plast-o-matic RVD) and instrument filter cartridge (Cole-Parmer). The electrolyte
that was stored in a reservoir was filtered and pumped in to the electrode gap using the
dual-head proportional pump. An immersion pump was used to circulate the electrolyte
back to the reservoir. The dual-head proportional pump provides free ranges to a
maximum of up to 4600 mllmin and pressure to 100 psi and a variable flow rate. The
shock block pump pulsation dampener reduces up to 97% pulsation. The pressure relief
value was installed to eliminate overpressures in the piping system.
The following sequences of events were conducted for the electrochemical
machining operation:
37
1. A workpiece was fixed in the electrochemical cell in the X-Y plane of CNC
machine. An electrochemical tool was fixed vertically in the Z axis of the CNC
machine.
2. A tool was placed over the workpiece with an electrode gap of 0.008 inches
(0.02cm).
3. Electrolyte was pumped down through the centre of the hollow tube tool and
initial pressure was maintained at 30- 40 psi.
4. The positive lead of the power supply was connected to the workpiece and the
negative lead was connected to the tool.
5. Machining was started once the electrolyte was free of air bubbles.
6. The data required for the ECM software were entered.
7. The NC-ECM experiment was started by running the program in the ECM
software.
38
Figure 4.11. The numerically controlled electrochemical machine
Figure 4.12. CNC machine
39
Figure 4.13. Electrolyte system
4.6 Results
The ECM plunge experiments were conducted to determine the optimal current
density and to study the effect ofelectrolyte pH on the surface finish.
4.6.1 ECM plunge experiment
All ECM experiments were conducted at a constant current mode. Current
densities employed in the ECM plunge experiments using cylindrical cross-sectional tool
were 10,20, and 30 Ncm2• Current densities using a square cross-sectional tool were 10,
40, and 60 Ncm2• The ECM plunge experiments were conducted in a 2M sodium nitrate
solution and a 2M sodium nitrate solution + 0.4% acetic acid solution.
40
4.6.1.1 Plunge experiment in 2M Sodium nitrate solution
Results obtained from the ECM plunge experiments on 6061-T6 AI and SiCsaplAl
MMCs using cylindrical cross-sectional tool in 2M sodium nitrate solution are shown
below:
(a) (b)Figure 4.14. Plunge experiment on 6061-T6 AI at 30A/cm2 depth = 0.0625 in
Electrolyte: Sodium nitrate 2M solution
1m
(a) (b)Figure 4.15. Plunge experiment on SiCsaplAI MMC at 10 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution
park damage
41
(a) (b)Figure 4.16. Plunge experiment on SiCsOp!AI MMCs at 20 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution
(a) (b)Figure 4. 17(a). Plunge experiment on SiCsOp!A1 MMCs at 20 A/cm2 depth = 0.05 in
Electrolyte: 2M sodium nitrate electrolyte
42
(aJ (bJFigure 4.17(b). Plunge experiment on SiCsap!AI MMCs at 20 A/cm2 depth = 0.05 in
Electrolyte: 2M sodium nitrate electrolyte
(aJ (bJFigure 4.18(a). Plunge experiment on SiCsap!AI MMCs at 30 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution
43
.,
";~.
\. td" "'.,
J
(a) (b)Figure 4. 18(b). Plunge experiment on SiCsOp!AI MMCs at 30 A/cm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution
Results obtained from the ECM plunge experiments on 6061-T6 Al and SiC40p!Al
MMCs using square cross-sectional tool in 2M sodium nitrate solution are shown below:
(a) (b)Figure 4.19. Plunge experiment on 6061-T6 Al at 60A/cm2 depth = 0.0625 in
Electrolyte: 2M Sodium nitrate solution
44
(a) (b)Figure 4.20(a).Plunge experiment on SiC40piAI MMCs at 10 A/cm2 depth = 0.05 in.
Electrolyte: 2M Sodium nitrate solution
(a) (b)Figure 4.20(b) .Plunge experiment on SiC4ap!Al MMCs at 10 A/cm2 depth = 0.05 in.
Electrolyte: 2M Sodium nitrate solution
45
(a) (b)Figure 4.21(a). Plunge experiment on SiC40p!'AI MMCs at 40 A/cm2 depth = 0.05 in.
Electrolyte: 2M Sodium nitrate solution
(a) (b)Figure 4.21(b). Plunge experiment on SiC40p!'AI MMCs at 40 A/cm2 depth = 0.05 in.
Electrolyte: 2M Sodium nitrate solution
46
(a) (b)Figure 4.22(a). Plunge experiment on SiC4ap1AI MMCs at 60 Ncm2 depth = 0.05 in.
Electrolyte: 2M Sodium. nitrate solution
(a) (b)Figure 4.22(b). Plunge experiment on SiC4ap1Al MMCs at 60 Ncm2 depth = 0.05 in.
Electrolyte: 2M Sodium. nitrate solution
47
4.6.1.2 Plunge experiment in 2M Sodium nitrate solution + 0.4% acetic
acid solution
Results obtained from the ECM plunge experiments on SiCsop/Al MMCs using
cylindrical cross-sectional tool in 2M sodium nitrate + 0.4% acetic acid solution are shown
below:
(aJ (bJFigure 4.23(a). Plunge experiment on SiCsop/Al MMCs at 20 Ncm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution + 0.4% acetic acid
(aJ (bJFigure 4.23(b). Plunge experiment on SiCsop/Al MMCs at 20 Ncm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution + 0.4% acetic acid
48
(a) (b)Figure 4.23(c). Plunge experiment on SiCsOp!AI MMCs at 20 Alcm2 depth = 0.05 in
Electrolyte: 2M Sodium nitrate solution + 0.4% acetic acid
4.6.1 ECM Channel experiment I
Results obtained from the ECM channel experiment I on 6061-T6 AI and
SiCsOp!Al MMCs using cylindrical cross-sectional tool are shown below:
(a) (b)
Figure 4.24(a). Channel experiment on 6061-T6 Al at 20 Alcm2
Electrolyte: 2M Sodium nitrate solution
[Jgj
(a) (b)Figure 4.24(b). Channel experiment on 6061-T6 Al at 20 Ncm2
Electrolyte: 2M Sodium nitrate solution
49
(a) (b)Figure 4.25(a). Channel experiment on SiCsop/Al MMCs at 20 Ncm2
Electrolyte: 2M Sodium nitrate solution
50
(aj (bjFigure 4.25(b). Channel experiment on SiCsap!AI MMCs at 20 A/cm2
Electrolyte: 2M Sodium nitrate solution
(aj (bjFigure 4.25(c). Channel experiment on SiCsap!Al MMCs at 20 A/cm2
Electrolyte: 2M Sodium nitrate solution
4.6.2 ECM Channel experiment II
Results obtained from the ECM channel experiment II on 6061-T6 Al and
SiC4ap!Al MMCs using square cross-sectional tool are shown below:
51
(a) (b)Figure 4.26(a). Channel experiment on 606l-T6 AI at 60 A/cm2
Electrolyte: 2M Sodium nitrate solution
(aJ (b)Figure 4.26(b). Channel experiment on 6061-T6 Al at 60 A/cm2
Electrolyte: 2M Sodium nitrate solution
52
(aJ (bJFigure 4.27(a). Square channel experiment on 6061-T6 AI at 60 Ncm2
Electrolyte: 2M Sodium nitrate solution
(aJ (b)Figure 4.27(b). Square channel experiment on 6061-T6 Al at 60 Ncm2
Electrolyte: 2M Sodium nitrate solution
53
(a) (b)Figure 4.28(a). Channel experiment on SiC40p/AI MMCs at 60 Ncm2
Electrolyte: 2M Sodium nitrate solution
(a) (b)Figure 4.28(b). Channel experiment on SiC4ap!Al MMCs at 60 Ncm2
Electrolyte: 2M Sodium nitrate solution
54
(aJ (b)Figure 4.29(a). Square channel experiment on SiC4<>p!AI MMCs at 60 Ncm2
Electrolyte: 2M Sodium nitrate solution
(a) (b)Figure 4.29(b). Square channel experiment on SiC~AlMMCs at 60 Ncm2
Electrolyte: 2M Sodium nitrate solution
55
(aJ (bJFigure 4.29(c). Square channel experiment on SiC4OpI'AI MMCs at 60 Ncm2
Electrolyte: 2M Sodium nitrate solution
Current efficiency was calculated by comparing the experimental mass loss with
the theoretical mass loss determined by Faraday's law. Theoretical mass loss (Mtheo) is
expressed as
AwMIh'" =-It (at constant current)
nFExperimental mass loss =Initial mass - Final mass
C f~ . 0/ Experimental mass loss *100urrent e 1lclency /0 =-=----------Theoretical mass loss
Where,
Aw = Atomic weight ofaluminum
n = Number ofelectrons involved in electrochemical reaction.
(For aluminum, n=3)
F = Faraday's constant
t = Time (s)
I = Current density (Ncm2)
Table 4.1. Theoretical weight loss calculation
56
Material Plunge speed Plunge depth(in) Time(s) Theoretical
(in/s) weight loss (g)
Sample l-SiCsoplAl 0.0004496 0.05 111.2 0.0814
Sample2-SiCsoplAl 0.0006744 0.05 74.13 0.0814
Sample3-6061-T61Al 0.0002248 0.0625 278 0.1 020
Sample4-6061-T61Al 0.0003372 0.0625 139 0.1020
Table 4.2. Current Efficiency for ECM plunge experiment
Current Initial Final Experimental Theoretical Current
Material Density weight Weight weight loss weight loss Efficiency
(A/cm2) (g) (g) (g) (g) (%)
Sample1 20 1.0765 0.9711 0.1054 0.0814 129
Sample2 30 1.158 1.0494 0.1086 0.0814 133
Sample3 20 3.1035 2.9572 0.1463 0.1020 143
Sample4 30 3.1124 2.9709 0.1415 0.1020 138
57
The total cell voltage necessary to pass current between electrodes comprises the
cathode tool potential and overvoltage, the voltage drop due to the resistance of the
electrolyte gap, and the anode workpiece potential and overvoltage (5).
V=Vl+V2+I(R)
where,
VI = Cathode tool potential and over voltage (V)
V2 = Anode work piece potential and over voltage (V)
R = Resistance of the electrolyte gap (0)
R=p~A
where,
p = Electrolyte resistivity (Oem)
g = Electrode gap (em)
A = Area of tool (cm 2)
Electrolyte conductivity was measured using an Orion conductivity meter.
Table 4.3. Electrolyte conductivity
Electrolyte Conductivity (O-lcm- J)
2M NaN03 0.108
2M NaN03in O.4%acetic acid 0.125
Resistance of the electrolyte gap was found to be approximately 1.5 to 2 ohms
when the electrode gap was taken as 0.02cm and the area of the tool was equal to 0.20
58
4.7 Discussion
The ECM plunge experiments were conducted to optimize current density for the
channel experiment. The plunge experiment conducted on the SiC!Al MMCs at 10 Alcm2
had a poor surface finish due to low dissolution current density as shown in Figure 4.15.
Therefore, higher current densities were employed to improve the surface finish. The
ECM plunge experiments that were conducted using cylindrical cross-sectional tool at 20
and 30 A!cm2 are shown in Figure 4.17(a) - Figure 4.18(b). Experiments revealed that 30
A!cm2 was found to produce a better surface finish using a cylindrical cross-sectional tool.
The plunge experiments that used a square cross-sectional tool at 10, 40, and 60 A!cm2
showed that 60 A!cm2 was found to produce a better surface finish. These results are
shown in Figure 4.20(a) - Figure 4.22(b).
Figure 4.16 shows the spark damage site at the workpiece. Spark damage was due
to an electrical short circuit bridge formed between the tool electrode and the workpiece
surface (2). The spark damage possibly occurred due to the use of a deformed tool while
conducting the ECM experiment.
The electrolyte pH was lowered by preparing 2M sodium nitrate in 0.4% of acetic
acid solution, and the effects of pH on surface finish were analyzed. Figure 3.4 shows the
anodic polarization curves for SiC4op!Al MMC conducted in a 2M sodium nitrate solution
(pH 6.89) and a 2M sodium nitrate solution with 0.4% acetic acid solution (pH 3.92). The
polarization curves for the two different solutions were found to be similar. The ECM
experiments conducted using 2M sodium nitrate solutions with and without acetic acid are
shown in Figure 4.17(a) - Figure 4.18(b) and in Figure 4.23(a) - Figure 4.23(c)
respectively. The surface finish was found to be similar for ECM experiments conducted
59
in the two different electrolytes. Therefore, electrolyte pH within the range of 4-7 did not
significantly affect the surface finish.
Table 4.2 shows the current efficiency obtained was greater than 100%, a result
that implies that more material was removed than the estimated theoretical value, possibly
due to the dissolution of aluminum in the form of Al+ ions apart from that of usual At3+
ions(15). The possible oxidization reactions occurring at anode are
Al => A13++ 3e
Al => Al+ + e"
The total cell voltage necessary to pass current between electrodes comprises 1)
the cathode tool potential and over voltage, 2) the voltage drop due to the resistance of the
electrolyte gap, and 3) the anode work-piece potential and over voltage. Electrode
potential and over voltages at the electrodes are either small or have a negligent effect on
changing current density (2). A voltage drop due to the electrolyte resistance was found by
measuring electrolyte conductivity, electrode gap, and tool dimension.
The results from ECM channel experiment I are shown in Figure 4.25(a) - Figure
4.25(c). Channels on 6061-T6 Al and SiC;Al MMCs were created by allowing the tool to
scan the programmed area of the workpiece. Results obtained were not satisfactory due to
spark damage at the workpiece comer, tool erosion by spark damage, and poor machined
profile. Therefore, an alternate method was followed to create channels in the MMCs.
ECM channel experiment II on 6061-T6 Al and SiC/AI MMCs were conducted by a series
of plunging operations. A square cross-sectional tool was designed to make channels by a
series of plunging operations. At higher current densities, the epoxy insulation on the sides
of the square cross-sectional tool de-bonded due to the high temperature developed at the
60
tool sides. A square cross-section tool shown in Figure 4.4 was employed to conduct ECM
plunge and channel experiments at higher current densities. ECM channel experiment II
results are shown in Figure 4.28(a) - Figure 4.29(c). ECM channel experiment conducted
at 60 A/cm2 showed a good surface finish.
61
4.8 Conclusions
Software for the NC-ECM was developed and ECM experiments were conducted
on SiC/AI MMCs. The key conclusions are as follows:
1. Poor surface finish was obtained at low current density.
2. The spark damage possibly occurred due to the use of a deformed tool while
conducting the ECM experiment.
3. ECM plunge experiments conducted using 2M sodium nitrate with and without
acetic acid revealed that the electrolyte pH studied in the range 6.89 to 3.9 did not
affect the surface finish significantly.
4. The current efficiency obtained was greater than 100%, a result that shows more
material was removed than the estimated theoretical value.
5. A voltage drop due to the electrolyte resistance in the electrode gap was found to
have a linear relationship with voltage drop across the electrolytic cell.
6. Channel experiment II showed better results than channel experiment I. For the
range of current densities studied for channel experiment II, the highest current
density at 60 A/cm2 gave a good surface finish.
62
Chapter 5
CONCLUSIONS
The potentiodynamic polarization experiments on SiC4op/6061Al MMC were
conducted to study the dissolution behavior of the MMCs. Software for the NC-ECM was
developed to conduct ECM experiments on 6061-T6 Al and SiCIAI MMCs.
The potentiodynamic polarization for SiC40p/AI MMCs were conducted in 2M
sodium nitrate solution with and without acetic acid in de-aerated condition at 30°C at the
scan rate of 0.1 mV/sec under natural convection. The SiC40p/AI MMCs were found to be
corrosion resistant at the open-circuit, potential indicating that the metal removal at the
workpiece will only take place during the ECM process. The pitting potential for SiC40piAl
MMC and ultra pure Al was found to be in the same range, revealing that SiC particles did
not significantly affect the breakdown of potential.
A range of current densities were studied using cylindrical cross-sectional and
square cross-sectional tools showing that relatively good surface finish for the cylindrical
cross-sectional tool was achieved at 30A/cm2, and that for the square cross-sectional tool
was achieved at 60 A/cm2. The anodic polarization curves and ECM plunge experiments
for SiC40p/AI MMCs conducted in 2M sodium nitrate solutions with and with out acetic
acid were also found to be similar, proving, that the electrolyte pH ( range 6.89 to 3.92)
did not significantly affect the surface finish. ECM channel experiment I conducted using
a cylindrical cross-sectional tool showed spark damage at the workpiece comer, tool
erosion by spark damage, and poor machined profile. ECM channel experiments II
conducted using square cross-sectional tool at 60 A/cm2 had a good surface finish.
63
The experiments showed that NC-ECM of SiC/AI MMCs with a universal
electrode is technically feasible. With some improvement in machine design and
operation, NC-ECM could potentially establish itself as an important supplement to the
existing traditional method for machining MMCs.
APPENDIX A
CNC machine command reference
64
Arc A Moves tool or pen in the path of an arc
CheckCard K Confirm the presence of control card and initialize if found
Control C Allows setting or resetting of the output ports
Driverlnfo ? Returns the current InStep software version number
EncodeMode W Sets encoder feedback parameters
Feedhold H Allows selection of shield interrupt mode or feedhold mode
Jogger J Places the controller injog mode
JogKeys 0 Assigns the keyboard keys to be used while in jog mode
JogTapSteps G Programs the number of steps to dispense upon key tap
JoyPort R Selects which parallel port to be used for joystick jogging
Joystick Y Jogs the motors from the joystick
LoadCount L Allows modification of the absolute count kept in memory
Mover M Performs a vector move
PowerInit U Selects one of four power settings
Profile F Sets the ramping profile
RampSet N Enables acceleration & deceleration for next linear move
ReadCount E Returns the total number of steps moved for each motor
SetBacklash B Sets the amount of backlash for each axis in steps
SetBacklashDir D Sets the initial state of the backlash direction
SetCPlane P Selects the two motors to be used for circular interpolation
SetCardType Z Selects the controller model
SetMode I Allows you to select absolute or relative mode
SetMuItiPlex X Indicates the condition of limit inputs
SetSpeed VSets speed for linear & arc moves or sets external
synchronization.
Status S Indicates the condition of limit inputs
Threader T Allows linear moves to be interpolated with external pulses
APPENDIX B
Microsoft Visual Basic code for ECM software with channel experiment I
Dim [Sparam(5) As Integer 'Allocates 6 variables in array for returned paramsDim plungespeed, nearestspeed, ncspeed, p[ungedepth, channe[speed, channellength, channelwidth, step,distanceDim dist As IntegerDim temp, temp 1Dim voltage As Double, current As DoubleDim measvoltage As Double, meascurrent As DoubleDim instrumentHandle As Long, err As LongPublic Sub Commandt_ClickOIfFramel.Visible = True Thenplungespeed = Val(Textl.Text)plungedepth = Val(Text2.Text)nearestspeed = Round(plungespeed / 0.000125) *0.000125Timerl.[nterval = (nearestspeed * 1000) / p[ungespeedTimerl.Enabled = TrueEnd [f[fFrame2.Visible = True Thenplungespeed = Val(Text4.Text)plungedepth = Val(Text5.Text)channelspeed = Val(Text6.Text)channellength = Val(Text7.Text)nearestspeed = Round(plungespeed / 0.000125) *0.000125ncspeed = Round(channelspeed / 0.000125) *0.000125 'nearest channel speed = ncspeedTimer2.Interval = (nearestspeed * 1000) / pJungespeedTimer3.Intervai = (nearestspeed * 1000) / plungespeedtemp = ncspeed /0.000125temp = Int(2000000 / temp)MyCommand$ = "v" & temp 'setting channel speed as a default speedCall DriverSend(MyCommand$)channel length = Round(channellength / 0.000125)MyCommand$ = "M" & -channellength & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Timer2.Enabled = TrueEnd [f[fFrame3.Visible = True Thenplungespeed = Val(Text8.Text)plungedepth = Val(Text9.Text)channelspeed = Val(Textl0.Text)channellength = Val(Textll.Text)channelwidth = Val(TextI2.Text)nearestspeed = Round(plungespeed /0.000125) *0.000125ncspeed = Round(channelspeed / 0.000125) *0.000125 'nearest channel speed = ncspeedTimer4.Intervai = (nearestspeed * 1000) / plungespeedTimer5.Intervai = (nearestspeed * 1000) / plungespeedtemp = ncspeed /0.000125temp = [nt(2000000 / temp)MyCommand$ = "v" & temp 'setting channel speed as a default speedCall DriverSend(MyCommand$)
65
channellength = Round(channellength / 0.000125)channelwidth = Round(channelwidth / 0.000125)MyCommand$ = "M" & -channellength & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)MyCommand$ = "M" & "0" & -channelwidth & "," & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverSend(MyCommand$)MyCommand$ = "M" & channelJength & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)MyCommand$ = "M" & "0" & channelwidth & "," & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Timer4.Enabled = TrueEnd Iferr = hp66xx~init("GPIBO::5::INSTR", VI~TRUE, VI_TRUE, instrumentHandle)
check instrumentHandle, errerr = hp66xx_reset(instrumentHandle)check instrumentHandle, errerr = hp66xx_errorQueryDetect(instrumentHandle, VI_TRUE)check instrumentHandle, errvoltage = 20current = Val(Text3.Text)err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getVolt(instrumentHandle, HP66XX_VOLT_Q, voltage)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, errerr = hp66xx_measureVolt(instrumentHandle, measvoltage)check instrumentHandle, errerr = hp66xx_measureCurr(instrumentHandle, meascurrent)check instrumentHandle, errhp66xx_close (instrumentHandle)
End SubPrivate Sub Form_LoadO
MyCommand$ = "k592"Call DriverSend(MyCommand$)MyCommand$ = "zl"Call DriverSend(MyCommand$)MyCommand$ = "uI5"Call DriverSend(MyCommand$)
Timerl.Enabled = FalseTimer2.Enabled = FalseTimer3.Enabled = FalseTextl.Text = 0.00025Text2.Text = 0.001Text3.Text = 3.92Text4.Text = 0.00025Text5.Text = 0.001Text6.Text = 0.04Text? .Text = 0.5Text8.Text = 0.00025Text9.Text = 0.001Text IO.Text = 0.04Textll.Text = 0.5Textl2.Text = 0.25End Sub
66
Public Sub DriverGetO
FileNumber'" FreeFile 'Use the FreeFile function to find the next available'file number to avoid crashing
CommandResponse$ '" "" 'Clear the CommandResponse variableP% '" 0: pp% '" 1 'Clear and set the place stepersISindex% '" 1 'Set the Array steper for proper assignment of returned parameters
Open "ISDRV "For Input As #FileNumber 'Open the driver for Input of responseLine Input #FileNumber, CommandResponse$ 'Assign response to variable
Close #FileNumber 'Close the driver
'DO:LOOP routine to process CommandResponse$ and assign returned parameters to'individual variables - This routine marks a placeholder, searches for the'instance ofa comma, then marks another placeholder and assigns the value'in between the commas to the corresponding ISparam array.
Do While P% >'" 0comma% '" InStr(P% + 1, CommandResponse$, ",")If comma% '" 0 Then ISparam(lSindex%) '" Val(Mid$(CommandResponse$, P% + 1,
Len(CommandResponse$) - P%)): Exit DoISparam(lSindex%) '" Val(Mid$(CommandResponse$, P% + 1, comma% - P%))ISindex% '" ISindex% + 1: P% '" comma%
Loop
End SubPublic Sub DriverSend(MyCommand$)FileNumber'" FreeFile 'Use the FreeFile function to find the next available
file number to avoid crashing
Open "ISDRV "For Output As #FileNumber 'Open the driver for Output of commandPrint #FileNumber, MyCommand$ 'Send command string to driver
Close #FileNumber 'Close driver
End Sub
Private Sub Form_TerminateOerr'" hp66xx_init("GPIB0::5::INSTR", VI_TRUE, VI_TRUE, instrumentHandle)
check instrumentHandle, errerr'" hp66xx_reset(instrumentHandle)check instrumentHandle, errerr'" hp66xx_errorQueryDetect(instrumentHandle, VI_TRUE)check instrumentHandle, errvoltage'" 0current'" 0err'" hp66xx_outputVoftCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr'" hp66xx_getVolt(instrumentHandle, HP66XX_VOLT_Q, voltage)check instrumentHandle, errerr'" hp66xx_getCurr( instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, errerr'" hp66xx_measureVolt(instrumentHandle, measvoltage)check instrumentHandle, errerr'" hp66xx_measureCurr(instrumentHandle, meascurrent)
67
check instrumentHandle, errhp66xx_close (instrumentHandle)
End Sub
Private Sub Form_Unload(Cancel As Integer)err"" hp66xx_init("GPIBO::5::INSTR", VCTRUE, VCTRUE, instrumentHandle)
check instrumentHandle, errerr"" hp66xx_reset(instrumentHandle)check instrumentHandle, errerr"" hp66xx_errorQueryDetect(instrumentHandle, VCTRUE)check instrumentHandle, errvoltage"" 0current"" 0err"" hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr"" hp66xx_getVolt(instrumentHandle, HP66XX_VOLT_Q, voltage)check instrumentHandle, errerr"" hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, errerr"" hp66xx_measureVolt(instrumentHandle, measvoltage)check instrumentHandle, errerr"" hp66xx_measureCurr(instrumentHandle, meascurrent)check instrumentHandle, errhp66xx_close (instrumentHandle)
End Sub
Private Sub mnuchannel_ClickOFramel.Visible"" FalseFrame3.Visible "" FalseFrame2.Visible "" TrueEnd Sub
Private Sub mnuplunge_ClickOFrame2.Visible"" FalseFrame3.Visible"" FalseFramel.Visible"" TrueEnd Sub
Private Sub mnurect_ClickOFrame I.Visible "" FalseFrame2.Visible"" FalseFrame3.Visible"" TrueEnd Sub
Private Sub Timerl_TimerOstep"" step + 1dist"" nearestspeed /0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed / plungespeed)temp 1 "" step * (nearestspeed / plungespeed)CisPrint Round(temp I, 6), Round(temp, 6);" lam in Timer!"lftemp >= plungedepth ThenTimerl.Enabled = False
68
End IfEnd SubPrivate Sub Timer2_TimerOstep = step + Idist = nearestspeed / 0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed / plungespeed)temp I = step * (nearestspeed / plungespeed)CIsPrint Round(temp I, 6), Round(temp, 6);" lam in Timer2"If temp >= plungedepth ThenCisPrint "i timer21oop"MyCommand$ = "M" & channellength & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)step = 0dist = 0distance = 0temp = 0tempi = 0Timer2.Enabled = FalseTimer3.Enabled = TrueEnd IfEnd SubPrivate Sub Timer3_TimerOstep = step + 1dist = nearestspeed /0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed / plungespeed)temp I = step * (nearestspeed / plungespeed)CIsPrint Round(temp I, 6), Round(temp, 6);" lam in Timer3"If temp >= plungedepth ThenCisPrint "timer3Ioop"MyCommand$ = "M" & -channellength & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)step = 0dist = 0distance = 0temp = 0tempi =0Timer3.Enabled = FalseTimer2.Enabled = TrueEnd IfEnd SubPrivate Sub Timer4_TimerOstep = step + Idist = nearestspeed /0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * step
69
temp'" distance * (nearestspeed / plungespeed)temp I '" step * (nearestspeed / plungespeed)CisPrint Round(temp 1,6), Round(temp, 6);" lam in Timer4"If temp >= plungedepth ThenCisPrint "timer4Ioop"Call DriverSend(MyCommand$)MyCommand$ '" "M" & -channellength & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)MyCommand$ '" "M" & "0" & -channelwidth & "," & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverSend(MyCommand$)MyCommand$ '" "M" & channellength & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)MyCommand$ '" "M" & "0" & channelwidth & "," & "," & "0" & "," & "0"Call DriverSend(MyCommand$)step'" 0dist'" 0distance = 0temp'" 0tempI'" 0Timer4.Enabled = FalseTimerS.Enabled = TrueEnd IfEnd SubPrivate Sub Timer5_TimerOstep'" step + Idist '" nearestspeed / 0.000125
MyCommand$ '" "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp'" distance * (nearestspeed / plungespeed)temp I = step * (nearestspeed / plungespeed)CisPrint Round(temp 1,6), Round(temp, 6);" lam in TimerS"If temp >'" plungedepth ThenCisPrint "timerS loop"Call DriverSend(MyCommand$)MyCommand$ '" "M" & -channellength & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)MyCommand$ '" "M" & "0" & -channelwidth & "," & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverSend(MyCommand$)MyCommand$ '" "M" & channellength & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)MyCommand$ '" "M" & "0" & channelwidth & "," & "," & "0" & "," & "0"Call DriverSend(MyCommand$)step'" 0dist'" 0distance'" 0temp = 0tempi'" 0TimerS.Enabled'" FalseTimer4.Enabled = True
70
End IfEnd SubSub check(instrumentHandle As Long, errStatus As Long)
Dim inst_err As LongDim err_message As String * 256If errStatus < VI SUCCESS Then
hp66xx_del (instrumentHandle)IfHP66XX INSTR ERROR DETECTED = errStatus Then- - -
hp66xx_error_query instrumentHandle, inst_err, err_messagemsg$ = "Instrument Error :" + Str(inst_err) + ": " + err_message
Elsehp66xx_error_message instrumentHandle, errStatus, err_message
End Ifmsg$ = "Driver Error :" + Str(errStatus) + ": " + err_messageIfMsgBox(msg$, vbRetryCancel) = vbCancel Then
hp66xx_reset instrumentHandlehp66xx_close instrumentHandleEnd
End IfEnd If
End Sub
Microsoft Visual Basic code for ECM software - channel experiment II
Dim ISparam(5) As Integer 'Allocates 6 variables in array for returned paramsDim plungespeed, nearestspeed, ncspeed, plungedepth, channelspeed, channelwidth, step, distanceDim dist As IntegerDim channellength, channelleng, channellen As DoubleDim temp, temp IDim voltage As Double, current As DoubleDim measvoltage As Double, meascurrent As DoubleDim instrumentHandle As Long, err As LongDim label!
Public Sub Commandt_ClickO
plungespeed = Val(Textl .Text)plungedepth = Val(Text2.Text)nearestspeed = Round(plungespeed / 0.000125) *0.000125Timer I.Interval = (nearestspeed * 1000) / plungespeedTimer2.lnterval = (nearestspeed * 1000) / plungespeedTimer3.Interval = (nearestspeed * 1000) / plungespeedTimer4.Interval = (nearestspeed * 1000) / plungespeedTimer5.lnterval = (nearestspeed * 1000) / plungespeedTimer6.Interval = (nearestspeed * 1000) / plungespeedTimer7.lnterval = (nearestspeed * 1000) / plungespeedTimer8.Interval = (nearestspeed * 1000) / plungespeedTimer9.Interval = (nearestspeed * 1000) / plungespeedTimerl O.lnterval = (nearestspeed * 1000) / plungespeedTimerll.Interval = (nearestspeed * 1000) / plungespeedTimer I2.Interval = (nearestspeed * 1000) / plungespeedTimerl3.lnterval = (nearestspeed * 1000) / plungespeedTimerl4.Interval = (nearestspeed * 1000) / plungespeedTimerl5.Interval = (nearestspeed * 1000) / plungespeedTimer16.Interval = 1000
71
err== hp66xx_init("GPIBO::5::INSTR", VtTRUE, VI_TRUE, instrumentHandJe)check instrumentHandJe, errerr == hp66xx_reset(instrumentHandle)check instrumentHandle, errerr == hp66xx_errorQueryDetect(instrumentHandle, VI_TRUE)check instrumentHandle, errcurrent == Val(Text3.Text)voltage == 90err == hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr == hp66xx_getVolt(instrumentHandle, HP66XX_VOLT_Q, voltage)check instrumentHandle, errerr == hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, errerr == hp66xx_measureVolt(instrumentHandJe, measvoltage)check instrumentHandle, errerr == hp66xx_measureCurr(instrumentHandle, meascurrent)check instrumentHandle, err
Timerl.Enabled == TrueEnd Sub
Public Sub Form_LoadO
MyCommand$ == "k592"Call DriverSend(MyCommand$)MyCommand$ == "zl"Call DriverSend(MyCommand$)MyCommand$ == "uI5"Call DriverSend(MyCommand$)channel length == 1400Timerl.Enabled == FalseTimer2.Enabled == FalseTimer3.Enabled == FalseTimer4.Enabled == FalseTimer5.Enabled == FalseTimer6.Enabled == FalseTimer7.Enabled == FalseTimer8.Enabled == FalseTimer9.Enabled == FalseTimerlO.Enabled == FalseTimerll.Enabled == FalseTimerl2.Enabled == FalseTimerl3.Enabled == FalseTimerl4.Enabled == FalseTimerl5.Enabled == FalseTimerl6.Enabled == FalseTextl.Text == 0.000247Text2.Text == 0.0625Text3.Text == 4.8
End Sub
Public Sub DriverGetO
FileNumber == FreeFile 'Use the FreeFile function to find the next available'file number to avoid crashing
72
CommandResponse$ = "" 'Clear the CommandResponse variableP% = 0: pp% = 1 'Clear and set the place countersISindex% = 1 'Set the Array counter for proper assignment of returned parameters
Open "ISDRV "For Input As #FileNumber 'Open the driver for Input of responseLine Input #FileNumber, CommandResponse$ 'Assign response to variable
Close #FileNumber 'Close the driver
'DO:LOOP routine to process CommandResponse$ and assign returned parameters to'individual variables - This routine marks a placeholder, searches for the'instance ofa comma, then marks another placeholder and assigns the value'in between the commas to the corresponding ISparam array.
Do While P% >= 0comma% = InStr(P% + 1, CommandResponse$, ",")Ifcomma% = 0 Then ISparam(1Sindex%) = Val(Mid$(CommandResponse$, P% + 1,
Len(CommandResponse$) - P%)): Exit DoISparam(1Sindex%) = Val(Mid$(CommandResponse$, P% + 1, comma% - P%))ISindex% = ISindex% + 1: P% = comma%
Loop
End SubPublic Sub DriverSend(MyCommand$)FileNumber = FreeFile 'Use the FreeFile function to find the next available
file number to avoid crashing
Open "ISDRV "For Output As #FileNumber 'Open the driver for Output of commandPrint #FileNumber, MyCommand$ 'Send command string to driver
Close #FileNumber 'Close driver
End Sub
Public Sub Timerl_TimerOstep = step + 1dist = nearestspeed 10.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed I plungespeed)temp 1= step * (nearestspeed I plungespeed)CisPrint Round(temp I, 6), Round(temp, 6);If temp >= plungedepth Thencurrent = 0voltage = 0
err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
step =-1dist = 0distance = 0temp = 0tempI =0Timer2.Enabled = True
73
Timerl.Enabled = FalseEnd IfEnd Sub
Public Sub Timer2_Timer()step = step + Idist = nearestspeed /0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed / plungespeed)temp I = step * (nearestspeed / plungespeed)CisPrint Round(temp I, 6), Round(temp, 6);If temp >= plungedepth Then'MyCommand$ = "M" & -channellength & "," & "0" & "," & "0" & "," & "0"'Call DriverSend(MyCommand$)'Call DriverGetcurrent = 0voltage = 0
err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
step = 0dist = 0distance = 0temp = 0tempI = 0'If1Sparam(l) = I ThenTimer3.Enabled = TrueTimer2.Enabled = False'End IfEnd IfEnd Sub
Public Sub Timer3_Timer()step = step + Idist = nearestspeed / 0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed / plungespeed)temp I = step * (nearestspeed / plungespeed)CisPrint Round(temp I, 6), Round(temp, 6);If temp >= plungedepth Thencurrent = 0voltage = 0
err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
step = -Jdist = 0distance = 0
74
temp = 0tempi =0Timer4.Enabled = TrueTimer3.Enabled = FalseEnd IfEnd SubPublic Sub Tirner4_Timer()step = step + Idist = nearestspeed / 0.000125
MyCommapd$ = "M" & "0" & "," & "0" & "," & dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed / plungespeed)temp I = step * (nearestspeed / plungespeed)CisPrint Round(temp I, 6), Round(temp, 6);If temp >= plungedepth ThenMyCommand$ '" "M" & -channellength & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverGetcurrent'" Val(Text3.Text)voltage = 90
err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
step = 0dist '" 0distance = 0temp'" 0tempi = 0IflSparam(l) '" I ThenTimer5.Enabled = TrueTimer4.Enabled = FalseEnd IfEnd IfEnd SubPublic Sub Tirner5_Tirner()step = step + 1dist = nearestspeed /0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed / plungespeed)temp 1 = step * (nearestspeed / plungespeed)CisPrint Round(temp 1,6), Round(temp, 6);If temp >= plungedepth Thencurrent = 0voltage = 0
err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
step = -2dist =0
75
distance = 0temp = 0tempI = 0Timer6.Enabled = TrueTimer5.Enabled = FalseEnd IfEnd SubPublic Sub Timer6_TimerOstep = step + Idist = nearestspeed / 0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed / plungespeed)temp I = step * (nearestspeed / plungespeed)CisPrint Round(temp 1,6), Round(temp, 6);Iftemp >= plungedepth ThenMyCommand$ = "M" & "0" & "," & -channellength & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverGetcurrent = Val(Text3.Text)voltage = 90
err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
step = 0dist = 0distance = 0temp = 0tempi = 0rflSparam(l) = I ThenTimer7.Enabled = TrueTimer6.Enabled = FalseEnd IfEnd IfEnd SubPublic Sub Timer7_TimerOstep = step + 1dist = nearestspeed / 0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed / plungespeed)temp I = step * (nearestspeed / plungespeed)CisPrint Round(temp 1,6), Round(temp, 6);If temp >= plungedepth Thencurrent = 0voltage = 0
err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
step = -2
76
dist"" 0distance"" 0temp"" 0tempI"" 0TimerS.Enabled "" TrueTimer7.Enabled"" FalseEnd IfEnd SubPublic Sub Timer8_TimerOstep"" step + 1dist"" nearestspeed / 0.000125
MyCommand$ "" "M" & "0" & "," & "0" & "," & dist & "," & "0"Call DriverSend(MyCommand$)
distance"" plungespeed * steptemp"" distance * (nearestspeed / plungespeed)temp 1 "" step * (nearestspeed / plungespeed)CisPrint Round(temp 1,6), Round(temp, 6);If temp >"" plungedepth ThenMyCommand$ "" "M" & "0" & "," & -channellength & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverGetcurrent"" Val(Text3.Text)voltage"" 90
err"" hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr"" hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
step"" 0dist"" 0distance"" 0temp"" 0tempI"" 0IflSparam(l) "" 1ThenTimer9.Enabled "" TrueTimerS.Enabled"" FalseEnd IfEnd IfEnd SubPublic Sub Timer9_TimerOstep"" step + 1dist"" nearestspeed /0.000125
MyCommand$ "" "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance"" plungespeed * steptemp"" distance * (nearestspeed / plungespeed)temp 1 "" step * (nearestspeed / plungespeed)CisPrint Round(temp 1,6), Round(temp, 6);If temp >= plungedepth Thencurrent = 0voltage = 0
err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
77
step =-2dist = 0distance = 0temp = 0tempi = 0TimerlO.Enabled = TrueTimer9.Enabled = FalseEnd IfEnd SubPublic Sub TimerlO_TimerOstep = step + Idist = nearestspeed / 0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed / plungespeed)temp I = step * (nearestspeed / plungespeed)CisPrint Round(temp 1,6), Round(temp, 6);If temp >= plungedepth ThenMyCommand$ = "M" & channellength & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverGetcurrent = Val(Text3.Text)voltage = 90
err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
step = 0dist = 0distance = 0temp = 0tempI = 0IflSparam(l) = 1 ThenTimerll.Enabled = TrueTimerlO.Enabled = FalseEnd IfEnd IfEnd SubPublic Sub Timer11_TimerOstep = step + 1dist = nearestspeed / 0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed / plungespeed)temp I = step * (nearestspeed / plungespeed)CisPrint Round(temp 1,6), Round(temp, 6);If temp >= plungedepth Thencurrent = 0voltage = 0
err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)
78
check instrumentHandle, errstep'" -2dist '" 0distance'" 0temp'" 0tempI "'0Timerl2.Enabled '" TrueTimerll.Enabled'" FalseEnd IfEnd SubPublic Sub Timer12_TimerOstep'" step + Idist'" nearestspeed / 0.000125
MyCommand$ '" "M" & "0" & "," & "0" & "," & dist & "," & "0"Call DriverSend(MyCommand$)
distance'" plungespeed * steptemp'" distance * (nearestspeed / plungespeed)temp I '" step * (nearestspeed / plungespeed)CisPrint Round(temp I, 6), Round(temp, 6);If temp >'" plungedepth ThenMyCommand$ '" "M" & channellength & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverGetcurrent'" Val(Text3.Text)voltage'" 90
err'" hp66xx_outputVoltCurr(instrumentHandIe, voltage, current)check instrumentHandle, errerr '" hp66xx_getCurr(instrumentHandIe, HP66XX_CURR_Q, current)check instrumentHandIe, err
step'" 0dist'" 0distance'" 0temp'" 0tempI'" 0IfiSparam(l) '" I ThenTimerl3.Enabled '" TrueTimerI2.Enabled'" FalseEnd IfEnd IfEnd SubPublic Sub Timer13_TimerOstep'" step + Idist'" nearestspeed / 0.000125
MyCommand$ '" "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance'" plungespeed *steptemp'" distance * (nearestspeed / plungespeed)temp I '" step * (nearestspeed / plungespeed)CisPrint Round(temp I, 6), Round(temp, 6);If temp >'" plungedepth Thencurrent'" 0voltage'" 0
err '" hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, err
79
err = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
step = -2dist = 0distance = 0temp = 0tempI =0Timer14.Enabled = TrueTimerl3.Enabled = FalseEnd IfEnd SubPublic Sub Timer14_TimerOstep = step + Idist = nearestspeed I 0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed I plungespeed)temp I = step * (nearestspeed I plungespeed)CisPrint Round(temp I, 6), Round(temp, 6);Iftemp >= plungedepth ThenMyCommand$ = "M" & "0" & "," & channellength & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverGetcurrent = Val(Text3.Text)voltage = 90
err = hp66xx~outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
step = 0dist = 0distance = 0temp = 0tempI =0IflSparam(l) = I ThenTimerl5.Enabled = TrueTimerl4.Enabled = FalseEnd IfEnd IfEnd Sub
Public Sub Timer15_TimerOstep = step + Idist = nearestspeed I 0.000125
MyCommand$ = "M" & "0" & "," & "0" & "," & -dist & "," & "0"Call DriverSend(MyCommand$)
distance = plungespeed * steptemp = distance * (nearestspeed I plungespeed)temp I = step * (nearestspeed I plungespeed)CisPrint Round(temp I, 6), Round(temp, 6);If temp >= plungedepth Then'MyCommand$ = "M" & "0" & "," & channellength & "," & "0" & "," & "0"'Call DriverSend(MyCommand$)
80
'Call DriverGetstep = -2dist = 0distance = 0temp = 0tempI =0'lflSparam(l) = I ThenTimerl6.Enabled = Truecurrent = 0voltage = 0
err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
Timerl5.Enabled = False'End IfEnd IfEnd Sub
Public Sub Timer16_TimerOchannellen = 3 * channellengthchannelleng = 2 * channellengthMyCommand$ = "M" & -channellen & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverGetIflSparam(l) = I ThenMyCommand$ = "M" & "0" & "," & -channellen & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverGetEnd IfIflSpararn(l) = I ThenMyCommand$ = "M" & channellen & "," & "0" & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverGetEnd IfIflSparam(l) = I ThenMyCommand$ = "M" & "0" & "," & channelleng & "," & "0" & "," & "0"Call DriverSend(MyCommand$)Call DriverGetEnd IfIfISparam(l) = I Thencurrent = 0voltage = 0
err = hp66xx_outputVoltCurr(instrumentHandle, voltage, current)check instrumentHandle, errerr = hp66xx_getCurr(instrumentHandle, HP66XX_CURR_Q, current)check instrumentHandle, err
End IfTimer 16.Enabled = False
End Sub
Sub check(instrumentHandIe As Long, errStatus As Long)Dim inscerr As Long
Dim err_message As String * 256If errStatus < VI SUCCESS Then
81
hp66xx_del (instrumentHandle)IfHP66XX INSTR ERROR DETECTED = errStatus Then- - -
hp66xx_error_query instrumentHandle, inst_err, err_messagemsg$ = "Instrument Error:" + Str(inst_err) + ": "+ err_message
Elsehp66xx_error_message instrumentHandle, errStatus, err_message
End Ifmsg$ = "Driver Error:" + Str(errStatus) + ": "+ err_messageIfMsgBox(msg$, vbRetryCaneel) = vbCaneel Then
hp66xx_reset instrumentHandlehp66xx_close instrumentHandleEnd
End IfEnd If
End Sub
82
83
REFERENCES
1. Suresh, Subra, Mortensen, Andreas, and Needleman, Alan, Fundamentals of Metal
Matrix Composites, Butterworth-Heinemann, 1993
2. Hihara, Lloyd Hiromi; Panquites, IV Philip. Method of electrochemical machining
(ECM) of particulate metal-matrix composites (MMCs). U.S. (2000), 6 pp.
CODEN: USXXAM US 6110351 A 20000829
3. Rajurkar, K.P., Research and Technological Developments in Nontraditional
Machining, the American Society of Mechanical Engineers. Vol. 341988
4. Kozak, J and Rajurkar, K.P., Laser Assisted Electrochemical Machining, Society of
Manufacturing Engineer, 2001.
5. De Barr, A.E. and Oliver, D.A., Electrochemical Machining, MacDonald & Co.Ltd.,
1968.
6. Wilson, John F., Practice and Theory of Electrochemical Machining, John Wiley &
Sons, Inc., 1970
7. Narahari, P, Pai, B.C., Pillai, M.C., Some aspects of machining cast Al - SiCp
composites with conventional HSS and WC tools, Journal of Materials Engineering &
Performance (ASM,USA), 8(5) 1999, 538-542
8. Durante, S., Rutelli, G., Rabezzana, F., Aluminum-based MMC machining with
diamond-coated cutting tools, Surface and Coating Technology 94-95(1997) 632-640
9. Mannaa, A., Bhattacharayya, B., A study on mach inability of AliSiC-MMC, Journal
of Materials Processing Technology,140 (2003) 711-716
84
10. Mannaa, A., Bhattacharayya, B., A study on different tooling systems during
machining of AI/SiC-MMC, Journal of Materials Processing Technology,123 (2002)
476-482
11. Xiaoping Li, Seah, W.K.H. , Tool wear acceleration in relation to work-piece
reinforcement percentage in cutting of metal matrix composites, Wear,247 (2001)
161-171
12. Ramulu, M., Taya, M., EDM machinability of SiCw/AI composites, Journal of
Materials science,24,#3 (1989) 1103-1108
13. Mohan, B., Rajadurai, A., Satyanarayana, K.G., Effect of SiC and rotation of electrode
on electric discharge machining of AI-SiC composite, Journal of Materials Processing
Technology, 124 (2002) 297-304
14. Evangelous Petroutseus, Mastering Visual Basic 6, BPB pubications,2002
15. Esko Raijola, Arthur W.Davidson, Low Valent Aluminum as a Product of Anodic
Oxidation in Aqueous Solution, American Chemical Society, Volume 78 (1956), Iss. 3
(506-696).
16. Herbert H Uhlig, Winston Revie, R, Corrosion and Corrosion Control, John Wiley &
Sons, Inc., 1985