1. 项目概述与核心价值如果你对数控机床CNC或者绘图仪这类精密机械感兴趣但又觉得它们价格昂贵、原理复杂那么这个项目可能就是为你量身定做的。我最近用一块Micro:bit、几个伺服电机和一堆3D打印的零件拼凑出了一个完全由自己掌控的简易绘图机器人。它本质上是一个二维的直角坐标机器人通过两个电机分别控制X轴和Y轴的运动带动笔尖在纸上画出你想要的轨迹。这个项目的魅力在于它的“亲民”。整个机械结构几乎全部由3D打印完成你不需要昂贵的金属加工设备控制核心是面向教育设计的Micro:bit编程用的是图形化的代码块几乎没有门槛驱动部分是两个常见的微型伺服电机成本极低。它就像一个电子版的“Etch A Sketch”绘画板但画出来的是实实在在的、可以保存的笔迹。我的初衷就是利用唾手可得的材料和易于上手的软件让更多人尤其是学生和创客新手能够亲手搭建并理解一个运动控制系统是如何工作的。这不仅仅是做一个玩具更是对机电一体化、运动控制算法和快速原型制作的一次生动实践。2. 核心设计与思路拆解2.1 机械结构设计解析整个绘图机器人的机械框架采用了经典的笛卡尔坐标结构。X轴和Y轴相互垂直通过两个独立的直线运动模块来实现笔尖在二维平面上的定位。2.1.1 运动传动方案选择我选择了丝杠Lead Screw作为直线传动机构而不是更常见的皮带如GT2同步带。这里有几个关键的考量精度与背隙对于小型、低速的绘图应用丝杠传动比皮带传动具有更小的背隙。背隙是指电机反向转动时负载笔架没有立即跟随运动而产生的空程。在绘图时背隙会导致线条不连贯或出现“台阶”。3D打印的丝杠和螺母配合虽然精度不如金属件但在合理的设计下其背隙是可控且一致的比皮带的弹性形变更有利于保持绘图精度。自锁性丝杠具有一定的自锁能力取决于导程和摩擦系数。这意味着当电机停止供电时笔架不会因为重力或惯性而滑动这对于保持绘图位置的稳定性非常重要。而皮带传动通常需要电机持续提供扭矩来维持位置或者在断电时增加额外的刹车机构。推力与结构简化丝杠将电机的旋转运动直接转化为强大的直线推力结构紧凑。我们使用连续旋转伺服电机直接驱动丝杠省去了额外的减速箱或传动带轮使得整个机械结构非常简洁零件数量少更适合3D打印制造。2.1.2 框架与支撑设计底座采用中密度纤维板MDF它平整、坚固且易于加工。四个3D打印的“脚部”Footer零件作为整个运动系统的支柱被固定在MDF底座上。每个脚部零件内部设计有精确的孔位用于安装8mm直径的铝杆作为直线导轨以及5mm直径的孔用于安装丝杠的轴承端。注意铝杆作为导轨其直线度和表面光洁度直接影响滑块运动的顺滑度。在安装前最好用细砂纸轻微打磨一下杆身并确保两端没有毛刺。同时四个脚部安装孔的相对位置必须精确否则会导致两根导轨不平行滑块移动卡顿。建议先打印出1:1的底座钻孔模板仔细比对后再在MDF上打孔。2.1.3 笔架与滑块设计笔架Pen Holder由两个零件组成通过螺纹旋紧来夹持不同直径的笔。滑块Slider是核心的运动部件它内部嵌有与丝杠配合的螺母通常是打印出来的内螺纹外部有与铝杆配合的滑孔。滑块需要与笔架牢固连接。实操心得打印滑块时必须让滑块“站立”打印即让滑孔的中心轴垂直于打印平台。如果躺着打印与铝杆接触的孔壁会是一层层的打印层纹摩擦力会非常大运动极其不顺畅。站立打印时孔壁是连续的圆周方向更加光滑。可以在切片软件中为这个面增加更多的外壳层数例如4-5层来提升强度和光滑度。2.2 电子控制系统设计控制系统遵循“感知-决策-执行”的经典模式但在这里被极大地简化了。2.2.1 主控选型为什么是Micro:bit选择BBC Micro:bit作为大脑是基于以下几个压倒性的优势极低的学习门槛其官方的MakeCode编辑器提供图形化代码块编程将复杂的C或MicroPython语法抽象成积木块。用户只需理解逻辑拖拽组合即可完成编程特别适合没有编程基础的初学者或教育场景。高度集成一块小小的板子上集成了加速度计、磁力计、温度传感器、蓝牙、LED点阵和多个可编程GPIO口。虽然本项目只用了其中一部分但这种“开箱即用”的特性避免了复杂的分线板和焊接用杜邦线连接即可。强大的社区与教育资源围绕Micro:bit有海量的教程、项目和库遇到问题几乎都能找到解决方案。这对于项目成功和持续学习至关重要。供电与连接简便通过Micro USB接口即可完成供电和程序下载无需额外的烧录器。2.2.2 执行器选型伺服电机的奥秘这里有一个极易踩坑的关键点必须使用连续旋转伺服电机如FS-90R而不是标准的角度伺服电机如SG-90。标准角度伺服电机接收一个脉冲信号通常周期20ms脉宽0.5ms-2.5ms会转动到对应的绝对角度如0-180度并保持在那里。它内部有电位器反馈形成闭环控制。你无法让它连续旋转。连续旋转伺服电机它修改了内部的反馈机制或移除了限位。同样接收脉冲信号但信号被解释为旋转速度和方向。例如1.5ms脉宽对应停止1.0ms对应全速正转2.0ms对应全速反转。它本质上变成了一个带内置驱动电路、可正反转的减速电机。 本项目正是利用了这一特性。我们将摇杆模拟信号映射到不同的脉冲宽度从而控制两个伺服电机的转速和方向进而驱动丝杠正反转实现笔架的前后左右移动。2.2.3 输入设备模拟摇杆模块双轴摇杆模块Joystick Module输出两路模拟电压信号VRX和VRY分别对应左右X轴和前后Y轴的偏移程度。Micro:bit的GPIO引脚可以读取模拟电压值ADC将其转化为0-1023的数字值。这个值的变化是线性的、连续的为我们提供了平滑控制电机速度的基础。3. 物料准备与加工要点3.1 电子元件清单与采购建议下表列出了所有必需的电子元件及关键选购注意事项元件名称规格/型号建议数量关键选购/使用注意主控制器BBC Micro:bit V21确保是正版或兼容版V1版本GPIO口略有不同。扩展板Micro:bit Edge/ breakout Board1必须要有用于方便地连接杜邦线。推荐带螺丝端子的版本。伺服电机连续旋转舵机如FS-90R2重中之重务必确认是“连续旋转”型。购买时可搜索“360度舵机”或“Continuous Rotation Servo”。舵机转接件舵机舵盘转乐高轴套2用于连接舵机输出轴和3D打印的丝杠驱动齿轮。需确认与所选舵机输出齿形如25T匹配。摇杆模块双轴PS2摇杆按键模块1常见的是模拟量输出型带一个按键本项目未用。面包板400孔无焊面包板1用于搭建临时电路方便连接电源和地线。连接线杜邦线公-公公-母母-母1套建议购买混合包以应对不同接口的连接需求。电源Micro USB数据线1连接电脑或手机充电器供电。对于移动使用可搭配一个5V的移动电源。提示购买伺服电机时通常会附带多种规格的舵盘舵机臂。那个舵机转乐高轴的套件就是用来替换其中一个舵盘以便与乐高规格的十字轴连接进而驱动我们3D打印的蜗杆。3.2 机械结构件清单与加工类别物品规格/要求数量备注3D打印件脚部Footer需打印footer2.stl和footer4.stl各2个注意区分左右或前后图纸中应有标识。滑块Sliderslider1.stl2个必须垂直站立打印。笔架Pen Holderpen_holder1.stl,pen_holder2.stl各1个两个零件通过螺纹配合夹紧笔。蜗杆齿轮Worm Gearworm_gear_2.stl2个与丝杠螺杆配合将电机旋转转化为直线运动。蜗杆轴套Axle Rodworm_gear_axle_rod.stl2个连接舵机转接件和蜗杆齿轮。金属件直线光轴直径8mm长度220mm4根铝杆即可要求直线度好。丝杠螺杆M5或M6螺杆长度约200mm2根需与3D打印的蜗杆齿轮内螺纹匹配。也可直接打印丝杠但强度稍差。螺丝螺母M2x20mm螺丝螺母8套用于固定脚部与底座。M3x10mm螺丝可选4颗用于可选垫高摇杆模块的尼龙柱。木螺丝如3.5x10mm, 3x17mm若干用于将脚部固定到木底座上。底座底板MDF板至少300x300mm厚度12mm1块提供稳定的基础。亚克力板也可但钻孔时易开裂。工具电钻-1把钻头8mm 5mm各1支用于在MDF上为铝杆和丝杠钻安装孔。螺丝刀十字、一字1套笔普通圆珠笔或签字笔1支笔杆直径需与笔架匹配。3.2.1 3D打印参数与技巧切片软件使用PrusaSlicer、Cura或Anycubic等常见软件均可。层高0.2mm或0.16mm在精度和打印时间间取得平衡。填充率10%-15%即可。结构件不需要太高填充重点保证外壳强度。材料PLA是最佳选择。它易于打印、强度足够、无异味。避免使用ABS因为其收缩率可能导致零件尺寸不准影响装配。关键零件打印方向滑块Slider如前所述必须垂直打印。在切片软件中将模型旋转使滑块的中心孔轴线与Z轴打印高度方向平行。脚部Footer建议让与底座接触的大面积平面作为底层这样放置最稳定且安装面平整。蜗杆齿轮同样建议垂直打印以确保齿轮齿形的强度和精度。支撑对于有悬空结构的零件如笔架的夹紧部分需要生成支撑。使用“树状支撑”通常更容易拆除且更省材料。3.3 机械组装全流程详解组装顺序至关重要错误的顺序可能导致无法安装或调试困难。3.3.1 底座准备与定位将提供的baseplate.pdf图纸1:1打印出来贴在MDF底板上或用尺子精确测量图纸上的孔位在MDF上做好标记。使用电钻和8mm钻头在标记好的四个角点位置钻孔用于穿过8mm铝杆。钻孔时务必保持钻头垂直避免孔歪斜。使用5mm钻头在对应位置钻穿丝杠的通过孔。将四个3D打印的脚部零件用木螺丝按照图纸位置固定在MDF底座上。确保螺丝拧紧脚部无晃动。3.3.2 运动轴组装将两根8mm铝杆分别穿过一对脚部上对应的8mm孔。先不要完全插入到底留出一些空间。将两个打印好的滑块分别套在两根铝杆上。手动推动滑块检查其在铝杆上滑动是否顺畅。如果有卡涩可能是铝杆不直或打印的滑块孔内有毛刺需要稍作打磨。将M5丝杠穿过脚部上的5mm孔和滑块内部的螺纹孔。这里可能需要用手旋转丝杠慢慢“拧”进滑块的螺纹中。这个过程要耐心如果阻力很大不要强行拧入可能是螺纹没对准或打印有误差可以用M5的丝锥或直接用丝杠本身慢慢来回旋转进行“攻丝”修正。确保两根铝杆和两根丝杠都平行且水平后将铝杆和丝杠完全推入脚部的孔中直至另一端从对面的脚部穿出。此时整个X轴和Y轴的运动框架就搭建好了。3.3.3 驱动部分安装将连续旋转伺服电机用螺丝固定在对应的脚部侧面的电机座上。将“舵机转乐高轴套”安装到伺服电机的输出轴上替换掉原来的舵盘。将打印好的“蜗杆轴套”插入“舵机转乐高轴套”的十字孔中。最后将打印好的“蜗杆齿轮”安装到“蜗杆轴套”上并用螺丝固定如果设计有螺丝孔。确保蜗杆齿轮与丝杠良好啮合。你可以手动旋转电机轴观察滑块是否能够平稳地左右移动。3.3.4 笔架与电路板安装将笔架的下半部分带外螺纹与滑块连接固定。将笔插入笔架然后旋入笔架的上半部分带内螺纹直到将笔轻轻压紧在纸面上。调整笔尖的压力既要保证能画出线又不能压力太大导致移动困难。将摇杆模块通过M3尼龙柱垫高然后用螺丝固定在底板上方便操作的位置。将Micro:bit插入扩展板并将扩展板用双面胶或螺丝固定在底板空闲区域。4. 电路连接与编程实现4.1 电路连接原理图与实操电路连接的核心是为所有部件提供正确的电源和信号路径。下图是清晰的连接示意图------------------------------- | Micro:bit Breakout | | ------------------------ | | | 3V GND P0 P1 P2 ... P8 P12| | -|----|----|--|--|------|--|- | | | | | | | | | | | | | | | ------- 至 Servo2 信号线 (橙) | | | | | | ---------- 至 Servo1 信号线 (橙) | | | | | ----------------- 至 Joystick VRY | | | | -------------------- 至 Joystick VRX | | | ----------------------- (未使用) | | ---------------------------- 至面包板“-”排 (GND总线1) | --------------------------------- 至面包板“”排 (3V总线) | | | ------------------------------ 至面包板“-”排 (GND总线2) --------------------------------------- ---------------------------------- | Breadboard (面包板) | | 排 (3V总线) -排 (GND总线1) | | ^ ^ | | | | | | ------------------------ | | | | | | | Joystick: | | | | 5V -- 接 排 | | | | GND -- 接 -排 (GND1) | | | | VRX -- 接 Micro:bit P1| | | | VRY -- 接 Micro:bit P2| | | | | | | | Servo1: | | | | Red() -- 接 排 | | | | Brown(-) -- 接 -排(GND1)| | | | Orange(Sig) -- 接 P8 | | | | | | | | Servo2: | | | | Red() -- 接 排 | | | | Brown(-) -- 接 **-排(GND2)**| | | Orange(Sig) -- 接 P12 | | | -------------------------- | ----------------------------------4.1.1 分步连接指南建立公共电源和地线将Micro:bit扩展板上的一个3V引脚用杜邦线母-公连接到面包板一侧的“”电源排孔。将扩展板上的一个GND引脚连接到面包板一侧的“-”地线排孔我们称之为GND总线1。再将扩展板上的另一个GND引脚连接到面包板另一侧的“-”地线排孔GND总线2。这一步是避免干扰的关键。连接摇杆摇杆模块的5V或VCC引脚 - 面包板“”排。摇杆模块的GND引脚 - 面包板GND总线1。摇杆模块的VRX引脚 - Micro:bit扩展板的P1引脚。摇杆模块的VRY引脚 - Micro:bit扩展板的P2引脚。连接伺服电机1电机红线V - 面包板“”排。电机棕线GND - 面包板GND总线1。电机橙线信号Signal - Micro:bit扩展板的P8引脚。连接伺服电机2电机红线V - 面包板“”排。电机棕线GND - 面包板GND总线2注意与电机1的地线分开。电机橙线信号Signal - Micro:bit扩展板的P12引脚。供电用Micro USB线将Micro:bit连接到电脑或5V充电宝上。核心避坑指南为什么地线要分开接伺服电机在启动和堵转时会产生较大的瞬间电流并可能引起电源线上的电压波动噪声。如果两个电机共用一个地线路径这种噪声可能会通过地线串扰到另一个电机的信号地甚至影响到Micro:bit的模拟信号读取摇杆信号导致控制不稳定、抖动或误动作。将两个电机的地线分别接到Micro:bit上不同的物理GND引脚虽然它们在板内是连通的相当于为噪声提供了两条独立的回流路径减少了相互干扰。这是一种简单有效的抗干扰措施。4.2 Micro:bit图形化编程详解我们使用MakeCode for Micro:bit在线编辑器进行编程。其逻辑核心是“映射”将摇杆读取的模拟值0-1023映射为控制伺服电机速度的脉冲宽度值0-180在连续旋转舵机模式下对应不同速度和方向。4.2.1 创建新项目与基础逻辑访问https://makecode.microbit.org/点击“新建项目”。在“无限循环”积木块中我们需要持续读取摇杆并控制电机。所以从“循环”类别中拖出当开机时或无限循环块。这里使用无限循环让程序一直运行。控制伺服电机需要伺服电机类别下的积木。但默认可能没有需要点击“高级” - “扩展”在搜索框中输入“servo”添加“servo”扩展包。4.2.2 编写控制代码具体的代码块组合如下所述其逻辑是在无限循环中放置两个伺服写入引脚 [P8] 到 [0]积木块分别控制两个电机。将第一个的引脚改为P8第二个改为P12。每个伺服写入引脚块的值需要用一个映射块来提供。映射块在“数学”类别里。映射块的作用是将一个范围内的值线性转换到另一个范围。对于X轴电机P8它的速度应由摇杆的X轴VRX接P1控制。因此在映射块的“从”范围填入0和1023摇杆模拟值的范围。在“到”范围填入180和0。注意这里是180到0而不是0到180。这是因为摇杆的模拟值通常是从左到右或从上到下从0增加到1023。而对于连续旋转舵机180通常对应全速反转0对应全速正转不同品牌可能相反需测试。这个映射关系决定了摇杆向左推笔架向左移动。将映射块的“值”输入连接一个读取引脚 [P1] 模拟值积木块在“引脚”类别里。同理对于Y轴电机P12映射块的“从”范围同样是0和1023控制摇杆Y轴VRY接P2。“到”范围也是180和0。“值”输入连接读取引脚 [P2] 模拟值。最后将两个映射块的输出分别连接到两个伺服写入引脚块的值输入口。4.2.3 代码上传与测试点击左下角的“下载”按钮将编译好的.hex文件保存到电脑。用Micro USB线连接Micro:bit和电脑。Micro:bit会显示为一个名为“MICROBIT”的可移动磁盘。将下载的.hex文件拖入这个磁盘中。Micro:bit背后的黄色指示灯会闪烁表示正在烧录程序。完成后会自动重启。程序开始运行。尝试推动摇杆观察两个伺服电机是否根据摇杆方向进行正转或反转。如果电机转动方向与摇杆推动方向相反例如摇杆向左笔架向右只需交换映射块中“到”范围的两个数字如从180, 0改为0, 180即可。5. 系统调试、优化与创意拓展5.1 机械调校与问题排查组装完成后通常需要一些微调才能达到最佳运行状态。5.1.1 运动不畅或卡顿症状滑块在铝杆上移动不顺畅或有顿挫感。排查检查平行度用直角尺或卡尺检查两根铝杆是否严格平行。如果不平行松开脚部固定螺丝轻微调整后重新拧紧。检查滑块取下滑块单独在铝杆上滑动感受阻力。如果阻力大可能是打印孔内壁粗糙。可以用细砂纸如800目卷成细条轻轻打磨滑块内孔。也可以涂抹一点干性润滑剂如特氟龙喷雾。检查丝杠啮合手动旋转蜗杆齿轮感觉是否顺滑。如果阻力大或有异响可能是丝杠与齿轮啮合过紧或不同轴。调整电机安装位置或轻微修整齿轮的安装孔。5.1.2 绘图线条不直或有波浪症状理论上画直线实际画出的是波浪线或锯齿线。排查背隙检查这是最常见原因。用手握住笔架轻轻沿一个方向推然后反向拉感受是否有轻微的“空程”。这源于丝杠螺纹与螺母间的间隙。在编程上可以尝试加入“背隙补偿”算法但硬件上更治本的方法是确保丝杠螺母配合紧密可尝试在螺母螺纹处涂一点薄薄的螺丝胶增加阻尼或使用更高精度的丝杠如滚珠丝杠但成本高。结构刚性检查整个框架是否有晃动。特别是MDF底板是否平整脚部固定是否牢固。所有连接螺丝都必须拧紧。电机速度电机速度过快会导致惯性过大产生过冲和振动。可以在MakeCode程序中对映射后的输出值进行“软化”处理例如不是直接输出映射值而是输出(映射值 * 0.7)将最大速度降低到70%运动会更平稳。5.1.3 电机发热或无力症状电机运行一段时间后烫手或者带不动笔架移动。排查供电不足Micro:bit的USB口输出电流有限约500mA。同时驱动两个微型伺服电机可能接近或超过其负载能力。解决方案使用外部5V电源如手机充电宝通过面包板的“”排为两个电机单独供电。务必注意此时要将外部电源的“地”GND与Micro:bit扩展板的“地”GND连接在一起即“共地”否则电路无法正常工作。机械阻力过大原因同5.1.1机械摩擦太大导致电机负载过重。解决机械卡顿问题。电机选型错误再次确认使用的是连续旋转舵机。标准舵机如果被强制连续旋转会发热损坏。5.2 软件优化与功能升级基础摇杆控制只是开始你可以通过编程赋予绘图机器人更多能力。5.2.1 增加“抬笔/落笔”功能目前笔尖始终接触纸面。可以添加一个微型舵机标准180度舵机即可来控制笔的升降。硬件将这个小舵机安装在笔架上方通过一个连杆机构控制笔的上下运动。软件在MakeCode中增加一个输入控制比如使用Micro:bit板载的A键或B键。当按下A键时用一个伺服写入引脚块控制这个小舵机转到“抬笔”角度按下B键时转到“落笔”角度。这样你就可以控制机器人在移动时不画线只在需要时画线。5.2.2 实现自动绘图从摇杆到代码让机器人自动执行预设的图案是迈向真正CNC的关键一步。思路将绘图路径分解为一系列坐标点或移动指令如“向前100步”、“向左转90度”。编程你可以使用MakeCode的“数组”来存储一系列的速度和时间值。例如创建一个数组x_speeds和y_speeds以及对应的durations。在循环中依次从数组读取速度值写入电机引脚并保持对应的持续时间使用暂停(ms)块。这样就可以画出一个简单的形状比如正方形。进阶学习使用Micro:bit的Python编辑器MU编辑器。在Python中你可以更轻松地处理列表、计算坐标甚至从文件读取G代码一种标准的数控机床指令的简化版实现更复杂的绘图。5.2.3 校准与精度提升为了画得更准可以进行软件校准。测量实际移动距离让电机以固定速度运行一定时间如5秒测量笔架实际移动的距离单位毫米。计算比例系数比例系数 目标距离 / 实际距离。应用校准在程序中将发送给电机的速度或时间指令乘以这个比例系数。例如如果你想移动100mm计算出的指令应该是100 * 比例系数。这可以补偿因丝杠导程误差、电机速度差异等带来的系统误差。5.3 项目拓展与教育意义这个绘图机器人是一个绝佳的STEAM教育平台可以从多个维度进行拓展数学理解直角坐标系、比例、映射线性函数。物理学习力、运动、摩擦、简单机械丝杠、蜗杆。计算机科学学习基础编程逻辑、传感器数据处理ADC、控制循环。工程涉及机械设计、装配、调试、问题解决的全流程。艺术最终产出是视觉艺术作品可以探索算法绘图、分形图案等。你可以尝试用它来绘制自己的签名、简单的迷宫、曼陀罗图案或者作为一个教学演示工具直观地展示函数图像如正弦波。通过这个低成本、高参与度的项目抽象的理论知识变成了手中可见、可触、可创造的具体成果这正是创客教育和STEAM理念的核心价值所在。