自动校准Delta打印机,Prism Mini示例

上一篇文章中,显示了如何在手动模式下校准增量打印机。但是由于设置的复杂性和复杂性,决定进行自动校准。由于最终版本处于测试和制造阶段,因此我们仍然希望使我们的客户以及按照此方案为自己制造打印机的每个人的生活更加轻松。接下来,将考虑实现自动校准的方法之一。
有很多方法,可以在带有微型开关,FSR传感器,霍尔传感器等的弹出器上安装可伸缩探针。但是这些系统有一个很大的缺点-它们不是直接测量到喷嘴的距离,而是直接测量到传感器的距离,而且在某些情况下,对齐可能会失败(如果未放置传感器而不是喷嘴,则可能会违反几何计算。更不用说精度了) 。
理想的选择是将喷嘴本身的触感固定在桌子上。在这里您可以通过两种方式进行:
  • 在HotEnd和效应器之间创建一个电触点,以便HotEnd可移动并在单击时打开(或关闭)该触点。
  • 在金属喷嘴和工作台之间建立电接触。

第一种选择在制造和工作稳定性方面更为复杂,但是采用适当的设计将获得永久的稳定结果,而无需进行额外的车身移动。
第二个选项使用起来较不方便,但实现起来很简单,通常很少需要校准,可以根据需要进行。
我们将讨论第二种方法:


从工具中,我们需要:
  1. 铝透明胶带(实际上是铝箔,是胶粘剂,不是所有的增强胶带)
  2. “鳄鱼”-要将触点之一连接到热端金属盒,原则上,您可以使用任何回形针进行操作,或通过拧紧或焊接(严重但有效)来固定电线的末端
  3. 办公室衣夹
  4. 用于将我们的简易传感器连接到RAMPS 1.4板上(或板上相应的EndStop连接器)的引脚块2.54。很少有人会弯折安装这些模块,但是您可以通过从“高音扬声器”或按钮中将其卸下来在计算机单元中找到类似的模块。
  5. 对于焊接附件,希望具有活性助焊剂和功能较弱的烙铁。
  6. 电线,大约一米。

在我们的工作平面(玻璃)上施加导电层的最简单方法是用铝胶带粘贴,但重要的是将其均匀粘贴并使其光滑,以使胶带之间保持电气接触,并用万用表对它进行“振铃”检查。

同样,要进行切换,您应按先前编写的方法将一根导线挤压到2.54块中(或焊接到其上),另一端将用铝带固定在HotEnd的散热器和桌子上。为了爬到散热器,我们拿一条普通的鳄鱼皮,然后将电线的一端焊接到散热器上,为了便于焊接,我建议使用酸,尽管我在良好的加热和普通的松香下进行了焊接,但第二端也可以焊接到鳄鱼皮上,但是在这种情况下,有可能损坏胶带固定时,鳄鱼应该足够大。我们的工作方式如下:拿一个回形针,并从油漆中清洁(最好从所有侧面)。这里的重点是我们将使用普通焊料(PIC 61)将铜线焊接到金属晒衣夹上,并且要成功地进行相同的焊接,我们需要有效的助焊剂,我们使用了普通的正磷酸(焊接酸)。


以下是与主板和打印机本身的连接的照片。打印机上的电线末端连接到Z-max。,并且在固件中,有必要指出限位开关的正常状态(我们的传感器处于关闭或打开状态)。通过这种方法,传感器在正常状态下处于打开状态。




可以从此处获取具有针对增量打印机的自动校准的固件:具有自动校准更新的Marlin Delta固件。 RichCattell
固件设置:
Cohfiguration.h
// Precision for G30 delta autocalibration function
#define AUTOCALIBRATION_PRECISION 0.03 // mm.  ,     0.1.

// Diameter of print bed - this is used to set the distance that autocalibration probes the bed at.   ,        ,     ( ),  ,    (  , ..   )   .
#define BED_DIAMETER 170 // mm

// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
const bool X_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Y_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Z_MIN_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.     


连接导线并调整打印机固件后,您需要自行开始校准。这是非常重要的一点,应该从计算机进行校准,因为打印机本身无法正确执行此操作。显然设备内存不足,并且校准在中间的某个地方结束。
此外,自动校准的特征之一是该算法会顺序选择几何参数,这可能会花费相当长的时间,尤其是在几何严重破损或未正确设置初始参数的情况下(例如,对角线的长度为150 mm,实际上为200 mm,并且具有给定步骤的算法将在每次迭代时再次重复校准,最后将对其进行校准,但是这将花费不可思议的时间)

要开始自动校准,请通过USB连接到打印机,然后使用pronterface程序。共有三种类型的校准:
  • G30命令-校准偏移量-本质上将高度设置为限位开关。
  • G30A小组-根据“塔”来校准打印机的整个几何形状,对角线的长度,限位开关的压痕(高度)和几何形状的曲率-塔式塔(很可能是打印机支持不同的高度)
  • G29小组-所谓的AutoBedLevel-自动校准工作台曲率。在增量打印机上,它可以最正确地工作,并在初始g代码中开始打印之前立即开始。

因此,最后两个是最相关的。
以下是未进行初始校准并重新启动打印机控制台的列表。
简短的校准原理:
  • 检查/调整挡块偏移
  • 检查/调整Delta半径
  • 检查塔架几何形状错误
  • 对角线长度选择>检查塔的几何形状>协调EndStop偏移量。当前两个参数更改时,选择第三个参数,并重复该循环,直到满足所有三个参数。


初始校准列表-自4到17的迭代被削减 它重复动作
Connecting...
start
Printer is now online.
echo:Marlin 1.0.0
echo: Last Updated: Jul 31 2015 11:09:21 | Author: (RichCattell, Prism Mini)
Compiled: Jul 31 2015
echo: Free Memory: 1753  PlannerBufferBytes: 1232
echo:Hardcoded Default Settings Loaded
echo:Steps per unit:
echo:  M92 X100.00 Y100.00 Z100.00 E156.00
echo:Maximum feedrates (mm/s):
echo:  M203 X200.00 Y200.00 Z200.00 E200.00
echo:Maximum Acceleration (mm/s2):
echo:  M201 X9000 Y9000 Z9000 E9000
echo:Acceleration: S=acceleration, T=retract acceleration
echo:  M204 S3000.00 T3000.00
echo:Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s),  Z=maximum Z jerk (mm/s),  E=maximum E jerk (mm/s)
echo:  M205 S0.00 T0.00 B20000 X20.00 Z20.00 E20.00
echo:Home offset (mm):
echo:  M206 X0.00 Y0.00 Z0.00
echo:Delta Geometry adjustment:
echo:  M666 A0.000 B0.000 C0.000 I0.000 J0.000 K0.000 U0.000 V0.000 W0.000 R66.00 D154.00 H230.00
echo:Endstop Offsets:
echo:  M666 X0.00 Y0.00 Z0.00
echo:Z-Probe Offset:
echo:  M666 P X0.00 Y0.00 Z0.00
echo:PID settings:
echo:   M301 P15.09 I0.75 D76.13
echo:SD init fail
Setting hotend temperature to 190.000000 degrees Celsius.
Setting bed temperature to 70.000000 degrees Celsius.
>>> g30 a
SENDING:G30 A
Starting Auto Calibration..
Calibration precision: +/-0.100mm
|	Z-Tower			Endstop Offsets
| 	-7.8500			X:0.00 Y:0.00 Z:0.00
| -5.2400		-8.5900		Tower Offsets
| 	-6.8400			A:0.00 b:0.00 C:0.00
| -3.7200		-8.0400		I:0.00 J:0.00 K:0.00
| 	-5.6900			Delta Radius: 66.0000
| X-Tower		Y-Tower		Diagonal Rod: 154.0000



Iteration: 1
Checking/Adjusting endstop offsets //  /   endstop'
			x:-3.6800 (adj:-3.6800) y:-7.9600 (adj:-7.9600) z:-7.7700 (adj:-7.7700)
			X=ERROR Y=ERROR Z=ERROR
			x:0.7500 (adj:-2.9300) y:-0.1900 (adj:-8.1500) z:-0.2200 (adj:-7.9900)
			X=ERROR Y=ERROR Z=ERROR
			x:0.1600 (adj:-2.7700) y:-0.0800 (adj:-8.2300) z:0.0500 (adj:-7.9400)
			X=ERROR Y=OK Z=OK
			x:0.0300 (adj:-2.7400) y:-0.0200 (adj:-8.2500) z:0.0100 (adj:-7.9300)
			X=OK Y=OK Z=OK
|	Z-Tower			Endstop Offsets
| 	-0.0300			X:-2.74 Y:-8.25 Z:-7.93
| -0.0200		0.1500		Tower Offsets
| 	-0.2800			A:0.00 b:0.00 C:0.00
| -0.0300		-0.0300		I:0.00 J:0.00 K:0.00
| 	-0.1900			Delta Radius: 66.0000
| X-Tower		Y-Tower		Diagonal Rod: 154.0000
Checking delta radius //  
Adjusting Delta Radius //  
			x:-0.0600 (adj:-2.8000) y:-0.0300 (adj:-8.2800) z:-0.0500 (adj:-7.9800)
			X=OK Y=OK Z=OK
			 c: -0.2000 delta radius:66.0000 prec:0.010 tries:0
			 done:false
			x:0.0700 (adj:-2.7300) y:0.0900 (adj:-8.1900) z:0.0300 (adj:-7.9500)
			X=OK Y=OK Z=OK
			 c: -0.2100 delta radius:66.2000 prec:0.010 tries:0
			 done:false
			x:0.0600 (adj:-2.6700) y:0.0300 (adj:-8.1600) z:0.0600 (adj:-7.8900)
			X=OK Y=OK Z=OK
			 c: -0.1500 delta radius:66.4000 prec:0.010 tries:0
			 done:false
			x:0.0400 (adj:-2.6300) y:-0.0100 (adj:-8.1700) z:0.0300 (adj:-7.8600)
			X=OK Y=OK Z=OK
			 c: -0.0800 delta radius:66.6000 prec:0.010 tries:1
			 done:false
			x:0.0300 (adj:-2.6000) y:0.0400 (adj:-8.1300) z:0.0600 (adj:-7.8000)
			X=OK Y=OK Z=OK
			 c: 0.0200 delta radius:66.8000 prec:0.010 tries:2
			 done:false
			x:-0.0100 (adj:-2.6100) y:0.0200 (adj:-8.1100) z:-0.0200 (adj:-7.8200)
			X=OK Y=OK Z=OK
			 c: -0.0900 delta radius:66.7000 prec:0.010 tries:3
			 done:false
			x:-0.0000 (adj:-2.6100) y:-0.0000 (adj:-8.1100) z:-0.0000 (adj:-7.8200)
			X=OK Y=OK Z=OK
			 c: -0.0500 delta radius:66.7500 prec:0.020 tries:0
			 done:false
			x:0.0500 (adj:-2.5600) y:0.0100 (adj:-8.1000) z:0.0300 (adj:-7.7900)
			X=OK Y=OK Z=OK
			 c: -0.0400 delta radius:66.8000 prec:0.020 tries:1
			 done:false
			x:-0.0100 (adj:-2.5700) y:-0.0500 (adj:-8.1500) z:-0.0400 (adj:-7.8300)
			X=OK Y=OK Z=OK
			 c: 0.0100 delta radius:66.8500 prec:0.020 tries:1
			 done:true
			 
			 
			 
Iteration: 2
Checking/Adjusting endstop offsets //  /   endstop'
			x:-0.0000 (adj:-2.5700) y:0.0300 (adj:-8.1200) z:0.0300 (adj:-7.8000)
			X=OK Y=OK Z=OK
|	Z-Tower			Endstop Offsets
| 	 0.0100			X:-2.57 Y:-8.12 Z:-7.80
| 0.0100		0.1700		Tower Offsets
| 	 0.0000			A:0.00 b:0.00 C:0.00
| 0.0200		-0.0200		I:0.00 J:0.00 K:0.00
| 	-0.1900			Delta Radius: 66.8500
| X-Tower		Y-Tower		Diagonal Rod: 154.0000
Checking for tower geometry errors.. //   
			x_diff = 0.15000
			y_diff = 0.03000
			z_diff = 0.20000
			high_diff = 0.20000
			xy_equal = false
			xz_equal = true
			yz_equal = false
			Opp Range = 0.36000
			t1:Err t2:OK t3:Err
			Tower geometry OK
Checking DiagRod Length //  
			target:0.0033 c:0.0000 adj:0.00000
			|	Z-Tower			Endstop Offsets
			| 	-0.0000			X:-2.57 Y:-8.12 Z:-7.80
			| 0.0400		0.2000		Tower Offsets
			| 	-0.0000			A:0.00 b:0.00 C:0.00
			| -0.0100		-0.0000		I:0.00 J:0.00 K:0.00
			| 	-0.2000			Delta Radius: 66.8500
			| X-Tower		Y-Tower		Diagonal Rod: 154.0000
			
			
			
Iteration: 3
Checking/Adjusting endstop offsets  //  /   endstop'
			x:-0.0100 (adj:-2.5800) y:0.0300 (adj:-8.0900) z:0.0300 (adj:-7.7700)
			X=OK Y=OK Z=OK
			|	Z-Tower			Endstop Offsets
			| 	-0.0300			X:-2.58 Y:-8.09 Z:-7.77
			| 0.0300		0.1400		Tower Offsets
			| 	-0.0200			A:0.00 b:0.00 C:0.00
			| 0.0100		-0.0400		I:0.00 J:0.00 K:0.00
			| 	-0.2200			Delta Radius: 66.8500
			| X-Tower		Y-Tower		Diagonal Rod: 154.0000
Checking for tower geometry errors..  //   
			x_diff = 0.13000
			y_diff = 0.07000
			z_diff = 0.19000
			high_diff = 0.19000
			xy_equal = true
			xz_equal = true
			yz_equal = false
			Opp Range = 0.36000
			t1:Err t2:OK t3:Err
			Tower geometry OK
Checking DiagRod Length //  
			target:-0.0033 c:-0.0200 adj:-0.20000
			target:0.2133 c:0.2000 adj:-0.20000
			target:0.4267 c:0.4000 adj:-0.20000
			target:0.6233 c:0.6200 adj:0.00000
Diag Rod Length changed .. Homing Endstops  //  ... "" -      Endstop
|	Z-Tower			Endstop Offsets
| 	-0.4600			X:-2.58 Y:-8.09 Z:-7.77
| -0.4000		-0.2900		Tower Offsets
| 	-0.4600			A:0.00 b:0.00 C:0.00
| -0.4500		-0.5200		I:0.00 J:0.00 K:0.00
| 	-0.6900			Delta Radius: 66.8500
| X-Tower		Y-Tower		Diagonal Rod: 153.4000

Iteration: 17
Checking/Adjusting endstop offsets
x:0.0100 (adj:-3.0300) y:0.0300 (adj:-8.5000) z:0.0100 (adj:-8.2300)
X=OK Y=OK Z=OK
|	Z-Tower			Endstop Offsets
| 	-0.0300			X:-3.03 Y:-8.50 Z:-8.23
| 0.0400		0.1200		Tower Offsets
| 	-0.0300			A:0.00 b:0.00 C:0.00
| 0.0100		-0.0600		I:0.00 J:0.00 K:0.00
| 	-0.2600			Delta Radius: 66.8500
| X-Tower		Y-Tower		Diagonal Rod: 153.3453
Checking for tower geometry errors..
x_diff = 0.11000
y_diff = 0.10000
z_diff = 0.23000
high_diff = 0.23000
xy_equal = true
xz_equal = false
yz_equal = false
Opp Range = 0.38000
Tower 3 has largest error
t1:Err t2:Err t3:Err
Tower3 Error: Adjusting
 tower: -0.0400 opptower:-0.2700 tower radius adj:0.0000
 done:false
x:0.0000 (adj:-3.0300) y:0.0000 (adj:-8.5000) z:-0.0600 (adj:-8.2900)
X=OK Y=OK Z=OK
 tower: -0.0700 opptower:-0.1300 tower radius adj:-1.0000
 done:false
x:-0.0600 (adj:-3.0900) y:-0.0900 (adj:-8.5900) z:-0.0900 (adj:-8.3800)
X=OK Y=OK Z=OK
 tower: -0.0900 opptower:0.0900 tower radius adj:-2.0000
 done:false
x:-0.0500 (adj:-3.1400) y:-0.0400 (adj:-8.6300) z:-0.0700 (adj:-8.4500)
X=OK Y=OK Z=OK
 tower: 0.0400 opptower:0.0500 tower radius adj:-1.5000
 done:true
Tower Postions changed .. Homing Endstops
|	Z-Tower			Endstop Offsets
| 	 0.6400			X:-3.14 Y:-8.63 Z:-8.45
| 0.3300		0.4500		Tower Offsets
| 	 0.0900			A:0.00 b:0.00 C:0.00
| 0.0900		0.0100		I:0.00 J:0.00 K:-1.50
| 	-0.0200			Delta Radius: 66.8500
| X-Tower		Y-Tower		Diagonal Rod: 153.3453



Iteration: 18
Checking/Adjusting endstop offsets
x:0.1000 (adj:-3.0400) y:0.0600 (adj:-8.5700) z:0.6500 (adj:-7.8000)
X=OK Y=OK Z=ERROR
x:-0.0500 (adj:-3.0900) y:-0.0400 (adj:-8.6100) z:0.0600 (adj:-7.7400)
X=OK Y=OK Z=OK
|	Z-Tower			Endstop Offsets
| 	-0.0000			X:-3.09 Y:-8.61 Z:-7.74
| -0.0600		0.0200		Tower Offsets
| 	-0.1100			A:0.00 b:0.00 C:0.00
| -0.0000		-0.0700		I:0.00 J:0.00 K:-1.50
| 	 0.0200			Delta Radius: 66.8500
| X-Tower		Y-Tower		Diagonal Rod: 153.3453
Checking delta radius
Adjusting Delta Radius
x:-0.0200 (adj:-3.1100) y:-0.0300 (adj:-8.6400) z:0.0200 (adj:-7.7200)
X=OK Y=OK Z=OK
 c: -0.1100 delta radius:66.8500 prec:0.010 tries:0
 done:false
x:0.0500 (adj:-3.0600) y:0.0400 (adj:-8.6000) z:0.0100 (adj:-7.7100)
X=OK Y=OK Z=OK
 c: -0.0400 delta radius:67.0500 prec:0.010 tries:1
 done:false
x:0.0400 (adj:-3.0200) y:0.0800 (adj:-8.5200) z:0.0600 (adj:-7.6500)
X=OK Y=OK Z=OK
 c: -0.0000 delta radius:67.2500 prec:0.010 tries:1
 done:true
 
 
 
Iteration: 19
Checking/Adjusting endstop offsets
x:-0.0000 (adj:-3.0200) y:-0.0200 (adj:-8.5400) z:0.0100 (adj:-7.6400)
X=OK Y=OK Z=OK
|	Z-Tower			Endstop Offsets
| 	-0.0200			X:-3.02 Y:-8.54 Z:-7.64
| -0.0600		0.0200		Tower Offsets
| 	 0.0000			A:0.00 b:0.00 C:0.00
| -0.0100		-0.0300		I:0.00 J:0.00 K:-1.50
| 	 0.0200			Delta Radius: 67.2500
| X-Tower		Y-Tower		Diagonal Rod: 153.3453
Autocalibration Complete
SENDING:M500
echo:Settings Stored




完整的重新校准清单
SENDING:G30 A
Starting Auto Calibration..
Calibration precision: +/-0.100mm
| Z-Tower Endstop Offsets
| -0.1800 X:-3.02 Y:-8.54 Z:-7.64
| -0.3000 -0.1600 Tower Offsets
| -0.2200 A:0.00 b:0.00 C:0.00
| -0.2200 -0.2000 I:0.00 J:0.00 K:-1.50
| -0.1500 Delta Radius: 67.2500
| X-Tower Y-Tower Diagonal Rod: 153.3453
Iteration: 1
Checking/Adjusting endstop offsets
x:-0.2100 (adj:-3.2300) y:-0.2000 (adj:-8.7400) z:-0.1700 (adj:-7.8100)
X=ERROR Y=ERROR Z=ERROR
x:0.0100 (adj:-3.2200) y:0.0100 (adj:-8.7300) z:-0.0200 (adj:-7.8300)
X=OK Y=OK Z=OK
| Z-Tower Endstop Offsets
| 0.0200 X:-3.22 Y:-8.73 Z:-7.83
| -0.1000 0.0300 Tower Offsets
| 0.0000 A:0.00 b:0.00 C:0.00
| -0.0200 -0.0300 I:0.00 J:0.00 K:-1.50
| 0.0100 Delta Radius: 67.2500
| X-Tower Y-Tower Diagonal Rod: 153.3453
Autocalibration Complete

Source: https://habr.com/ru/post/zh-CN382461/


All Articles