
1. 项目概述用开源硬件打造你的第一台星野赤道仪几年前当我第一次尝试拍摄银河时面对30秒曝光后拖成短线的星星那种挫败感记忆犹新。商业的星野赤道仪动辄数千元对于只是想偶尔拍拍星空的爱好者来说门槛实在不低。于是一个念头冒了出来能不能用我手边熟悉的电子开发板和步进电机自己做一个经过几个版本的迭代和实地测试这个基于CircuitPython和TMC2226驱动器的DIY赤道仪终于稳定了下来。它成本可控全部材料算下来不到千元核心是理解地球自转的规律并用精确的电子控制去抵消它。这篇文章我就来拆解这个项目的每一个细节从机械结构、电路连接到核心算法手把手带你复现一台能用的低成本跟踪仪。无论你是电子爱好者想找个有趣的项目练手还是天文摄影新手想降低入门成本这套方案都值得一试。2. 核心思路与系统设计解析2.1 赤道仪跟踪的基本原理天文摄影赤道仪的核心任务很简单让相机架设的旋转轴与地球自转轴平行并以完全相同的角速度反向旋转从而让相机在长时间曝光中始终“锁定”星空。地球自转一周的周期相对于遥远的恒星而非太阳是23小时56分4.1秒也就是86164.1秒这被称为一个“恒星日”。我们的目标就是让相机平台在86164.1秒内恰好完成360度的反向旋转。实现这个“匀速且极其缓慢”的旋转步进电机是理想选择。普通的直流电机转速控制复杂而步进电机通过接收脉冲信号来一步步转动位置控制精准。我们选用常见的NEMA-17步进电机它每接收200个脉冲步就转动一圈。但直接用它每个脉冲对应的角度1.8度仍然太大转动会非常粗糙。因此我们需要引入“减速”机构。这里采用了双重减速首先是一个40:1的蜗轮蜗杆它将电机的高速、低扭矩输出转换为低速、高扭矩输出并且蜗杆传动具有自锁性能防止相机平台在断电时因自重回滑。其次为了进一步平滑运动并适配结构增加了皮带传动使用100齿和60齿的同步轮构成了100:60即5:3的二级减速比。最终电机的运动经过这两级减速才传递到承载相机的转轴上。2.2 为什么是TMC2226与Feather M4市面上的步进电机驱动模块很多如A4988、DRV8825等它们便宜但驱动时噪音明显会发出高频的“滋滋”声。在寂静的野外这种噪音很扰人。我选择Trinamic的TMC2226核心原因就是其“静音”特性。它采用先进的SpreadCycle和StealthChop2驱动技术能实现256微步下的近乎无声运行同时内置的无传感器失速检测StallGuard等功能也能为后续升级如自动导星留出可能。对于天文摄影这种需要高度稳定和安静环境的场景一个安静的驱动器至关重要。主控选择Adafruit的Feather M4 Express则是因为其强大的性能和CircuitPython生态的便捷性。它基于ATSAMD51 Cortex-M4内核运行频率高达120MHz足以轻松处理我们的定时任务。更重要的是CircuitPython让代码编写和调试变得像操作U盘一样简单——直接修改code.py文件即可运行无需复杂的编译下载环境极大降低了嵌入式开发的门槛让爱好者能更专注于逻辑本身。2.3 机械结构设计考量整个装置的机械主体是一块厚度约19mm标称1英寸的木板。选择木材是因为它易于加工、减震性好且成本低。结构上分为几个功能区动力与减速区一端安装步进电机及其蜗杆通过联轴器连接第一级转轴。传动与支撑区使用两个8mm的直线光轴和配套的Pillow Block轴承座为转轴提供稳定、低摩擦的支撑。皮带传动系统在这里将动力从一级轴传递到二级轴。承载与平衡区二级轴的末端通过快装板连接一个ARCA标准的相机板。为了平衡相机尤其是长焦镜头的重量另一端需要安装配重块。整个相机板需要能在轴上滑动以调整重心实现静态平衡。极轴校准区在底座上开设一个直径1英寸的孔用于安装极轴镜。这是整个系统精度的基石必须保证其轴线与机械旋转轴严格平行。注意极轴镜的安装孔位置需要仔细规划务必避开步进电机和皮带轮的运动范围。我的初版设计就曾因空间估算不足导致极轴镜与电机冲突不得不返工。3. 材料准备与机械加工详解3.1 物料清单与选型建议除了项目正文中列出的核心部件这里补充一些选型心得和备选方案步进电机NEMA-1712V200步/圈电流350mA-400mA的即可。注意是4线双极性电机。TMC2226驱动器务必选择带有完整 breakout board 的版本如TMC2226-BOB它自带稳压器和必要的滤波电容使用更方便。如果购买的是模块请注意其Vref调节方式本例中使用的是默认细分。减速机构蜗轮蜗杆40:1的减速比是一个甜点既能提供足够大的减速又不至于让跟踪速度过于缓慢而难以调试。务必确认蜗杆轴径为5mm。同步带与轮选用2GT齿型2mm齿距100齿和60齿。皮带长度需要根据两轴中心距计算通常购买稍长的自行裁剪更灵活。支撑件光轴与轴承8mm直径的光轴和配套的Pillow Block轴承座。长度100mm足够。轴承座最好选择自带调心功能的可以容忍一定的安装误差。联轴器需要一个5mm转8mm的弹性联轴器用于连接蜗杆5mm轴和第一级光轴8mm轴。主控与电源Feather M4也可以使用其他支持CircuitPython的板子如Feather RP2040或QT Py但需注意引脚定义要相应修改。电源步进电机驱动部分需要12V/1A以上的电源。整个系统功耗不高一个12V 1A的电源适配器足够。建议使用带开关的适配器方便野外断电。结构件木板推荐使用多层板或实木厚度18-20mm尺寸至少200mm x 150mm为各部件留出足够空间。螺丝与螺母M4规格的各种长度螺丝、螺母、垫片是主力。另需1/4”-20和3/8”-16的相机螺丝各一。3.2 木板加工步骤与要点加工是项目中最需要耐心和精度的环节。建议先在所有孔位中心用冲子或钉子敲出小凹点防止钻头打滑。定位与钻孔8mm光轴孔使用3/8”约9.5mm的钻头。这两个孔决定了整个旋转轴的轴线务必保持平行且垂直于木板平面。有条件最好使用台钻或钻床辅以角尺。轴承座安装孔使用11/64”约4.4mm的钻头打4个通孔。安装时螺丝先不要完全拧死方便后续微调轴承座对齐。步进电机安装孔同样使用11/64”钻头。这里有个技巧先打好电机支架的两个对角孔穿上螺丝临时固定支架和电机然后手动旋转电机轴观察蜗杆与蜗轮的啮合情况。调整支架位置直至啮合顺畅、无卡顿再标记并钻出剩余两个孔。这样可以补偿加工和安装误差。极轴镜孔这是最大的孔。先用1/4”钻头打一个导引孔再用1英寸的开孔器或扁钻头Spade bit慢慢扩孔。关键点在木板下方垫一块废料防止出口处木料劈裂慢速推进避免钻头卡住导致木板撕裂。三脚架云台板安装孔根据你的三脚架云台板上的螺丝孔位通常是1/4”-20和3/8”-16和螺纹类型通孔或盲孔在木板底部相应位置钻孔。孔位应尽量靠近相机负载的中心投影区域以减小力矩。切割步进电机垫高块 由于蜗轮蜗杆组件有一定厚度需要将步进电机垫高使其轴心与蜗轮中心对齐。从同一块木板上切下一块大约55mm x 50mm的小块作为垫块。将其与主板对齐夹紧后透过主板上已钻好的电机安装孔在垫块上“复印”出同样的孔位。3.3 机械总装流程装配顺序很重要错误的顺序可能导致无法安装或难以调整。安装轴承座与一级轴先将4个Pillow Block轴承座用M4x40mm螺丝固定在主板背面与电机同侧。然后将5mm转8mm的联轴器分别与5mm短轴和8mm长轴紧固组成一级轴。将此轴从电机侧穿入两个轴承座。由于轴承是自调心的可能需要用橡皮锤轻轻敲击轴端使其到位。确保轴转动顺畅。安装步进电机与蜗杆将步进电机用支架和M4x50mm螺丝固定在垫高块上此时螺丝不要完全拧紧。将蜗杆长端套在电机轴上并锁紧顶丝。然后将蜗轮套在5mm短轴上并移动到尽可能靠近联轴器的位置锁紧。关键调试步骤手动旋转8mm长轴带动蜗轮转动观察蜗轮与蜗杆的啮合。调整步进电机支架的位置和角度直到蜗杆在全周旋转中都与蜗轮齿面均匀接触无过紧或脱开的现象。调整好后锁紧电机支架螺丝和轴承座的锁紧环。安装皮带传动与二级轴将100齿大同步轮压装到另一根8mm光轴二级轴上。然后将同步带套在60齿已装在一级轴上和100齿轮上。将二级轴穿入另一对轴承座。移动两个同步轮使皮带张紧适度用手指按压皮带中部能有少许变形即可然后锁紧同步轮上的顶丝和轴承座锁紧环。安装相机接口将3/8”双头螺柱的一端拧入3/8”转8mm的联轴器并锁紧。将这个联轴器套在二级轴的末端并锁紧。最后将快装板夹座或球台拧到双头螺柱的另一端。安装极轴镜与三脚架板将极轴镜插入1英寸孔中。如果孔径稍大可以缠绕几圈电工胶带增加摩擦力实现紧配合。最后用1/4”和3/8”螺丝将三脚架云台板从木板底部固定。实操心得在锁紧所有顶丝和螺丝前进行一次全手动旋转测试。从电机轴到最后的相机接口全程转动应平滑无阻无任何周期性卡顿或异响。任何一点机械上的不顺畅都会被电机放大导致跟踪抖动。4. 电路连接与TMC2226配置4.1 电路接线详解电路部分相对简单但接线错误可能烧毁驱动器或电机。请对照下表并仔细核对连接点 (From - To)引脚/端口说明与注意事项Feather M4 3V - TMC2226 VCC_IO3V引脚 - VCC_IO为驱动器的逻辑部分供电。必须接3.3V接5V或12V会损坏芯片。Feather M4 GND - TMC2226 GNDGND引脚 - 任意GND共地确保逻辑电平参考一致。Feather M4 D6 - TMC2226 STEPGPIO D6 - STEP脉冲信号引脚每个上升沿触发一次微步进。Feather M4 D5 - TMC2226 DIRGPIO D5 - DIR方向信号引脚高/低电平控制电机转向。12V电源正极 - TMC2226 VM12V - VM电机动力电源。务必确认极性。12V电源负极 - TMC2226 GND12V- - GND电源地。TMC2226 A1 - 步进电机 A (红)A1 - 红线电机相序至关重要。接错可能导致电机无力、发热或转向错误。TMC2226 A2 - 步进电机 C (黄)A2 - 黄线通常电机线序为A(红)、B(灰)、C(黄)、D(绿)。TMC2226 B1 - 步进电机 D (绿)B1 - 绿线如果测试时电机振动不转首先检查这四根线序。TMC2226 B2 - 步进电机 B (灰)B2 - 灰线100uF电容 - TMC2226 VM 与 GND电容正极 - VM 负极 - GND必须安装用于平滑电机驱动时产生的瞬间大电流防止电压跌落干扰逻辑电路甚至重启主控。负极通常有白色条纹接GND。关于细分设置TMC2226-BOB模块上通常有MS1, MS2, MS3跳线帽。本项目代码按64微步Microstepping编写。查看你的模块说明书通常MS1高MS2高MS3低对应1/64微步。我们通过接线将MS1接地GNDMS2接3.3V高实现了这个配置。如果不接或接错细分模式会改变需要重新计算wait时间。4.2 电源方案选择系统有两部分需要供电Feather M4 (逻辑部分)可以通过USB口供电但更推荐通过板载的JST-PH接口连接一块3.7V锂电池如18650。原因有二一是避免USB线缆在跟踪过程中被拉扯二是许多USB充电宝在检测到小电流负载如单片机时会在一段时间后自动关闭输出导致系统断电。TMC2226与电机 (动力部分)必须使用独立的12V直流电源适配器。电机的启停电流较大与逻辑部分分开供电可以避免干扰。将面包板用背胶固定在木板上方空闲区域所有接线务必牢固野外震动可能导致松脱。可以用扎带或热熔胶对线缆进行辅助固定。5. CircuitPython代码深度解析与调试5.1 核心算法如何计算每一步的等待时间这是整个项目的“大脑”。代码不长但每一行都关乎跟踪精度。import time import board import digitalio # 1. 定义机械传动比 worm_ratio 40/1 # 蜗轮蜗杆减速比 40:1 belt_ratio 100/60 # 同步带轮减速比 100:60 gear_ratio worm_ratio * belt_ratio # 总减速比 40 * (100/60) ≈ 66.6667 # 2. 定义电机参数 steps 200 # 电机固有步数/圈 microsteps 64 # 驱动器微步细分 total_steps steps * microsteps # 电机转一圈所需的总脉冲数 200 * 64 12800 # 3. 计算跟踪速度 sidereal_day_seconds 86164.1 # 一个恒星日的秒数 # 核心公式推导 # 电机需要带动负载在86164.1秒内转一圈360度。 # 考虑到减速比电机实际需要转的圈数 总减速比 (gear_ratio) 圈。 # 因此电机需要输出的总脉冲数 gear_ratio * total_steps # 所需的脉冲频率 总脉冲数 / 恒星日秒数 # 每个脉冲的间隔时间秒 1 / 脉冲频率 wait 1 / ((gear_ratio * total_steps) / sidereal_day_seconds) # 4. 初始化GPIO step digitalio.DigitalInOut(board.D6) direct digitalio.DigitalInOut(board.D5) step.direction digitalio.Direction.OUTPUT direct.direction digitalio.Direction.OUTPUT direct.value True # 设置方向True为逆时针面向电机轴 # 5. 主循环发送脉冲 while True: step.value True # 产生上升沿驱动电机走一个微步 time.sleep(0.001) # 脉冲高电平保持1毫秒足够驱动器识别 step.value False time.sleep(wait - 0.001) # 等待剩余时间然后开始下一个脉冲关键参数解读wait是计算出的核心结果。将上述参数代入wait ≈ 1 / ((66.6667 * 12800) / 86164.1) ≈ 0.1008秒。这意味着每过约100.8毫秒我们需要给STEP引脚一个脉冲。time.sleep(0.001)是脉冲宽度1ms对于TMC2226足够。wait - 0.001确保了脉冲周期的精确性。direct.value True决定了旋转方向。由于蜗杆传动方向是固定的如果实际转动方向与期望相反相机平台追着星星跑而不是抵消地球自转只需将此值改为False。5.2 代码部署与基础测试确保Feather M4已刷入CircuitPython插入电脑后会出现名为CIRCUITPY的盘符。将上述代码保存为code.py复制到CIRCUITPY盘的根目录。CircuitPython会自动运行它。基础功能测试将wait变量暂时改为一个很小的值例如wait 0.005即每秒200步。上电后你应该能听到电机发出轻微噪音TMC2226下声音很小并开始较快旋转。观察蜗杆是否转动皮带轮是否跟随。这是检查机械装配和电路是否通电的最快方法。方向测试面向相机平台即从负载端看向电机平台应缓慢地顺时针旋转因为我们需要抵消地球自转导致的星空逆时针旋转。如果方向反了修改direct.value。5.3 跟踪精度校准测试这是投入使用前最重要的一步目的是验证计算出的wait时间是否准确。气泡水平仪法在相机快装板上放置一个高精度的小型气泡水平仪。启动跟踪程序使用计算出的wait值。将水平仪调整至完全水平气泡居中。让系统运行15-30分钟。之后观察气泡位置。如果气泡向一侧偏移说明跟踪速度有误差。气泡移动方向指示了误差方向如果平台转快了跟踪过冲星星在照片上会向西右拖线此时气泡会向平台旋转的反方向偏移。你需要微调wait值。刻度盘比对法更精确打印一个圆形的钟表盘贴在相机平台侧面指针指向12点。用手机指南针App或水平仪将平台初始位置调整到某个已知角度如正北。启动跟踪。运行数小时后例如6小时即恒星日的1/4平台理论上应转动90度。用手机拍摄刻度盘比对实际转角与理论转角90度的差异。根据偏差百分比同比调整wait值。例如6小时后只转了85度说明转慢了wait值应等比减小新wait 旧wait* (85/90)。调试心得影响最终精度的因素很多齿轮间隙、皮带微小打滑、电机微步精度、单片机定时误差等。第一次测试偏差20%以内都属正常。通过上述方法反复校准2-3次可以将跟踪误差控制在肉眼难以察觉的范围内满足广角星野摄影的需求。6. 野外实战极轴校准与拍摄流程6.1 极轴校准成败的关键机械和电子部分再精确如果极轴没对准一切白费。极轴镜的作用就是将设备的机械旋转轴对准北天极北极星附近。粗对北极星在白天或天色未全黑时先用三脚架的大致指向功能将极轴镜筒对准正北方向。精调在夜间通过极轴镜观察。调节三脚架的云台俯仰和方位角让北极星落到极轴镜分划板的正确位置。不同的极轴镜分划板样式不同需要参考其说明书。通常是一个小圆圈或特定刻度。手机App如“Polar Scope Align”可以实时显示北极星在极轴镜中应该处于的位置极大简化此过程。验证校准后锁定三脚架所有旋钮。通过相机取景器观察一颗亮星开启赤道仪跟踪。如果极轴校准良好星星应该在取景器中心保持不动。如果星星缓慢漂移说明极轴仍有偏差需要微调。6.2 相机配置与平衡调整平衡调整装上相机和镜头松开快装板锁紧装置前后滑动相机板直到整个系统在转轴上达到静态平衡任意角度都能停住。这是减少电机负载、避免抖动的关键一步。调整配重块的数量或位置来协助平衡。相机设置模式手动模式M。对焦切换到手动对焦MF使用实时取景放大功能对焦于一颗亮星直到星点最小最锐。光圈开到最大如f/2.8以收集更多光线。ISO根据环境光污染程度和相机性能通常在800-3200之间尝试。过高的ISO会带来大量噪点。快门速度这是跟踪精度的试金石。从15秒开始试拍检查星点是否圆润。如果跟踪良好可逐渐增加至30秒、60秒甚至更长。广角镜头如24mm比长焦镜头如85mm对跟踪误差更宽容。文件格式务必使用RAW格式为后期处理保留最大信息量。关闭关闭机身防抖、长时间曝光降噪可后期处理。6.3 拍摄与问题现场排查问题星点拖线可能1极轴不准。这是最常见原因。重新进行精细的极轴校准。可能2跟踪速度误差。回顾校准测试重新计算或微调wait值。可能3机械松动。检查所有螺丝、顶丝、皮带张紧度。在负重状态下用手轻轻尝试扭转相机平台应无任何旷量。可能4电机失步。如果负载过重相机长焦镜头不平衡或电源电压不足电机可能在某个瞬间“丢步”。确保使用12V 2A以上电源并仔细做好平衡。问题电机异响或振动可能1电机线序接错。对照接线表仔细检查。可能2电源干扰。确保动力电源12V地线与逻辑地线GND已可靠连接在同一点。尝试在12V电源入口处并联一个更大容量的电解电容如470uF。可能3TMC2226电流设置过低。部分TMC2226模块需要通过电位器调节电机电流。参考模块手册适当调高电流至电机额定值如0.35A。问题系统突然停止可能1USB供电中断。如果使用充电宝给Feather供电可能是充电宝进入休眠。改用锂电池供电。可能2接触不良。野外露水可能导致短路或接触不良。用电工胶布或热缩管保护所有裸露焊点和接线端子。7. 后期升级与优化思路这个基础版本已经能工作但还有很大的优化空间增加导星系统这是专业赤道仪的核心功能。可以增加一个小型导星镜和CMOS相机如ASI120MM连接树莓派Zero 2W运行开源导星软件如PHD2。导星相机持续监测某颗导星的漂移并通过ST-4接口或串口向Feather M4发送纠偏脉冲实时修正跟踪误差从而实现长达数分钟的精准跟踪用于深空摄影。添加OLED显示屏与编码器用一块I2C OLED屏显示跟踪状态、电池电量、经纬度等信息。加上一个旋转编码器可以实现手动调速用于构图、菜单设置等功能脱离电脑操作。引入GPS模块通过GPS获取精确的经纬度和时间自动计算当地的恒星时从而自动调整跟踪速度实现全球任意地点“开机即用”无需手动计算或查表。改进机械结构使用铝合金或碳纤维板切割主体提高刚性和轻量化。使用预紧的滚珠轴承替代普通轴承座进一步减少空回差。编写更健壮的程序当前代码是简单的time.sleep延时循环长期运行可能有微小累积误差。可以改用alarm或timer硬件中断来触发步进脉冲精度更高。同时加入错误处理、状态保存等功能。这个DIY项目最大的乐趣不在于复刻一个商品而在于理解其原理并在解决问题的过程中不断学习和改进。从第一张满是拖线的照片到后来能拍出清晰的银河拱桥每一次调试成功的喜悦都是对动手能力的最佳奖赏。希望这份详细的指南能帮你顺利踏上自制天文器材的旅程。