1. 项目概述与核心价值如果你也经常和环氧树脂打交道无论是做模型、封装艺术品还是修复工作肯定对“手动配比”这个环节又爱又恨。爱的是混合后那晶莹剔透、坚固耐用的成品恨的是过程中那稍有不慎就前功尽弃的精确度要求。用一次性杯子凭感觉倒或者用小泵一下下按不仅效率低更头疼的是配比不准——树脂固化不完全、表面发粘、强度不够一整锅材料就这么废了。这个痛点几乎是每个树脂玩家的必经之路。今天分享的这个项目就是用一个非常“创客”的方式把这个问题彻底自动化解决一个基于Arduino的自动环氧树脂配比与分配系统。你可以把它想象成一个专为环氧树脂打造的“精酿啤酒机”。拉下“树脂”龙头流出设定重量的树脂与此同时系统会根据你选择的树脂型号比如常见的2:1或3:1体积比通过内置的称重传感器实时计算并自动打开“固化剂”龙头流出精确对应重量的固化剂。整个过程你只需要拉一下手柄剩下的称重、计算、控制全部交给机器确保每一次混合都分毫不差。这个项目的核心远不止是做一个好用的工具。它完整地展示了一个典型的嵌入式闭环控制系统的实现过程感知称重传感器→ 决策Arduino根据预设比例计算→ 执行电磁阀开关。无论你是想复刻一个树脂分配器还是想学习如何将传感器、执行器和微控制器结合起来解决实际问题这个项目都是一个绝佳的样板。它涵盖了机械结构设计CNC/激光切割/3D打印、电子电路搭建传感器信号调理、功率驱动和嵌入式编程实时控制逻辑等多个技能栈提供的所有设计文件、原理图和代码都是开源的极具学习和参考价值。2. 系统整体设计与核心思路拆解在动手之前我们必须把整个系统的逻辑想清楚。一个自动分配系统核心目标就两个精确和自动。围绕这两个目标我们的设计思路需要层层递进。2.1 从需求到方案为什么选择“重量反馈”环氧树脂的配比通常有体积比和重量比两种。很多新手会忽略它们的区别直接用体积比去称重这是导致失败的主要原因之一。因为树脂和固化剂的密度不同体积比为2:1的树脂其重量比可能接近100:45。原项目作者特意在代码中注释了多种TotalBoat树脂的重量比系数这非常关键。那么如何实现自动配比常见思路有几种体积计量使用计量泵或步进电机推动注射器通过控制旋转圈数或步数来控制体积。缺点是泵的精度、液体粘度变化以及管路中残留气泡都会严重影响精度且校准复杂。时间计量控制阀门打开的时间假设流速恒定。这需要非常稳定的供压系统而实际中气压波动、液体粘度、管路阻力都会让流速变化精度最不可靠。重量计量在容器下方放置称重传感器直接测量流出液体的质量。质量是物质的基本属性不受温度、粘度、气泡影响只要传感器精度够高这就是最直接、最可靠的方法。显然基于称重传感器的反馈控制是精度最高的方案。我们的系统就采用了这个方案将树脂和固化剂的两个原料瓶共同放置在一个称重平台上。无论你从哪个瓶子抽取液体系统的总重量都会减少。Arduino通过读取称重传感器搭配HX711模数转换芯片的数据实时监控这个重量变化。2.2 控制逻辑与工作流程整个系统的控制逻辑是一个清晰的闭环初始化与皮重系统上电后首先记录当前两个原料瓶的总重量作为“皮重”或零点。等待用户动作系统监测两个手动开关或杠杆式龙头。用户拉下“树脂”龙头开关。树脂分配阶段Arduino打开树脂管路上的电磁阀树脂开始流出。程序持续快速读取称重传感器数值。实时判断与停止当前重量与初始皮重的差值即为已流出的树脂重量。当此差值达到用户通过旋钮或其他界面设定的目标重量时立即关闭树脂电磁阀。自动计算与固化剂分配程序根据已流出的树脂重量和预设的重量比系数计算出所需的固化剂重量。随后自动打开固化剂管路上的电磁阀。闭环控制终止同样通过实时称重当流出的固化剂重量达到计算值时关闭固化剂电磁阀。一次完整的分配过程结束。关键点解析这里有一个精妙之处——系统只使用了一个称重传感器来测量两个瓶子的总重。这意味着无论流出的是树脂还是固化剂总重都会减轻。程序需要能区分“是谁在流出”。实现方法是顺序控制在“树脂分配阶段”重量的减少只归因于树脂在“固化剂分配阶段”重量的减少只归因于固化剂。这种设计简化了机械结构只需一个传感器平台但对控制逻辑的严密性要求更高必须确保两个电磁阀不会意外同时开启。2.3 机械与电子架构总览系统可以划分为三大模块机械结构模块主体是一个由12mm和18mm波罗的海桦木胶合板制成的箱体通过CNC切割而成。前面板为3/8英寸亚克力用于美观和显示。内部包含固定原料瓶的托盘、安装电磁阀和管路的支架以及一个承接滴漏的托盘。所有结构文件STEP, DXF, STL均已开源。电子控制模块大脑Arduino Nano。负责运行控制逻辑、读取传感器、控制输出。感官单点式称重传感器 HX711放大/AD转换模块。这是精度关键通常选用5kg或10kg量程精度可达0.1g以上。执行器两个12V直流常闭型电磁阀。通电打开断电关闭控制流体通断。输入两个瞬时开关模拟龙头拉杆动作可能还有编码器或按钮用于设定分配量。电源12V直流电源同时为Arduino通过Vin或稳压模块、电磁阀和可能的LED灯带供电。流体路径模块从原料瓶盖改造的接头常用带倒刺的宝塔接头引出通过软管连接电磁阀进口电磁阀出口再接软管至分配龙头。确保管路密封是成败关键。3. 核心部件选型与电路设计详解选对部件项目就成功了一半。这里结合原项目清单和实际经验深入聊聊关键部件的选择要点和电路连接背后的道理。3.1 称重传感器与HX711模块高精度测量的基石称重传感器本质是一个应变片电桥微小的形变会导致电阻变化输出一个微弱的mV级差分电压信号。Arduino的ADC无法直接准确读取这个信号。HX711模块的作用它是一款专为电子秤设计的24位模数转换器芯片。其核心作用有两个一是提供高增益放大器128倍将传感器微弱信号放大到适合采集的范围二是进行高精度AD转换24位分辨率将模拟电压转化为Arduino可以处理的数字值。24位分辨率意味着它能将满量程划分为2^24约1600万个刻度这是实现克级甚至亚克级精度的基础。接线与注意事项称重传感器一般有4线红、黑、白、绿或6线制。4线制最为常见红E、黑E-为激励电压正负白A、绿A-为信号输出正负。HX711模块上通常标有E/E-/A/A-对应连接即可。模块需要5V供电VCC接5VGND接GND。关键技巧避开电源干扰。HX711的数据线DT和时钟线SCK应连接Arduino的数字引脚。最好将Arduino和HX711的电源地GND用粗导线或直接在电源处连接在一起建立一个稳定的“参考地”能大幅减少读数跳动。校准是必须的上传代码后你需要进行校准。通常需要两个已知重量的砝码如500g和1000g。程序会记录空载时的读数皮重和加载已知重量后的读数通过线性拟合计算出比例系数scale factor。这个系数会直接写在代码里。原项目代码中scale.set_scale(calibration_factor);这一行其中的calibration_factor就是需要你通过实测校准得出的值。3.2 电磁阀与驱动电路可靠的流体开关电磁阀选择不当会导致漏液、启闭慢、甚至烧毁驱动电路。类型选择必须选择常闭型Normally Closed。这样在断电时阀门关闭防止原料自流。根据管路尺寸项目选用1/2英寸NPT螺纹接口的阀门是合理的流通量大。驱动电路设计电磁阀是感性负载工作电流可能达到数百mA远超Arduino引脚20mA的驱动能力。绝对不能直接用Arduino引脚连接电磁阀必需使用继电器或MOSFET模块这是电路设计的关键。原项目原理图显示使用了继电器模块。继电器相当于一个用弱电Arduino的5V信号控制的机械开关去接通强电12V电磁阀回路。续流二极管电磁阀线圈在断电瞬间会产生很高的反向感应电动势电压尖峰可能击穿驱动元件。一个好的继电器模块或MOSFET电路会内置续流二极管也叫飞轮二极管用于泄放这个尖峰电压保护电路。自己搭建驱动电路时务必在电磁阀线圈两端并联一个二极管阴极接电源正极。接线示例Arduino数字引脚如D7 - 继电器模块信号输入端IN。继电器模块的电源端VCC, GND接Arduino的5V和GND。继电器模块的常开端NO和公共端COM串联到12V电源和电磁阀的回路中。3.3 电源设计稳定性的保障整个系统包含数字逻辑部分Arduino, HX711和功率部分电磁阀可能还有LED灯带。独立供电与共地建议采用一个12V/2A以上的直流电源适配器作为总电源。12V直接供给电磁阀和LED灯带。同时12V输入到Arduino Nano的Vin引脚或通过一个DC-DC降压模块降至5V为Arduino及HX711模块供电。重要原则数字部分和功率部分的“地”GND必须在电源处连接在一起确保整个系统有统一的参考电位否则控制信号会紊乱。干扰处理电磁阀动作瞬间电流很大可能引起电源电压瞬间跌落导致Arduino复位。可以在12V电源入口处并联一个大电容如470uF-1000uF/25V来缓冲这个冲击。如果问题严重考虑为Arduino单独用一个小的5V电源但两者地线仍需相连。4. 机械组装与流体系统搭建实操电路通了代码跑了但如果漏液一切归零。机械和流体部分的可靠性往往决定项目的最终成败。4.1 结构组装要点原项目提供了详细的DXF和STEP文件如果你有CNC或激光切割机可以直接加工。如果没有也可以用图纸手锯加工或因地制宜修改设计。材料选择波罗的海桦木胶合板强度好不易变形是很好的选择。亚克力面板主要起装饰作用切割后边缘需打磨抛光以保持透明美观。称重平台的安装这是精度的基础。称重传感器必须只承受垂直方向的力。安装平台时要确保平台与底座之间只有传感器本身连接所有管线电线、软管都必须留有足够的松弛度不能对平台产生任何拉扯或推力否则称重会严重失准。通常做法是用软管环或扎带制造一个缓冲环。电磁阀固定电磁阀工作时会有轻微的振动和噪音需要用螺丝或卡箍牢固地固定在木质或亚克力支架上避免长期运行后松动。4.2 流体管路连接与密封实战这是最容易出问题的地方需要格外小心。瓶盖改造原方案提到使用瓶盖-宝塔接头适配器。这是一个巧思但作者也遇到了低粘度固化剂泄漏的问题。更可靠的方案是使用专用的化学液体储存瓶其瓶口带有标准的螺纹如GL45可以匹配专用的带密封圈的分配头或转接头从根本上杜绝瓶口泄漏。接头选择项目中使用1/2英寸NPT螺纹的宝塔接头Barbed Fittings。NPT是美制锥管螺纹本身具有密封能力但必须配合使用聚四氟乙烯生料带PTFE Tape。缠绕生料带技巧沿螺纹顺时针缠绕从接头尾部向头部看缠绕5-8圈。生料带起始端要压住第一圈螺纹末端要用力拉紧使其变薄最后再旋入。旋紧后多余的生料带会被挤出螺纹根部形成有效密封。切勿缠绕过厚否则可能胀裂阀体或无法拧紧。软管连接使用内径1/2英寸的透明PVC或乙烯基软管。套上宝塔接头后务必使用不锈钢喉箍Hose Clamp拧紧。宝塔接头的倒刺只能防止软管被压力冲脱但不能保证密封。喉箍提供了均匀的径向压力确保软管与接头紧密结合防止从缝隙渗漏。管路布局尽量让从瓶子到阀门再从阀门到龙头的管路保持顺畅避免急弯以减少流动阻力。在阀门出口到龙头这段“开放段”管路液体可能因重力自流或残留可以在设计时让这段管路有一定坡度并在龙头下方设计滴漏盘。重要安全提示环氧树脂和固化剂都是化学品。操作时请佩戴手套和护目镜在通风良好的区域进行。确保所有容器和管路材质与所用化学品兼容通常PVC、PP、不锈钢是安全的。首次测试时可以用水或植物油代替树脂进行全流程测试验证密封性和控制逻辑。5. 软件代码解析与核心逻辑实现代码是项目的大脑。我们深入看看Arduino程序是如何实现精准闭环控制的。5.1 程序架构与库依赖程序主要依赖HX711.h库来与称重传感器通信。代码结构通常包含以下部分#include HX711.h // 引入称重传感器库 // 引脚定义 #define LOADCELL_DOUT_PIN 4 #define LOADCELL_SCK_PIN 5 #define VALVE_RESIN_PIN 7 #define VALVE_HARDENER_PIN 8 #define SWITCH_RESIN_PIN 2 #define SWITCH_HARDENER_PIN 3 // 全局变量 HX711 scale; double mixRatio 0.28; // TotalBoat ThickSet的重量比系数固化剂/树脂 double targetWeight 0.0; // 目标树脂重量克 double resinDispensed 0.0; double hardenerNeeded 0.0; bool dispensingResin false; bool dispensingHardener false; void setup() { // 初始化串口、引脚模式 // 初始化称重传感器设置比例系数 scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN); scale.set_scale(calibration_factor); // 需要校准的实际系数 scale.tare(); // 去皮将当前重量设为零点 } void loop() { // 1. 检测用户输入如按下按钮设定重量或拉下龙头开关 // 2. 根据状态机执行分配逻辑 }5.2 核心控制状态机详解整个分配过程可以用一个状态机State Machine来清晰描述这是嵌入式控制中的经典模式。IDLE空闲状态系统等待用户操作。持续监测两个开关。如果“树脂分配”开关被触发进入状态2。DISPENSE_RESIN分配树脂状态打开树脂电磁阀digitalWrite(VALVE_RESIN_PIN, HIGH)。进入一个快速循环不断读取当前重量currentWeight。由于之前执行过scale.tare()此时currentWeight是负值因为总重减轻。计算已流出的树脂重量resinDispensed -currentWeight;。当resinDispensed targetWeight时立即关闭树脂电磁阀。计算所需固化剂重量hardenerNeeded resinDispensed * mixRatio;。进入状态3。DISPENSE_HARDENER分配固化剂状态记录当前重量作为固化剂分配的起始点startHardenerWeight scale.get_units();。打开固化剂电磁阀。快速循环读取重量计算已流出固化剂重量hardenerDispensed startHardenerWeight - currentWeight;。当hardenerDispensed hardenerNeeded时关闭固化剂电磁阀。返回状态1IDLE。关键逻辑细节去皮Tare操作在每次开始新一轮分配前或者原料瓶更换后必须执行scale.tare()。这将把传感器当前的读数设为零点消除瓶子和平台自重的影响。防抖动处理开关信号需要防抖动Debounce可以使用硬件电容滤波或在代码中检测到信号变化后延时10-50毫秒再确认避免误触发。单位与系数确保mixRatio是你所用树脂的重量比系数固化剂重量/树脂重量。原项目代码中提供了多个品牌的系数这是极有价值的参考。如果不确定请查阅产品技术数据表TDS或通过小样实验测算。5.3 功能优化与扩展思路基础功能实现后可以考虑以下优化让系统更好用定量预设增加一个旋转编码器或按键OLED屏幕让用户可以方便地设定每次要分配的树脂重量如50g, 100g而不是每次拉龙头都出固定量。动态流量补偿在分配过程中随着液位下降流速可能会轻微变慢。更高级的算法可以在重量接近目标值时提前关闭阀门利用流体惯性达到更精确的终点。这需要实验来拟合参数。异常处理增加代码检测“分配超时”如阀门打开后10秒重量无变化可能管路堵塞或瓶子空了并自动关闭阀门蜂鸣器报警。数据记录通过串口或SD卡模块记录每次分配的日期、时间、树脂重量、固化剂重量便于生产质量管理。6. 调试、校准与常见问题排查系统组装完成后别急着灌树脂。按步骤调试和校准能帮你节省大量时间和材料。6.1 分步调试流程干跑测试不接液体只连接电路和机械部分不接软管和瓶子。上传代码打开串口监视器。检查称重传感器读数是否稳定轻微跳动0.1-0.5g是正常的大幅跳动则检查接线和电源。手动触发开关听电磁阀是否有清晰的“咔嗒”吸合声并用万用表测量其线圈两端是否有12V电压。确保阀门动作与程序逻辑一致。湿跑测试用水测试用两个水瓶装水代替树脂和固化剂。这是最关键的一步。执行完整的分配流程。观察密封性所有接头、瓶口是否有渗漏动作顺序是否先开A阀关A再开B阀关B有无同时开启精度用高精度电子秤称量接出的水与系统设定值对比。误差有多大重复性如何校准称重传感器将空容器放在称重平台上执行scale.tare()去皮。放入一个已知精确重量的砝码如500g。读取此时传感器的读数假设为reading。计算校准系数calibration_factor reading / 已知重量。例如读数50500已知重量500g则系数101.0。将计算出的系数填入代码scale.set_scale(calibration_factor);重新上传。再次测试放入砝码通过scale.get_units()读取的重量应接近500g。可以再用另一个重量如200g验证线性度。6.2 常见问题与解决方案速查表问题现象可能原因排查步骤与解决方案称重读数跳动大或不归零1. 机械干扰管线拉扯平台2. 电气干扰电机/阀电源与传感器电源未隔离3. HX711供电不稳或接线不良1. 检查平台是否自由悬空所有线缆、软管是否松弛。2. 尝试用电池单独为Arduino和HX711供电测试。3. 确保连接牢固在HX711电源引脚附近加一个10uF电解电容和0.1uF陶瓷电容滤波。电磁阀不动作1. 驱动电路故障继电器/MOSFET坏2. 电源功率不足3. 程序引脚定义错误或逻辑反了1. 用万用表测量继电器控制端是否有电压变化输出端是否导通。2. 检查12V电源适配器额定电流是否大于所有电磁阀工作电流之和。3. 检查代码中pinMode设置为OUTPUTdigitalWrite值是否正确常闭阀通常HIGH打开。分配精度差总是过多或过少1. 校准系数不准确2. 阀门关闭延迟流体惯性3. 分配过程中有振动1. 重新执行校准流程使用多个重量点校准以提高线性度。2. 在代码中引入“提前关断”补偿。例如在重量达到目标值的95%时就关闭阀门通过实验找到最佳提前量。3. 确保设备放置在稳固、无振动的台面上。液体从接头处泄漏1. 生料带缠绕不当或未使用2. 喉箍未拧紧或规格不对3. 接头或管材有裂纹1. 拆下接头清洁螺纹重新规范缠绕生料带。2. 检查喉箍是否拧紧且均匀箍紧软管。3. 更换有缺陷的接头或软管。Arduino运行时复位电磁阀动作时产生的电压尖峰或电流冲击干扰1. 在电磁阀线圈两端并联续流二极管如果驱动板没有。2. 在12V电源入口处并联一个大容量电解电容如1000uF。3. 尝试为Arduino单独供电共地。6.3 从“能用”到“好用”的经验之谈在实际使用这个系统几个月后我积累了一些原项目文中未提及但至关重要的经验原料瓶的“呼吸”问题当液体被抽出时瓶内会产生负压导致流速越来越慢甚至停止。必须在原料瓶盖上开一个“呼吸孔”并连接一个空气过滤器或一段干燥管让空气进入平衡压力。否则分配精度会严重下降。管路残留与混合头分配完成后龙头出口和管路中总会残留一些液体。如果紧接着进行下一次分配这部分残留的旧料会混入新料可能导致局部固化不良。对于要求极高的应用可以考虑在出口使用静态混合头并每次分配后用少量溶剂冲洗混合头的设计。或者在软件上设置一个“排空”程序每次分配前先排出少量液体到废料杯。粘度与温度的影响环氧树脂的粘度对温度非常敏感。冬天粘度大流速慢可能导致提前关断的补偿参数需要调整。最好能在相对恒温的环境下使用该系统。定期维护长时间使用后电磁阀阀芯可能被结晶或杂质卡住。定期例如每使用几十次后用合适的溶剂如丙酮、酒精需与管路材质兼容循环清洗整个系统能极大延长设备寿命和保持精度。这个项目最吸引人的地方在于它把一个复杂的工业控制概念用一个具体、有趣且实用的DIY项目呈现出来。它给你的不仅仅是一个树脂分配工具更是一套关于传感器、反馈控制和机电一体化的实战经验。当你看到拉下龙头两种液体以完美比例自动流出时那种工程学带来的满足感是无可替代的。希望这份详细的拆解能帮你绕过我踩过的那些坑更顺畅地完成自己的自动化创作。