PDF

Electroplating of Multiple Components in a Rack
Introduction
When several components are to be electroplated they are typically mounted on a rack in the electroplating bath. An important aspect is then achieving a uniform thickness of the plated layer for all components mounted on the rack. Numerical modeling allows to investigate the effect of several geometrical and operational parameters on electroplating uniformity in order to optimize the electroplating process.
In this tutorial example, electroplating of an array of oil pump covers mounted on a rack is considered. Within the array, one oil pump cover is displaced toward the anode in order to demonstrate the effect geometrical effect on the current distribution in the bath. A secondary current distribution with full Butler-Volmer kinetics for both anode and cathode is used here to compute the thickness of the deposited layer at the cathode surface.
The example is based on a scientific paper (Ref. 1).
Model Definition
The model geometry is shown in Figure 1. The anode is a planar dissolving anode. The cathode consists of an array of oil pump covers to be decorated by metal plating.
Figure 1: The model geometry.
The model geometry is parameterized so that any oil pump cover can be displaced toward or away from the anode surface. In the results shown below, one oil pump cover is displaced toward the anode surface, as indicated in Figure 1.
Electrolyte charge transport
Use the Secondary Current Distribution interface to solve for the electrolyte potential, φl (SI unit: V), according to:
where il (SI unit: A/m2) is the electrolyte current density vector and σl (SI unit: S/m) is the electrolyte conductivity, which is assumed to be a constant.
Use the default Insulation condition for all boundaries except the anode and cathode surfaces:
where n is the normal vector, pointing out of the domain.
The main electrode reaction on both the anode and the cathode surfaces is the nickel dissolution/deposition reaction according to
Use a Butler-Volmer Expression to model this reaction; this sets the local current density to
where i0,Ni is the exchange current density, αa is the anodic transfer coefficient, αc is the cathodic transfer coefficient, and ηNi is the overpotential.
The overpotential ηNi (V) is calculated from:
On the anode and cathode surfaces, the electrolyte current density is set to the local current density of the nickel dissolution/deposition reaction:
The electric potential of the metal is selected as a bootstrap by setting this potential to 0 V at the anode and the average current density of 100 A/m2 is applied at the cathode surface. This results in positive local current density at the anode surface and negative at the cathode surfaces.
The deposition thickness at the cathode boundary surfaces, d (m), is calculated according to
where M is the mean molar mass (59 g/mol), ρ is the density (8900 kg/m3) of the nickel atoms, n is number of participating electrons, and t is plating time.
The model is solved for using a Stationary study.
Results and Discussion
Figure 2 shows a streamline plot of the electrolyte current density and a surface plot of the total current density at the oil pump cover (cathode) surfaces. The current flows from the anode surface to the cathode surface in the electrolyte. The surface plot of the total current density indicates nonuniform current density distribution across the complex shape of the oil pump cover, and between different components in the array. Generally for each individual component, the current density is the highest at the oil pump cover boundaries closest to the anode surface and is the lowest at the boundaries farthest away from the anode surface. In the array, the current density is the highest at the displaced oil pump cover, located more closely to the anode. It is also observed that the oil pump covers mounted along the outer edge of the rack receive higher current than those mounted at the center of the rack. In summary, the nonuniform current distribution, seen in Figure 2, is attributed to both the complex shape of the cover as well as the mounting position on the rack.
Figure 2: Current density distribution in the rack.
Figure 3 shows the corresponding electroplating thickness over the cathode surfaces. Since the deposition thickness is proportional to the stationary local electrode current density at the cathode surface in this model, the deposition distribution is identical to the current distribution. The lowest deposition thickness is found to be at the bottom surface of the oil pump cover and the highest deposition thickness is found to be at the top surface of the displaced oil pump cover.
The numerical models of this type are useful in optimizing the deposition process by changing design parameters such as plating rack configuration, plating cell geometry, distance between the anode and cathode surface, conductivity of the electrolyte and operational parameters such as applied current or potential.
Figure 3: The electroplating thickness at the cathode.
Reference
1. J. Deconinck, G. Floridor, B. Van den Bossche, L. Bortels, and G. Nelissen, “Numerical 3D BEM Simulation of the Chromium Layer Thickness Distribution on Parts in a Rack Plating Configuration,” Simulation of Electrochemical Processes, vol. 48, p. 173, 2005.
Application Library path: Electrodeposition_Module/Tutorials/electroplating_rack
Modeling Instructions
From the File menu, choose New.
New
In the New window, click  Model Wizard.
Model Wizard
1
In the Model Wizard window, click  3D.
2
In the Select Physics tree, select Electrochemistry>Primary and Secondary Current Distribution>Secondary Current Distribution (cd).
3
Click Add.
4
Click  Study.
5
In the Select Study tree, select Preset Studies for Selected Physics Interfaces>Stationary with Initialization.
6
Global Definitions
Load the model parameters from a text file.
Parameters 1
1
In the Model Builder window, under Global Definitions click Parameters 1.
2
In the Settings window for Parameters, locate the Parameters section.
3
Click  Load from File.
4
Geometry 1
The model geometry is available as a parameterized geometry sequence in a separate MPH-file. If you want to build it from scratch, follow the instructions in the section Appendix — Geometry Modeling Instructions. Otherwise load it from file with the following steps.
1
In the Geometry toolbar, click  Insert Sequence.
2
3
In the Insert Sequence from File dialog box, click OK.
4
In the Geometry toolbar, click  Build All.
5
Click the  Wireframe Rendering button in the Graphics toolbar.
Secondary Current Distribution (cd)
Now start setting up the current distribution model. First, set the domain selection to 1 to solve the current distribution only in the electrolyte domain.
1
In the Model Builder window, under Component 1 (comp1) click Secondary Current Distribution (cd).
2
In the Settings window for Secondary Current Distribution, locate the Domain Selection section.
3
In the list, choose 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, and 21.
4
Click  Remove from Selection.
5
Electrolyte 1
Next, set the user defined electrolyte conductivity.
1
In the Model Builder window, under Component 1 (comp1)>Secondary Current Distribution (cd) click Electrolyte 1.
2
In the Settings window for Electrolyte, locate the Electrolyte section.
3
From the σl list, choose User defined. In the associated text field, type sigma.
Electrode Surface 1
Now define the nickel dissolution electrode reaction on the anode surface.
1
In the Physics toolbar, click  Boundaries and choose Electrode Surface.
2
Keep the default boundary condition for this surface, setting (grounding) the electric potential to zero.
Electrode Reaction 1
Set the Butler-Volmer electrode kinetics for the nickel dissolution reaction.
1
In the Model Builder window, expand the Electrode Surface 1 node, then click Electrode Reaction 1.
2
In the Settings window for Electrode Reaction, locate the Equilibrium Potential section.
3
In the Eeq text field, type Eeq_Ni.
4
Locate the Electrode Kinetics section. From the Kinetics expression type list, choose Butler-Volmer.
5
In the i0 text field, type i0_Ni.
Electrode Surface 1
Now duplicate this node to define the cathode settings. Set the average current density at the cathode surface.
Electrode Surface 2
1
In the Model Builder window, under Component 1 (comp1)>Secondary Current Distribution (cd) right-click Electrode Surface 1 and choose Duplicate.
2
In the Settings window for Electrode Surface, locate the Boundary Selection section.
3
From the Selection list, choose Array 1.
4
Locate the Electrode Phase Potential Condition section. From the Electrode phase potential condition list, choose Average current density.
5
In the il,average text field, type Iavg.
Mesh 1
While meshing, first mesh one oil pump cover and then copy the same mesh for the other oil pump covers.
1
In the Model Builder window, under Component 1 (comp1) click Mesh 1.
2
In the Settings window for Mesh, locate the Mesh Settings section.
3
From the Sequence type list, choose User-controlled mesh.
Free Tetrahedral 1
1
Click the  Transparency button in the Graphics toolbar.
2
In the Model Builder window, under Component 1 (comp1)>Mesh 1 click Free Tetrahedral 1.
3
Size 1
1
Right-click Free Tetrahedral 1 and choose Size.
2
In the Settings window for Size, locate the Element Size section.
3
From the Predefined list, choose Finer.
4
Click the  Transparency button in the Graphics toolbar.
5
Click  Build Selected.
Copy 1
1
In the Mesh toolbar, click  Copy and choose Copy.
2
3
In the Settings window for Copy, locate the Destination Entities section.
4
Select the  Activate Selection toggle button.
5
6
Click  Build Selected.
The mesh should look like this:
Free Tetrahedral 2
1
In the Mesh toolbar, click  Free Tetrahedral.
2
Click the  Transparency button in the Graphics toolbar.
3
In the Settings window for Free Tetrahedral, click  Build All.
The mesh should look like this:
Definitions
Before solving, load the definition of a postprocessing variable from a text file.
Variables 1
1
In the Home toolbar, click  Variables and choose Local Variables.
The electroplating thickness at the cathode surface, defined in the variable thickness_cathode, is evaluated from the local electrode reaction current density together with the reaction stoichiometry, and surface properties such as density and molecular weight and plating time parameters.
2
In the Settings window for Variables, locate the Variables section.
3
Click  Load from File.
4
Study 1
The model is now ready to be solved.
1
In the Home toolbar, click  Compute.
Results
Polish the streamlines of the default electrolyte current density plot group, and change the selection of the surface plot to the cathode surface only.
Streamline 1
1
In the Model Builder window, expand the Results>Electrolyte Current Density (cd) node, then click Streamline 1.
2
In the Settings window for Streamline, locate the Streamline Positioning section.
3
From the Positioning list, choose On selected boundaries.
4
Locate the Selection section. Select the  Activate Selection toggle button.
5
Color Expression 1
1
In the Model Builder window, expand the Streamline 1 node.
2
Right-click Color Expression 1 and choose Disable.
Surface 1
In the Model Builder window, click Surface 1.
Selection 1
1
In the Electrolyte Current Density (cd) toolbar, click  Selection.
2
In the Settings window for Selection, locate the Selection section.
3
From the Selection list, choose Array 1.
Electrolyte Current Density (cd)
1
In the Model Builder window, click Electrolyte Current Density (cd).
2
In the Settings window for 3D Plot Group, locate the Plot Settings section.
3
Clear the Plot dataset edges check box.
4
Click the  Transparency button in the Graphics toolbar.
5
In the Electrolyte Current Density (cd) toolbar, click  Plot.
The plot should look like Figure 2.
Electroplating Thickness
Next, plot electroplating thickness on the cathode surface.
1
In the Home toolbar, click  Add Plot Group and choose 3D Plot Group.
2
In the Settings window for 3D Plot Group, type Electroplating Thickness in the Label text field.
3
Locate the Plot Settings section. Clear the Plot dataset edges check box.
Surface 1
1
In the Electroplating Thickness toolbar, click  Surface.
2
In the Settings window for Surface, locate the Expression section.
3
In the Expression text field, type thickness_cathode.
4
From the Unit list, choose µm.
Selection 1
1
In the Electroplating Thickness toolbar, click  Selection.
2
In the Settings window for Selection, locate the Selection section.
3
From the Selection list, choose Array 1.
Electroplating Thickness
1
In the Model Builder window, click Electroplating Thickness.
2
In the Electroplating Thickness toolbar, click  Plot.
The plot should look like Figure 3.
Appendix — Geometry Modeling Instructions
From the File menu, choose New.
New
In the New window, click  Model Wizard.
Model Wizard
1
In the Model Wizard window, click  3D.
2
Global Definitions
Parameters 1
First load the geometrical parameters from a text file.
1
In the Model Builder window, under Global Definitions click Parameters 1.
2
In the Settings window for Parameters, locate the Parameters section.
3
Click  Load from File.
4
Oil Pump Cover
Now, start with creating a geometry part for oil pump cover.
1
In the Geometry toolbar, click  Parts and choose Create Part.
2
In the Settings window for Part, type Oil Pump Cover in the Label text field.
Cylinder 1 (cyl1)
1
In the Geometry toolbar, click  Cylinder.
2
In the Model Builder window, expand the Oil Pump Cover node, then click Cylinder 1 (cyl1).
3
In the Settings window for Cylinder, locate the Size and Shape section.
4
In the Radius text field, type D_opc/2.
5
In the Height text field, type t_opc.
Cylinder 2 (cyl2)
1
In the Geometry toolbar, click  Cylinder.
2
In the Settings window for Cylinder, locate the Size and Shape section.
3
In the Radius text field, type d_opc/2.
4
In the Height text field, type t_opc.
5
Locate the Position section. In the x text field, type d_opc*4/5.
Mirror 1 (mir1)
1
In the Geometry toolbar, click  Transforms and choose Mirror.
2
3
In the Settings window for Mirror, locate the Input section.
4
Select the Keep input objects check box.
5
Locate the Normal Vector to Plane of Reflection section. In the x text field, type 1.
6
In the z text field, type 0.
Work Plane 1 (wp1)
1
In the Geometry toolbar, click  Work Plane.
2
In the Settings window for Work Plane, locate the Plane Definition section.
3
In the z-coordinate text field, type t_opc/2.
Work Plane 1 (wp1)>Plane Geometry
In the Model Builder window, click Plane Geometry.
Work Plane 1 (wp1)>Circle 1 (c1)
1
In the Work Plane toolbar, click  Circle.
2
In the Settings window for Circle, locate the Size and Shape section.
3
In the Radius text field, type d_opc.
4
Locate the Position section. In the xw text field, type d_opc*4/5.
Work Plane 1 (wp1)>Mirror 1 (mir1)
1
In the Work Plane toolbar, click  Transforms and choose Mirror.
2
3
In the Settings window for Mirror, locate the Input section.
4
Select the Keep input objects check box.
Work Plane 1 (wp1)>Union 1 (uni1)
1
In the Work Plane toolbar, click  Booleans and Partitions and choose Union.
2
Click in the Graphics window and then press Ctrl+A to select both objects.
3
In the Settings window for Union, locate the Union section.
4
Clear the Keep interior boundaries check box.
Extrude 1 (ext1)
1
In the Model Builder window, under Global Definitions>Geometry Parts>Oil Pump Cover right-click Work Plane 1 (wp1) and choose Extrude.
2
In the Settings window for Extrude, locate the Distances section.
3
Cylinder 3 (cyl3)
1
In the Geometry toolbar, click  Cylinder.
2
In the Settings window for Cylinder, locate the Size and Shape section.
3
In the Radius text field, type d_opc.
4
In the Height text field, type t_opc/2.
5
Locate the Position section. In the y text field, type d_opc*4/5.
6
In the z text field, type t_opc*3/5.
Work Plane 2 (wp2)
1
In the Geometry toolbar, click  Work Plane.
2
In the Settings window for Work Plane, locate the Plane Definition section.
3
In the z-coordinate text field, type t_opc*3/5.
Work Plane 2 (wp2)>Plane Geometry
In the Model Builder window, click Plane Geometry.
Work Plane 2 (wp2)>Polygon 1 (pol1)
1
In the Work Plane toolbar, click  Polygon.
2
In the Settings window for Polygon, locate the Coordinates section.
3
From the Data source list, choose Vectors.
4
In the xw text field, type d_opc*4/5 0 0 -d_opc*8/5 -d_opc*8/5 -d_opc*4/5 -d_opc*4/5 -d_opc*4/5 -d_opc*4/5 -d_opc*4/5.
5
In the yw text field, type -d_opc -D_opc/2 -D_opc/2 -D_opc/2 -D_opc/2 -d_opc -d_opc 0 0 0.
Extrude 2 (ext2)
1
In the Model Builder window, under Global Definitions>Geometry Parts>Oil Pump Cover right-click Work Plane 2 (wp2) and choose Extrude.
2
In the Settings window for Extrude, locate the Distances section.
3
From the Specify list, choose Vertices to extrude to.
4
On the object cyl3, select Point 6 only.
Cylinder 4 (cyl4)
1
In the Geometry toolbar, click  Cylinder.
2
In the Settings window for Cylinder, locate the Size and Shape section.
3
In the Radius text field, type 0.3*d_opc/2.
4
In the Height text field, type t_opc.
5
Locate the Position section. In the x text field, type 0.43*D_opc/sqrt(2).
6
In the y text field, type 0.43*D_opc/sqrt(2).
Rotate 1 (rot1)
1
In the Geometry toolbar, click  Transforms and choose Rotate.
2
3
In the Settings window for Rotate, locate the Input section.
4
Select the Keep input objects check box.
5
Locate the Rotation section. In the Angle text field, type 90,180,270.
Difference 1 (dif1)
1
In the Geometry toolbar, click  Booleans and Partitions and choose Difference.
2
3
In the Settings window for Difference, locate the Difference section.
4
Find the Objects to subtract subsection. Select the  Activate Selection toggle button.
5
Select the objects cyl2, cyl3, cyl4, ext1, ext2, mir1, rot1(1), rot1(2), and rot1(3) only.
6
Click  Build Selected.
The geometry of oil pump cover should look like this:
Global Definitions
Now, create a geometry part for plating tank.
Plating Tank
1
In the Geometry toolbar, click  Parts and choose Create Part.
2
In the Settings window for Part, type Plating Tank in the Label text field.
Block 1 (blk1)
1
In the Geometry toolbar, click  Block.
2
In the Settings window for Block, locate the Size and Shape section.
3
In the Width text field, type n_x*D_opc+(n_x+1)*dist_x.
4
In the Depth text field, type n_y*D_opc+(n_y+1)*dist_y.
5
In the Height text field, type H_tank.
6
Locate the Position section. From the Base list, choose Center.
7
In the z text field, type H_tank/2.
Geometry 1
Now, assemble an array of oil pump covers in the electroplating tank.
Oil Pump Cover 1 (pi1)
1
In the Geometry toolbar, click  Parts and choose Oil Pump Cover.
2
In the Settings window for Part Instance, locate the Position and Orientation of Output section.
3
Find the Displacement subsection. In the xw text field, type ((D_opc+dist_x)*(1-n_x))/2.
4
In the yw text field, type ((D_opc+dist_y)*(1-n_y))/2.
Plating Tank 1 (pi2)
1
In the Geometry toolbar, click  Parts and choose Plating Tank.
2
In the Settings window for Part Instance, locate the Position and Orientation of Output section.
3
Find the Displacement subsection. In the zw text field, type -z_out*6.
Array 1 (arr1)
1
In the Geometry toolbar, click  Transforms and choose Array.
2
Click the  Wireframe Rendering button in the Graphics toolbar.
3
4
In the Settings window for Array, locate the Size section.
5
In the x size text field, type n_x.
6
In the y size text field, type n_y.
7
Locate the Displacement section. In the x text field, type D_opc+dist_x.
8
In the y text field, type D_opc+dist_x.
9
Locate the Selections of Resulting Entities section. Select the Resulting objects selection check box.
10
From the Show in physics list, choose Boundary selection.
11
Click  Build Selected.
12
Click the  Zoom Extents button in the Graphics toolbar.
The geometry of an array of oil pump covers should look like this:
Cylinder Selection 1 (cylsel1)
One can displace a particular oil pump cover making use of cylinder selection.
1
In the Geometry toolbar, click  Selections and choose Cylinder Selection.
2
In the Settings window for Cylinder Selection, locate the Geometric Entity Level section.
3
From the Level list, choose Object.
4
Locate the Input Entities section. From the Entities list, choose From selections.
5
6
In the Add dialog box, select Array 1 in the Selections list.
7
8
In the Settings window for Cylinder Selection, locate the Size and Shape section.
9
In the Outer radius text field, type D_opc/2.
10
Locate the Position section. In the x text field, type -(n_x*D_opc+(n_x+1)*dist_x)/2+floor(part_in)*(dist_x+D_opc)-D_opc/2.
11
In the y text field, type -(n_y*D_opc+(n_y+1)*dist_y)/2+((part_in-floor(part_in))*10)*(dist_y+D_opc)-D_opc/1.25.
Move 1 (mov1)
1
In the Geometry toolbar, click  Transforms and choose Move.
2
In the Settings window for Move, locate the Input section.
3
From the Input objects list, choose Cylinder Selection 1.
The oil pump cover to be displaced is highlighted below:
4
Locate the Displacement section. In the z text field, type z_out.
5
Click  Build Selected.
The geometry of an array of oil pump covers should look like this:
Rotate 1 (rot1)
1
In the Geometry toolbar, click  Transforms and choose Rotate.
2
In the Settings window for Rotate, locate the Input section.
3
From the Input objects list, choose Array 1.
4
Click in the Graphics window and then press Ctrl+A to select all objects.
5
Locate the Rotation section. From the Axis type list, choose x-axis.
6
In the Angle text field, type 90.
7
Click  Build Selected.
The final geometry should look like this: