
1. 项目概述与设计思路我一直对融合了机械美学与电子控制的创客项目情有独钟。传统的时钟看多了总想自己动手做一个既独特又能展现技术细节的。于是就有了这个“Triangulum”三角月相时钟的项目。它的核心目标很简单用一台Arduino Nano作为大脑一个28BYJ-48步进电机作为心脏通过一套完全由自己设计、3D打印的齿轮系统驱动三根指针来指示时间同时还要让一个月亮图案在圆盘上缓慢移动精确模拟近30天的月相周期。整个时钟的外形是一个稳固的三角形这不仅是为了美观更是为了结构上的稳定以支撑内部复杂的传动层。这个项目的魅力在于它的“全栈”性。你需要从零开始考虑机械传动比的计算、三维模型的构建、打印参数的调试、精密的手工组装再到嵌入式程序的编写。它不是一个简单的套件组装而是一次从概念到实物的完整工程实践。最终当所有齿轮严丝合缝地转动起来指针平稳扫过刻度月相盘悄然更迭时那种成就感是无与伦比的。接下来我将详细拆解整个制作过程分享其中每一个关键步骤的设计逻辑、实操要点以及我踩过的那些坑。2. 核心机械传动系统设计解析整个时钟的“灵魂”在于其机械传动系统。它需要将步进电机每秒一次的微小转动精确地放大、减速分别传递到秒针、分针、时针和月相盘上。这完全依靠一套精心计算齿数比的齿轮系来实现。2.1 时间传动链设计我选择的28BYJ-48步进电机在常用的半步驱动模式下每转一圈需要4096个步进脉冲。如果直接用它来驱动秒针意味着我们需要让单片机每秒发出4096/60≈68.27个脉冲这既不精确也难以实现稳定驱动。因此我的设计思路是让电机轴本身直接作为“秒轴”电机每15秒才完整旋转一圈。这样驱动频率就降到了每秒4096/15≈273.07个脉冲对于Arduino来说更容易稳定控制也减少了电机低速运行时的振动和噪音。由此整个时间传动链的起点是电机轴秒轴转速为1转/15秒。后续的所有齿轮设计都围绕这个基础展开秒到分1:60减速秒轴电机轴到分针轴的传动比需要达到60:1。我将其分解为两个阶段首先通过一组齿轮实现1:15的减速再通过另一组齿轮实现1:4的减速。这样15 * 4 60分针轴每3600秒1小时旋转一圈。在实际齿轮排布中这个60:1的减速比可能由多个齿轮接力完成但整体数学关系不变。分到时1:12减速分针轴到时针轴的传动比需要是12:1。同样我将其分解为1:4和1:3两个减速阶段。这样分针轴转12圈时针轴转1圈符合12小时制。传动比验证让我们验算一下。假设电机秒轴旋转了43200圈即43200个“15秒”周期也就是43200*15648,000秒。那么分针轴旋转圈数 43200 / 60 720圈。时针轴旋转圈数 720 / 12 60圈。 在12小时制中时针应旋转60圈一圈12小时60圈即720小时。而648,000秒正好是180小时即7.5天。这说明在连续运行下传动关系是自洽的。实际调试时我们通过代码控制电机起步位置来对齐时间。注意这里齿轮齿数的具体搭配例如用10齿齿轮驱动60齿齿轮实现1:6减速需要在三维建模时精确设计确保齿轮间能正确啮合且中心距合适。打印后的齿轮需要进行少量打磨如用细砂纸轻轻打磨齿尖毛刺并在轴孔处涂抹少量硅基润滑脂以确保转动顺滑、噪音小。2.2 月相传动链设计月相显示是这款时钟的亮点也是设计中最具挑战的部分。一个朔望月新月到新月的平均长度约为29.53059天。我们的目标是让月相盘在约29.53天内旋转一圈。我的设计思路是让月相盘的驱动源来自时针轴。因为时针轴每12小时转一圈转速很慢适合作为长期、缓慢变化功能的基础。我们需要计算出一个传动比使得时针轴旋转一定圈数对应一个固定天数时月相盘恰好旋转一圈。经过计算和简化我设计了一个99:2924的传动比。这个比例可以近似分解为 (1/4) * (9/17) * (11/43)。让我们计算一下它对应的月相周期当时针轴旋转1圈12小时月相盘旋转 99/2924 圈。月相盘旋转一整圈需要时针轴旋转 2924/99 ≈ 29.53535 圈。时针轴每圈对应0.5天所以月相周期约为 29.53535 * 0.5 ≈ 14.767675 天等等这里逻辑有误。我们需要重新梳理传动比的参照系必须是统一的。更合理的推导是将传动比关联到秒针电机轴这个最终动力源。已知电机轴到时针轴的传动比是1:43200电机轴转43200圈时针轴转1圈。假设月相传动链是从某个中间轴比如分针轴或一个专用轴引出其相对于电机轴的传动比为R_moon。 那么电机轴旋转N圈对应的天数 N / (2*3600)因为电机轴7200圈对应1天1圈15秒一天86400秒。 月相盘旋转一圈需要电机轴旋转N_moon圈应满足N_moon / (2*3600) 29.53059。 所以N_moon 29.53059 * 7200 ≈ 212,620.248圈。 我们需要找到一个接近1:212620的传动比它由电机轴经过时间传动链和额外的月相减速链共同构成。原设计提到的99:2924很可能是指从时针轴到月相盘的局部传动比。让我们验证时针轴转1圈 12小时 0.5天。月相盘转1圈需要时针轴转 2924/99 ≈ 29.53535 圈。这对应 29.53535 * 0.5 14.767675 天显然不对。因此原项目描述中的“Its ratio is 99:2924”可能表述不完整或有误。在实际建模中月相传动链的起点更可能是一个比时针轴更快的轴例如秒轴或一个中间轴通过多级减速达到约212,600:1的总传动比。99:2924约1:29.535可能只是其中最后一级或几级的组合比例。作为制作者我们不必深究这个具体数字关键是理解1. 月相传动需要极高的减速比2. 在三维建模时齿轮的齿数必须为整数因此无法实现绝对精确的29.5305929.53535天的误差大约为0.016%即每月相差约7分钟这对于视觉上的月相显示是完全可接受的。实操心得在设计这类超高减速比传动时不要试图用一对齿轮完成。应该像项目里做的那样将其分解为多个小减速比如1:4, 9:17, 11:43串联。这样设计更灵活齿轮尺寸也更合理易于打印和安装。计算总传动比时将所有减速比相乘即可。3. 材料、工具与3D打印制备工欲善其事必先利其器。这个项目需要准备的材料和工具比较杂但大多都是创客领域的常备品。3.1 材料与工具清单类别物品规格/说明备注电子部分Arduino Nano或 Nano Every建议选用CH340芯片版本性价比高需准备Micro-USB数据线28BYJ-48步进电机5V四相八拍式带驱动板建议多买一两个备用ULN2003驱动板通常随电机附带确保引脚完好迷你面包板用于电路连接小型号即可公对母杜邦线至少6根用于连接Arduino与驱动板9V电池为系统供电或使用5V/2A的USB电源适配器9V电池扣转接线能接入面包板机械与结构黄铜管外径11/32英寸1/8英寸3/32英寸1/16英寸英制规格需精确对应模型M1螺丝长度约3-4mm用于固定表盘非常细小M4螺丝长度约8-10mm用于框架组装准备12颗M3垫片内径约3mm准备6个用于齿轮轴向限位3D打印耗材PLA材质黑色、白色、丝绸铜色各一卷丝绸铜色用于框架和齿轮质感好耗材与工具强力胶速干型氰基丙烯酸酯CA胶用于粘接齿轮与黄铜管双面泡沫胶3M VHB系列尤佳固定电路板有缓冲减震作用润滑脂硅基或石墨润滑脂少量用于齿轮轴润滑手捻钻或电磨配小直径钻头用于扩孔框架上的螺丝孔可能偏小切割工具模型剪钳、小锯条或Dremel电磨配切割片用于切割黄铜管游标卡尺精度0.02mm强烈推荐用于精确测量管长细砂纸800目以上打磨打印件毛刺和黄铜管切口美工刀标记、清理支撑3.2 3D打印参数与技巧所有结构件和齿轮都需要通过3D打印制作。打印质量直接决定了后续组装的顺畅度和最终运行的精度。模型文件准备从原项目地址下载所有STL文件。你需要打印框架a, a1, a2, a3, b, b1、多个不同齿数的齿轮、指针、月相盘、表盘等。请仔细核对文件名避免遗漏。分层与支撑层高建议使用0.16mm或0.2mm层高在精度和打印时间间取得平衡。填充齿轮和框架建议使用25%-30%的填充密度确保强度。指针等薄壁件可提升至40%。支撑这是关键。对于齿轮必须开启“支撑悬垂结构”。齿轮的齿形是悬垂的没有支撑会打印失败。建议使用“树状支撑”它更容易拆除且对模型表面损伤小。框架上的一些孔洞内部也可能需要支撑。打印速度外壁打印速度建议设为40-50mm/s内壁和填充可以稍快。过快的速度会影响齿轮齿形的表面质量。特殊双色部件打印月相框moon frame.stl和数字表盘number dial.stl需要中途暂停换色。在切片软件如Cura、PrusaSlicer中找到“暂停 at height”或“修改切片信息”功能。月相框在打印到0.6mm高度时暂停。先打印底层白色暂停后换成黑色丝材继续打印上层镂空框架。数字表盘在打印到1.5mm高度时暂停。先打印底层黑色暂停后换成白色丝材继续打印数字和刻度。关键提示暂停换色时务必使用相同品牌和型号的PLA丝材仅颜色不同。不同品牌的PLA收缩率、熔点可能有细微差异在接缝处容易导致层间粘合不牢或翘曲。例如都用Sunlu的PLA或都用eSUN的PLA。后处理拆除支撑务必耐心、仔细。使用尖嘴钳或镊子一点点剥离。对于齿轮齿间的支撑可以借助美工刀小心撬动。清理与打磨所有齿轮的轴孔内壁用牙签裹上细砂纸轻轻打磨去除打印纹路确保黄铜管能顺畅插入但又不至于太松。齿轮的齿面也可以用细砂纸轻轻拂过去除“拉丝”或小疙瘩。测试拟合在粘合前先将对应的黄铜管插入齿轮和框架的孔中测试松紧度。理想状态是能用手轻轻推入没有晃动。如果太紧打磨轴孔如果太松可以在黄铜管上缠绕一层极薄的纸巾或涂抹少量胶水增加直径需小心操作。4. 黄铜管切割与框架预组装黄铜管作为所有齿轮的转轴其长度精度至关重要。长度误差过大会导致齿轮层间距不对产生摩擦甚至卡死。4.1 切割方法选择与实操项目提供了两种方法我强烈推荐并详细说明方法二使用游标卡尺因为它精度最高、可重复性好。准备工作将需要切割的四种规格黄铜管分别摆放。准备好游标卡尺、切割工具推荐小型台钳配合手锯或Dremel电磨配切割片、细锉刀和砂纸。测量与标记根据项目提供的切割清单用游标卡尺在黄铜管上量取所需长度。例如11/32管需要3根43.7mm。用记号笔或更精确的用美工刀在管壁上轻轻划一圈刻线作为切割标记。划刻线比画线更准能防止切割时打滑。切割使用手锯将黄铜管在台钳上夹紧对齐刻线。用细齿的珠宝锯或钢锯条缓慢、平稳地锯下。保持锯条垂直用力要轻让锯齿自然切削。使用Dremel装上切割片同样夹紧铜管。以中低速启动将切割片对准刻线轻轻接触并缓慢旋转铜管或移动工具直至切断。务必佩戴护目镜高速飞溅的金属屑很危险。关键技巧宁可稍微留长0.5mm也不要一次切短。后续可以通过打磨来精确调整长度。端面处理切割后的管口会有毛刺和内卷边。先用锉刀将端面锉平确保与管身垂直。然后用800目以上的砂纸包裹在平整的硬物如玻璃板上将管口轻轻磨平、倒角。处理后的端面应该光滑平整能轻松插入打印件的孔中。长度精修这是保证精度的核心步骤。将初步切割打磨后的黄铜管插入对应的框架定位孔中。根据齿轮和垫片的安装位置实际感受所需长度。可能需要多次“插入-测量-打磨”的循环直到长度刚好满足齿轮安装后既能自由转动又不会有太大的轴向窜动。游标卡尺在此刻是你的最佳伙伴。踩坑记录我第一次切割时没有进行端面精修和长度微调导致几根轴装上去后要么齿轮被上下框架压得太紧转不动要么间隙太大导致齿轮在转动时左右晃动、啮合不齐。后来返工把所有轴都重新测量打磨了一遍才解决。切记框架组装是三维的一根轴的微小误差会累积传递到整个齿轮层。4.2 第一层齿轮框架预组装在正式开始粘合前进行一次“干组装”演练极其重要。识别零件找出frame a.stl底层主框架、frame a3.stl第一层中间隔板以及对应第一层的齿轮如60t/12t.stl,40t.stl等和相应长度的黄铜管。无胶组装按照项目图示先将黄铜管插入frame a.stl的对应孔位然后放上垫片再套上齿轮最后盖上frame a3.stl。用手拧上M4螺丝先不要上胶但不要拧死。检查与调整转动测试用手轻轻拨动齿轮检查所有齿轮是否能顺畅转动啮合是否顺畅。感觉是否有过紧或卡滞的点。轴向间隙检查每个齿轮在轴上是否有轻微的上下活动空间约0.2-0.5mm。如果没有说明轴可能长了或垫片少了如果间隙过大说明轴短了。平面度从侧面观察确保所有齿轮大致在同一水平面上没有明显倾斜。在这个过程中你可能会发现某些孔位需要稍微扩一下或者某个齿轮的齿需要稍微打磨。发现问题就在这一步解决。5. 逐层粘合组装全流程经过预组装确认无误后就可以开始正式的粘合组装了。强烈建议你按照项目原步骤分层次、分阶段进行并且粘合一层测试一层确保无误后再进行下一层。5.1 第一层齿轮粘合这一层是动力输入层电机也安装在这一层精度要求最高。固定主轴将三根最长的11/32黄铜管43.7mm插入frame a.stl的三角位置。在管端与框架接触处点极少量的超级胶水。胶水会通过毛细作用吸入缝隙。等待完全固化。安装齿轮与垫片参照图示在特定的轴上先放入垫片然后将对应的齿轮如60t/12t.stl套入调整到正确高度后在齿轮与轴接触的侧面点胶。绝对避免胶水流入轴孔内部或流到齿轮齿上可以使用牙签蘸取微量胶水进行精确涂抹。安装中间隔板将frame a3.stl对准三根主立柱和齿轮轴放好。在frame a3.stl与frame a.stl的接触面边缘点几处胶水然后用M4螺丝将其暂时固定帮助对齐。待胶水固化后可以卸下螺丝防止被胶粘住。安装电机和驱动齿轮将10t 28byj48.stl齿轮压入电机轴可能需要轻轻敲击或用胶固定。然后将电机用螺丝固定在frame a.stl的指定位置确保电机齿轮与相邻的齿轮正确啮合转动顺畅。核心技巧胶水使用超级胶水干得快但用量一定要少。宁少勿多。对于齿轮与轴的粘合最佳做法是将齿轮套在轴上调整好位置后用牙签蘸一滴胶水轻轻点在齿轮毂与轴交接的缝隙处一圈利用毛细作用吸入。等待至少10分钟完全固化后再进行下一步操作。5.2 第二层与第三层组装后续层级的组装逻辑与第一层类似但增加了更多的传动齿轮和月相传动链。逐层叠加按照frame a2.stl,frame a1.stl,frame b.stl,frame b1.stl的顺序依次安装对应的齿轮、轴和隔板。每一层安装前都要确保从下层伸上来的轴是干净、无胶水残留的。月相传动链安装这是最精细的部分。涉及17t/11t.stl,43t.stl,9t.stl,48t.stl等齿轮。特别注意9t.stl这个小齿轮它齿数少打印出来强度可能稍弱安装时要格外小心。如果它与轴的配合过松可以在轴上缠绕一层极薄的遮蔽胶带增加摩擦力再点胶固定。整体框架结合当所有齿轮层都组装在frame a系列上后将frame b系列承载表盘和月相盘通过三根长黄铜管与底层结合。此时不要立刻上胶先对齐所有孔位用手拧上固定管进行最后一次整体转动测试。从电机齿轮开始用手慢慢转动电机轴观察秒针轴、分针轴、时针轴以及月相齿轮是否全部顺畅联动。确认无误后再在关键连接点如长黄铜管与frame b的连接处点胶永久固定。5.3 电路连接与供电方案机械部分是身躯电路部分就是神经。电路连接驱动板连接将ULN2003驱动板用双面泡沫胶固定在frame a.stl内侧。用4根公对母杜邦线连接驱动板输入端IN1-IN4到Arduino Nano的数字引脚D8, D9, D10, D11。电源连接这是容易出错的地方。将驱动板的电源正极连接到Arduino Nano的VIN引脚负极-连接到GND引脚。千万不要接在5V引脚上因为VIN引脚可以接受6-12V的未稳压输入而5V引脚是输出5V稳压电源的接反可能损坏主板。电机连接将28BYJ-48电机的排线插头直接插入ULN2003驱动板的电机接口。电池连接将9V电池扣的红线正极接至面包板上与ArduinoVIN相连的排针黑线负极接至与GND相连的排针。供电方案选择9V电池方便无线。但正如评论区用户指出的28BYJ-48电机和Arduino持续运行的耗电对于9V电池来说不小可能需要频繁更换。适合短期展示或调试。USB 5V供电推荐找一个5V/2A的手机充电器通过Micro-USB线直接给Arduino Nano供电。这是最稳定、经济且方便的方案。Arduino的板载稳压器会为整个系统提供稳定的5V电源。电池升级方案如果想兼顾美观和续航可以考虑使用一块3.7V的18650锂电池配合一个DC-DC升压模块升压至5V或6V。但需要额外考虑电池安装和充电管理。5.4 最终装配与调试安装表盘将双色打印好的number dial.stl用两颗M1小螺丝固定在frame b.stl上。由于打印误差螺丝孔可能需要用手捻钻稍微扩大。安装月相盘将moon dial.stl月相图案盘小心地套在月相驱动轴上。调整位置使新月图案对准窗口正中央然后用极少量胶水在轴端固定。务必小心不要让胶水溢出粘住框架随后将moon frame.stl月相窗口框对准位置粘在frame b.stl上。安装指针这是最后一步也是最需要耐心的一步。时分秒指针通常是压合或粘在对应的轴上。技巧先将所有指针拨到12点整位置归零。将秒针最细长粘到秒轴电机轴上。确保粘正。接通电源让时钟运行。当秒针指向12点时立即断电。此时将分针粘到分针轴上对准12点。再次上电运行观察分钟走时。当分针也指向12点时即整点立即断电。将时针粘到时针轴上对准12点。这样三根指针的初始位置就基本对齐了。由于齿轮传动存在回差可能仍需通过代码微调初始位置。上传代码与初始设置将提供的triangulum_code.ino代码通过Arduino IDE上传到Nano板。代码的核心是控制步进电机每秒钟走特定的步数对应1/15转。你需要根据实际情况在代码中调整电机的步进顺序和速度确保运行平稳无振动。代码中可能包含一个“设置模式”通过串口指令或按钮来设置初始时间。如果没有你可能需要手动计算一个偏移量修改代码中电机起始步进的位置来对齐时间。6. 常见问题排查与优化建议即使按照步骤小心翼翼操作这个复杂项目也难免会遇到问题。下面是我在制作和调试过程中遇到的一些典型情况及其解决方法。6.1 机械传动问题排查问题现象可能原因排查与解决方法电机转动但部分齿轮不转或卡顿1. 齿轮啮合过紧或过松。2. 轴不垂直导致齿轮倾斜摩擦。3. 黄铜管长度不对齿轮被框架压死。4. 齿轮齿间有打印残留支撑或毛刺。1.逐层检查从电机开始用手慢慢拨动找到卡滞点。2.重新调整松开卡滞层附近的框架螺丝轻微调整齿轮位置或轴的长度。3.打磨清理用刀尖和砂纸仔细清理问题齿轮的每一个齿。齿轮转动噪音大1. 齿轮间隙过大产生撞击声。2. 缺乏润滑。3. 轴孔太紧转动不顺畅。1.微调中心距如果框架设计是固定的可尝试在齿轮侧面加极薄的垫片微调啮合深度。2.上润滑脂在所有齿轮的齿面以及轴与轴孔之间涂抹微量硅基润滑脂。3.扩大轴孔用合适尺寸的钻头或圆锉轻轻扩大过紧的轴孔。指针抖动或步进感明显1. 电机驱动电流不足或步进模式设置不当。2. 机械传动阻力不均匀。3. 电源功率不足。1.检查驱动确保ULN2003驱动板连接正确Arduino代码中使用的是半步8步模式这比全步4步模式更平稳。2.优化机械确保所有转动部分顺滑。3.更换电源尝试使用5V/2A的USB电源适配器供电确保电压稳定。月相盘不动或转动不规律1. 月相传动链中某个齿轮未啮合或打滑。2. 月相盘与轴粘接不牢。3. 传动比计算错误代码或机械。1.检查最后一级手动缓慢转动时针观察月相传动链最后几个齿轮是否联动。2.加固粘接重新粘接月相盘。3.代码核查月相功能通常由时针轴机械驱动与代码无关。确保机械装配正确。6.2 电路与程序问题电机不转或只振动检查接线确认ULN2003的IN1-IN4与Arduino引脚对应关系正确电机插头是否插反。检查电源用万用表测量接到驱动板V和GND的电压是否在5V-12V之间。电压过低电机无力。测试电机编写一个简单的步进电机测试程序排除硬件问题。时钟走时不准机械回差齿轮传动存在固有间隙可能导致指针每次启动时有轻微晃动。这在低成本3D打印齿轮中难以完全避免。可以通过在代码中让电机始终单向运行不反转来消除回差影响。电机失步如果负载突然变大或电源波动电机可能丢失步数。确保机械部分顺滑电源充足。可以考虑在代码中加入“纠错”逻辑例如每隔一段时间如一小时根据某个参考信号如果未来加入RTC模块进行微调。如何设置时间原项目代码可能没有方便的校时功能。一个实用的改进方案是在电路中增加两个轻触开关连接到Arduino的未用引脚。修改代码实现“模式按钮”和“调整按钮”。长按模式按钮进入设置模式然后短按调整按钮来快进时针和分针。这是一个很好的代码扩展练习让你更深入地理解如何将用户输入与电机控制结合起来。6.3 长期运行与优化建议增加实时时钟RTC模块这是最重要的升级。像DS3231这样的模块极其精准年误差仅±2分钟且自带电池断电也能走时。你可以修改程序让Arduino大部分时间休眠每秒被RTC的中断唤醒一次来驱动电机走一步。这能大幅降低功耗使电池供电成为可能。结构强化如果发现框架在长期运行后有轻微形变可以考虑在关键受力点如电机安装座背面用胶水粘贴加强筋或者使用PETG等强度更高的材料重新打印核心框架。表面处理对3D打印的框架进行打磨、喷漆如哑光黑可以极大提升时钟的质感。喷漆前务必做好遮盖保护好齿轮和轴孔。个性化定制你可以修改数字表盘的设计文件更换字体、时标样式甚至将罗马数字改为阿拉伯数字。月相盘的图案也可以自定义打造独一无二的时钟。这个“Triangulum”三角月相时钟项目从设计到完成是一次对耐心、细致和综合工程能力的绝佳锻炼。它不仅仅是一个计时工具更是一件融合了机械设计、嵌入式编程和数字化制造的艺术品。当你最终看到它平稳、静谧地运转时所有过程中的繁琐和调试的烦恼都会烟消云散。希望这份详细的指南能帮助你顺利复现或启发你创造出属于自己的独特时钟。如果在制作中遇到任何问题创客社区永远是交流和寻找灵感的好地方。