95
NUMERICAL CONTROLLED ELECTROCHEMICAL MACHINING OF SILICON CARBIDE/ALUMINUM METAL MATRIX COMPOSITES A THESIS SUBMITTED TO THE GRADUATE DIVISION OF THE UNIVERSITY OF HAWAI'I IN PARTIAL FULFILLMENT OF THE REQUIREMENTS FOR THE DEGREE OF MASTER OF SCIENCE IN MECHANICAL ENGINEERING DECEMBER 2004 By Prasath Mungundu Sugadev Thesis Committee Lloyd H. Hihara, Chairperson Bruce Liebert Mehrdad N Ghasemi Nejhad 3'1'2 S

3'1'2 S

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 3'1'2 S

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

Page 2: 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.

Page 3: 3'1'2 S

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.

Page 4: 3'1'2 S

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 5: 3'1'2 S

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

Page 6: 3'1'2 S

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 7: 3'1'2 S

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

Page 8: 3'1'2 S

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

Page 9: 3'1'2 S

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 10: 3'1'2 S

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 11: 3'1'2 S

Page

Appendix A 64

Appendix B 65

References 83

Page 12: 3'1'2 S

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

Page 13: 3'1'2 S

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.

Page 14: 3'1'2 S

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.

Page 15: 3'1'2 S

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

Page 16: 3'1'2 S

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).

Page 17: 3'1'2 S

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

Page 18: 3'1'2 S

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.

Page 19: 3'1'2 S

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.

Page 20: 3'1'2 S

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

Page 21: 3'1'2 S

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.

Page 22: 3'1'2 S

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.

Page 23: 3'1'2 S

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.

Page 24: 3'1'2 S

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

Page 25: 3'1'2 S

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

Page 26: 3'1'2 S

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.

Page 27: 3'1'2 S

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).

Page 28: 3'1'2 S

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

Page 29: 3'1'2 S

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

Page 30: 3'1'2 S

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

Page 31: 3'1'2 S

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

Page 32: 3'1'2 S

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.

Page 33: 3'1'2 S

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)

Page 34: 3'1'2 S

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

Page 35: 3'1'2 S

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

Page 36: 3'1'2 S

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

Page 37: 3'1'2 S

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

Page 38: 3'1'2 S

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

Page 39: 3'1'2 S

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

Page 40: 3'1'2 S

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

Page 41: 3'1'2 S

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)

Page 42: 3'1'2 S

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

Page 43: 3'1'2 S

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)

Page 44: 3'1'2 S

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)

Page 45: 3'1'2 S

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.

Page 46: 3'1'2 S

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

Page 47: 3'1'2 S

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:

Page 48: 3'1'2 S

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.

Page 49: 3'1'2 S

38

Figure 4.11. The numerically controlled electrochemical machine

Figure 4.12. CNC machine

Page 50: 3'1'2 S

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.

Page 51: 3'1'2 S

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

Page 52: 3'1'2 S

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

Page 53: 3'1'2 S

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

Page 54: 3'1'2 S

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

Page 55: 3'1'2 S

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

Page 56: 3'1'2 S

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

Page 57: 3'1'2 S

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

Page 58: 3'1'2 S

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

Page 59: 3'1'2 S

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

Page 60: 3'1'2 S

[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

Page 61: 3'1'2 S

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:

Page 62: 3'1'2 S

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

Page 63: 3'1'2 S

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

Page 64: 3'1'2 S

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

Page 65: 3'1'2 S

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

Page 66: 3'1'2 S

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)

Page 67: 3'1'2 S

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

Page 68: 3'1'2 S

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

Page 69: 3'1'2 S

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

Page 70: 3'1'2 S

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

Page 71: 3'1'2 S

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.

Page 72: 3'1'2 S

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.

Page 73: 3'1'2 S

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.

Page 74: 3'1'2 S

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.

Page 75: 3'1'2 S

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

Page 76: 3'1'2 S

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

Page 77: 3'1'2 S

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

Page 78: 3'1'2 S

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

Page 79: 3'1'2 S

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

Page 80: 3'1'2 S

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

Page 81: 3'1'2 S

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

Page 82: 3'1'2 S

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

Page 83: 3'1'2 S

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

Page 84: 3'1'2 S

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

Page 85: 3'1'2 S

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

Page 86: 3'1'2 S

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

Page 87: 3'1'2 S

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

Page 88: 3'1'2 S

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

Page 89: 3'1'2 S

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

Page 90: 3'1'2 S

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

Page 91: 3'1'2 S

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

Page 92: 3'1'2 S

'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

Page 93: 3'1'2 S

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

Page 94: 3'1'2 S

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

Page 95: 3'1'2 S

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