基于STM32和步进电机的DIY数控绕线机设计与制作
2026/9/17 16:25:55 网站建设 项目流程

记得刚入行那会儿,我还在用一个手摇计数器给孩子修电动玩具电机,绕一个定子线圈数到300多匝,中途一个来电打断了思路,结果整卷返工。后来陆陆续续做过三台绕线机,从最简陋的“电机转速表计数版”一路做到现在这台基于STM32和步进电机的数控版本,绕出来的线圈从0.1mm细线到1.0mm粗线都能整齐排布。这篇文章把我这台绕线机的完整制作和研究过程写出来,覆盖机械结构、驱动选型、排线联动算法、调试避坑几个方向,给想自己做一台的朋友一个尽量少走弯路的参考。

1. 为什么自己动手做绕线机

1.1 绕线机到底解决了什么问题

手工绕线的痛点是绕线圈的人都懂的:第一是数不准,绕到后半段精力一分散,计数就容易乱,变压器初级和次级匝数一旦差几十圈,电气性能就完全对不上;第二是排不齐,手工绕的时候线总会不自觉地朝一个方向堆积,层与层之间出现交叉压叠,线圈体积变大、窗口装不下,高频应用时寄生电容也会明显变大;第三是张力不匀,刚开始绕得紧,越往后越松,外层线会陷进内层,做出来的线包又鼓又软。

绕线机要解决的就是这三件事:计数可靠、排线整齐、张力基本恒定。以我做输出变压器为例,初级绕组要绕十几层,每层几十匝,手工绕几乎无法保证每一层都整齐排列,而机器绕只需要设定好线径和槽宽,排线机构就能按每层匝数自动换向,绕出来的线包像打印出来的一样平整。

1.2 目标定位:能干什么、适合谁

这台绕线机的定位是中低成本的DIY数控绕线机,不是商业级的全自动机型。它能处理的典型场景包括:

  • 绕制EI变压器、环形铁芯电感、EMI共模电感;
  • 维修电机时的定子线圈、磁场线圈补绕;
  • 自制电磁铁、加热线圈、传感器线圈;
  • 绕制0.1mm到1.0mm直径的漆包线,最大骨架宽度做到120mm左右,最高主轴转速可以到600rpm。

成本大头是三块:57步进电机加驱动器、丝杆滑台、STM32控制板。整体下来不到四百块,比起成品自动绕线机动辄上千还要等物流,对于常做线圈维修和自制变压器的爱好者来说,性价比是很高的。当然它也有局限性,比如不能绕环型电感的内圈自动化缠带,也没有自动缠胶带功能,属于“半自动”设备——人工装夹、人工换料、机器负责最枯燥的排线计数。

1.3 方案整体拆解

整台设备拆成三个子系统看,思路会非常清晰:

  • 机械系统:机架、主轴总成、排线滑台、张力机构、夹具。这一部分决定了绕出来的线圈机械精度和操作舒适度。
  • 驱动系统:主轴步进电机、排线步进电机、各自的驱动器,以及编码器反馈。这部分决定了运动的可控性和稳定性。
  • 控制系统:STM32主控板、显示面板、按键、逻辑算法。这部分是“大脑”,负责同步排线、换层、计数和启停保护。

三者之间最关键的是控制算法和机械精度的匹配:排线是否整齐,最终取决于主轴转角和排线位移之间是否严格成比例,比例一旦跑偏,轻则线隙变大,重则叠线压线。后面的参数计算部分我会详细展开。

2. 整体设计与关键参数计算

2.1 方案选型:为什么选STM32加开环步进

市面上绕线机的控制方案大致有三类:纯机械计数器方案、PLC加伺服方案、单片机加步进方案。做一个对比更直观:

方案稳定性灵活性成本适合人群
机械计数器计数尚可,无法自动排线换向几乎没有最低偶尔绕一个线圈
PLC加伺服很高,工业级改参数要上位机或文本屏很高小批量生产
单片机加步进足够,关键是算法想加什么功能自己写爱好者和实验者

我最终选择STM32F103C8T6加开环步进,理由很直接:PLC方案虽然稳定,但两轴脉冲同步逻辑要写梯形图或者靠电子齿轮,很多入门朋友不熟悉;STM32官网的例程多、资料多,定时器编码器模式和PWM输出可以直接复用,不用额外买专用运动控制卡。开环步进对于绕线这种负载场景完全够用——绕线的阻力变化远没有铣床切削那么剧烈,只要加减速设置合理,基本不会失步。

2.2 关键参数计算:排线比例是怎么算出来的

这是整篇文章里最需要耐心看的一节,也是绕线机和普通电机转速控制器最大的区别。先设定几个关键参数:

  • 主轴末端装一个500线增量式光电编码器,接STM32定时器编码器模式,4倍频后主轴每转一圈得到2000个脉冲;
  • 排线机构用T8丝杆,导程4mm,配42步进电机,步距角1.8度,16细分时电机转一圈需要3200个脉冲;
  • 要绕的漆包线实测外径0.3mm(注意是包含漆皮的“实际直径”,不是裸铜直径,后面调试章节会专门讲)。

排线的基本要求是:主轴每转过一圈,排线滑台沿轴向位移一个线径,也就是0.3mm。那么排线步进电机需要转多少?0.3mm除以导程4mm,等于0.075圈;16细分下0.075圈对应的脉冲数是3200乘以0.075,等于240个脉冲。

所以得到核心比例:主轴每转一圈输出2000个编码器脉冲,对应排线电机240个脉冲。把比例化简,2000比240等于25比3,也就是主轴每来25个编码器脉冲,排线电机应该走3步。这个25:3就是控制算法里的“电子齿轮”比例。

为什么不能简单地在中断里做除法?因为比例不是整数,如果每25个脉冲发3步,长期精度没问题,但在局部回合,排线电机是走走停停的,每25个主脉冲走3步等于每8.33个脉冲走1步,没法均匀;用批量处理加余数累加的方式可以做到长期无误差。比如代码里每接收100个主轴脉冲就统一处理一次,排线目标步数是100乘3再除以25,等于12步,这些步数在循环里均匀发出,实际绕制效果肉眼看过去就是一条连续的螺旋线,而不是一顿一顿的斜线。

2.3 层数、匝数与换向逻辑

知道了排线比例,接下来解决“什么时候换方向”。设骨架槽宽为20mm,线径0.3mm,理论每层匝数是20除以0.3约等于66匝。需要注意,实际排线时线不一定完全贴满槽宽,尤其在挡板两侧要留出一点压线余量,所以我一般按槽宽除以线径后四舍五入再减1来设定每层匝数,防止最后一圈卡死在挡板里造成凸起。

假设目标总匝数800匝,每层66匝,那么层数就是800除以66再向上取整,等于13层。主控里维护两个变量:当前匝数和当前层数。当前匝数每到66,就触发一次换层动作:排线电机继续向原方向走半个线径的距离,然后在边缘位置原地多绕两圈,再反转排线方向。这段边缘停留的逻辑非常关键,如果到边就立刻反向,边角的第一圈线缺乏支撑,很容易滑脱塌边,整层的整齐度就毁了。

2.4 器件清单

列一下这台机器的主要物料,方便想复刻的朋友有个预算概念:

器件规格大概价格说明
STM32F103C8T6最小系统板淘宝常见款10元左右主控
57步进电机2.0N.m左右50元主轴驱动
TB6600步进驱动器4A级30元主轴驱动
42步进电机0.4N.m20元排线驱动
A4988模块常见款5元排线驱动
500线增量编码器欧姆龙或国产兼容25元主轴角度反馈
T8丝杆滑台导程4mm行程100mm80元排线机构
2020铝型材及配件若干60元机架
轴承座加光轴SC12UU两个30元主轴支撑
三爪卡盘50mm,带法兰60元夹具
OLED显示屏0.96寸I2C10元人机交互
旋转编码器带按键5元参数调节
张力器自制约20元材料20元毛毡加弹簧

总成本四百出头,如果手里已经有部分料,比如旧打印机拆的丝杆和光轴,还能再省一百。

3. 机械结构制作过程

3.1 机架与主轴系统

机架我用2020铝型材搭了一个长400mm、宽200mm、高200mm的框架。型材的好处是组装灵活,后续想加尾座、加防护罩都很方便,不需要焊接。在框架中高度横装一块8mm厚的铝板作为安装底板,长度方向预留出主轴和排线滑台的安装位。

主轴系统是绕线机动力的核心,也是精度最容易翻车的地方。我用的是一根直径12mm的45号钢光轴,大概250mm长,两端由两个SC12UU轴承座支撑,两个轴承座的间距拉到120mm以上,太近的话主轴悬伸部分容易振动。主轴一端通过一个法兰盘连接50mm三爪卡盘,另一端穿过轴承座之后,通过弹性联轴器连接编码器。这里有一点必须提醒:编码器联轴器一定要用弹性联轴器,不能用刚性套筒,因为编码器轴和主轴之间做不到绝对同轴,刚性连接会让编码器轴承受额外弯矩,轻则波形受干扰,重则把编码器轴弄断。

安装顺序上,先把两个轴承座固定在底板上,把光轴穿过轴承座,再用百分表打表找径向跳动。我反复调了快两小时才把径向跳动控制在0.05mm以内。绕普通线圈0.05mm的跳动完全没问题,但如果你要绕高频变压器那种细线多层的线圈,建议把主轴轴承换成一对角接触球轴承,并加预紧螺母,径向跳动能做到0.01mm以内。

3.2 排线机构与张力机构

排线机构直接买T8丝杆滑台,导程4mm,行程100mm,配42步进电机。安装滑台时最关键的是保证丝杆轴线与主轴轴线严格平行,如果不平行,排线头走到两端时,线嘴到骨架表面的距离会变化,直接影响张力稳定性,导致一侧松一侧紧。我的做法是在底板上先用一块直尺靠在主轴光轴上,调整滑台基座侧面与直尺贴合,再锁紧螺栓,误差控制在0.1mm以内。

张力机构是很多人容易忽略的部分。线轴上的线如果直接拉出来绕,会因为线轴的转动惯性产生忽大忽小的张力,绕出来的线包会松松垮垮。我自制了一个毛毡张力器:两片500目毛毡夹住漆包线,外面用弹簧压紧,弹簧压力靠M3旋钮螺栓调节。线从毛毡中间穿过之后,再经过一个固定在滑块上的陶瓷线嘴到达骨架。这套装置的原理很简单——毛毡对线提供一个与线速度基本无关的恒定摩擦力,摩擦力大小通过弹簧压力调整。

实际测试中,细线0.1mm只需要让弹簧微微压住毛毡,粗线0.8mm以上就需要压得比较紧。如果手摸线包时发现外层线能轻易移动,说明张力太松;如果绕细线时线被拉细甚至拉断,说明张力太大。

3.3 夹具与附件

夹具我直接用了50mm三爪卡盘。对于圆形骨架,可以直接用卡盘夹住一根芯轴,再把骨架套在芯轴上;对于方形或扁平骨架,我专门车了一个尼龙方轴头,插入卡盘,骨架套在方轴上就不会打滑。

有一个非常实用的小细节:在三爪卡盘的另一侧加一个尾座顶针。对于长度超过50mm的骨架,如果只用卡盘夹持一端,另一端会在绕线时因离心力甩动,导致线排不齐。我的尾座是用的一个旧的M10丝杆加一个青铜顶尖,高度可调,顶住骨架尾部中心孔后锁死,实测能显著改善长骨架的绕制质量。

排线滑块上还要固定线嘴。线嘴我建议用陶瓷眼或者不锈钢管,内孔比线径大两倍左右,比如绕0.3mm线就用内径0.6mm到0.8mm的线嘴。线嘴安装位置尽量靠近骨架表面,距离在5mm到8mm之间,太远的话线来回摆动的幅度会被放大,排线就不齐了。

4. 电气系统与嵌入式控制实现

4.1 驱动方案与接线

控制板选STM32F103C8T6最小系统板,外围电路很简单。主轴步进电机由TB6600驱动器驱动,方向信号和脉冲信号由主控的PA9和PA8提供;PA8配置成TIM1通道1的PWM输出,通过改变PWM频率就能改变主轴转速,实现梯形加减速。排线步进电机由A4988驱动,脉冲和方向信号分别接PB0和PB1。

编码器使用的是500线增量式光电编码器,A相和B相分别接PA0和PA1,配置为TIM2的编码器模式。这个模式非常方便,硬件电路会自动根据两相相位差计数,不用软件去判断正反转,而且有硬件滤波,对振动干扰的抵抗能力比普通外部中断强很多。

接线要注意的一点是:步进驱动器电源和编码器信号线绝对不能走同一根线槽,编码器线我用双绞屏蔽线,屏蔽层单端接地,避免步进电机启停时产生的尖峰脉冲干扰计数。第一次装机时我图省事把线捆在一起,结果一启动电机,计数就开始乱跳,排查了很久才找到原因。

显示和交互部分用I2C接口的0.96寸OLED,接PB6和PB7;参数调节用带按键的旋转编码器,接三个普通IO口。整体接线表如下:

信号引脚说明
主轴脉冲PWMPA8TIM1_CH1
主轴方向PA9高正低反
排线脉冲PB0步进脉冲
排线方向PB1高正低反
编码器A相PA0TIM2_CH1
编码器B相PA1TIM2_CH2
启动按钮PB5低有效
停止按钮PB6低有效
OLED SCL/SDAPB10/PB11I2C

4.2 排线联动与层数控制逻辑

排线联动的核心代码可以浓缩成一个函数。思路是:在定时器中断里周期性读取主轴编码器计数值,计算与上次读数的差值,再按25比3的比例用Bresenham的思想累积输出排线脉冲。这样做的好处是无论主轴转速怎么变化,排线位移始终与主轴转角严格同步,不会因为加减速而产生积累误差。

void TIM_ISR_Handler(void) { static int err = 0; int cur_count = __HAL_TIM_GET_COUNTER(&htim2); int diff = cur_count - last_count; if (diff < 0) diff += ENCODER_PERIOD; // 处理计数器回绕 last_count = cur_count; // 主轴25脉冲对应排线3步,diff为本次中断间隔内的脉冲数 err += 3 * diff; while (err >= 25) { err -= 25; HAL_GPIO_WritePin(TRAVERSE_PULSE_PORT, TRAVERSE_PULSE_PIN, GPIO_PIN_SET); // 这里根据实际A4988要求,脉冲宽度不能太窄 delay_us(2); HAL_GPIO_WritePin(TRAVERSE_PULSE_PORT, TRAVERSE_PULSE_PIN, GPIO_PIN_RESET); delay_us(2); } }

这段代码初看会有点绕,但它的本质很简单:err里保存的是“累计需要发出的排线脉冲数量”,每来25个主轴脉冲,就释放一个排线脉冲,余数继续累积。由于比例关系由循环里的阈值决定,长期误差就是零,排线头和主轴永远不会越走越偏。

每层匝数的判断放在主循环里。当前匝数由编码器计数除以2000得到。当读到当前匝数达到每层预设匝数时,先执行换层动作:继续向原方向给出半个线径的排线步数,然后原地等待主轴转过3圈,让边角的线压紧,再反转排线方向,层数加一。这3圈的原等待时间,正好也给了操作者一个观察机会,确认边缘线有没有堆积。

4.3 参数设定与交互逻辑

和很多成品绕线机不同,这台机器的所有参数都在OLED菜单里设置。启动后会依次显示四个参数:线径、槽宽、目标匝数、主轴转速设定。旋转编码器可以切换选中的参数,按下确认后进入编辑模式,再旋转就修改数值。界面上实时显示当前层数、当前匝数、目标总匝数,以及主轴当前转速。

实际操作时的一个技巧是:先用最低转速试绕一圈,确认排线方向和线嘴高度正确,再提升到目标转速。这样能避免因为排线方向设反导致整层线全部压在上一层的错误方向,需要拆掉重来。对新手来说,排线方向反了是最容易忽略但破坏力最大的一类错误。

5. 调试过程与常见问题排查

5.1 机械侧常见问题速查

现象原因解决方式
主轴径向跳动大轴承座安装不平行或主轴本身弯曲百分表打表,松轴承座螺栓微调,跳动超过0.1mm建议换轴
排线到两端时线距明显变化丝杆滑台与主轴不平行重新调整滑台安装,以光轴为基准测量
反向排线时在边缘出现凹槽丝杆螺母回差加消隙弹簧,或者程序中反向补偿,我两个都做了
粗线绕制时卡盘打滑骨架孔径比芯轴大用尼龙套或缠绕生料带填隙
主轴高速振动骨架未顶紧或偏心加尾座顶针,降低转速到400rpm以下

5.2 电气与控制侧问题排查

如果说机械问题是“一眼能看到”,那电气问题就是反复折腾人的。我遇到最典型的是编码器计数跳变。第一版接线时编码器信号线和步进电机大电流线并行走线,主轴一启动,显示匝数哗哗乱跳,最多一次跳了几百匝。后来把编码器线改成双绞屏蔽线,并和电源线保持至少10cm距离,问题才消失。其次是A4988的限流电阻电流设置太小,排线电机在低速时力矩不足,出现偶发性丢步,导致某层排线错位。A4988电流设置要根据电机额定电流来调,我用的是42步进电机额定1.2A左右,A4988上的可调电阻,实测运行电流调到0.8A就够用了。

还有一个隐蔽问题:主轴PWM频率很高时,TB6600的PUL输入脉冲宽度如果不够,驱动器会偶发漏脉冲。STM32定时器PWM输出默认频率高、脉宽窄,我在初始化时专门把PWM频率设置为20kHz,占空比50%,确保脉冲宽度满足驱动器要求。这个细节很容易被忽视,但漏脉冲会导致主轴实际转过的圈数比编码器计数少,绕出来的总匝数看起来正常,实际上线圈被绕在了不均匀的位置。

5.3 实战调优:张力、换向和线径实测

张力调节需要一点点手感。绕细线的时候毛毡夹太紧,线会被拉细,匝数一样但电阻升高甚至断线;绕粗线的时候毛毡夹太松,线轴惯性会突然松出一大段,绕出来的线包明显发“虚”。我的经验是,细线绕到接近满层时,因为排线直径累积,骨架实际外径变大,线速度增加,摩擦力会略微变大,这时如果机械张力机构无法自动调节,可以在程序里做一点点速度补偿——当层数超过一半后,主轴目标转速降低10%到20%,给张力机构一个缓和空间。

换向塌边问题我在前面提过,程序里加边缘停留逻辑后基本解决。具体参数:每层最后一圈到位后,排线继续输出0.5倍线径步数,然后保持排线不动,主轴再转2到3圈。停留在边缘的这几圈会把边缘线压实,给下一层反向排线提供一个稳定的侧壁。

线径实测是我绕线机做好之后一个多月才踩进去的坑。0.3mm的漆包线,如果只看标签型号按裸铜线径算,绕出来的层数和预计差不少;漆包线型号里的0.3通常指裸铜直径,加上漆皮实际外径可能在0.33mm到0.35mm。绕线机的每层匝数、排线比例都应该按千分尺量出来的实际外径算,否则会出现“算着能绕完,实际还有一半线没排完”的尴尬。建议每一位做绕线机的朋友,先把要绕的线用千分尺在不同位置量三次取平均值。

5.4 控制逻辑的进一步扩展空间

这台机器目前的控制逻辑对应的是最常用的“等线径、等槽宽”平绕场景,其实这个框架可以很容易扩展出一些进阶功能。

如果绕制的是锥形绕组或者阶梯绕组——比如某些音频变压器要求初级绕组从窄端到宽端渐变排布——那排线比例就不再是固定值,而是随层数变化的函数。现有代码里把排线比例参数改成查表方式,每层重置一次比例就能实现,不需要改硬件。

如果后续加入断线检测,在张力机构的毛毡后面装一个轻触开关,线断后弹簧杠杆回弹触发IO中断,程序里立刻停止主轴并报警,可以避免断线后主轴继续转导致的面目全非。我就计划下一步加这个功能,操作体验会再上一个台阶。

还可以加的参数是“边缘停留圈数”,对不同的线径,边缘需要的停留圈数不同。细线1到2圈就够,粗线可能要3到4圈。这种参数化调整其实是一台DIY绕线机最舒服的地方——反正是自己的代码,想怎么改就怎么改。

6. 最后再聊几句实操心得

这台绕线机做好之后,我拿它绕了一个输出变压器初级绕组和一个电磁阀线圈,效果都很理想。输出变压器初级绕组是0.25mm线,绕了12层,每层75匝,排线整齐到可以拿给朋友炫耀的地步,这放在手工时代完全不敢想。

最想对想动手做的人说的一句话是:别想着一步到位,第一台机器能用、能绕出一个看得过去的线圈就行,后面的心态和需求都会变。我第一次做绕线机也走了很多弯路,光是主轴跳动就调了两三个晚上,但如果因为这些困难就不动手,永远只能被手工绕线的痛苦折磨。先把条件最基础的方案搭起来,解决计数和排线同步两个核心问题,再去优化张力和断线检测,每一步都有实实在在的反馈。

如果你在做绕线机时也遇到类似的问题,欢迎在评论里交流,尤其是排线比例算法和边缘换向这些细节,每个人的方案不同,多碰撞说不定能碰撞出更好的思路。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询