开始动工之前,先把结论放在最前面:如果你是照着“UM2结构但非原装零件”的思路来DIY,电路部分最大的难点不是焊接,而是搞懂24V供电体系下的电流分配、MOS管热量处理,以及步进电机驱动板的电流校准。这三件事搞不明白,机器能动但一定不稳定,打印质量会时好时坏,甚至烧件。这篇是《UM2 3D 打印机 DIY 实践》的第二篇,默认你已经把机械结构装完了,我这里只讲电路:怎么选控制板、怎么规划电源、怎么接电机和加热系统、怎么调驱动电流、怎么排查那些“一通电就出问题”的坑。
1. 控制板选型与供电规划
1.1 为什么我放弃了原装UM2主板
UM2原装板在当年确实是一块设计得很讲究的板子,它把三路步进驱动、热床MOS、热端MOS、LCD转接、SD卡读取全部集成在一张PCB上,走线紧凑,故障率低。但问题也很明显:贵、难买、坏了不好修,而且固件锁得比较死,想改温度上限或者加自动调平这类功能,门槛高。如果你是纯原装复刻,那用原装板没问题。但绝大多数DIY玩家是“像UM2的机器”,不是“完全原装的UM2”,这时候选开源方案要现实得多。
我在这个项目里用的是RAMPS 1.4 + Arduino Mega 2560的组合。理由很直接:资料多,坏了能换,固件随便刷,而且和UM2的“独立驱动板+独立MOS”思路非常接近,排查起来不绕弯。RAMPS这板子被很多人嫌弃说“太老了”,但说句公道话,在24V供电、加热功率不太夸张的场景下,它依然是稳定性最容易被验证的方案之一。Marlin固件对RAMPS的适配是最成熟的,没有之一。
1.2 选12V还是24V,这是第一个分水岭
原装UM2用的是24V供电,这也是它在当年比很多RepRap机器温控更稳的原因之一。同样是100W的加热棒,12V方案电流是8.3A,24V方案只要4.2A。电流小了,线损就小,MOS管和接插件的发热压力也小,而且热床升温速度明显更快。所以24V不是参数上的激进选择,而是综合可靠性更优的选择。
但这带来一个连锁问题:步进电机驱动板的逻辑电压和电机电压,很多现成模块是12V习惯。RAMPS板上的电机驱动(A4988或DRV8825)的VMOT引脚,理论最大耐压分别能到35V和45V,所以接24V没问题,但不能直接把12V风扇接到24V上,必须加降压模块。这就是很多新手第一次通电把风扇烧掉的原因,不是风扇质量问题,而是电压不对。
我的供电方案是这样的:
- 一台24V 15A的开关电源,给热床、热端、步进电机驱动VMOT供电。
- 一个DC-DC降压模块,把24V降到12V,给两个模型风扇和一层控制板风扇使用。
- Arduino Mega直接用另一路12V输入供电,它的稳压芯片会把电压降到5V给逻辑电路,RAMPS板上的5V也来自这里。
这里有个值得注意的细节:RAMPS板上有个二极管D1,是用来防止你同时接USB供电和ATX电源供电时倒灌的。在纯24V供电体系里,如果你需要连USB调试固件,一定要确认好共地问题——USB的地和电源的地必须连在一起,否则通信可能随机失败。实际做法是把电源的GND端子、降压模块的GND、Arduino的GND都接到RAMPS的GND端子上,保证整个系统只有一个参考地。
1.3 电源选型与线径计算
电源功率怎么算?先把各路负载列出来:
- 热床:标称12V/120W,但我在24V体系下是用MOS管PWM控制,等效功率要看实际电压和占空比。如果直接用24V,等效功率会变大,所以需要配热床的限流或者改用24V/200W左右的热床。我用的是24V/200W热床,实际满功率电流约8.3A。
- 热端加热棒:24V/60W,约2.5A。
- 三个步进电机驱动,每个峰值电流按1.2A算,加起来约3.6A,实际平均会低一些。
- 风扇、控制板、屏幕这些加起来不超过1A。
总电流峰值大约15A左右,所以24V 15A的电源是够用的,但我实际买的是24V 20A,给自己留了30%的余量。电源余量这件事,我吃过亏:之前用12V 10A电源带一台小机器,冬天室温低的时候热床一开,电压直接被拉低到10.8V,屏幕闪烁,步进电机丢步,查了半天才发现是电源不够。
线径方面,建议电源到控制板之间的主供电线用至少1.5mm²的纯铜软线,热床这种大功率支路也用1.0mm²以上。不要用那种细到像头发丝一样的杜邦线去走大电流,那不是走信号的线,是会发热的线。
2. 步进电机驱动:A4988还是DRV8825,电流怎么调
2.1 驱动板选型的实际意义
UM2原装机用的是基于TMC早期的静音驱动方案,但DIY场景里最常用的还是A4988和DRV8825这两类插针式驱动板。A4988的优点是小电流下发热低,缺点是电流超过1.5A就容易过热保护,而且芯片散热条件一般。DRV8825的耐压更高,电流能力也更强,最大能到2.2A左右,但是工作噪音比A4988大不少。
我的电机是42步进电机,额定电流1.5A左右,所以选了DRV8825。如果你的电机是那种额定电流1A以下的小电机,A4988完全够用,而且便宜。需要注意的是:驱动板插上RAMPS前,一定要先调好电流限制电位器,不要第一次通电就带着默认设置在跑——默认设置往往偏大,电机会发烫。
2.2 电流校准公式与实操
A4988和DRV8825上都有一个十字口的电位器,调节它会改变驱动板参考电压Vref,而电机电流和Vref是线性关系。公式是这样的:
- A4988:Imax = Vref × 2(也就是Vref设为0.5V时,电流极限约1A)
- DRV8825:Imax = Vref × 1.4(Vref设为0.8V时,电流极限约1.12A)
实际操作里,不要把电流调到电机的“绝对额定值”,建议取额定电流的70%~80%。这样做的好处是兼顾力矩和发热,长时间工作不会烫到不敢摸。比如电机额定1.5A,我的目标是1.2A左右,对应的DRV8825 Vref大约是0.86V。测量方式是用万用表直流电压档,黑表笔接驱动板的GND引脚(就是靠近散热片的那个引脚),红表笔接电位器中间的金属触点,一边微调一边看读数,调到目标电压后拧紧固定。
这里有个坑提醒一下:Vref是“极限电流”的参考,不是实际恒定电流。步进电机静止时电流会稍低,运动时才会有接近极限的电流。不要把Vref调到刚好等于额定值再加大10%,那样没有意义,只会让电机和驱动板都提前老化。
2.3 细分设置与共振问题
步进驱动的细分(Microstepping)决定了电机转一圈需要的步数。RAMPS板上的三个跳线MS1、MS2、MS3可以组合出不同的细分模式。A4988和DRV8825的细分逻辑略有不同,但RAMPS上的常用设置是一样的:
- 全部不插跳线:全步进
- 插MS1:半细分
- 插MS1+MS2:1/4细分
- 全部插上:A4988是1/16细分,DRV8825要看模块上的丝印,通常是1/32细分
我实际使用的是1/16细分,也就是软件里设置每毫米步数时要按这个来算。对于常见的UM2结构(GT2皮带,20齿同步轮,步距角1.8度),XY轴的每毫米步数大约是80步/mm。这个数字会在后面固件配置里用到。
细分太高不一定是好事,尤其是DRV8825在1/32细分时,电机的噪音和振动反而会比1/16更明显。这跟驱动芯片的电流波形有关,不是细分越高就越静音。真正静音是TMC系列驱动器的技术优势,A4988和DRV8825在高细分下的静音效果很有限。
2.4 驱动板方向设置
驱动板装好后,如果发现某个轴的运动方向反了,不需要重新接线,改固件的办法更省事。在Marlin固件里,每个轴都有INVERT_X_DIR、INVERT_Y_DIR、INVERT_Z_DIR这几个定义,改成相反的值就能让电机反向。不过电机会不会反向,还取决于电机线序是否接对。RAMPS上电机接口的四根线,插反了会表现为电机不转、异响、或者转一下卡住。判断方法是通电后用手轻触电机轴,如果能感觉到轴被用力吸住、转动时一顿一顿的,基本就是线序不对。
3. 热端与热床电路:加热和测温的完整细节
3.1 加热棒和MOS管的关系
RAMPS板上有两路大功率输出,一路是热床输出,一路是热端输出。板上标着D8的是热端,D9是热床,D10是风扇。这三路信号其实是Arduino的PWM引脚在控制板上经过一个MOS管放大之后输出到负载的。板子默认用的MOS管是IRLZ44N(逻辑电平型,3.3V/5V就能完全导通),这个管子工作在24V、几安培的电流下是没问题的,但是它毕竟焊接在RAMPS板上,散热条件有限。
如果你把热床功率加得比较大,或者热端加热棒电流偏高,MOS管的温度会很可观。摸一下RAMPS板上的MOS管散热片,如果烫到不能持续触摸,就要考虑外接MOS模块,把大电流回路从控制板上移走。我在这个项目里选择外接了一个固态继电器来控制热床,信号线接RAMPS的D9输出,负载侧单独接电源和热床。这样做不是不信任RAMPS,而是因为这个UM2项目的热床功率到了200W,我希望热床回路的电流完全不经过控制板。
有一个接线安全规范要牢记:MOS管或继电器控制的是电源正极线,千万不要控制负极线。控制正极意味着负载在断开时是彻底断电的,如果控制负极,即使“关断”了,负载另一端仍然带着正电压,一旦碰到金属框架就可能造成短路甚至电击。
3.2 热敏电阻测温电路:上拉电阻与分压
热端测温用的是NTC热敏电阻,它的阻值随温度变化而变化,固件通过测量它两端的电压,反推当前温度。RAMPS板上已经集成了一个10K上拉电阻,和热敏电阻组成了一个分压电路。这里的关键是:热敏电阻的类型和上拉电阻要匹配。Marlin固件里有个参数叫THERMISTORHEATER_0,常见的是1号(100K NTC)和5号(100K NTC,但Beta参数不同)。原装UM2用的是某种100K的NTC,如果你买到的热敏电阻也是100K,基本选1号表就能用。
好,但这里依然有坑:热敏电阻的长线如果和加热棒的线绑在一起走线,加热棒通电时的电流会在线束周围产生电磁干扰,热敏电阻线上的感应电压可能导致温度读数跳变甚至失控。所以走线时尽量把加热棒线和热敏电阻线分开,至少不要紧贴在一起穿过同一段蛇皮管。如果实在要靠近,最好用屏蔽线——把屏蔽层一端接地。
测温不准的判断方法:把热敏电阻放在室温下,看控制器的温度读数是否接近实际室温。如果偏差超过5℃,检查热敏电阻的类型是否选对、接线是否接触不良。如果网上固件显示温度在某个固定值附近跳来跳去,十有八九是热敏电阻的线断了或接触点氧化。
3.3 加热系统的热失控保护
Marlin固件里有一个叫THERMAL_RUNAWAY_PROTECTION的机制,我直接说结论:一定不要关掉它。它会在温度异常升高、温度上升速度过快、或者加热很久温度却不上来时自动切断加热输出并报错。很多人为了“让机器能跑”把这个保护关了,结果是打印到一半热端失控,塑料烧焦冒烟。这不是危言耸听,在没开保护的情况下烧掉热端热敏电阻是很多玩家经历过的“学费”。
我个人的习惯是把热失控参数设得稍微严格一点,比如加热到目标温度的允许超时时间设为20秒,温度偏离设定温度超过15℃就触发保护。这样即使是正常的温度波动也不容易误报,但一旦有异常能立刻停机。
4. 传感器与外设:限位开关、风扇与LCD
4.1 限位开关接线
UM2结构一般用三个机械限位开关,X和Y各一个,Z轴一个。开关是常开型的机械微动开关,触发时内部接通。RAMPS板上的限位接口有六根针,但实际上只用两根信号线,一根是信号,一根是GND。具体接哪个方向看板子标注,但最稳妥的办法是看Marlin固件里X_MIN_PIN等引脚的默认定义,然后对照RAMPS的针脚图接线。
一个容易踩的坑是:有些微动开关是常闭型(NC),不是常开型(NO),接错了会导致固件一直认为限位被触发,上电时机器直接报错或者不能回零。所以买开关时看清楚型号,或者用万用表蜂鸣档量一下:按下去导通的是NO,按下去断开的是NC。
限位开关的触发位置要在机械安装时调准确。X轴限位应该在喷嘴移动到左端极限稍前一点的位置被触发,Z轴限位应该在喷嘴靠近热床但还没有碰到热床的位置被触发。这部分的机械调整会在后面调平里影响很大。
4.2 散热风扇与模型风扇的区别
UM2有两类风扇,一类是给热端和电路板散热的,开机就应该转;一类是给模型吹风促进冷却的,打印层高较低或桥接时才需要开。在Marlin里这两个风扇的引脚不同:热端风扇接在自动控制的输出上,只要热端温度高于设定值(比如50℃)就自动开启。模型风扇是G代码控制的M106指令控制,切片软件里设置冷却参数后自动输出。
我把热端风扇接到RAMPS板上标注的那组自动风扇输出上,模型风扇则用外接MOS模块控制。原因还是刚才说的:RAMPS板上那一路MOS在小电流下没问题,但是很多大尺寸涡轮风扇启动瞬间电流很大,直接接在板上不仅可能干扰屏幕,还可能把MOS管击穿。用外接MOS模块隔离一下,成本几块钱,可靠性高很多。
另外降压模块的问题再强调一次:所有12V风扇不能直接从24V取电,必须经过DC-DC降压。如果你嫌麻烦,可以买24V版本的风扇,直接接24V,但这种风扇在淘宝上不如12V的好买,噪音也普遍大一些。
4.3 LCD与SD卡接线
RAMPS板上有LCD接口,接的是常见的2004或12864显示屏。UM2原装是触屏触摸屏的思路,但DIY项目里用12864屏就够了,显示信息量并不比触屏少多少。接线很简单,把LCD的转接板插到RAMPS上的LCD接口,再把背光供电、SD卡槽的接线接好就行。SD卡槽内的CS引脚默认是SPI的SS引脚,如果SD卡识别不到,先检查是不是转接板和RAMPS之间的CS线接反了,这个比焊坏卡槽还要常见。
12864屏唯一要注意的是固件里的显示类型要选对:如果是插针式的12864带红色背光,一般对应的是LCD_SD2;如果是绿色的,可能是ST7565类的屏幕,需要配不同的驱动文件。搞错的话屏幕会出现乱码或者闪烁,不一定是屏幕坏了。
5. 整机接线顺序与控制板规划
5.1 我的接线分步流程
这一节给你一个可以直接抄的流程,按照这个顺序接,会少走很多弯路。我每次装机器都按这个步骤来:
- 先接控制板的电源输入。把24V电源的输出正负极分别接到RAMPS板的电源端子上,用万用表确认电压是24V±0.5V,没有接反。
- 接Arduino和RAMPS之间的通信。RAMPS是插在Arduino上的,确认插针没有偏心、有引脚弯折,插到位后上电,看Arduino的L灯是否闪烁、RAMPS板上的红色电源指示灯是否亮起。
- 接步进电机驱动板。先插好跳线设置细分,再插驱动板,注意方向不能反,然后接通电源,调好Vref。
- 接三个步进电机。X、Y、Z各找对应接口,先不要装上同步带,通电后测试每个轴的运动是否正常。
- 接热敏电阻。先在固件里配置好热敏电阻类型,再插到板上对应的端口,上电看温度读数是否合理。
- 接加热棒和热床。先不插热敏电阻的温度报警,单独测试加热输出是否能正常开启和关闭,然后再接上热敏电阻一起测。
- 接限位开关。X、Y、Z依次接好,调整开关位置,做一次回零测试。
- 最后接风扇、LCD、SD卡、外接MOS模块这些外围设备。
这个顺序的核心逻辑是“先电源,后信号,先控制,后功率”。不要把所有线都接好再通电排查问题——那会让错误定位变得极其困难,因为你不知道是接线问题还是配置问题。
5.2 固件里必须改的几个参数
固件以Marlin 2.x为例,有几个地方是UM2结构必须改的,漏掉任何一个都可能导致机器不能正常工作:
- 主板型号MOTHERBOARD:RAMPS 1.4对应的是BOARD_RAMPS_14_EFB,它定义了板上D8、D9、D10的默认输出用途。
- 温度传感器类型:把TEMP_SENSOR_0设为1,TEMP_SENSOR_BED设为1,两个都是100K NTC。
- 各轴行程和最大速度:UM2结构通常打印尺寸是200mm左右,XY最大速度可以设到150mm/s左右,但启动加速度要设低一些,从500mm/s²开始慢慢调高。
- 回零方向和回零速度:UM2的X和Y正向回零,Z向上回零,这个要根据你的机器方向确认。
- 步进电机的启用信号和方向信号:如果某个轴方向反了,按前面的方法反转方向定义。
改完固件烧录后,先别急着打印,用Pronterface类的上位机软件连接,手动发几个G代码测试,比如G28回零,G1 X10 F1000慢慢移动,确认电机转向和行程正常。
5.3 静电与绝缘处理
整个电路装完之后,我觉得最容易被忽视的是绝缘处理。步进电机线和限位开关线经过运动机构时,如果和金属框架直接接触,长期摩擦后容易磨破绝缘皮,导致短路。我的处理办法是用螺旋缠绕管把所有线束集中起来,套上蛇皮管,尤其是经过龙门架和运动轴的位置,多留一点余量,不要绷得太紧。
电源端子的裸漏部分也要做绝缘保护。开关电源的接线端子、MOS模块的螺丝端子,通电时都是带电的,如果裸露在外,调试时螺丝刀一滑就可能碰到。用热缩管套住端子,或者缠几圈电工胶布,花不了几分钟,但能避免一次大事故。
6. 常见故障排查:症状、原因与解决办法
6.1 上电后屏幕乱码或无显示
这个问题的出现概率非常高,原因集中在几个地方。首先检查RAMPS和Arduino之间的连接是否牢固,特别是SPI通信针脚附近的几根插针,有没有氧化或者插歪。其次检查固件里的显示类型是否正确,把LCD类型改对了之后重新烧录固件,乱码问题通常会消失。最后检查屏幕的背光供电线,如果背光是坏的,屏幕可能有内容但完全看不清;这时候用手电筒从屏幕侧面照过去,能隐约看到字体就说明背光有问题。
6.2 电机不动、抖动或声音刺耳
- 电机完全不动:检查驱动板的Vref是否为零,如果为零说明驱动板没有正常工作。再检查VMOT电压有没有到驱动板,用万用表量一下VMOT和GND引脚之间的电压。
- 电机抖动、声音刺耳:这是最典型的电机线序接错问题。把电机接口的线序理清楚,A+/A-/B+/B-四根线必须对应电机线束的相同线圈,调换其中一组就能解决。
- 电机发烫严重:停下来把Vref调低一点,特别是在静止状态下电机烫到无法触碰,说明电流设得太大。
6.3 温度读数异常,比如一直显示0℃或常温
显示0℃一般是热敏电阻接线断开,或者热敏电阻本身坏了。用万用表量一下热敏电阻两端的阻值,室温下100K NTC应该在100KΩ左右,如果量出来是无穷大,就是断线了。显示常温不是实际室温,可能是热敏电阻类型选错、分压电阻不匹配,或者是接线接触不良。
我遇到过一种很隐蔽的情况:热敏电阻的引线在接线端子处氧化,阻值漂了很多,导致温度读数偏低30℃左右。这种问题看不出来,只能把线重新剥开、重新压接,然后对比正常读数。
6.4 热床升温慢或加热到一半停止
升温慢优先检查电源功率是否足够,如果电源电压被拉低到20V以下,说明电源容量不够或者电源线太细。加热到一半停止,先看有没有触发热失控保护,把加热功率降低一些再试。如果固件显示温度到达目标值后开始下降,但测量的实际温度并没有保持住,可能是热床的测温点和加热丝的位置距离太远,导致温度延时过大。
6.5 限位开关回零不准或偶尔失效
回零不准常见原因是限位开关安装位置太靠近运动极限,机械震荡导致触发时间不稳定。把限位开关的位置往中间方向挪一点,让撞块触碰到开关后还有一段机械余量。偶尔失效通常是接线接触不良,把限位开关的线插头重新拔插一下,或者换成质量好一点的杜邦端子。
这篇文章写到现在,篇幅已经不短了,但电路篇这个东西,每个人踩坑的点都不一样。我个人最大的体会是:不要贪图省事,把大电流回路和控制信号混在一起处理。3D打印机本身不是一个电子复杂度很高的项目,它更多的考验是你有没有耐心把每一路负载的电流、电压、散热、绝缘都想清楚再动手。UM2这台机器在当年能把打印质量做得那么稳,一个很重要的原因就是电路设计上把“动力”和“信号”分得很清楚,咱们DIY的时候也尽量保持这个思路。
最后再分享一个小技巧:整机通电测试之前,在电源输入端串一个带保险丝的开关,比如那种家用的小型断路器,电流超过设定值就自动跳闸。这样即使哪一路接错了,损失也会被限制在比较小的范围内,不会直接把主板烧掉。我第一次给这台UM2上电时,就因为这个保险丝救过一次热床回路——当时热床正负极接反了,一通电电流飙升,保险丝瞬间跳掉,主板安然无恙。