两线PT100转0-5V
该模组为E3D PT100 Amplifier Board兼容,使用E3D PT100改造的教程都可以使用该模组。
产品图片
PT100模组读取PT100传感器并在信号引脚上输出 0-5V 的电压。该模组的设计具有与 Ultimaker2 电子设备相同的增益和信号输出。这意味着它在 Marlin 固件中已经有兼容的温度表。
PT100 的最高额定温度为 500°C。
重要的是要了解 PT100 放大器不是热敏电阻,不能仅插入电子设备的正常热敏电阻输入。
PT100 板需要将 0v 和 5v 引脚连接到电源,电流要求非常小,因此您可以将其连接到控制器板上的任何 5v 和 0v 引脚。这为董事会提供了电力,因此它可以做放大的事情。
然后需要将信号输出引脚连接到电子板上的备用模拟输入引脚。查看您的特定控制器板电路图,找到当前未使用的以大写“A”开头的引脚。这些通常在标有 AUX 或 EXP 的扩展或辅助接头上可用。例如,在 RAMPS 板上,您可以使用位于接头 AUX-1 上的引脚“A3”。
您现在需要告诉 Marlin 您已将 PT100 信号连接到哪个引脚,并告诉它您正在使用 PT100 放大器。
首先,为了让 Marlin 知道要查看哪个引脚,我们需要编辑固件的“pins.h”文件。这可以在标准的 Arduino 编辑器中完成。pin.h 文件包含整个范围的板的管脚定义,重要的是编辑处理特定控制器板的文件的正确部分。对于 RAMPS 1.4,我们滚动文件直到找到处理 RAMPS 板的文件部分,这从第 550 行左右开始。
注意:在 Marlin 1.1.x 中,RAMPS 1.4 板的文件称为“pins_RAMPS.h”,改为修改此文件。
然后我们找到专门处理第一个温度传感器(0)的行。这是针对此特定情况的第 708 行,如下所示:
#define TEMP_0_PIN 13 // 模拟编号
我们可以看到,目前,marlin 将查看温度传感器的模拟引脚 13。我们已将新传感器连接到控制器板上的模拟引脚“A3”,因此我们将数字 13 更改为 3:
#define TEMP_0_PIN 3 // 模拟编号
pin.h 就是这样,只要记住找到并使用正确的电路板部分。如果您同时使用双挤出机和 PT100,那么您显然也必须重新配置其他引脚。
现在我们需要告诉 marlin 我们连接的是什么类型的传感器。这是在固件的 configuration.h 文件中完成的。在您通常配置热敏电阻类型的文件的热设置区域中:
#define TEMP_SENSOR_0 5
目前,就我而言,它设置为传感器类型 5,用于标准 E3D Semitec 热敏电阻。我们需要将其更改为传感器类型 20 的 PT100 设置:
#define TEMP_SENSOR_0 20
这就是固件的全部内容。您现在应该能够编译和上传它,并且所有东西都连接到板上,您现在应该可以看到新 PT100 传感器的温度读数正确!
请注意,A3 引脚不一定是您要连接的模拟引脚,例如在您将连接到 A10 引脚的 RUMBA 板上,因此请查看电路板示意图以了解您正在使用的模拟引脚的编号。
故障排除 从您的 PT100 唱头(从放大器板上拆下)读取电阻读数,在室温下读数应约为 100 欧姆。 确保 5v 引脚输出稳定的 5v。 当电路板在室温下连接到 GND 和 5v 线时,如果您探测信号和 GND,它的读数应该大约为 1.2v。 确保您已经完全定义了信号引脚,引脚 3 并不总是您的电路板使用的引脚,请仔细检查您的特定电路板的原理图您需要定义什么引脚。 信号引脚必须连接到备用模拟引脚,不能使用数字引脚。
RUMBA
假设稳定的 5V 电源 - 电路板的输出将如下所示。
温度 | 输出电压 |
---|---|
0 | 0.00 |
1 | 1.11 |
10 | 1.15 |
20 | 1.20 |
30 | 1.24 |
40 | 1.28 |
50 | 1.32 |
60 | 1.36 |
70 | 1.40 |
80 | 1.44 |
90 | 1.48 |
100 | 1.52 |
110 | 1.56 |
120 | 1.61 |
130 | 1.65 |
140 | 1.68 |
150 | 1.72 |
160 | 1.76 |
170 | 1.80 |
180 | 1.84 |
190 | 1.88 |
200 | 1.92 |
210 | 1.96 |
220 | 2.00 |
230 | 2.04 |
240 | 2.07 |
250 | 2.11 |
260 | 2.15 |
270 | 2.18 |
280 | 2.22 |
290 | 2.26 |
300 | 2.29 |
310 | 2.33 |
320 | 2.37 |
330 | 2.41 |
340 | 2.44 |
350 | 2.48 |
360 | 2.51 |
370 | 2.55 |
380 | 2.58 |
390 | 2.62 |
400 | 2.66 |
500 | 3.00 |
600 | 3.33 |
700 | 3.63 |
800 | 3.93 |
900 | 4.21 |
1000 | 4.48 |
1100 | 4.73 |
Prusa MK3S PT100改机
通过查看Prusa MK3S的源码thermistortables.h文件,在其中1130行找到如下代码,在Prusa的源码中已经默认支持E3D的PT100带放大器输出的版本。
#if (THERMISTORHEATER_0 == 247) || (THERMISTORHEATER_1 == 247) || (THERMISTORHEATER_2 == 247) || (THERMISTORBED == 247) // Pt100 with 4k7 MiniRambo pullup & PT100 Amplifier const short temptable_247[][2] PROGMEM = { // Calculated from Bob-the-Kuhn's PT100 calculator listed in https://github.com/MarlinFirmware/Marlin/issues/5543 // and the table provided by E3D at http://wiki.e3d-online.com/wiki/E3D_PT100_Amplifier_Documentation#Output_Characteristics. { 0 * OVERSAMPLENR, 0}, {241 * OVERSAMPLENR, 1}, {249 * OVERSAMPLENR, 10}, {259 * OVERSAMPLENR, 20}, {267 * OVERSAMPLENR, 30}, {275 * OVERSAMPLENR, 40}, {283 * OVERSAMPLENR, 50}, {291 * OVERSAMPLENR, 60}, {299 * OVERSAMPLENR, 70}, {307 * OVERSAMPLENR, 80}, {315 * OVERSAMPLENR, 90}, {323 * OVERSAMPLENR, 100}, {331 * OVERSAMPLENR, 110}, {340 * OVERSAMPLENR, 120}, {348 * OVERSAMPLENR, 130}, {354 * OVERSAMPLENR, 140}, {362 * OVERSAMPLENR, 150}, {370 * OVERSAMPLENR, 160}, {378 * OVERSAMPLENR, 170}, {386 * OVERSAMPLENR, 180}, {394 * OVERSAMPLENR, 190}, {402 * OVERSAMPLENR, 200}, {410 * OVERSAMPLENR, 210}, {418 * OVERSAMPLENR, 220}, {426 * OVERSAMPLENR, 230}, {432 * OVERSAMPLENR, 240}, {440 * OVERSAMPLENR, 250}, {448 * OVERSAMPLENR, 260}, {454 * OVERSAMPLENR, 270}, {462 * OVERSAMPLENR, 280}, {469 * OVERSAMPLENR, 290}, {475 * OVERSAMPLENR, 300}, {483 * OVERSAMPLENR, 310}, {491 * OVERSAMPLENR, 320}, {499 * OVERSAMPLENR, 330}, {505 * OVERSAMPLENR, 340}, {513 * OVERSAMPLENR, 350}, {519 * OVERSAMPLENR, 360}, {527 * OVERSAMPLENR, 370}, {533 * OVERSAMPLENR, 380}, {541 * OVERSAMPLENR, 390}, {549 * OVERSAMPLENR, 400}, {616 * OVERSAMPLENR, 500}, {682 * OVERSAMPLENR, 600}, {741 * OVERSAMPLENR, 700}, {801 * OVERSAMPLENR, 800}, {856 * OVERSAMPLENR, 900}, {910 * OVERSAMPLENR, 1000}, {960 * OVERSAMPLENR, 1100}, }; #endif
接着我们把源码中100与200,300度的ADC值323,402,475进行换算。 在Prusa的主控中,这3个值对应的电压为1.577V,1.963V,2.139V。
温度 | PT100模组理论输出电压 | Prusa源码对应电压 |
---|---|---|
30 | 1.30 | |
100 | 1.52V | 1.577V |
200 | 1.92V | 1.963V |
300 | 2.29V | 2.139V |
通过对比发现,设计温度与Prusa源码中的温度是很接近的,说明传感器型号正确。
我们在Configuration_prusa.h文件中34行,取消这个代码注释,重新编译源码,即可支持PT100。
#define E3D_PT100_EXTRUDER_WITH_AMP
编译出来的XXX.ino.hex就是所需要的固件。
千万不要使用编译出来的XXX.ino.with_bootloader.hex固件
这个固件会损毁bootloader造成无法通过USB口烧录固件问题,切记!!!