十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

磁悬浮地球仪DIY:电磁铁设计、PID调参与自转控制全解析

磁悬浮地球仪DIY:电磁铁设计、PID调参与自转控制全解析 磁悬浮地球仪这个项目我前前后后做了两版第一版悬浮没调稳就急着加自转结果球体直接拍在电磁铁上霍尔传感器都摔裂了。第二版老老实实从磁路设计开始抠总算是让它稳稳悬在空中转起来了。这篇文章就把我从原理到调试的完整过程拆开讲包括绕线圈参数怎么算、PID参数怎么往死里调、自转磁场怎么不干扰悬浮踩过的坑也都写在里面给想动手复刻的朋友一个参考。1. 核心原理与方案设计1.1 悬浮地球仪到底是怎么“定”在空中的磁悬浮地球仪的原理说白了就一句话用一个电磁铁向上吸住球体内部的永磁体再通过传感器实时检测球体的位置变化不断调整电磁铁的吸力大小让球体在一个平衡位置附近稳定悬浮。听起来简单但这里面有一个非常反直觉的物理事实永磁体之间的吸力随着距离缩短会急剧增大也就是说如果球体离电磁铁近了吸力会变得更大球会加速被吸上去如果球体离电磁铁远了吸力会迅速降低球又会加速掉下去。这是一个典型的开环不稳定系统如果没有反馈控制球体连一秒钟都悬不住。所以整个项目的核心是用传感器检测位移、用控制器计算矫正量、用电磁铁输出矫正力形成一个闭环。传感器有多种选择我在第一版用的是红外对管发射管接收管因为当时觉得红外便宜又常见但实测下来红外的方式对环境和球体颜色太敏感了深蓝色的地球仪表面吸光严重反射信号弱得离谱后来第二版换成了线性霍尔传感器方案。霍尔方案的工作原理是球体内部的永磁体在空间中会产生一个磁场把霍尔传感器放在电磁铁旁边当球体位置上下波动时传感器位置的磁场强度就会跟着变化霍尔器件把这个磁场变化转成电压变化MCU读取这个电压经过PID算法输出对应的PWM占空比去驱动电磁铁。这套方案的优点是响应快、不受环境光影响而且磁场信号本身就和悬浮力同一个来源物理上天然对齐。1.2 为什么悬浮方式选“上拉式”而不是“推拉式”磁悬浮的机械结构大概有两大类。一类是“推拉式”或者叫“上下夹持式”就是在球体上方用一个电磁铁向下推、下方用永磁铁向上吸或者上下各一个电磁铁中间夹着球体悬浮。这种结构的好处是悬浮更稳定因为上下两个力互相牵制系统的刚度更高但缺点也很明显结构复杂、体积大而且从外观上会把球体遮挡一部分作为地球仪来说观赏性就差了一大截。另一类是“上拉式”也就是电磁铁在球体正上方球体内部的磁体和电磁铁的吸力平衡重力让球体悬在下方。这个结构和我最终做成的产品外观完全一致顶部一个半球形的壳里面藏着电磁铁和控制板球体悬在下方约8到15毫米的位置还能自由转动。“上拉式”的实现难度在于平衡点非常脆弱。球体重心只要稍微偏离电磁铁轴线重力就会产生一个水平分力把球体往侧面拉走。要解决这个问题通常有两个办法把球体内部磁体的轴线设计成竖直方向让磁力线和重力方向严格重合减少水平分力。在结构上尽量让球体重心和磁体中心重合或者干脆在球体底部配重调整重心位置。我最终的设计是用一个直径25毫米、厚度10毫米的钕铁硼圆片磁体牌号N35嵌在一个3D打印的球壳内然后往球壳里填充硅胶和配重铁砂来调整重心。重心调整这一步我在后面实操部分会详细说因为这直接决定了悬浮的成败。1.3 自转功能怎么叠加进去悬浮只是第一步地球仪还得转。加自转有好几种方案主流的有以下三种电磁驱动方案在悬浮电磁铁周围布置多个通常是四个小线圈给这些线圈通入按顺序变化的电流产生一个旋转磁场球体内部的永磁体被这个旋转磁场带着转。摩擦轮驱动方案在球体侧面加一个微型电机带动摩擦轮靠摩擦带动球体旋转。但这个方案会直接接触球体打破悬浮的“零接触”噱头一般不推荐。喷气驱动方案在球体底部放一个微型气泵向上吹气让球体旋转。这种方式受气流扰动影响大转速不稳定也很少有人用。我选了电磁驱动方案。四个小线圈绕着悬浮电磁铁均匀分布通电相位依次错开90度产生一个旋转磁场。但是这里有个很容易踩坑的地方旋转磁场会产生一个额外的径向力干扰悬浮的稳定性。我实测下来如果四个驱动线圈不加屏蔽、直接裸奔球体在悬浮状态下会明显晃动甚至会被径向力拽走。解决办法有两个方向一是把驱动线圈嵌在悬浮电磁铁的外围并且用硅钢片做一个磁屏蔽环把向外的磁场收拢二是在软件上把驱动线圈的电流限制在一个较小的范围内转速不要贪太高只要能让人肉眼看出在转就行。我一开始把转速做得特别激进结果球体一边转一边抖后来老老实实把转速上限限制在每分钟120转左右悬浮和自转都能兼顾。2. 材料准备与工具选型2.1 主要物料清单如果你打算完全复刻这个项目下面这份物料清单可以直接照着买。我的原则是凡是涉及精度和稳定性的部件尽量买好的凡是纯结构件能用3D打印就自己打。序号物料规格/型号数量备注1悬浮电磁铁磁芯铁氧体罐型磁芯外径40mm1也可以用E型磁芯替代2电磁铁绕线0.25mm漆包线约500g匝数约800-1000匝3球体内部永磁体钕铁硼圆片 N35Φ25×10mm1充磁方向为轴向4球壳3D打印直径约100mm1PLA或树脂材料5霍尔传感器SS495A / A13212线性输出响应快6驱动线圈Φ0.2mm漆包线绕在10mm骨架上4每个约200匝7电机驱动板双H桥DRV88332用于驱动线圈和电磁铁8主控STM32F103C8T61或Arduino Nano9电源24V/3A开关电源1功率余量要足10PID调试工具蓝牙串口模块手机上位机1调试神器电磁铁是整个系统的执行机构它的参数直接影响悬浮刚度和响应速度。我在第一版图省事买了一个现成的推拉式电磁铁结果因为磁路设计不适合长距离悬浮球体吸力急剧变化控制根本跟不上。第二版自己绕制用的是罐型磁芯这种磁芯把线圈包在里面磁路基本封闭漏磁很小这样悬浮力更集中、方向性更好。霍尔传感器的选型也要注意。我一开始用的是开关型霍尔比如3144但开关型只能输出高低电平完全无法反映球体的连续位置信息根本没法做模拟控制。后来换了SS495A它输出的是和磁场强度成正比的电压信号范围大概是0.2V4.7V灵敏度高线性度好配合ADC使用非常顺手。控制板我用的是STM32F103C8T6因为它的ADC采样速率和PWM最高频率都能满足要求。如果你手头只有Arduino Nano也能做但ADC采样精度和速度都会弱一些悬停手感可能需要更多时间去调。2.2 工具和调试设备工具方面绕线机如果家里没有可以用手电钻加一个简单的绕线支架替代把漆包线绕在骨架上时注意张力均匀、排列整齐不然线圈电阻会偏高发热也大。我是用手电钻的慢速模式来绕的转速控制在每分钟30转左右绕出来的线圈很整齐。调试设备里最重要的是示波器没有第二选择。PID调参的时候你需要实时观察霍尔传感器输出电压的波形判断系统是否在振荡、有没有超调、有没有稳态误差。示波器不用买贵的哪怕是几十块钱的虚拟示波器电脑USB连接的那种也够用。我还额外配了一个蓝牙串口透传模块把MCU内部的PID误差值、输出值实时发到手机上用手机上位机软件画曲线这样调起参来直观不少。另外还有一个很多人忽略的工具——红外测温枪。电磁铁连续运行后温度会上升如果绕组温度超过80度漆包线绝缘层会老化轻则悬浮力下降重则烧毁线圈。我用测温枪定期检查线圈温度确保温升控制在合理范围内。3. 电磁铁绕制与磁路设计实操3.1 线圈匝数和线径怎么定电磁铁的吸力公式可以简化理解为F与电流I和匝数N的乘积即安匝数成正比。安匝数越大吸力越强。但电流和匝数又互相制约匝数太多电阻就大相同电压下电流反而变小线径太粗绕不下线径太细电阻大发热严重。我做的是24V系统绕制参数最终定为线径0.25mm漆包线匝数900匝层数约10层实测电阻约38Ω最大工作电流24V / 38Ω ≈ 0.63A最大安匝数900 × 0.63 ≈ 567安匝这个安匝数用来悬浮一个重量约280g的球体含内部磁体和配重实测余量充足PWM在40%60%占空比时就能稳定悬浮留出了很大的调节空间。绕线的时候要特别注意每层绕完后垫一层绝缘纸不然漆包线表面的漆膜在高压下其实24V也不高但长时间温升后容易出问题有击穿风险而且相邻两层之间如果有绕线器产生的毛刺也可能划破漆膜造成短路。我用的绝缘纸是普通的0.05mm聚酯薄膜裁成和磁芯一样宽的条状每层一垫成本几乎为零但可靠性提升明显。绕完后一定要用万用表测量线圈电阻和绝缘性。绝缘性检测是把万用表拨到高阻档20MΩ测量漆包线和磁芯之间的电阻正常情况应该是无穷大。如果测出电阻值只有几KΩ说明漆包线某处破了要拆掉重绕或者做局部处理不能带着隐患直接通电。3.2 磁路结构设计罐型磁芯的优点是磁路闭合但它的开口位置决定了磁力线集中的方向。我用的是外径40mm的罐型磁芯把顶部的中心孔对准球体方向这样磁力线会从磁芯的中心柱引出集中在轴线方向上对球体产生竖直向上的吸力。不过罐型磁芯的磁路是集中在中心柱和外壳之间的缝隙里如果直接把球体放在下方磁力线其实是从磁芯下表面均匀发散的悬浮力方向性不够好。所以我做了一个小改造在磁芯中心柱上嵌入了一个锥形的纯铁导磁头机加工件或者用3D打印树脂做模具然后浇注纯铁粉环氧树脂来替代让磁力线通过导磁头会聚到中心线上。这个导磁头的直径大概15mm高度10mm配合球体内部的Φ25mm永磁体磁力线在球体附近会比较集中悬浮刚度和稳定性都会好很多。这里有个经验导磁头的材质尽量用纯铁不要用普通碳钢。纯铁的磁导率高、矫顽力低通磁后剩磁小响应快普通碳钢剩磁明显电磁铁断电后依然会带有一定磁性导致球体被“黏住”一下才掉下来非常影响手感。3.3 球体内部磁体和重心设计球体是我的3D打印球壳直径100mm。球壳分成两半打印内部设计了一个圆柱形卡槽用来固定永磁体卡槽的轴线方向设计成竖直方向这样磁体和电磁铁的磁路才能对齐。磁体安装完之后球体重心肯定不在球心因为磁体有几十克重球壳本身又是均匀的。我把球壳装配好放在一个倾斜的平面上看它怎么滚动判断重心偏移方向然后往球壳底部与磁体相对的那一侧灌配重铁砂。过程是这样操作的先把磁体装进卡槽合上球壳。把球放在水平的玻璃板上用笔在球的上表面标记一个点。轻轻推一下球让它自由滚动几次观察每次停下来时标记点是否在正上方。如果标记点在上方但偏左说明重心偏右就往右侧灌配重。反复调整铁砂量直到球体无论怎么滚标记点最终都能停在正上方附近说明重心已经基本在球心正下方也就是“不倒翁”状态。这一步很关键因为悬浮时球体是被电磁铁吸住上方的磁体如果重心偏得厉害球体会歪着悬起来看起来非常别扭严重的时候会直接失去悬浮力。我调试期间用掉了整整两包铁砂大概花了2个小时才调到一个比较满意的状态。4. 控制电路与驱动方案4.1 主控电路和传感器接口主控我用的是STM32F103C8T6的最小系统板ADC和PWM资源都够用而且主频72MHz控制周期可以做到1kHz以上。霍尔传感器SS495A的输出接到STM32的ADC引脚供电用5V霍尔本身是5V供电输出0.2V4.7V完全匹配STM32 ADC的03.3V输入范围吗不匹配所以我接了分压电阻两个10KΩ电阻串联分压把霍尔输出从最大4.7V降到2.35V左右再进ADC。这里有个细节海尔传感器输出信号接分压电阻之后输出阻抗会升高STM32的ADC输入通道虽然内置采样保持电容但阻抗太高会导致采样值不稳定。解决办法是在ADC引脚和地之间加一个0.1μF的电容形成一个简单的低通滤波器滤掉高频毛刺同时也降低了信号源阻抗的影响。控制板整体功耗不大STM32、霍尔和驱动板加起来不超过1W但电磁铁和驱动线圈的功率加起来可能有15W18W所以电源部分我单独用了一个24V/3A的开关电源给电机驱动板供电STM32则通过一个DC-DC降压模块从24V降到5V供电。这样做的原因是电磁铁大电流通断时会在电源线上产生明显的纹波如果主控和电磁铁共用一路电源容易导致ADC采样值跳动悬浮会变得很不稳定。4.2 电磁铁驱动方式选择电磁铁本质上是一个大电感用PWM驱动时如果直接接MOS管关断瞬间电感会产生很高的反向电动势尖峰电压有可能击穿MOS管。我用的方案是经典的低端驱动加续流二极管电磁铁一端接24V电源正极。另一端接N沟道MOS管IRLZ44N或IRF540N的漏极。源极接GND。栅极接STM32的PWM引脚通过一个20Ω电阻限流。电磁铁两端并联一个快恢复二极管FR107阴极接24V正极、阳极接MOS管漏极用于续流泄放。PWM频率我选的是20kHz。为什么要选这么高因为20kHz已经超出了人耳可听范围不会发出“滋滋”的高频噪声同时比电感感抗的截止频率高很多电流纹波小悬浮更平稳。有个容易被忽略的坑STM32的PWM输出引脚最大能输出约20mA电流虽然直接驱动MOS管理论上够用但MOS管的栅极电容在高速开关时需要的驱动电流实际上远超20mA。我在第一版直接连了GPIO和MOS管结果高频开关时MOS管发热严重悬浮没调好就先烧了一个。后来加了一个栅极驱动缓冲芯片TC4427问题迎刃而解。4.3 自转线圈驱动四个自转线圈我用的也是DRV8833双H桥驱动板。DRV8833可以输出两路独立的全桥驱动用两片刚好驱动四路线圈。线圈的连接方式是把四个线圈分成两组对角方向的两个线圈串联成一组这样用两路全桥就能产生一个近似旋转的磁场。驱动线圈的相位关系是同一时刻两组线圈中一组通正向电流、另一组通反向电流电流方向按特定时序轮流切换就实现了磁场方向的旋转。转速的控制实际上就是控制这个切换的速率我用STM32的定时器来产生四相位脉冲频率决定了磁场的旋转速度。但要注意驱动线圈切换的瞬间会产生和电磁铁类似的感性尖峰所以DRV8833输出端到线圈之间也要加续流二极管。DRV8833内部其实自带续流我实测内置二极管够用但如果是自己用H桥搭建一定要在外部加上。自转驱动和悬浮驱动的一个核心冲突点在于驱动线圈产生的磁场可能会干扰霍尔传感器的位置检测信号。因为驱动线圈就在悬浮电磁铁旁边它们通电产生的磁场会叠加到霍尔传感器区域。霍尔传感器检测的是球体磁铁的磁场如果叠加了驱动线圈的磁场ADC读到的位置信号就会出现周期性波动PID控制器会以为球体在剧烈上下抖动然后输出一个剧烈的矫正信号表现为球体悬浮时伴随着明显的抖动。我在调试过程中尝试了以下几种方案来解决干扰在霍尔传感器外面加一个纯铁屏蔽罩把驱动线圈的磁场挡在外面。在ADC采样时序上做“采样窗口”只在驱动线圈切换完成后的一个短窗口内采样霍尔电压。在软件上对霍尔信号做低通滤波比如滑动平均滤波消除高频干扰。最终我同时用了方案一和方案二效果最好。屏蔽罩用的是某宝买的成品小铁盒尺寸刚好能罩住SS495A霍尔传感器两个霍尔传感器各装一个。采样时序上我把ADC采样周期设置在PWM周期的中心位置附近因为这时候电感电流纹波最小信号最平稳测得的悬浮力更稳定。5. 控制算法与PID调参实录5.1 PID模型怎么建立磁悬浮系统是一个典型的单输入单输出SISO系统输入是PWM占空比输出是球体位置霍尔电压间接反映。控制对象是电磁铁它的数学模型是非线性的但可以近似化成在平衡点附近的线性模型。我用的控制器是数字增量式PID控制周期1kHz。控制公式在代码里表现为float pid_control(float target_voltage, float current_voltage) { float error target_voltage - current_voltage; integral error * dt; float derivative (error - prev_error) / dt; float output kp * error ki * integral kd * derivative; prev_error error; return output; }这个PID输出的output直接作为PWM占空比的参考值。这里有一个非常关键的点电磁铁是吸引型的所以误差方向要搞清楚。当球体离电磁铁太远霍尔电压变小时需要增大占空比也就是让电磁铁产生更大的吸力把球体拉上来。反之球体离得太近霍尔电压变大时需要减小占空比。所以误差定义是target - current如果current偏小error为正output增大PWM占空比增大——这个逻辑要理清楚不然方向反了控制器会让系统发散球体要么砸地要么撞上电磁铁。5.2 手把手调参流程调参没有捷径但我有一套固定的流程能够快速把一个新系统从“完全不能悬浮”调到“基本稳定”再到“手感不错”。第一步设置目标点。在球体还没放上去之前用支架把球体放在电磁铁下方约10mm处读取此时霍尔传感器的输出电压值记录为target_voltage。这个值代表球体在目标位置时的反馈电压。第二步调KP。先把KI和KD都设为0KP从0开始每次增加0.1逐步增大。观察球体在电磁铁下方的反应当KP太小时球体会“有气无力”地抖一下然后掉下去当KP增大到某个临界值球体会开始“颤动”说明系统在这一点发生了持续振荡。此时把KP退回到振荡临界值的60%70%作为初始KP。第三步加KD。KD的作用是阻尼。在KP确定后KD从0开始增加每次增加0.05观察球体的振动是否被逐渐抑制。一个明显的感受是KP在临界值附近时球体会持续高频振动调整KD后这个频率会逐渐降低、幅度逐渐变小。KD有一个最佳区间太小时阻尼不足太大时控制器会对噪声过度敏感球体会发出明显的“呲呲”高频抖动。KD的经验值一般是KP的0.52倍具体要靠观察波形来定。第四步加KI。由于系统存在静摩擦、温漂等因素纯PD控制器会存在一个稳态误差也就是球体悬浮的位置和目标位置有一个固定偏差。KI的作用是积分消除这个偏差。KI从0开始每次增加0.01观察球体是否能够回到目标位置。KI要特别注意不能太大否则系统会过冲、产生低频振荡表现为球体以12Hz的频率上下浮动。调参过程中我一直在用示波器观察霍尔输出电压波形。正常的悬浮状态波形应该是一条接近水平的直线叠加一点极其微小的高频噪声。如果波形出现了周期性的正弦波说明系统在振荡需要调节KP和KD如果波形整体偏离了目标值说明KI不足或存在外力干扰。最终我调出的参数是KP 2.6KI 0.2KD 1.4控制周期1kHz。这几个参数是针对我的机械结构和磁铁强度调出来的你如果复刻不一定适用一定要从零开始调不要直接抄。5.3 球体自转的PID耦合控制自转加入之后控制难度又上了一个台阶。因为旋转磁场会对球体产生周期性的径向力扰动我观察到的一个现象是悬浮稳定后球体开始转球体立刻出现一个周期性的上下浮沉频率恰好等于驱动线圈的切换频率。为了消除这个耦合我做了两个优化转速平滑变化不要以恒定速度切换旋转磁场方向而是把切换速度用S曲线加速平滑的加速度变化这样可以降低磁场突变的冲击减少对悬浮的扰动。悬浮PID加前馈补偿在悬浮PID输出端叠加一个与自转频率反向的修正信号。因为驱动线圈的电流波形是已知的它的扰动频率和相位也是已知的理论上可以计算出它对悬浮的干扰方向然后叠加补偿。我在代码里用了一个简单的正弦波查表根据自转速度生成一个同步的补偿信号悬浮稳定性提升非常明显。这部分原理听起来复杂但实现起来不复杂就是查表加加法运算。如果你只是想让球体能转起来不做这个优化也能勉强用但做完了以后球体转12小时也不会出现悬浮高度漂移这就是质的差别。6. 常见问题与排查技巧实录6.1 球体完全吸死在电磁铁上现象通电后球体直接被吸到电磁铁上PWM占空比已经降到0了还是吸着甚至断电后球体还黏住一两秒才掉下来。排查思路首先检查霍尔传感器接线是否接反。如果霍尔输出的信号和球体位置的变化方向搞反了控制器会一直输出最大占空比球体被吸死是必然的。其次检查电磁铁磁芯是否用了高剩磁材料比如普通碳钢断电后剩余磁力仍然能把球体吸住。这个需要用纯铁或坡莫合金材料替代。还有可能是PID参数方向反了你可以把球体放在电磁铁下方近距离处观察ADC读到的霍尔电压和PWM输出是否呈负相关球体越近占空比应该越小。如果不是就要在代码里调整误差定义方向。6.2 球体悬浮后持续高频抖动现象球体能悬住但明显在快速抖动肉眼可见或者用手去碰球体能感受到强烈高频振动。排查思路高频抖动基本都是KD过大或采样噪声太大导致的。先用前文说的分压电阻降低信号幅度并加0.1μF滤波电容把霍尔信号噪声压到最低。然后逐步减小KD抖动会随之下降。如果减小KD之后抖动消失了但球体变得“软绵绵”很容易被吹跑那就是KD太小、KP不足在KP和KD之间找一个平衡点。6.3 球体悬浮后上下浮动低频振荡现象球体能悬住但高度在12Hz的频率上上下浮动看起来很“诡异”。排查思路低频振荡几乎都是KI过大引起的。积分项对误差的累积会过冲然后反向修正形成振荡。把KI减小或者改为积分分离策略当误差大于一定阈值时禁用积分项即可。还有一种情况是控制周期太慢。如果控制周期超过2ms500Hz对于我的系统响应速度已经跟不上球体的运动也会出现浮沉。尽量把控制周期控制在1ms甚至更短。6.4 球体悬浮正常但自转时异常晃动现象不转的时候悬浮很稳一旦启动自转球体晃动明显甚至脱浮。排查思路第一步检查霍尔信号在自转时是否出现了周期性扰动用示波器观察。第二步把霍尔传感器套上屏蔽罩再做ADC采样窗口基本上能滤掉90%的干扰。第三步如果还不行就降低驱动线圈的最大电流也就是降低旋转磁场的强度增加自转线圈的匝数来弥补驱动力的降低。6.5 常见问题速查表问题现象可能原因解决方案通电球体被吸死反馈方向错误、磁芯剩磁大检查误差定义方向换纯铁磁芯悬浮高频抖动KD过大、霍尔噪声大降低KD硬件滤波悬浮低频浮沉KI过大减小KI或用积分分离球体被吹跑KP/KD不足增大KP、KD检查PWM上限自转时晃动驱动磁场干扰霍尔信号屏蔽传感器、采样窗口、降驱动电流电磁铁严重发热占空比过高、匝数不足增加匝数、降低工作电压、加强散热7. 进一步优化与扩展思路把悬浮和自转都调通之后这个项目就算是立住了。但如果你还有精力有几个优化方向我觉得很值得折腾第一是零功耗悬浮方案。现在的系统无论是悬浮还是自转都要持续耗电悬浮电磁铁的功耗大概在3W5W不算多但也说不上环保。工业上有人用超导材料实现零功耗悬浮但DIY层面不现实。你可以尝试的是“永磁电磁混合”方案让永磁体承担大部分悬浮力大概80%电磁铁只负责动态调整剩余的20%这样电磁铁的电流小了很多发热和功耗都大幅下降。第二是手机APP控制。在现有蓝牙串口模块的基础上你可以写一个手机APP实时显示悬浮高度、PID参数、温升数据甚至可以把手伸到球体下方APP里能看到控制器的误差曲线互动感很强。第三是自动悬浮起降。目前的流程是手动把球放到电磁铁下方的支架上启动悬浮你可以加一个红外避障模块检测到球体靠近后自动启动控制程序球体离开后自动停止体验上会更高级。第四是夜光地球仪。在球体内部加一个纽扣电池驱动的LED灯珠配合半透明的球壳悬浮起来后有一种“天体在黑暗中悬停”的视觉效果放在桌面上非常好看。我个人做了一个有趣的扩展把霍尔传感器的采样频率往上提同时把控制算法换成了状态空间观测器虽然调参难度更大但悬浮刚度和抗干扰能力确实比传统PID好了一截。不过这个对新手来说太硬核了建议先把PID吃透再考虑。8. 写在最后的几点体会整个项目做下来我最想强调的一点是电磁悬浮是一个典型的多物理场耦合系统电磁、机械、控制三重因素缺一不可。我第一版失败就是因为只盯着控制算法忽略了磁路设计结果怎么调PID都没用。第二版我把磁路、重心、传感器布局全部重新理顺PID反而只花了半天就调好了。另外还有一个容易被人忽视的细节环境温度对悬浮稳定性的影响比你想象的大。我夏天调试的时候室温28度电磁铁连续工作20分钟后温度上升到45度左右线圈电阻比冷态时增加了约10%导致相同占空比下电流变小、吸力下降球体悬浮高度就慢慢往下掉。所以如果你打算长期运行这个地球仪一定要在代码里做温漂补偿——最简单的方式是实时检测电磁铁温度用NTC热敏电阻贴在磁芯上然后根据温度修正PID输出增益或者干脆把目标悬浮高度在温度升高时稍微往上调补回落差。最后分享一个小技巧调参的时候不要总想着“一次调到完美”而是先让系统“能悬住”再去“悬得稳”。很多时候你把球体放上去的瞬间是最容易失败的时刻我建议在启动代码里做一个小延时先让PWM输出一个中等占空比再让PID介入相当于一个软启动过程可以显著减少初始阶段的吸合和跌落。这个细节虽然不起眼但实测下来成功率至少提升了30%。项目做到这个程度已经可以稳定运行一整天不脱浮球体转速平稳表面温度控制在50度以内。接下来我打算给它做一个胡桃木底座把控制板藏进去PCB重新画一版小型化的争取把体积再缩小三分之一。如果你也玩这个项目欢迎在评论区交流你的调参心得和踩坑经历尤其是自转干扰那块不同结构的解决方案差异很大互相参考能少走不少弯路。
返回列表