
开始动工之前先把结论放在最前面如果你是照着“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.3A24V方案只要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是线性关系。公式是这样的A4988Imax Vref × 2也就是Vref设为0.5V时电流极限约1ADRV8825Imax Vref × 1.4Vref设为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半细分插MS1MS21/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. 传感器与外设限位开关、风扇与LCD4.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结构必须改的漏掉任何一个都可能导致机器不能正常工作主板型号MOTHERBOARDRAMPS 1.4对应的是BOARD_RAMPS_14_EFB它定义了板上D8、D9、D10的默认输出用途。温度传感器类型把TEMP_SENSOR_0设为1TEMP_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上电时就因为这个保险丝救过一次热床回路——当时热床正负极接反了一通电电流飙升保险丝瞬间跳掉主板安然无恙。