ARTICLE DETAIL

资讯详情

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

三管驱动旧硬盘电机:无刷电机换相原理的极简实验

三管驱动旧硬盘电机:无刷电机换相原理的极简实验 一块坏掉的SATA机械硬盘拆开外壳里面那块圆形的直流无刷电机才是整个项目的主角。用三个MOS管加一块单片机搭一个最简驱动电路就能把这个废盘里的电机重新转起来。这篇文章把电路拓扑、换相逻辑、实测数据和我踩过的坑全部整理出来适合想搞懂无刷电机驱动原理又不想一开始就上六管全桥或者FOC的新手。这个实验最大的价值在于它把“无刷电机驱动”这件听起来很复杂的事压缩到了最少量的硬件一块驱动板、三个N沟道MOS管、一个旧硬盘电机。我用的主控是STM32F103实际上Arduino、ESP32、甚至纯逻辑电路都能做到关键是理解每个步骤背后的原理。项目全程大概两三个小时能完成成本几乎为零。1. 为什么拿一个旧硬盘来驱动无刷电机很多人手里都有淘汰下来的机械硬盘芯片坏了、坏道严重、异响严重卖废品又觉得可惜。我在系统里跑了一遍Victoria看到一个C5黄块修复无望索性拆开玩。硬盘里能拆的东西不少强磁铁、盘片、主轴电机其中最值得玩的就是那个主轴电机。1.1 硬盘主轴电机免费又经典的三相无刷电机先弄清楚一个概念SATA机械硬盘和M.2固态硬盘完全是两回事。M.2固态里没有电机想要电机就只能拆机械盘。机械硬盘运转时承载盘片高速旋转的就是主轴电机转动惯量大、运行平稳它的本质是一台三相永磁无刷直流电机绕组接成星形转子是永磁体。这类电机和航模上常见的外转子无刷电机不太一样硬盘主轴电机是内转子结构极对数比较多转速不会特别夸张空载在6000到8000转是很常见的区间。额定电压一般是12V用可调电源或者电脑电源的12V供电都行。网上买一个新的这类电机不便宜但是拆机件十几块钱甚至不要钱拿来当驱动实验的负载再合适不过。拆开电机后一般能看到三根相线有些型号还会有一根中心点引出线。在这个三管方案里中心点的引出非常关键因为我们的电源正极要直接接在这个星形中心点上。如果拆到的电机只有三根相线、中心点没引出那这个三管拓扑就不适用得改成常规六管全桥网上换一个四线电机就好。1.2 为什么三个MOS管就能驱动无刷电机常见三相无刷电机驱动需要六管全桥高边三只、低边三只每次导通上下各一只形成一相进一相出的电流回路。六管方案是工业标准但作为教学实验六个MOS管加三路半桥驱动还是挺复杂的自举电容、死区控制、上下桥臂直通保护都是门槛。我这套三管方案把拓扑做了大幅简化电机的星形中心点直接接电源正极三相线各自接一只N沟道MOS管的漏极源极统一接地栅极由单片机控制。任意时刻只让一只MOS管导通也就是只有一个绕组的通电方向是从中心点流向该相形成一个从电源到地的单相导通回路。这样真的能转吗能原理和步进电机类似。定子绕组通电后产生一个磁极转子永磁体被磁拉力拉住会往该相磁场方向靠。换到下一相通电磁场方向跟着跳过去转子又被往后拉着走一步。三拍顺序循环下去转子就被“牵着”连续转动起来转速足够高以后转子的惯性会把这种顿挫感掩盖掉一部分。这个拓扑的代价也很明显每个时刻只有一相绕组出力磁动势波形很差力矩波动大低速时有明显的咔哒咔哒感带载能力弱效率也一般。但作为理解无刷电机换相原理的实验项目“三管转起来”这个目标是可以达成的而且逻辑很清晰。2. 动手前必须搞懂的三个基础点学习这个项目之前最好把无刷电机的换向逻辑、MOS管的开关特性、电路连接关系这三个基础点搞清楚。否则即使电路搭好了只会照着代码敲一遍出问题照样不知道怎么排查。2.1 无刷电机的换向与开环强制换相无刷电机的转子是永磁体定子是线圈没有机械电刷来切换电流方向必须由外部电路根据转子位置改变通电相序这个过程叫换向。可以这样理解定子磁场必须总在转子磁极的前方一点像狗追骨头一样追着跑转子才能持续旋转。真正的无刷驱动有三种获取转子位置的方式霍尔传感器检测、反电动势过零检测、高频注入等无位置传感器算法。硬盘主轴电机内部通常没有霍尔传感器所以一般是用反电动势检测。电机旋转时未通电那一相绕组会切割永磁体磁场感应出一个与转子位置相关的电压这个电压就是反电动势通过检测它的过零点就能知道该在什么时候换相。不过这次实验我刻意没有做反电动势检测而是采用了最简单的开环强制换相不管转子实际在什么位置单片机按固定顺序循环点亮三只MOS管加上精心控制换相频率让转子跟着磁场跑。这种做法的前提是换相频率不能太快转子的机械惯性如果跟不上就会出现失步表现出来就是电机嗡嗡响但不转。换相频率和转速的关系可以算出来。假设电机极对数是4三拍方案下每转一圈需要的拍数是3乘极对数等于12拍。每拍间隔时间记作T秒转速rpm等于60除以12再除以T也就是5除以T。举个例子T等于1毫秒转速就是5000rpmT等于5毫秒转速就是1000rpm。实际调试时我从20毫秒一拍的极慢速度开始确认转子能一步一跟再逐步缩短间隔这个做法非常关键。2.2 MOS管的三个极与“为什么选N-MOS低边”MOS管是金属氧化物半导体场效应晶体管三个极分别是栅极G、漏极D、源极S。对于N沟道增强型MOS导通条件是栅源电压Vgs足够高于阈值电压形成导电沟道电流从漏极流向源极。选管时最关心的参数是漏源耐压Vds、导通电阻Rds(on)、栅极电荷Qg、阈值电压Vgs(th)。实验电源是12V任何耐压30V以上的管子都够用。关键是栅极驱动电压如果单片机只输出3.3V或5V普通MOS管如IRF540N没完全导通管子会发热很厉害。我这次用的是IRLZ44N属于逻辑电平MOSVgs在4V左右就能明显导通3.3V也能勉强跑但最好还是把驱动电压做到10V以上。低边驱动的好处是源极直接接地栅极相对地控制单片机GPIO电平就能工作不需要高边MOS那种悬浮驱动和自举电容。如果要做高边开关栅极电压要高出源极十几伏还得额外设计自举电路对新手很不友好。所以三管方案全部采用低边N-MOS是最省事的路线。还要注意MOS管的米勒效应。开关过程中漏源电压变化会通过栅漏寄生电容反向耦合到栅极在栅极电压波形上形成一个平台期这个平台就是米勒平台。平台持续时间跟栅极驱动电流和管子Qg有关平台越宽开关损耗越大。实验中如果发现MOS管发热厉害用示波器看栅极波形往往能看到平台期明显偏长这时候减小栅极电阻、加快开关速度就能改善。2.3 三管拓扑的连接关系与元件清单三个MOS管和电机的连接关系其实很清晰下面的示意把核心链路画出来12V ──┬──────────────────────┐ │ │ 电机星形中心点 │ │ │ U相 V相 W相 │ │ │ │ │ Q1D Q2D Q3D │ │ │ │ │ Q1S Q2S Q3S ──── GND │ │ │ 栅极电阻角 栅极电阻角 栅极电阻角 │ │ │ MCU引脚 MCU引脚 MCU引脚实际接线时电机中心点不动始终接12V。三相线U、V、W分别接到三只MOS管的漏极。三只MOS管的源极全部接GND。三个栅极通过一个22欧姆左右的栅极电阻接到单片机IO口同时在栅极与GND之间接一个10千欧下拉电阻防止单片机上电瞬间引脚悬空导致MOS管误开通。续流二极管也不能省。MOS管自带体二极管但体二极管反向恢复慢压降也大。我习惯在每个MOS管漏极到12V之间反接一只快恢复二极管或肖特基二极管阳极接漏极阴极接12V换相时绕组电流有续流回路电压尖峰会被钳位住。元件清单如下N-MOS管IRLZ44N三只或者AOD4184、IRLZ24N等低Vgs逻辑电平管快恢复二极管FR107或者SS34肖特基三只栅极电阻22欧姆三只栅极下拉电阻10千欧三只电源滤波电容2200uF/25V电解电容一个100nF陶瓷电容一个断开SW三脚开关一个可选电机的额定电流很小空载只有零点几安我实测峰值也不到一安所以面包板完全够用。但如果你后面想带负载最好用洞洞板或者PCB焊接走线尽量粗电源线用短粗的导线连接。3. 从拆盘到通电的实操全过程3.1 拆开旧硬盘取出主轴电机拆硬盘用普通十字螺丝刀就行。先把硬盘底部PCB拆掉再把盘体四周和顶盖的螺丝全部拧下来揭开盖板就能看到盘片和磁头。硬盘内部无尘环境一旦拆开这个盘基本就报废了所以拆之前想清楚数据是否已经不需要了。盘片很锋利磁头臂上的磁铁吸附力很强用手拿的时候要小心不要让两片强磁铁夹到手指也不要靠近机械手表和手机屏幕。如果原来的盘里有敏感数据拆盘等于把数据暴露出来自己处理时该物理销毁的还是要销毁安全第一。主轴电机在盘片下方固定在铝合金基座上。一般需要卸下中间固定盘片的螺丝把盘片拿走可能还要拆掉一层隔板才能看到电机本体。电机和基座之间通常还有三颗螺丝拧掉后就能把电机整个拿下来。拆的时候注意电机下面的三相引线是从基座孔穿出来的直接在主板上焊接着用烙铁烫下来就行。引脚识别上我拆到的这块盘是四根线三根相线加一根中心线。用万用表电阻档测三根相线两两之间的电阻应该是近似相等的根据我拆到的电机相间电阻在0.8欧姆左右。如果你测的是三根线且任意两根之间的电阻虽有读数却没有单独的中心线那这个电机不适合三管方案需要自己判断内部星点能不能拆出来拆不出来就只能走六管全桥路线。3.2 搭建驱动电路和写换相程序我是在一块面包板上完成搭建的因为电流不大接触不良的问题不算明显。接线顺序建议从电源开始先把12V电源正极经过2200uF电容滤波后接到电机中心点再把三只MOS管按U、V、W顺序插好源极共地漏极接电机相线栅极通过电阻接单片机IO口。主控我用STM32F103最小系统板三个输出引脚选PA6、PA7、PB0随便指定只要代码对得上就行。程序思路非常简单用一个数组表示三拍状态每拍只把对应的那个引脚输出高电平其他两个输出低电平然后延时等待。下面是核心的换相代码片段#define U_PIN GPIO_PIN_6 #define V_PIN GPIO_PIN_7 #define W_PIN GPIO_PIN_0 #define PH_PORT GPIOA void write_phase(uint8_t phase) { // phase: 0-U, 1-V, 2-W HAL_GPIO_WritePin(PH_PORT, U_PIN, phase 0 ? GPIO_PIN_SET : GPIO_PIN_RESET); HAL_GPIO_WritePin(PH_PORT, V_PIN, phase 1 ? GPIO_PIN_SET : GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOB, W_PIN, phase 2 ? GPIO_PIN_SET : GPIO_PIN_RESET); } void bldc_run(uint16_t step_delay_ms) { static uint8_t ph 0; write_phase(ph % 3); ph; HAL_Delay(step_delay_ms); }主循环里不断调用bldc_run把step_delay_ms从20毫秒逐步减小电机就会从慢慢点动加速到连续旋转。这个方式不做PWM调速而是靠换相频率调速对于简单的转起来实验完全够用。有一点必须注意即使三管方案天然就是三个IO里同一时刻只有一个输出高代码里还是要写成“先复位其他两相再置位当前相”顺序不要颠倒。等以后改成六管全桥时这个习惯更是能帮你避开上下桥臂直通的危险。3.3 通电调试与实测数据记录通电前先把换相间隔设成最大我设的是20毫秒。第一次上电电机大概率不会转只会轻微咔哒一声或者连续抖动。这时候不要急着加大速度先确认每一拍转子都有反应。我用手指轻轻拨动电机能感觉到磁阻定位的那种顿手感说明三拍顺序接线没问题。确认没接反后把间隔逐步缩短。20ms对应转速只有250rpm左右明显是顿挫的点动状态。缩减到10ms时转速约500rpm开始有持续的抖动感。到5ms时大约1000rpm电机已经能连续转了。继续缩短到1.2ms左右转速能到4000rpm以上这时候声音变平顺手摸电机外壳已经能感到明显气流声。实测数据我专门记录了一份表格供电是稳压电源12.0V电源限流1A每拍间隔20ms约250rpm电流0.13AMOS管无温升每拍间隔10ms约500rpm电流0.16AMOS管无温升每拍间隔5ms约1000rpm电流0.21AMOS管微温每拍间隔2ms约2500rpm电流0.28AMOS管温热每拍间隔1.2ms约4000rpm电流0.35AMOS管可手触每拍间隔0.8ms约5000rpm电流0.41AMOS管明显升温转速我是按极对数4、三拍每圈12拍推算的再用手机慢动作对着电机轴上的贴纸校了一次误差在5%以内。电流数据和输入电压、电机个体差异有关系但整体趋势是一致的换相间隔越短转速越高电流越大MOS管开关损耗带来的发热越明显。用示波器看栅极波形三路方波依次出现相位间隔约120度幅度12V波形边沿还算陡峭。挂上一个小塑料扇叶后转速会略降电流上升因为负载力矩变大开环系统没有能力补偿这也是后面要继续做反电动势闭环的动机。4. 常见问题与排查技巧实录实验过程肯定会遇到幺蛾子我把自己碰到的问题和网上学员经常问的问题整理了一下按现象、原因、排查顺序记录下来。4.1 电机只抖动不转这个是三管开环方案最常见的现象。大概率是换相频率设得太快转子惯性跟不上磁场一跳过去转子还停在原位等下一拍磁场从旁边跳走时它又没来得及启动就会一抖一抖地原地踏步。排查顺序是先把换相间隔调到20ms甚至30ms观察每一拍转子是否跟着点动。如果点动有磁阻顿挫说明接线和换相顺序对接下来逐步加快。如果极慢时也没有任何反应重点检查三路栅极波形是否正常MOS管G极有没有漏焊、下拉电阻是否把信号拉没了。还有一种情况是换相方向反了这时候转子会往反方向摆动只要把换相顺序从U-V-W改成U-W-V即可。如果电机不转但某一相MOS管很烫先断电检查是不是两个MOS管的漏极接到同一相了。4.2 MOS管发热严重手都摸不住发热的原因有三个。第一是导通损耗Vgs不够高MOS没完全进入导通状态内阻Rds(on)比标称值大很多12V电压下的电流也能把它烤热。第二是开关损耗栅极电阻太大管子通断时经过放大区的时间太长米勒平台宽损耗集中在开关瞬间。第三是换相频率太高开关次数多损耗累积。我的处理办法是先看栅极波形如果上升沿明显变斜把栅极电阻从100欧降到22欧同时改用逻辑电平MOS管。如果Vgs只有3.3V而手头只有IRF540N这种普通管就别硬撑加一级三极管图腾柱驱动或者直接把栅极驱动电压提到10V以上。实验中发现导热硅脂加一个小铝散热片也很管用至少能撑住长时间连续测试。还应该测一下MOS管导通时漏源电压如果Vds接近电源电压的一半说明管子根本没导通处于线性放大区必须换管或者提高栅压。4.3 三管拓扑的硬伤和边界条件三管方案能转但离“好用”还有一段距离。每次只有一相绕组通电定子磁场是跳跃式旋转的力矩波动很大低速段的顿挫感非常明显。开环强制换相没有转子位置反馈负载一变转子跟不上磁场就会失步转速掉下去之后又恢复不回来。启动还有可能停在死点。如果转子初始位置和通电相的磁场方向刚好相差180度单相磁拉力只会把转子压在平衡位置附近不会产生启动转矩。这时候手拨一下转子或者先高频振动一下都能解决但要做一个自动启动策略就需要换一个更完善的算法。这个方案还有一个接线限制必须是中心点可引出的星形绕组电机。三角形绕组或者中心点没引出的电机用不了。我建议新手直接找四线硬盘电机省去很多麻烦。4.4 下一步升级方向如果想要一个真正能调速、带载能力强的实验平台三管方案做完第一版之后可以往三个方向升级。最自然的是做反电动势过零检测。在未导通相上采样电压当反电动势经过零点的时刻标记转子到了特定位置然后延迟一定电角度再换相。硬件上需要一个电阻分压网络加比较器或者直接用单片机的ADC定时采样。这样电机就有了闭合的换相逻辑不会再轻易失步。更常规的路线是改成六管全桥。中心点不再接电源把高边三管补齐换相逻辑从三拍改成标准的六步120度换相配合互补PWM和死区控制性能会好很多。六管全桥的电路复杂度明显增加但这是最接近工业产品的结构。如果想把无刷电机玩到极致可以直接参考STM32F103做FOC驱动用坐标变换把三相电流转换成旋转坐标系下的直轴和交轴分量实现类似直流电机的控制效果。FOC对电流采样精度和主控算力要求高但现在的F103配合ADC和定时器是完全可以跑的。5. 这次实验留下的几个实在体会三个MOS管把一个废硬盘电机转起来这个项目做完之后无刷电机的换相逻辑在我脑子里彻底具象化了为什么需要依次导通、为什么换向要“抢跑”、为什么会有失步现象全都变得很直观。我有个小建议所有类似实验第一次通电前先用5V电压而不是12V供电做冒烟测试因为即使接线错了5V下电流小MOS管和电机不容易烧掉。确认能转再切到12V会安全很多。另外拆旧硬盘取电机的时候电机引线非常细焊接时注意烙铁温度不要太高一次焊好别反复补焊。虚焊是排查电路里最隐蔽的问题有时候比选错元件更让人抓狂先把接线一项项量一遍再改代码能省不少时间。这三只MOS管驱动的电机虽然只能算“玩具级”但只要你把它转起来后面再去做六管全桥、反电动势检测、FOC都会觉得知识体系完整了一块。这个实验最大的意义不是省那几个MOS管而是用最少的元件把无刷电机驱动最核心的换向原理明明白白地摆在了面前。
返回列表