
1. 项目概述当机械艺术遇见时间哲学最近在工作室里捣鼓出了一个让我自己都爱不释手的小玩意儿——Dual Spiral Marble Clock我习惯叫它“双螺旋弹珠时钟”。这不仅仅是一个看时间的工具它更像是一个桌面上的微型机械剧场用两颗钢珠的永恒坠落与爬升来具象化地演绎“时间流逝”这个抽象概念。每次有朋友来工作室目光总会被它吸引看着弹珠沿着精致的螺旋轨道缓缓滚动发出细微而规律的“咔哒”声时间仿佛从数字变成了可触摸、可观察的物理运动。这个时钟的核心创意是用两颗钢珠在两条对称的螺旋轨道上的运动来驱动时钟的走时。一颗弹珠作为“重锤”在重力作用下沿着轨道向下滚动其势能转化为机械能驱动时钟的齿轮系当它到达底部后会被一个巧妙的提升机构送回轨道顶端与此同时另一颗弹珠开始它的下行旅程如此循环往复。整个过程安静、流畅充满了机械之美。它适合所有对机械设计、DIY制作、以及独特桌面艺术品感兴趣的朋友。无论你是想深入了解其中的机械原理还是想亲手复刻一个属于自己的时间装置这个项目都能带给你从设计思维到动手实操的完整体验。2. 核心机械原理与系统设计拆解2.1 能量转换从重力势能到计时动力整个时钟的“心脏”是重力驱动系统。这与古老的摆钟原理同源但用滚动钢珠替代了摆动钟摆。其核心物理公式是重力势能E_p mgh。其中m是钢珠质量g是重力加速度h是轨道的高度差。设计时我们需要计算单颗钢珠下落一次所能提供的能量是否足以驱动钟表机芯走过特定的时间例如6小时。假设我们使用直径16mm的不锈钢珠质量约16.5克螺旋轨道垂直高度差设计为30厘米。那么单次下落释放的势能约为E_p 0.0165kg * 9.8N/kg * 0.3m ≈ 0.0485焦耳。这个能量看似微小但足以驱动一个经过优化、摩擦极小的定制齿轮系或一个改造后的石英机芯。关键在于整个传动系统的效率我们必须将滚动摩擦、齿轮啮合摩擦、空气阻力等损耗降到最低。注意钢珠的选择至关重要。不建议使用普通轴承钢珠其表面可能不够光滑且易生锈。推荐使用G10级以上的精密不锈钢珠表面光洁度极高能显著减少滚动噪音和摩擦阻力。我最初用了普通钢珠结果运行起来声音发涩且几天后就有锈迹后来更换为316不锈钢珠问题迎刃而解。2.2 双螺旋轨道与提升机构永动的奥秘“双螺旋”不仅是美学设计更是实现“近乎永动”显示的关键。两条轨道并排对称布置一颗弹珠下行驱动时另一颗处于底部等待或被提升。核心难点在于提升机构的设计。目前主流方案有几种螺旋提升器类似阿基米德螺旋泵用一个慢速电机带动螺旋杆旋转将底部的弹珠沿着螺旋槽提升至顶部。这种方式运行稳定噪音小但对加工精度要求高。履带或皮带提升使用一条垂直的履带上面设计有容纳弹珠的凹槽由电机带动将弹珠从底部运至顶部。结构相对简单但需要精心设计凹槽防止弹珠在提升过程中掉落。电磁弹射/提升利用电磁铁在底部将弹珠加速使其沿一个弧形轨道“抛射”回顶部入口。这种方式极具视觉冲击力但控制复杂能耗和噪音相对较大。我的方案选择了微型减速电机螺旋提升器。电机选用转速为1-2RPM的减速电机通过单片机控制仅在检测到有弹珠到达底部、且另一条轨道弹珠即将耗尽能量时才启动运行约30秒完成一次提升。这样设计功耗极低一组电池可以运行数月。2.3 计时与控制系统机械与电子的融合纯粹的机械结构很难实现精准的“弹珠下落一次标准时间单位”。因此一个**“机械驱动电子守时”**的混合系统是更实用的方案。驱动部分下落的弹珠通过一个棘轮机构或蜗杆将旋转运动传递给一个飞轮或发条盒储存能量。这个机械储能装置负责提供持续的动力输出而不是直接用弹珠的冲击力。控制部分核心是一块单片机如Arduino Nano或ESP32。它的任务包括精准计时依靠内部或外部的实时时钟模块保持绝对时间精度。电机控制通过底部的红外传感器或机械微动开关检测弹珠到位然后触发提升电机。步进电机驱动控制一个步进电机来模拟时钟指针的移动。单片机根据实时时钟每隔一定时间如每10秒驱动步进电机走一步带动指针。状态显示可以添加小型OLED屏显示时间、弹珠循环次数等。这样弹珠循环系统成了一个吸引人的“动力来源显示”而真正的计时工作由高精度的电子系统完成两者结合既保证了观赏性又确保了实用性。3. 关键部件制作与实操详解3.1 螺旋轨道的设计与加工轨道是灵魂其设计决定了弹珠滚动的流畅度和视觉美感。我强烈推荐使用激光切割来制作轨道。材料选择3-5mm厚的亚克力板或椴木板。轨道设计使用Fusion 360或AutoCAD等软件绘制。轨道截面应为“凹”形槽槽的宽度比钢珠直径大约1-1.5mm深度约为珠径的1/3既能防止脱轨又不会卡住。螺旋线建议采用阿基米德螺旋线半径随角度线性增加加工方便弹珠滚动速度均匀。在软件中绘制出螺旋线路径然后使用“扫掠”命令用轨道截面沿路径扫掠成实体。将三维模型展开生成用于激光切割的二维DXF文件。轨道需要分层切割然后粘合成具有深度的立体轨道。加工与组装将切割好的亚克力片用氯仿亚克力专用胶或激光专用胶水仔细粘合。这是一个需要耐心的过程务必使用辅助直角夹具确保各层对齐。粘合完成后用极细的砂纸1000目以上蘸水轻轻打磨轨道内壁去除激光切割产生的微小熔渣和毛刺这是保证滚动顺滑的关键一步。实操心得在轨道的关键支撑点内部可以预先嵌入小型强磁铁如N35钕铁硼。这样钢珠滚过时会有轻微的磁力阻尼不仅能产生更悦耳的“咔哒”声还能在轨道倾角较小时防止钢珠因速度过快而飞出去同时让钢珠在终点位置被吸附定位便于提升机构抓取。3.2 提升机构的实现我详细说一下我采用的螺旋提升器制作过程材料一根长螺丝杆M4或M6、一个配套的螺母、一个微型减速电机6V 1-2RPM、一块硬质塑料或铝板。制作将螺母固定在电机的输出轴上。用塑料或铝板加工一个“提升管”内部车出与螺丝杆匹配的螺纹或者直接使用一段内径合适的塑料管在管壁内侧粘上一条螺旋状的薄片作为轨道。将螺丝杆穿过提升管并与电机轴上的螺母连接。当电机转动时螺丝杆并不旋转而是由于螺母被电机带动旋转使得螺丝杆做垂直的升降运动。在螺丝杆顶端连接一个“提升勺”。安装将整个提升机构垂直安装在螺旋轨道底部出口处。当单片机接收到弹珠到位信号后启动电机提升勺下降至弹珠位置承接弹珠然后上升至顶部轨道入口处翻转将弹珠倒入轨道。注意提升机构的动作速度一定要慢、平稳。过快会引发弹珠跳动甚至掉落。可以在电机控制程序中加入缓启动和缓停止的算法如加速度控制。3.3 齿轮系与机芯改造如果你追求极致的机械感可以尝试自制一个由弹珠重力驱动的纯机械齿轮系。但这需要深厚的钟表制作功底。对于大多数爱好者改造现成的石英钟机芯是更快捷的路径。购买一个普通的扫针式石英钟机芯秒针连续运动的那种而非跳秒的。拆开机芯找到其内部的步进电机线圈。移除原来的电池供电线路。将我们自制的重力驱动发电机一个微型直流电机由下落弹珠通过齿轮带动旋转的输出经过一个整流稳压电路后连接到这个线圈上。这样弹珠下落的机械能就转化成了驱动石英机芯的脉冲电能。这种方法的优点是直接利用了石英机芯的高精度计时核心省去了复杂的齿轮对时系统。难点在于需要匹配发电机的输出电压和脉冲频率与原始机芯要求一致可能需要反复试验并添加稳压模块。4. 电路设计与程序逻辑剖析4.1 传感器与执行器布局系统的感知与动作依赖于几个关键节点传感器/执行器位置作用推荐型号/备注红外对射传感器每条螺旋轨道底部出口检测弹珠是否到达底部TCRT5000安装时需精确对齐防止误触发霍尔传感器提升机构顶部终点检测弹珠是否已被送达顶部A3144配合轨道内的磁铁使用非接触式更可靠微型减速电机提升机构执行弹珠提升动作TT马达减速齿轮箱或自带减速箱的N20电机步进电机时钟指针轴驱动时针、分针28BYJ-48五线四相需配ULN2003驱动板实时时钟模块控制板上提供精准的日期时间DS3231精度高带温度补偿4.2 控制程序核心逻辑以Arduino为例程序的核心是一个状态机// 伪代码逻辑示意 #include Stepper.h #include DS3231.h DS3231 rtc; Stepper stepper(2048, 8, 10, 9, 11); // 28BYJ-48步进电机 enum ClockState { RUNNING_A, LIFTING_A, RUNNING_B, LIFTING_B }; ClockState currentState RUNNING_A; void setup() { // 初始化传感器引脚、电机引脚、RTC rtc.begin(); // 从RTC读取时间并驱动步进电机到对应位置需编写函数计算步数 setInitialTime(); } void loop() { switch (currentState) { case RUNNING_A: // 监控轨道A底部的红外传感器 if (ballAtBottom_A) { currentState LIFTING_A; startLiftMotor(); } // 每秒钟根据RTC时间驱动步进电机走相应的微步 updateClockHands(); break; case LIFTING_A: // 监控提升顶部的霍尔传感器 if (ballAtTop_A) { stopLiftMotor(); delay(1000); // 等待弹珠稳定进入轨道 currentState RUNNING_B; // 切换到B轨道运行 // 注意此时轨道B的弹珠应已就位开始下落 } break; // RUNNING_B 和 LIFTING_B 状态逻辑与A对称 } }关键点updateClockHands()函数需要根据DS3231读取的时分秒计算出步进电机需要走过的步数。由于28BYJ-48减速比很大通常64:1一圈需要4096步全步模式。需要预先校准算出每分钟、每小时对应的步数。4.3 供电与功耗优化整个系统功耗主要集中在两个电机瞬间启动时。为了延长电池寿命使用锂电池组例如两节18650锂电池串联7.4V搭配一个5V/3.3V的降压模块为单片机和传感器供电。电机直接由锂电池电压驱动。电机启用PMW控制在启动和停止提升电机时使用PWM信号实现软启动和软停止避免电流冲击。深度睡眠模式在非提升期间可以让单片机进入深度睡眠模式仅靠RTC的中断唤醒。但考虑到需要持续更新指针此方案需权衡。更简单的是优化主循环关闭不必要的外设。5. 组装、校准与调试实录5.1 机械总装与对心将所有部件组装到一个坚固的底座和背板上。背板建议使用10mm厚的亚克力或木板保证整体刚性防止共振。轨道固定使用多个支撑柱将双螺旋轨道悬空固定确保两条轨道完全平行且入口和出口高度一致。提升机构对心这是调试中最繁琐的一步。必须确保提升勺在最低点能准确接住轨道出口的弹珠在最高点又能精准地将弹珠倒入轨道入口。需要反复手动调整电机和提升杆的安装位置可能需要进行微小的机械加工修正。指针安装步进电机轴通过一个联轴器连接时钟面盘的指针轴。确保指针轴绝对垂直否则指针会在不同位置摩擦表盘。5.2 系统校准流程校准分为机械校准和电子校准两部分机械循环校准不安装指针先让系统空跑。观察弹珠能否顺畅地完成“下落-检测-提升-再下落”的完整循环数十次而不卡住、不掉落。调整轨道入口的导流片角度确保弹珠从提升勺落下时能顺利进入轨道而不是弹跳出去。听声音。一个调校良好的系统弹珠滚动声应该是均匀、清脆的“咕噜”声提升电机是低沉平稳的嗡鸣。任何刺耳的摩擦声或撞击声都意味着需要调整。电子计时校准首先通过串口监视器将DS3231的时间与网络时间同步。然后编写一个测试程序让单片机控制步进电机连续运行24小时同时用手机秒表或另一个精准时钟对比。记录24小时后的误差。误差主要来源于步进电机的步距角精度和齿轮背隙。我们需要在updateClockHands()函数中加入一个误差补偿系数。例如如果24小时后慢了30秒那么计算每分钟所需步数时就稍微增加一个比例如0.02%。这是一个微调过程可能需要多次迭代。5.3 常见问题与排查清单在制作过程中我踩过不少坑这里总结一下问题现象可能原因排查与解决思路弹珠中途停止滚动1. 轨道倾角不足。2. 轨道内有毛刺或灰尘。3. 磁阻尼过强。1. 增大整体倾斜角度建议15-20度。2. 用内窥镜或强光检查并打磨清理轨道。3. 减小或调整磁铁位置。提升机构卡弹珠1. 提升勺形状或尺寸不合适。2. 电机扭矩不足提升到顶时卡住。1. 用软质材料如硅胶重新制作提升勺使其形状更贴合弹珠。2. 更换扭矩更大的减速电机或在程序上降低提升速度。红外传感器误触发1. 环境光干扰。2. 传感器距离轨道太远或太近。1. 给传感器加装遮光罩。2. 调整传感器位置并尝试在代码中加入软件去抖逻辑如连续检测到3次信号才判定为有效。时钟指针走时不稳1. 步进电机驱动电压不稳。2. 指针阻力过大摩擦表盘。3. 主循环被其他任务阻塞。1. 为步进电机驱动板提供独立的稳压电源。2. 重新调整指针轴垂直度确保指针与表盘有微小间隙。3. 优化代码使用定时器中断来严格定时驱动步进电机确保计时任务最高优先级。提升后弹珠入轨失败轨道入口设计不合理没有引导斜面。在轨道入口处粘贴或加工一个喇叭形的“漏斗”导流片用柔性的薄塑料片制作效果很好。最后的个人体会制作Dual Spiral Marble Clock最大的收获不是得到了一个酷炫的时钟而是在这个过程中对机械设计、电子控制、程序逻辑甚至美学排列进行了一次深度整合。它要求你既有宏观的系统架构思维又能沉下心来解决像“弹珠为什么总在同一个地方卡住”这样的微观问题。当你第一次看到两颗钢珠在你的设计下安然有序地交替循环驱动着指针稳稳划圈时那种满足感是无可替代的。如果让我给想尝试的朋友一个建议那就是在画第一张设计图之前先用纸板、胶水和玻璃弹珠做一个粗糙但完整的功能原型它能帮你提前发现至少70%的结构性问题。