
1. 项目概述与设计思路我一直对桌面级的自动化设备很着迷从3D打印机到激光雕刻机都折腾过不少。最近我完成了一个挺有意思的小项目一台基于CMS3主板的滚动纸式自动写字机。这玩意儿本质上是一个三轴绘图仪但它的核心设计思路借鉴了老式打字机——纸张是卷动前进的而不是像大多数绘图仪那样固定在一个平台上。这个设计的最大好处就是极致紧凑。整机做完尺寸只有430mm长、70mm宽、127mm高比一本大开的书大不了多少随手就能塞进背包里无论是带去工作坊演示还是放在家里书桌上写个每日箴言都特别方便。你可能见过网上那些用废旧光驱或DVD驱动器改装的迷你绘图仪它们通常精度有限且Z轴抬笔动作比较生硬。我这个方案的目标是做一个更可靠、更专业一点的玩具。它采用标准的2020铝型材作为骨架搭配MGN9线性导轨确保运动顺滑核心控制则交给了专为多轴运动设计的CMS3三轴主板。这样一来它不仅能稳定地写出漂亮的字还能画一些简单的线条图可玩性高了不少。整个项目从结构设计、零件采购到软件调试我都走了一遍过程中踩了不少坑也总结出一些能让制作过程更顺畅的经验。如果你对机械结构、开源硬件和运动控制感兴趣想亲手做一个既实用又有成就感的桌面小机器那这篇详细的制作笔记应该能给你提供一条清晰的路径。2. 核心部件选型与功能解析一台自动写字机的性能上限很大程度上在选型阶段就已经决定了。盲目堆料会增加成本和复杂度而过于节省则可能导致机器抖动、精度差甚至无法正常工作。我的选型原则是在保证基础性能可靠的前提下追求最高的性价比和易得性。2.1 运动控制核心CMS3三轴主板为什么是CMS3主板市面上常见的方案有Arduino UNORamps 1.4套件或者直接用树莓派电机驱动板。前者需要自己搭建固件和上位机对新手不友好后者系统稍显复杂实时性处理需要额外注意。CMS3主板是一个高度集成的解决方案它本质上是一块专为三轴运动控制设计的“一体机”。它的核心是一颗性能足够的微控制器预烧录了成熟的运动控制固件通常是Grbl或Marlin的变种并集成了三个步进电机驱动芯片、限位开关接口、主轴或激光控制接口等。你只需要通过USB线将它连接到电脑使用通用的G代码发送软件如Candle, Universal Gcode Sender就能直接控制跳过了最令人头疼的固件编译和烧录环节。对于这个写字机项目我们主要用到它的X、Y、Z三轴步进电机驱动输出以及通过G代码控制抬笔/落笔映射到Z轴的功能。它的集成度高接线简单大大降低了入门门槛。2.2 机械传动与结构件机械部分是机器的骨架直接决定了写字是否平稳、顺滑。框架与导轨主体框架采用欧标2020铝型材这种型材四面都有T型槽配合专用的T型螺母和角码搭建起来像拼乐高一样方便强度也足够。线性导轨我选择了MGN9系列这是一种微型滚珠直线导轨。相比常用的光轴直线轴承的方案线性导轨的刚性更好运动更平稳几乎没有背隙回程间隙这对保证笔尖定位的重复精度至关重要。X轴用了一条270mm长的MGN9H滑块较宽承载强Y轴用了一条55mm长的MGN9C滑块紧凑。传动系统X轴笔的横向移动和Y轴纸的纵向卷动都采用“步进电机 同步带 同步轮”的方案。同步带选用GT2齿型、6mm宽的橡胶同步带这种带子齿距为2mm传动精确噪音小。同步轮为20齿与电机轴通过顶丝固定。这里有一个细节X轴电机通过一个联轴器直接驱动一根8mm的光轴作为主动辊同步带的两端则固定在这根光轴上形成闭环Y轴电机则直接驱动一个同步轮通过同步带拉动卷纸轴转动。抬笔机构Z轴这是写字机的“灵魂”。我们不可能用电机直接上下移动笔那样结构太复杂。这里采用了一个巧妙的舵机连杆弹簧的复合机构。CMS3主板可以输出一个PWM信号控制舵机角度。舵机通过连杆拉动一根钢丝钢丝另一端连接着一个可以上下滑动的笔夹。笔夹下方有弹簧提供向上的回弹力。当舵机动作时钢丝下拉克服弹簧力使笔尖接触纸面落笔舵机回位时弹簧将笔抬起抬笔。这种方案结构简单动作迅速且通过弹簧缓冲避免了笔尖对纸面的硬冲击。2.3 动力与执行单元步进电机选用的是42步进电机机身直径42mm高度38mm。这个尺寸的电机扭矩对于带动笔和纸来说绰绰有余。注意电机接口要选对我用的XH2.54端子接口方便与主板连接。步距角通常是1.8度每转200步通过驱动器的细分设置可以让运动更平滑。笔夹与纸张压紧笔夹使用3D打印件内部镶嵌铜套作为轴承确保上下滑动顺滑。纸张的压紧靠一根套着多个硅胶圆管的“压纸轴”实现利用硅胶的摩擦力防止纸张在书写时滑动同时又不影响纸张被卷动。注意采购清单核对。项目零件清单看起来繁多但很多是螺丝、螺母等标准件。建议在采购前根据你的设计图STEP文件自己整理一份BOM表物料清单并核对螺丝的长度、规格。我最初就漏买了M5的T型螺母导致组装时停工等快递。3. 机械结构组装全流程详解有了所有零件就可以开始像搭积木一样把它们组装起来了。组装顺序很重要合理的顺序能避免反复拆装。3.1 底座模块与电机的安装组装从机器的“双脚”开始即左侧和右侧的底座模块。这两个部件是3D打印的Base Left.STL Base Right.STL。嵌入铜套这两个底座零件上设计有安装电机和轴承的孔位。你需要先将一种叫“铜套”或“油衬”的薄壁铜管轻轻敲入指定的孔内。铜套的作用是作为轴承使用减少转轴与塑料孔之间的摩擦和磨损。敲入时最好使用胶锤或者在铜套下垫一块木头垂直缓慢敲击确保铜套与孔口平齐不要歪斜。安装步进电机将两个42步进电机分别放入左右底座的电机位。电机的出轴方向要提前确定好确保它将来能正确连接到同步轮或联轴器。然后用M3螺丝从底座的侧面将电机固定紧。这里螺丝不要一次性拧到最紧先带上等所有位置对齐后再统一紧固。组装浮动轴承座与弹簧这是实现纸张张紧的关键。Floating Bearing Seat这个零件也需要嵌入铜套。然后将一根长弹簧0.5×6×35的一端套在轴承座的小柱上另一端准备插入底座背面的孔位。将组装好的轴承座-弹簧组件对准底座背面的安装孔用力按压进去你会听到“咔哒”一声弹簧被压缩并卡在内部。最后用螺丝从外侧将轴承座固定死。这个浮动轴承座将成为卷纸轴的一端支撑弹簧提供恒定的张紧力即使纸张厚度有微小变化也能保持绷紧。3.2 主体框架的搭建现在把左右底座模块立起来用铝型材把它们连接成稳固的框架。安装侧支撑板首先将两个L形的3D打印支撑板或铝制角码分别安装到左侧底座模块的内侧。使用M3螺丝和T型螺母在2020铝型材的槽内进行固定。这两个支撑板将用于安装那根较长的X轴线性导轨。安装压纸轴与导轨取一根8mm直径、长度合适的光轴作为压纸轴将硅胶圆管GJ-3220*8mm切成若干小段均匀地套在这根光轴上。硅胶管有弹性能有效压住纸张。然后将这根压纸轴两端放入左右底座前端的卡槽内。接下来将270mm长的MGN9H线性导轨通过螺丝安装到刚才装好的两个侧支撑板上这就是X轴导轨。它的滑块将承载笔的横向移动模块。安装同步带测量好长度将GT2同步带裁剪成合适尺寸。同步带的两端需要用专门的皮带夹或者自己设计一个卡扣零件来固定形成闭环。确保同步带在同步轮上啮合良好没有扭曲。3.3 控制模块与笔机构的集成机械部分最后一步是把“大脑”和“手”装上去。安装CMS3主板盒将3D打印的“CMS3 Plotter Mainboard Mounting Box”底壳安装到机器右侧的外部。这个盒子起到保护和支撑主板的作用。然后将CMS3主板小心地放入盒内对准安装孔用塑料支柱或螺丝固定好。注意主板不要与金属框架直接接触防止短路。最后盖上盒子的顶盖。连接笔机构与钢丝笔夹组件已经安装在X轴滑块的连接板上了。现在需要将一根刹车线钢丝外套管的一端连接到笔夹上方的活动部分另一端则准备连接到舵机的摆臂上。钢丝穿过一个柔软的套管以便于弯曲和导向。舵机通常固定在一个专门设计的支架上这个支架也安装在机器框架上。整体布线将三个步进电机的四芯线注意AA- BB-的顺序如果电机反转后续在软件里调换线序即可、舵机的三芯线信号、电源、地以及电源线都规整地连接到CMS3主板对应的接口上。用扎带将线缆捆扎整齐避免运动时被缠绕或拉扯。4. 电路连接与控制系统配置机械是躯体电路和软件才是灵魂。这一步确保信号和能量能准确无误地送达每个执行器。4.1 主板接口与接线图CMS3主板的接口通常丝印清晰。你需要连接电源接口接入12V/10A的直流电源适配器。务必注意正负极一般主板会有标注接反很可能烧毁主板。电机接口标有X, Y, Z或A的接口分别对应笔的横向移动轴、卷纸轴和抬笔轴。每个接口有四个引脚脉冲PUL、方向DIR、使能EN和地GND。按照你购买的步进电机驱动模块如果主板是分体式或主板集成的驱动芯片要求接线。我用的主板是集成驱动的直接接电机线即可。舵机接口通常是一个三针接口信号、VCC、GND。将舵机线插上注意信号线一般是黄色或白色对准信号引脚。USB接口用于连接电脑进行通信和供电小电流。在调试时可以仅通过USB供电让主板和电机工作电机扭矩可能不足但正式书写时必须接上12V电源。实操心得线序测试。在将所有线缆永久固定前先进行简单的通电测试。可以通过上位机软件点动控制每个轴观察电机转向是否正确。如果某个轴运动方向反了不需要重新接线只需在软件配置里将该轴的“方向信号取反”即可或者交换电机线圈A和A-的接线。4.2 上位机软件与基础参数设置CMS3主板通常预装了Grbl固件我们需要通过上位机软件与它通信并设置参数。软件准备在电脑上安装一个G代码发送器如Candle界面友好适合新手或Universal Gcode Sender (UGS)。安装好软件后用USB线连接写字机和电脑在软件中选择正确的串口号如COM3, COM4等。连接与归零点击连接后软件会显示“Connected”和固件版本号如Grbl 1.1f。首先我们需要设置机器的行程和原点。由于我们这个简易写字机可能没有安装限位开关所以原点通常设置在纸张的左上角。你可以手动将笔移动到那个位置然后在软件中点击“Zero X”和“Zero Y”将这个点设为(0,0)。关键参数校准这是最核心的一步决定了“指令移动100mm”和“实际移动100mm”是否一致。需要校准的参数是“Steps per Millimeter”每毫米步数。它的计算公式是Steps_per_mm (电机每转步数 * 驱动器细分) / (同步轮齿数 * 皮带齿距)电机每转步数200对于1.8°电机驱动器细分查阅你的主板或驱动板手册常见有16细分3200步/转同步轮齿数20皮带齿距GT2皮带为2mm 代入公式(200 * 16) / (20 * 2) 3200 / 40 80 steps/mm。 这是一个理论值。我们需要验证它在软件中发送指令G91 G1 X100 F500相对移动X轴走100mm速度500mm/min。然后用尺子精确测量笔实际移动的距离。假如实际走了102mm说明电机走多了计算值偏大。修正公式新Steps_per_mm 理论值 * (指令距离 / 实际距离) 80 * (100 / 102) ≈ 78.43。将这个新值通过$10078.43Grbl中$100是X轴步数参数命令发送给主板。对Y轴$101参数重复此过程。抬笔高度设置抬笔高度决定了笔尖离开纸面多远。首先手动安装笔让笔尖刚好轻微接触纸面。然后在上位机软件中控制Z轴抬笔轴上升一个高度比如5mm。观察笔尖是否完全离开纸面且有一定安全距离。这个高度值5mm就是你落笔和抬笔时Z轴需要移动的距离。在生成G代码的软件如Inkscape with插件中需要设置对应的“抬笔高度”参数。5. 从图像到笔迹G代码生成与书写测试机器硬件和基础参数都调好了现在要让它“听懂”我们的话。写字机只认识一种语言G代码。我们需要把想写想画的图形转换成G代码。5.1 利用Inkscape生成G代码Inkscape是一款免费开源的矢量图形软件配合插件可以完美地将图形路径转换为绘图仪能识别的G代码。安装插件搜索并下载“J Tech Photonic Laser Tool”插件或“Gcodetools”扩展。将插件文件放入Inkscape的扩展目录。重启Inkscape后在“扩展”菜单中就能找到相关工具。准备图形在Inkscape中创建或导入你想要书写的文字或图形。关键一步将所有对象转换为路径。选中文字点击菜单“路径”-“对象转路径”。因为只有路径信息线条才能被转换成移动指令。设置笔具参数在插件界面中选择“绘图仪”模式而非激光模式。设置关键的参数移动速度笔在空移时的速度可以设快一点如2000 mm/min。书写速度笔尖接触纸面时的移动速度太快会划破纸或字迹潦草建议300-800 mm/min。抬笔高度设置为你之前调试好的值如5mm。落笔延迟/抬笔延迟给舵机动作留出一点时间通常0.1-0.3秒即可。生成并检查G代码指定输出文件路径点击生成。你会得到一个.nc或.gcode后缀的文件。用文本编辑器打开它可以看到里面全是G0快速移动、G1线性插补、G2/G3圆弧插补等指令以及控制主轴M3/M5在这里被映射为落笔/抬笔的命令。快速浏览一下检查是否有异常巨大的坐标值超出机器行程。5.2 首次书写测试与精细调整激动人心的第一次试运行来了。装纸与固定将一截纸建议先用普通A4纸测试穿过压纸轴下方卷入卷纸轴并卡入另一端的浮动轴承座。转动卷纸轴将纸拉平绷紧。加载与运行在上位机软件如Candle中打开生成的G代码文件。软件界面通常会显示一个路径预览图核对一下是否和你的设计一致。将笔移动到纸张的起始书写位置并设置该点为工件原点Zero X, Zero Y。开始测试可以先点击“单步执行”或“慢速运行”观察笔的移动和抬落动作是否正常。确认无误后再以正常速度运行。问题排查与调整字迹错位或重叠大概率是X轴和Y轴的“每毫米步数”校准不准。重新进行测量校准。笔划粗细不均或断墨可能是笔的问题也可能是落笔压力不稳定。尝试更换不同品牌或类型的笔签字笔、针管笔或者微调舵机落笔时的角度使笔尖与纸面接触力更均匀。书写区域有偏移检查Inkscape中图形的原点位置。有时图形不在画布原点导致生成的G代码坐标从非零开始。可以在Inkscape中将图形移动到坐标(0,0)附近再生成代码。角落有抖动或异响可能是运动速度过快加速度设置太高。可以在固件参数中通过$命令适当降低X、Y轴的加速度设置如$110500,$111500单位mm/s²。6. 进阶优化与个性化改造基础功能实现后你可以根据自己的需求对这台写字机进行“升级改造”让它更好用、更独特。6.1 提升书写精度与速度的权衡精度和速度是一对矛盾体。默认参数通常比较保守。追求精度降低最大速度和加速度$110,$111,$112参数这会让机器运行更平稳减少因惯性带来的过冲或振动字迹边缘更清晰。同时可以尝试使用更细的笔尖和更光滑的纸张。追求速度在保证不失步电机不丢步的前提下逐步提高速度和加速度。务必注意速度太快可能导致同步带抖动、产生噪音甚至丢步指令走了100mm实际没走到。每次调整后都要进行画方框或圆形的测试检查闭合是否准确。固件升级如果你对预装固件不满意可以尝试为CMS3主板编译更新版本的Grbl固件。新版本可能优化了运动算法支持更平滑的加速度控制如S-curve。但这需要一定的嵌入式开发知识。6.2 扩展功能设想这台机器的框架是一个开放平台你可以为它增加更多模块自动换笔器设计一个转盘式的笔架通过一个额外的微型舵机或步进电机控制旋转配合G代码的定制命令如M代码实现书写过程中自动切换不同颜色的笔绘制多色图案。添加限位开关在X轴和Y轴的行程两端安装微动开关或光电开关并在固件中启用硬限位功能。这样每次开机后可以执行自动回原点$H命令让机器自己找到绝对零点提高重复定位的便捷性。集成摄像头视觉定位在机头加装一个小型摄像头如树莓派摄像头配合OpenCV进行图像识别。你可以先在纸上随意放一个位置让摄像头识别然后自动调整书写坐标实现“在哪里放纸就在哪里写”的灵活功能。网络化控制给主板连接一个Wi-Fi模块如ESP-01S或者直接用树莓派作为上位机运行一个轻量级的Web服务器如CNCjs。这样你就可以通过手机或电脑浏览器远程上传G代码文件并控制机器书写把它变成一个真正的网络终端。6.3 维护与保养建议机器虽小定期维护能延长其寿命保持最佳状态。导轨清洁线性导轨的滑块内部有滚珠和润滑脂。定期用无尘布清理导轨表面的灰尘必要时滴加一滴轻质润滑油如缝纫机油到导轨上让滑块来回运动几次使其均匀分布。切勿使用WD-40等渗透性润滑剂它会溶解原有润滑脂。同步带检查定期检查同步带的张紧度。用手按压皮带中部应该有轻微的弹性但不过松或过紧。过松会导致传动有间隙过紧会增加电机负载和噪音。结构紧固机器在运行中会有振动。每隔一段时间检查所有螺丝特别是电机、同步轮、滑块连接处的螺丝确保没有松动。电气检查检查各接线端子是否牢固有无氧化或松动。长期不用时最好断开电源。从一堆零件到一台能精准复现你想法的小机器这个过程充满了挑战和乐趣。我个人的体会是DIY项目的精髓不在于一次成功而在于不断遇到问题、分析问题、解决问题的循环。这台基于CMS3主板的滚动纸写字机提供了一个非常经典的运动控制入门实践。它涉及了机械设计、电路连接、固件配置、软件联调等多个环节任何一个环节的疏漏都会在最终结果上体现出来。最让我有成就感的时刻不是它第一次动起来而是经过反复校准后它写出的第一个横平竖直、笔画分明的汉字。那一刻你会感觉所有的调试和等待都是值得的。如果你也完成了自己的制作不妨尝试用它来写一首小诗画一个logo或者给朋友写一张特别的卡片这份由自己创造的、带着机械美感的独特礼物会比任何买来的东西都更有意义。