Summary
This experiment investigates pcb soldering parameters. Central composite design to maximize joint quality and minimize bridging by tuning iron temperature, contact time, and solder wire diameter.
The design varies 3 factors: iron temp c (C), ranging from 280 to 380, contact sec (sec), ranging from 1 to 5, and solder mm (mm), ranging from 0.5 to 1.2. The goal is to optimize 2 responses: joint quality (pts) (maximize) and bridge rate (per_100) (minimize). Fixed conditions held constant across all runs include flux = rosin, tip = chisel_2mm.
A Central Composite Design (CCD) was selected to fit a full quadratic response surface model, including curvature and interaction effects. With 3 factors this produces 22 runs including center points and axial (star) points that extend beyond the factorial range.
Quadratic response surface models were fitted to capture potential curvature and factor interactions. The RSM contour plots below visualize how pairs of factors jointly affect each response.
Key Findings
For joint quality, the most influential factors were iron temp c (43.9%), solder mm (29.3%), contact sec (26.8%). The best observed value was 7.3 (at iron temp c = 280, contact sec = 5, solder mm = 1.2).
For bridge rate, the most influential factors were solder mm (49.8%), iron temp c (28.2%), contact sec (22.0%). The best observed value was 1.4 (at iron temp c = 330, contact sec = 3, solder mm = 0.85).
Recommended Next Steps
- Run confirmation experiments at the predicted optimal settings to validate the model.
- Consider whether any fixed factors should be varied in a future study.
Experimental Setup
Factors
| Factor | Low | High | Unit |
iron_temp_c | 280 | 380 | C |
contact_sec | 1 | 5 | sec |
solder_mm | 0.5 | 1.2 | mm |
Fixed: flux = rosin, tip = chisel_2mm
Responses
| Response | Direction | Unit |
joint_quality | ↑ maximize | pts |
bridge_rate | ↓ minimize | per_100 |
Configuration
{
"metadata": {
"name": "PCB Soldering Parameters",
"description": "Central composite design to maximize joint quality and minimize bridging by tuning iron temperature, contact time, and solder wire diameter"
},
"factors": [
{
"name": "iron_temp_c",
"levels": [
"280",
"380"
],
"type": "continuous",
"unit": "C"
},
{
"name": "contact_sec",
"levels": [
"1",
"5"
],
"type": "continuous",
"unit": "sec"
},
{
"name": "solder_mm",
"levels": [
"0.5",
"1.2"
],
"type": "continuous",
"unit": "mm"
}
],
"fixed_factors": {
"flux": "rosin",
"tip": "chisel_2mm"
},
"responses": [
{
"name": "joint_quality",
"optimize": "maximize",
"unit": "pts"
},
{
"name": "bridge_rate",
"optimize": "minimize",
"unit": "per_100"
}
],
"settings": {
"operation": "central_composite",
"test_script": "use_cases/272_pcb_soldering/sim.sh"
}
}
Experimental Matrix
The Central Composite Design produces 22 runs. Each row is one experiment with specific factor settings.
| Run | iron_temp_c | contact_sec | solder_mm |
| 1 | 330 | 3 | 0.85 |
| 2 | 380 | 1 | 1.2 |
| 3 | 280 | 5 | 0.5 |
| 4 | 330 | 6.65148 | 0.85 |
| 5 | 330 | 3 | 0.85 |
| 6 | 238.713 | 3 | 0.85 |
| 7 | 330 | 3 | 0.21099 |
| 8 | 330 | 3 | 0.85 |
| 9 | 380 | 5 | 0.5 |
| 10 | 421.287 | 3 | 0.85 |
| 11 | 330 | 3 | 0.85 |
| 12 | 330 | -0.651484 | 0.85 |
| 13 | 330 | 3 | 0.85 |
| 14 | 280 | 1 | 1.2 |
| 15 | 330 | 3 | 0.85 |
| 16 | 380 | 1 | 0.5 |
| 17 | 330 | 3 | 1.48901 |
| 18 | 380 | 5 | 1.2 |
| 19 | 330 | 3 | 0.85 |
| 20 | 280 | 1 | 0.5 |
| 21 | 280 | 5 | 1.2 |
| 22 | 330 | 3 | 0.85 |
Step-by-Step Workflow
1
Preview the design
$ doe info --config use_cases/272_pcb_soldering/config.json
2
Generate the runner script
$ doe generate --config use_cases/272_pcb_soldering/config.json \
--output use_cases/272_pcb_soldering/results/run.sh --seed 42
3
Execute the experiments
$ bash use_cases/272_pcb_soldering/results/run.sh
4
Analyze results
$ doe analyze --config use_cases/272_pcb_soldering/config.json
5
Get optimization recommendations
$ doe optimize --config use_cases/272_pcb_soldering/config.json
6
Multi-objective optimization
With 2 competing responses, use --multi to find the best compromise via Derringer–Suich desirability.
$ doe optimize --config use_cases/272_pcb_soldering/config.json --multi
7
Generate the HTML report
$ doe report --config use_cases/272_pcb_soldering/config.json \
--output use_cases/272_pcb_soldering/results/report.html
Features Exercised
| Feature | Value |
| Design type | central_composite |
| Factor types | continuous (all 3) |
| Arg style | double-dash |
| Responses | 2 (joint_quality ↑, bridge_rate ↓) |
| Total runs | 22 |
Analysis Results
Generated from actual experiment runs using the DOE Helper Tool.
Response: joint_quality
Top factors: iron_temp_c (43.9%), solder_mm (29.3%), contact_sec (26.8%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| Source | DF | SS | MS | F | p-value |
| iron_temp_c | 4 | 8.2904 | 2.0726 | 1.055 | 0.4317 |
| contact_sec | 4 | 2.8904 | 0.7226 | 0.368 | 0.8258 |
| solder_mm | 4 | 4.9520 | 1.2380 | 0.630 | 0.6532 |
| Lack | of | Fit | 2 | 1.4480 | 0.7240 |
| Pure | Error | 7 | 13.7487 | | |
| Error | 9 | 15.1967 | 1.9641 | | |
| Total | 21 | 31.3295 | 1.4919 | | |
Pareto Chart
Main Effects Plot
Normal Probability Plot of Effects
Half-Normal Plot of Effects
Model Diagnostics
Response: bridge_rate
Top factors: solder_mm (49.8%), iron_temp_c (28.2%), contact_sec (22.0%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| Source | DF | SS | MS | F | p-value |
| iron_temp_c | 4 | 3.2436 | 0.8109 | 0.934 | 0.4864 |
| contact_sec | 4 | 1.1670 | 0.2917 | 0.336 | 0.8471 |
| solder_mm | 4 | 5.1670 | 1.2917 | 1.488 | 0.2844 |
| Lack | of | Fit | 2 | 4.0673 | 2.0337 |
| Pure | Error | 7 | 6.0787 | | |
| Error | 9 | 10.1461 | 0.8684 | | |
| Total | 21 | 19.7236 | 0.9392 | | |
Pareto Chart
Main Effects Plot
Normal Probability Plot of Effects
Half-Normal Plot of Effects
Model Diagnostics
Response Surface Plots
3D surfaces fitted with quadratic RSM. Red dots are observed data points.
bridge rate contact sec vs solder mm
bridge rate iron temp c vs contact sec
bridge rate iron temp c vs solder mm
joint quality contact sec vs solder mm
joint quality iron temp c vs contact sec
joint quality iron temp c vs solder mm
Multi-Objective Optimization
When responses compete, Derringer–Suich desirability finds the best compromise.
Each response is scaled to a 0–1 desirability, then combined via a weighted geometric mean.
Overall Desirability
D = 0.7918
Per-Response Desirability
| Response | Weight | Desirability | Predicted | Dir |
joint_quality |
1.5 |
|
7.10 0.9091 7.10 pts |
↑ |
bridge_rate |
1.0 |
|
2.70 0.6435 2.70 per_100 |
↓ |
Recommended Settings
| Factor | Value |
iron_temp_c | 330 C |
contact_sec | 3 sec |
solder_mm | 1.48901 mm |
Source: from observed run #22
Trade-off Summary
Sacrifice = how much worse than single-objective best.
| Response | Predicted | Best Observed | Sacrifice |
bridge_rate | 2.70 | 1.40 | +1.30 |
Top 3 Runs by Desirability
| Run | D | Factor Settings |
| #5 | 0.7678 | iron_temp_c=330, contact_sec=3, solder_mm=0.85 |
| #15 | 0.7562 | iron_temp_c=330, contact_sec=3, solder_mm=0.85 |
Model Quality
| Response | R² | Type |
bridge_rate | 0.2496 | linear |
Full Multi-Objective Output
============================================================
MULTI-OBJECTIVE OPTIMIZATION
Method: Derringer-Suich Desirability Function
============================================================
Overall desirability: D = 0.7918
Response Weight Desirability Predicted Direction
---------------------------------------------------------------------
joint_quality 1.5 0.9091 7.10 pts ↑
bridge_rate 1.0 0.6435 2.70 per_100 ↓
Recommended settings:
iron_temp_c = 330 C
contact_sec = 3 sec
solder_mm = 1.48901 mm
(from observed run #22)
Trade-off summary:
joint_quality: 7.10 (best observed: 7.30, sacrifice: +0.20)
bridge_rate: 2.70 (best observed: 1.40, sacrifice: +1.30)
Model quality:
joint_quality: R² = 0.5317 (quadratic)
bridge_rate: R² = 0.2496 (linear)
Top 3 observed runs by overall desirability:
1. Run #22 (D=0.7918): iron_temp_c=330, contact_sec=3, solder_mm=1.48901
2. Run #5 (D=0.7678): iron_temp_c=330, contact_sec=3, solder_mm=0.85
3. Run #15 (D=0.7562): iron_temp_c=330, contact_sec=3, solder_mm=0.85
Full Analysis Output
=== Main Effects: joint_quality ===
Factor Effect Std Error % Contribution
--------------------------------------------------------------
iron_temp_c 3.6000 0.2604 43.9%
solder_mm 2.4000 0.2604 29.3%
contact_sec 2.2000 0.2604 26.8%
=== ANOVA Table: joint_quality ===
Source DF SS MS F p-value
-----------------------------------------------------------------------------
iron_temp_c 4 8.2904 2.0726 1.055 0.4317
contact_sec 4 2.8904 0.7226 0.368 0.8258
solder_mm 4 4.9520 1.2380 0.630 0.6532
Lack of Fit 2 1.4480 0.7240 0.369 0.7044
Pure Error 7 13.7487 1.9641
Error 9 15.1967 1.9641
Total 21 31.3295 1.4919
=== Summary Statistics: joint_quality ===
iron_temp_c:
Level N Mean Std Min Max
------------------------------------------------------------
238.713 1 6.9000 0.0000 6.9000 6.9000
280 4 6.1000 0.5477 5.5000 6.7000
330 12 6.1083 1.3215 4.0000 7.3000
380 4 6.0500 0.9883 5.1000 7.0000
421.287 1 3.3000 0.0000 3.3000 3.3000
contact_sec:
Level N Mean Std Min Max
------------------------------------------------------------
-0.651484 1 4.9000 0.0000 4.9000 4.9000
1 4 6.3000 0.8367 5.1000 7.0000
3 12 5.9583 1.5078 3.3000 7.3000
5 4 5.8500 0.6658 5.3000 6.8000
6.65148 1 7.1000 0.0000 7.1000 7.1000
solder_mm:
Level N Mean Std Min Max
------------------------------------------------------------
0.21099 1 4.7000 0.0000 4.7000 4.7000
0.5 4 6.5750 0.5315 5.8000 7.0000
0.85 12 5.9750 1.4937 3.3000 7.3000
1.2 4 5.5750 0.5737 5.1000 6.4000
1.48901 1 7.1000 0.0000 7.1000 7.1000
=== Main Effects: bridge_rate ===
Factor Effect Std Error % Contribution
--------------------------------------------------------------
solder_mm 2.2083 0.2066 49.8%
iron_temp_c 1.2500 0.2066 28.2%
contact_sec 0.9750 0.2066 22.0%
=== ANOVA Table: bridge_rate ===
Source DF SS MS F p-value
-----------------------------------------------------------------------------
iron_temp_c 4 3.2436 0.8109 0.934 0.4864
contact_sec 4 1.1670 0.2917 0.336 0.8471
solder_mm 4 5.1670 1.2917 1.488 0.2844
Lack of Fit 2 4.0673 2.0337 2.342 0.1665
Pure Error 7 6.0787 0.8684
Error 9 10.1461 0.8684
Total 21 19.7236 0.9392
=== Summary Statistics: bridge_rate ===
iron_temp_c:
Level N Mean Std Min Max
------------------------------------------------------------
238.713 1 2.8000 0.0000 2.8000 2.8000
280 4 4.0500 0.8266 3.1000 5.0000
330 12 3.1750 0.9845 2.0000 5.2000
380 4 2.9250 1.1206 1.4000 4.1000
421.287 1 3.2000 0.0000 3.2000 3.2000
contact_sec:
Level N Mean Std Min Max
------------------------------------------------------------
-0.651484 1 2.9000 0.0000 2.9000 2.9000
1 4 3.6750 0.6752 3.1000 4.4000
3 12 3.2083 0.9765 2.0000 5.2000
5 4 3.3000 1.4944 1.4000 5.0000
6.65148 1 2.7000 0.0000 2.7000 2.7000
solder_mm:
Level N Mean Std Min Max
------------------------------------------------------------
0.21099 1 3.0000 0.0000 3.0000 3.0000
0.5 4 3.5750 0.9500 3.1000 5.0000
0.85 12 2.9917 0.7549 2.0000 5.1000
1.2 4 3.4000 1.3638 1.4000 4.4000
1.48901 1 5.2000 0.0000 5.2000 5.2000
Optimization Recommendations
=== Optimization: joint_quality ===
Direction: maximize
Best observed run: #1
iron_temp_c = 280
contact_sec = 5
solder_mm = 1.2
Value: 7.3
RSM Model (linear, R² = 0.2412, Adj R² = 0.1148):
Coefficients:
intercept +6.0045
iron_temp_c -0.2460
contact_sec +0.1672
solder_mm +0.6533
RSM Model (quadratic, R² = 0.4625, Adj R² = 0.0594):
Coefficients:
intercept +5.6019
iron_temp_c -0.2460
contact_sec +0.1672
solder_mm +0.6533
iron_temp_c*contact_sec +0.4750
iron_temp_c*solder_mm +0.4000
contact_sec*solder_mm +0.0750
iron_temp_c^2 +0.1263
contact_sec^2 +0.4263
solder_mm^2 +0.0513
Curvature analysis:
contact_sec coef=+0.4263 convex (has a minimum)
iron_temp_c coef=+0.1263 convex (has a minimum)
solder_mm coef=+0.0513 negligible curvature
Notable interactions:
iron_temp_c*contact_sec coef=+0.4750 (synergistic)
iron_temp_c*solder_mm coef=+0.4000 (synergistic)
Predicted optimum (from linear model, at observed points):
iron_temp_c = 330
contact_sec = 3
solder_mm = 1.48901
Predicted value: 7.1973
Surface optimum (via L-BFGS-B, linear model):
iron_temp_c = 280
contact_sec = 5
solder_mm = 1.2
Predicted value: 7.0711
Model quality: Weak fit — consider adding center points or using a different design.
Factor importance:
1. solder_mm (effect: 2.4, contribution: 47.3%)
2. contact_sec (effect: 1.6, contribution: 31.0%)
3. iron_temp_c (effect: 1.1, contribution: 21.7%)
=== Optimization: bridge_rate ===
Direction: minimize
Best observed run: #7
iron_temp_c = 330
contact_sec = 3
solder_mm = 0.85
Value: 1.4
RSM Model (linear, R² = 0.0124, Adj R² = -0.1522):
Coefficients:
intercept +3.2727
iron_temp_c -0.0655
contact_sec -0.0785
solder_mm +0.0786
RSM Model (quadratic, R² = 0.4649, Adj R² = 0.0636):
Coefficients:
intercept +2.7109
iron_temp_c -0.0655
contact_sec -0.0785
solder_mm +0.0786
iron_temp_c*contact_sec +0.5125
iron_temp_c*solder_mm -0.0375
contact_sec*solder_mm -0.2375
iron_temp_c^2 +0.1259
contact_sec^2 +0.5459
solder_mm^2 +0.1709
Curvature analysis:
contact_sec coef=+0.5459 convex (has a minimum)
solder_mm coef=+0.1709 convex (has a minimum)
iron_temp_c coef=+0.1259 convex (has a minimum)
Notable interactions:
iron_temp_c*contact_sec coef=+0.5125 (synergistic)
Predicted optimum (from quadratic model, at observed points):
iron_temp_c = 330
contact_sec = -0.651484
solder_mm = 0.85
Predicted value: 4.6740
Surface optimum (via L-BFGS-B, quadratic model):
iron_temp_c = 380
contact_sec = 2.00194
solder_mm = 0.686607
Predicted value: 2.6534
Model quality: Weak fit — consider adding center points or using a different design.
Factor importance:
1. contact_sec (effect: 2.4, contribution: 43.6%)
2. iron_temp_c (effect: 1.7, contribution: 30.5%)
3. solder_mm (effect: 1.4, contribution: 25.9%)