基于stm32单片机的直流电机速度控制——LZW

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

  • 一、实验目的
  • 二、实验方法
  • 三、实验设计
    • 1.实验器材
    • 2.电路连接
    • 3.软件设计
      • (1)实验变量
      • (2)功能模块
        • a)电机接收信号计算
        • b)电机速度计算
  • 四、实验步骤
    • 1.系统辨识
    • 2.加权函数设计
    • 3.合成控制器
    • 4.控制器降阶
    • 5. 检查闭环系统稳定性
    • 6. S/T的Bode图
    • 7. 转换为离散控制器
  • 五、实验结果
    • 1.阶跃响应
    • 2.抗阶跃干扰
    • 3.抗正弦干扰

一、实验目的

  本实验采用H∞混合灵敏度算法设计直流电机速度控制器,并通过stm32f407单片机进行实物控制,具体满足以下要求:

1.通过开发板上按键实现正反转控制,通过螺旋电位器实现电机加减速控制
2.使电机具有足够的稳定裕度和良好的跟踪性能
3.能够抑制0.1Hz以下的低频干扰

二、实验方法

  H∞控制是指设计一个控制器K使闭环系统稳定且干扰对系统期望输出影响最小,所以利用H∞范数(传递函数的H∞范数可以描述输入到输出的最大增益)作为目标函数对系统进行优化设计。
基于stm32单片机的直流电机速度控制——LZW_第1张图片

图1 H∞控制框图
  图中,P为广义控制对象,P0为系统被控对象,K为控制器,v为控制器输入,u为控制器输出,w为外部输入(包括参考信号和外部扰动),z为系统输出。
  基于混合灵敏度 S /T(S 为灵敏度,T 为补灵敏度)的 H∞ 控制器设计方法折中考虑了系统摄动带来的系统稳定和系统性能问题,对于结构不确定的系统是行之有效的设计方法。为了借助计算机求解控制器,需要把混合灵敏度问题转化为标准的 H∞ 优化问题。

基于stm32单片机的直流电机速度控制——LZW_第2张图片

图2 S/T混合灵敏度控制框图
  在S/T混合灵敏度控制中,所得的稳定控制器必须最小化

在这里插入图片描述

其中,其中w1是S的加权函数,w2是T的加权函数。对于H∞次优控制中,上式等价于

在这里插入图片描述

  因此,S/T 加权函数w1和w2的选取成为影响控制器控制效果的重要因素。S与系统跟踪性能和抗干扰能力相关,因此需要在低频范围增大w1内使S的增益变小。T与系统的鲁棒性和抗噪声干扰能力相关,因此需要在带宽以外增大w2以降低T的幅值。

三、实验设计

  本实验设计结构框图如下:
基于stm32单片机的直流电机速度控制——LZW_第3张图片

图3 实验结构框图

1.实验器材

基于stm32单片机的直流电机速度控制——LZW_第4张图片

图4 实验器材

硬件:
1.STM32F407ZGT6开发板
2.L298N电机驱动模块
3.直流空心杯电机(12V,2000线)
4.螺旋电位器
软件:
1.IDE:MDK-Keil 软件
2.MATLAB
3.串口助手

2.电路连接

基于stm32单片机的直流电机速度控制——LZW_第5张图片

图5 电路接线图
(1)按键KEY0与单片机PE4引脚相连,用于电机正反转控制。
(2)螺旋电位器通过单片机开发板3.3V电压供电,并与单片机PF7引脚相连,用于电机调速。
(3)H桥驱动电路通过单片机开发板3.3V电压供电,其中的IN1、IN2引脚与单片机PF3、PF5引脚相连,OUT1和OUT2引脚与直流电机IN1和IN2引脚相连,实现电机的正反转控制;H桥驱动电路使能端EN A引脚与单片机PB6引脚相连,接收单片机输出的PWM信号,实现电机的调速功能。
(4)直流电机编码器Encoder A、Encoder B引脚通过单片机开发板5V供电,并与单片机PA6、PA7引脚相连,以读取电机的速度反馈。

3.软件设计

(1)实验变量

  实验主要定义以下变量:
基于stm32单片机的直流电机速度控制——LZW_第6张图片

图6 实验定义的变量

  其中,输入信号scmd决定电机最终的速度,actual_speed用于表示电机实际速度,output_cmd用于记录控制器输出信号,DIR用于记录电机方向。并进行以下初始化:
基于stm32单片机的直流电机速度控制——LZW_第7张图片

图7 程序初始化
  其中,通过设置定时器TIM6进行中断操作(测速、计算控制器输出),中断周期为0.01s。定时器TIM4设置为PWM模式,用于控制直流电机的速度。定时器TIM3设置为编码器模式,用于读取编码器信号。初始化ADC3,通过PF7引脚读取旋螺电位器的输入电压,并转化成速度参考信号scmd。

(2)功能模块

a)电机接收信号计算

  电机接收的信号有PWM信号和方向信号,具体代码如下:
基于stm32单片机的直流电机速度控制——LZW_第8张图片

图8 电机PWM信号和方向信号计算代码
  根据输入速度信号(速度参考信号scmd、控制器输出信号output_cmd)的正负判断电机速度,并用变量DIR记录。当DIR=0时,电机正转,单片机PF3引脚置位,PF5引脚复位;当DIR=1时,则相反。根据输入速度信号的模值计算PWM占空比,用变量PWMVal记录,并通过定时器TIM4产生所需的PWM脉冲,从PB6引脚输出到电机驱动模块。

b)电机速度计算

基于stm32单片机的直流电机速度控制——LZW_第9张图片

图9 电机速度计算代码

  实验中定时器周期为0.01s,每个周期需要计算电机每分钟转速,因此将PA6、PA7接收到的脉冲信号乘以6000,电机编码器为2000线,4倍频后为8000,所以再除以8000计算每分钟转速。

四、实验步骤

1.系统辨识

  实验中通过向电机输入伪随机二进制序列(PRBS),并通过最小二乘法计算直流电机传递函数,共采取1200组输入、输出数据:

基于stm32单片机的直流电机速度控制——LZW_第10张图片

图10 电机输入PRBS信号与输出速度
  假定该直流电机为5阶,利用上述数据使用最小二乘法(LSM)计算出该直流电机传递函数为

在这里插入图片描述
  该系统的Bode图为基于stm32单片机的直流电机速度控制——LZW_第11张图片

图11 直流电机Bode图

2.加权函数设计

  根据实验目标,设计以下加权函数:
基于stm32单片机的直流电机速度控制——LZW_第12张图片

|w1|-1 和|w2|-1和的Bode图如下:
基于stm32单片机的直流电机速度控制——LZW_第13张图片

图12 |w1|^-1和|w2|^-1的Bode图

3.合成控制器

根据图2,采用H无穷混合灵敏度方式合成控制器,使用matlab计算出的控制器传递函数为

在这里插入图片描述

4.控制器降阶

  在嵌入式应用程序中,资源是有限的。高阶意味着计算复杂度,采样周期更长。因此,需要降低控制器的阶数,而不显著失去它的属性,本实验采用平衡截断的方式(balanced truncation)将控制器降到4阶:
在这里插入图片描述

5. 检查闭环系统稳定性

  计算闭环传递函数的极点,如果全在负半轴,则系统稳定

基于stm32单片机的直流电机速度控制——LZW_第14张图片

图13 系统闭环极点

6. S/T的Bode图

  将降阶后的控制器(4)带入整个闭环系统,画出S/T(灵敏度/灵敏补)的Bode图:
基于stm32单片机的直流电机速度控制——LZW_第15张图片

图14 灵敏度和灵敏补的Bode图

7. 转换为离散控制器

  将控制器(4)转换为离散控制器,采样周期和控制器中断周期相等(T=0.01s):
在这里插入图片描述

五、实验结果

  将上述控制器(5)通过stm32f407zgt6单片机实现以控制直流电机速度,结果如下。

1.阶跃响应

  阶跃响应效果如下:

基于stm32单片机的直流电机速度控制——LZW_第16张图片

图15 阶跃响应效果

  其中,红线为速度参考信号,黄线为实际电机速度。

2.抗阶跃干扰

  为测试所设计的H∞控制器的抗干扰能力,应用该算法的直流电机启动后5秒后,加入1V阶跃干扰,实验效果如下:

基于stm32单片机的直流电机速度控制——LZW_第17张图片

图16 抗阶跃干扰效果(阶跃响应5s后加入1V阶跃干扰)

3.抗正弦干扰

  电机启动后在控制器后加入频率为0.1Hz、幅值为1V的正弦干扰,结果如下所示:
基于stm32单片机的直流电机速度控制——LZW_第18张图片

图17 抗0.1Hz、1V正弦干扰

  从上图可以看出,该H∞控制器基本可以抑制0.1Hz、1V的正弦干扰。

你可能感兴趣的:(单片机,stm32,嵌入式硬件)