无刷直流电机BLDC 神经网络pid控制 适合课题研究与参考学习 主要包括: 1) BLDC的闭环控制Simulink模型; 2) 基于神经网络PID的无刷直流电机BLDC的转速控制; 3)双闭环控制,转速外环电流内环。

无刷直流电机控制这玩意儿,说难不难说简单也不简单。传统PID调参能把人整崩溃,特别是遇到负载突变或者参数漂移,这时候就该让神经网络出来秀操作了。咱们先从最基础的闭环控制模型开始盘。

在Simulink里搭BLDC模型就像拼乐高,关键得把霍尔信号和PWM生成逻辑整明白。下面这段代码展示了如何用S函数实现换相逻辑:

function [sys,x0,str,ts] = bldc_commutation(t,x,u,flag)
switch flag
  case 0
    sizes = simsizes;
    sizes.NumContStates  = 0;
    sizes.NumDiscStates  = 1;
    sizes.NumOutputs     = 6;
    sizes.NumInputs      = 3;
    sizes.DirFeedthrough = 1;
    sys = simsizes(sizes);
    x0 = [0];
    str = [];
    ts = [0.001 0];
  case 3
    hall = round(u);
    sector = mod(floor((hall(1)*4 + hall(2)*2 + hall(3))/2),6)+1;
    commutation_table = [1 0 0 0 0 1;  % sector1
                         1 1 0 0 0 0;  % sector2
                         0 1 0 0 1 0;  % sector3
                         0 0 0 1 1 0;  % sector4
                         0 0 1 1 0 0;  % sector5
                         0 0 1 0 0 1]; % sector6
    sys = commutation_table(sector,:)';
end

这换相表就是个状态机,根据霍尔信号切换六个功率管的状态。注意ts采样时间得和PWM频率匹配,不然电机转起来能把你午饭颠出来。

传统PID在转速环表现像直男哄女朋友——参数调不好当场翻车。这时候上神经网络PID(NNPID)就有意思了。神经网络负责实时调整PID参数,结构简单得像三层夹心饼干:

class NeuralPID(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(3,8)  # 输入误差、积分、微分
        self.fc2 = nn.Linear(8,3)  # 输出Kp,Ki,Kd
        
    def forward(self, x):
        x = torch.tanh(self.fc1(x))
        return torch.sigmoid(self.fc2(x)) * [5.0, 0.5, 0.1] # 归一化到实际参数范围

训练时用误差平方和作为损失函数,重点是要在阶跃响应、负载扰动多种工况下采集数据。实测发现tanh激活函数比ReLU更适合参数调整,可能因为PID参数需要正负双向调节。

双闭环控制才是实战利器。外环转速用NNPID,内环电流用普通PI。Simulink里这么连:

  1. 转速给定与反馈做差进NNPID
  2. NNPID输出作为电流环给定
  3. 相电流采样值进PI控制器
  4. PI输出生成PWM占空比

电流环的PI参数别整花活,按电机电阻电感算个大概值再微调就行。有个骚操作是把电流环带宽设成转速环的5-10倍,这样两个环路不会打架。遇到电机叫唤(啸叫)就把PWM频率提到15kHz以上,亲测有效。

最后说几个踩过的坑:

  • 霍尔传感器安装角度偏差会导致换相点抖动,用编码器校准能救
  • 神经网络别在线训练,离线训练好再部署,实时性扛不住
  • 双闭环的采样周期要分开,电流环至少1kHz,转速环200Hz足够
  • 过流保护必须做硬件级的,软件保护有延迟会炸管

搞完这些再回头看,BLDC控制就像骑自行车——找到平衡点之后,剩下的就是细微调整姿势了。完整代码打包在GitHub仓库,需要自取(链接见评论区)。下期可能讲讲怎么用强化学习玩电机控制,感兴趣的先点个关注呗。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐