-
Notifications
You must be signed in to change notification settings - Fork 0
/
Escher3D.html
370 lines (297 loc) · 15.8 KB
/
Escher3D.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
<!DOCTYPE html>
<!-- saved from url=(0049)http://escher3d.com/pages/wizards/wizarddelta.php -->
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta property="og:image" content="https://deltamelter.github.io/eyeofKosselico.png" />
<title>Escher 3D for Marlin-AC</title>
<link href="./Escher 3D_files/style.css" rel="stylesheet" type="text/css">
<!-- ========================================================= JavaScript ========================= -->
<script type="text/javascript">
</script>
</head>
<!-- ==================================================================== -->
<body>
<H1> Temporarily borrowed from <a href="http://http://escher3d.com/pages/wizards/wizarddelta.php" >Escher3d</a> until the original is updated to work with Marlin-AC :)<br>
Minor mods to correct the output.
<a name="top"></a>
<div class="border1">
<div class="border2">
<div class="banner">
</div>
<div class="restricted">
<!-- ====== START MAIN CONTENT ============================================== -->
<!-- ========================== banner ==================================== -->
<!-- ========================================= start navigation ==================== -->
<div>
<div class="navbox">
<table id="navtable">
<tbody><tr>
<td><img id="logo" class="logo" src="./Escher 3D_files/logo.jpg" alt=""></td>
<td> </td>
<td><table><tbody><tr>
<td><nav>
<a class="nav" href="http://escher3d.com/index.php">Welcome</a> |
<a class="nav" href="http://escher3d.com/pages/order/orderindex.php">Shop</a> |
<!-- <a class="nav" href="../template.php">Template</a> | -->
<a class="nav" href="http://escher3d.com/pages/support/supportindex.php">Support</a> |
<a class="nav" href="http://escher3d.com/pages/wizards/wizardindex.php">Wizards</a> |
<a class="noshow" href="http://escher3d.com/pages/designs/designindex.php">Designs</a> |
<a class="nav" href="http://escher3d.com/pages/contact/contactindex.php">Contact Us</a>
</nav>
</td>
</tr>
<tr>
<td><hr></td></tr>
<tr>
<td>
<nav>
<a class="nav" href="https://miscsolutions.wordpress.com/" target="_blank">Solutions Blog</a>
</nav></td>
</tr></tbody></table>
</td>
</tr>
</tbody></table>
</div>
</div>
<!-- ====================================== end navigation ==================== -->
<div class="here">WIZARDS</div>
<!-- ========================================================================= -->
<div> <!-- ====================== START MAIN CONTENT ====================== -->
<table>
<tbody><tr>
<td style="vertical-align:top">
<div class="divider">
</div>
</td>
<td style="vertical-align:top">
<a name="delta"></a>
<h1>Delta printer least-squares calibration calculator</h1>
<h2>Instructions</h2>
<p>
This calculator implements the least-squares delta calibration algorithm that RepRapFirmware has built-in.
I have provided it as a service for those not running RepRapFirmware.
You can choose to calibrate the following parameters:</p>
<ul>
<li>3 factors (endstop corrections only)</li>
<li>4 factors (endstop corrections and delta radius)</li>
<li>6 factors (endstop corrections, delta radius, and two tower angular position corrections)</li>
<li>7 factors (endstop corrections, delta radius, two tower angular position corrections, and diagonal rod length)</li>
</ul>
<p>It deliberately doesn't adjust any other tower position coordinates, because doing so isn't helpful.
Any adjustment to the 6 possible tower position coordinates is equivalent to adjusting the delta radius and two tower angular positions,
plus a translation of the bed origin and a rotation of the bed.
You don't want to rotate the bed - that will just move the height errors to points you haven't probed.
You don't want to translate the bed either - as well as moving height errors to points you haven't probed,
it will reduce your print area because the bed origin will no longer be equidistant from the towers.</p>
<p>I recommend using 6 factors. Unless you measure nozzle heights a very long way out opposite each of the towers,
there is insufficient information to determins diagonal rod length accurately.</p>
<p>To use the calculator:</p>
<ol>
<li>If you have any tower radius corrections configured in your firmware, remove them.</li>
<li>Enter your current diagonal rod length, delta radius, homed height, endstop corrections, and tower position corrections.
The tower position corrections are in degrees anticlockwise viewed looking down on the printer.
All other values are in mm, except that if the firmware type is set to Repetier then the initial endstop corrections are in steps.</li>
<li>Choose how many factors to calibrate (see below).</li>
<li>Choose some points covering all arease of the bed at which to measure the nozzle height error.
The calculator will suggest some if you enter your printable radius, select 4, 7 or 10 points, and press the <b>Suggest probe points</b> button. Alternatively, choose your own.
The XY coordinates of each point must be the coordinates of the nozzle, not the coordinates of the Z probe if you are using one.</li>
<li>Measure the nozzle height errors at those probe points, then enter the values in this calculator along with your machine parameters.
Enter positive height errors where the nozzle is too high, and negative height errors where it is too low.
</li>
<li>Press the <b>Calculate</b>. Check that the calculator reports success.</li>
<li>Copy the output parameters to your machine. You can use the generated M665 and M666 commands to do some or all of this for you, depending on your firmware.</li>
<li>Repeat the whole process once more. Two iterations should be sufficient unless your calibration was a long way off initially.</li>
</ol>
<div id="deltawizardduetwifiad">
If you find the above is rather laborious, why not upgrade your electronics to
<a href="https://www.duet3d.com/" target="_blank">Duet WiFi</a>, which has the calibration calculator built in to the firmware
so that you can auto-calibrate in just 30 seconds?
</div>
<p>You can send feedback to me using the <a href="http://escher3d.com/pages/contact/contactindex.php">Contact form</a>.</p>
<p>Calculator © 2015 Escher Technologies Ltd.</p>
<h2>Update history</h2>
<table border="1" style="border-collapse:collapse; font-size:smaller" cellpadding="5">
<tbody><tr>
<td valign="top">2016-01-01</td>
<td>
Corrected sign of nozzle height errors<br>
Added MarlinRC option<br>
Invert endstop corrections where necessary<br>
Corrected homed carriage height calculation<br>
Generate suggested points for 4-point probing<br>
Generate M665 D E H Z parameters when Smoothieware is selected
</td>
</tr>
<tr>
<td valign="top">2016-01-17</td>
<td>
Corrected sign of endstop corrections when Repetier is selected<br>
Normalise endstop corrections to be all positive when Repetier is selected<br>
Trap errors if probe points are unreachable or not distinct
</td>
</tr>
<tr>
<td valign="top">2016-01-31</td>
<td>
Added R parameter to generated M666 command when Marlin RC firmware is selected<br>
Added "Copy to initial parameters" button
</td>
</tr>
<tr>
<td valign="top">2016-03-30</td>
<td>
Added D parameter to generated M666 command when Marlin RC firmware is selected<br>
Corrected call to function SwapRows from GaussJordan
</td>
</tr>
</tbody></table>
<hr>
<form>
<table id="inputTable">
<tbody><tr>
<td style="padding-bottom:20px">Firmware type:</td>
<td colspan="7" style="padding-bottom:20px">
<input type="radio" name="firmware" value="Marlin-AC" checked="">Marlin-AC(LvD)
<input type="radio" name="firmware" value="RRF disabled" >RepRapFW
<input type="radio" name="firmware" value="Smoothieware">Smoothie
<input type="radio" name="firmware" value="Repetier ">Repetier
<input type="radio" name="firmware" value="Marlin" >Marlin(old)
<input type="radio" name="firmware" value="MarlinRC" >Marlin(RCattel)
</td>
</tr><tr>
<td>Steps/mm (for Repetier only):</td>
<td>
</td><td><input type="number" id="stepspermm" value="80.0" style="width:70px"></td>
</tr>
<tr>
<td>Initial endstop corrections:</td>
<td>X:</td>
<td><input type="number" id="oldxstop" value="0.0" step="0.01" style="width:70px"></td>
<td>Y:</td>
<td><input type="number" id="oldystop" value="0.0" step="0.01" style="width:70px"></td>
<td>Z:</td>
<td><input type="number" id="oldzstop" value="0.0" step="0.01" style="width:70px"></td>
</tr>
<tr>
<td>Initial diagonal rod length:</td>
<td>
</td><td><input type="number" id="oldrodlength" value="218.0" step="0.01" style="width:70px"></td>
</tr>
<tr>
<td>Initial delta radius:</td>
<td>
</td><td><input type="number" id="oldradius" value="100.0" step="0.01" style="width:70px"></td>
</tr>
<tr>
<td>Initial homed height:</td>
<td>
</td><td><input type="number" id="oldhomedheight" value="300.0" step="0.01" style="width:70px"></td>
</tr>
<tr>
<td style="padding-right:10px">Initial tower angular position corrections:</td>
<td>X:</td>
<td><input type="number" id="oldxpos" value="0.0" step="0.01" style="width:70px"></td>
<td>Y:</td>
<td><input type="number" id="oldypos" value="0.0" step="0.01" style="width:70px"></td>
<td>Z:</td>
<td><input type="number" id="oldzpos" value="0.0" step="0.01" style="width:70px"></td>
</tr>
<tr>
<td>Printable bed radius:</td>
<td>
</td><td><input type="number" id="bedradius" value="75.0" step="0.01" style="width:70px"></td>
</tr>
<tr>
<td>Number of probe points:</td>
<td>
</td><td><input type="number" id="numPoints" value="10" min="4" max="30" style="width:40px" onchange="setPoints()"></td>
</tr>
<tr>
<td>Number of factors to calibrate:</td>
<td>
</td><td><input type="number" id="numfactors" value="6" min="4" max="7" style="width:40px"></td>
</tr>
<tr>
<td>Normalise endstop corrections?</td>
<td><input type="checkbox" id="normalise" checked="True"></td>
</tr>
<tr><td style="padding-bottom:20px; padding-top:20px"><input type="button" id="suggestButton" value="Suggest probe points" onclick="calcProbePoints()"></td></tr>
<!-- bed probe points are inserted here -->
<tr><td>Point 0</td><td>X:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeX0"></td><td>Y:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeY0"></td><td></td><td>Nozzle height error:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeZ0"></td></tr><tr><td>Point 1</td><td>X:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeX1"></td><td>Y:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeY1"></td><td></td><td>Nozzle height error:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeZ1"></td></tr><tr><td>Point 2</td><td>X:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeX2"></td><td>Y:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeY2"></td><td></td><td>Nozzle height error:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeZ2"></td></tr><tr><td>Point 3</td><td>X:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeX3"></td><td>Y:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeY3"></td><td></td><td>Nozzle height error:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeZ3"></td></tr><tr><td>Point 4</td><td>X:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeX4"></td><td>Y:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeY4"></td><td></td><td>Nozzle height error:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeZ4"></td></tr><tr><td>Point 5</td><td>X:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeX5"></td><td>Y:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeY5"></td><td></td><td>Nozzle height error:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeZ5"></td></tr><tr><td>Point 6</td><td>X:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeX6"></td><td>Y:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeY6"></td><td></td><td>Nozzle height error:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeZ6"></td></tr><tr><td>Point 7</td><td>X:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeX7"></td><td>Y:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeY7"></td><td></td><td>Nozzle height error:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeZ7"></td></tr><tr><td>Point 8</td><td>X:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeX8"></td><td>Y:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeY8"></td><td></td><td>Nozzle height error:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeZ8"></td></tr><tr><td>Point 9</td><td>X:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeX9"></td><td>Y:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeY9"></td><td></td><td>Nozzle height error:</td><td><input type="number" value="0.0" step="0.01" style="width:70px" id="probeZ9"></td></tr><tr><td style="padding-bottom:20px; padding-top:20px"><input type="button" value="Calculate" onclick="calc()"></td></tr>
<tr><td colspan='7' style="padding-bottom:20px"><span id="result" style="font-weight:bold"> </span></td></tr>
<tr><td>New endstop corrections:</td>
<td>X:</td>
<td><input type="number" id="newxstop" style="width:70px" readonly=""></td>
<td>Y:</td>
<td><input type="number" id="newystop" style="width:70px" readonly=""></td>
<td>Z:</td>
<td><input type="number" id="newzstop" style="width:70px" readonly=""></td>
</tr>
<tr>
<td>New diagonal rod length:</td>
<td>
</td><td><input type="number" id="newrodlength" style="width:70px" readonly=""></td>
</tr>
<tr>
<td>New delta radius:</td>
<td>
</td><td><input type="number" id="newradius" style="width:70px" readonly=""></td>
</tr>
<tr>
<td>New homed height:</td>
<td>
</td><td><input type="number" id="newhomedheight" style="width:70px" readonly=""></td>
</tr>
<tr>
<td>New tower position angle corrections:</td>
<td>X:</td>
<td><input type="number" id="newxpos" style="width:70px" readonly=""></td>
<td>Y:</td>
<td><input type="number" id="newypos" style="width:70px" readonly=""></td>
<td>Z:</td>
<td><input type="number" id="newzpos" style="width:70px" readonly=""></td>
</tr>
<tr>
<td style="padding-top:20px">Commands:</td>
<td colspan="6" style="padding-top:20px"><textarea id="commands" style="width:500px" rows="3" readonly=""></textarea></td>
</tr>
<tr>
<td style="padding-bottom:20px; padding-top:20px"><input type="button" id="copyButton" value="Copy to initial parameters" onclick="copyToInitial()"></td>
</tr>
</tbody></table>
</form>
<div id="debug"></div>
<script src="./Escher 3D_files/delta_calibration_wizard.js.download"></script>
</td>
<td style="vertical-align:top">
<div class="divider">
</div>
</td>
<td style="vertical-align:top">
</td>
</tr>
</tbody></table>
</div>
</div> <!-- ==== END MAIN CONTENT ========== -->
<div class="footer">
<div id="back">
<a href="http://escher3d.com/" class="noshow">Home</a>
<a href="http://escher3d.com/pages/wizards/wizarddelta.php#top" class="noshow">
<img src="./Escher 3D_files/arrowup.gif" id="toparrow" alt="TOP">TOP</a>
</div>
<hr>
<div id="legal">
<div id="trading">Escher Technologies Ltd (Registered in England 3128474) trading as Escher3D
</div>
<div id="copyright">Copyright © Escher Technologies Ltd.
All rights reserved. Information in this document is subject to change without notice.
This site does not yet use cookies.</div>
</div>
</div>
</div>
</div>
<div id="underline"> </div>
</body></html>