任意极槽组合双层绕组磁动势计算程序。

最近在折腾电机绕组设计的时候,发现网上现成的磁动势计算工具要么限制极槽组合,要么操作步骤反人类。索性自己用Python搓了个能适配任意整数极槽数的计算程序,实测计算三相双层绕组效果不错,顺手把核心算法和实现逻辑整理出来。

先扔个程序运行效果镇楼。假设要算48槽8极的三相双层绕组,输入参数后直接生成磁动势波形和频谱:

slot = 48
pole = 8
phase = 3
current_phase = [0, -120, -240]  # 三相电流相位差
f_mmf = winding_mmf(slot, pole, phase, current_phase)
plot_mmf_spectrum(f_mmf)  # 频谱分析

![磁动势波形与谐波分布图]

核心算法其实就三板斧:绕组排布矩阵生成、电流瞬时值计算、空间谐波分解。咱们重点看绕组矩阵生成这个最有意思的部分。

双层绕组每个槽分上下层,这里用嵌套字典处理线圈归属关系:

def create_winding_matrix(slots, poles):
    matrix = {}
    coil_pitch = slots // poles  # 极距
    for slot in range(slots):
        matrix[slot] = {
            'upper': None,
            'lower': None,
            'phase_group': (slot // (slots//phase)) % phase  # 相位分组
        }
    for s in range(slots):
        paired_slot = (s + coil_pitch) % slots
        matrix[s]['upper'] = paired_slot
        matrix[paired_slot]['lower'] = s
    return matrix

这个骚操作实现了任意槽数下的自动配对。比如48槽时,第0槽上层会连接到第6槽下层(48/8=6),形成跨越一个极距的线圈。这里用取余运算处理周期性边界,避免写一堆if判断。

电流计算部分要注意时间相位和空间相位的双重影响。举个栗子,A相电流随时间变化是sin(ωt),而分布在空间不同槽位的绕组又自带机械角度偏移:

# 电流瞬时值计算
theta_mech = 2*np.pi * np.linspace(0, 1, slots)  # 机械角度
current = {}
for ph in range(phase):
    time_phase = np.radians(current_phase[ph])
    space_phase = theta_mech * (pole/2)  # 电角度转换
    current[ph] = np.sin(time_phase + space_phase)

傅里叶分解部分用了numpy的fft,但要注意电机绕组特有的谐波特点:

def harmonic_analysis(mmf):
    fft_result = np.fft.fft(mmf)
    harmonics = np.abs(fft_result)[:len(fft_result)//2]
    order = np.arange(len(harmonics)) * (pole/2)  # 转换为谐波次数
    return order, harmonics

这里有个坑点:基波次数不是1而是极对数。比如8极电机的基波是4次谐波,程序里用pole/2做基准实现了自动换算。

实测发现这个程序处理分数槽绕组也稳得一批。比如试了个经典的9槽6极组合:

mmf = winding_mmf(9, 6, 3, [0, -120, -240])

输出频谱清晰显示出主要谐波次数为2、4、8次(对应实际运行中的6极基波和3倍频谐波),和理论分析完全吻合。

完整代码扔在GitHub上了,需要自取。下次打算加个GUI界面和自动报告生成功能,有同好想一起搞的欢迎私信。反正这玩意比手算快多了,妈妈再也不用担心我算绕组算到秃头了。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐