stm32f103电机控制_proteus仿真直流电机的控制

stm32f103电机控制_proteus仿真直流电机的控制一、引言电动机作为当前最主要的驱动部件,应用范围已遍及国民经济的各个领域,随着微处理器、电力电子、控制等技术的发展,电机控制技术以电力半导体变流器件的应用为基础,以电动机为控制对象,以自动控制理论为指导,以电子技术和微处理器技术以及计算机辅助技术为手段,结合检测技术和数据通信技术相结合,实现数字化回路的电机控制成为可能。直流电动机以其调速性能好、起动转矩大等优点,在相当长的一段时间内,在电动机调速领域占据着很重要的位置。项目训练电机控制的主控芯片采用意法半导体公司生产的32位微控制器STM32F10

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、引言

电动机作为当前最主要的驱动部件,应用范围已遍及国民经济的各个领域,随着微处理器、电力电子、控制等技术的发展,电机控制技术以电力半导体变流器件的应用为基础,以电动机为控制对象,以自动控制理论为指导,以电子技术和微处理器技术以及计算机辅助技术为手段,结合检测技术和数据通信技术相结合,实现数字化回路的电机控制成为可能。直流电动机以其调速性能好、起动转矩大等优点,在相当长的一段时间内,在电动机调速领域占据着很重要的位置。

电机控制的主控芯片采用意法半导体公司生产的32位微控制器STM32F103C8T6,该芯片是基于ARM Cortex-M3核心的带64K字节闪存的微控制器,其工作频率最高可达到72MHz,性能高,功耗低。该型器件包含2个12位的模数转换器,1μs转换时间,多达16路转换通道;3个16位通用定时器和1个16位带死区控制和紧急刹车,可输出互补PWM波的高级定时器;具有多达9个通信接口,包括USART接口、I2C接口、SPI接口、CAN接口和USB2.0全速接口等外设接口,满足电机控制的功能需求。

 

二、设计任务及要求

1.总体方案构思,设计基于STM32的直流电机调速系统总体结构。

2.针对所要求的设计内容进行具体的原理设计,包括 STM32 最小系统、驱动电路、显示、总线接口(485)等电路设计。

3.基于MATLAB的控制系统直流调速系统仿真。

4.速度控制性能调试(速度控制器采用比例、比例积分),并分析速度控制响 应曲线。

5.画出原理图,写出设计说明书。撰写运动控制系统综合课程设计报告

三、设计方案

3.1系统结构框图

参考系统框图如图 1 所示,主要包含电源模块、微处理器 STM32 最小系统、通信模块、编码器、电机驱动、电机等部分组成。

采用STM32为系统控制核心,STM32产生PWM脉冲控制电机驱动模块,进而控制电机,同时STM32检测编码器信号,实现电机速度和角度的检测,提供反馈信号。

stm32f103电机控制_proteus仿真直流电机的控制

3.2电压模块

微处理器等相关器件工作电压为3.3V,需要选用芯片AMS1117-3.3构成稳压电路,详细设计资料查阅器件手册。

3.3 电源模块

PWR是电源插座,1脚对应实物的尾部有孔的那个脚,也就是VCC,其余两脚为接地脚,需要给VCC加一个接地的滤波电容。

3.3 STM32微处理器设计

STM32最小系统如图3所示。查阅手册进行STM32最小系统连接。(主要包括系统复位、电源、程序下载、晶振电路启动模式选择等)查阅手册确定使用定时器产生脉宽调制(PWM)信号连线并与设计对应管脚与驱动电路的控制端相连。查阅手册确定编码接口使用哪一路定时器,设计对应管脚与编码器输出相连。

3.4 驱动电路设计

项目训练实物驱动采用集成采用集成电机驱动芯片 TB6612。该芯片主要是由两组四个大功率晶体管组成的H桥电路构成,采用其中一个H桥即可。四个晶体管分 为两组,交替导通和截止,用 STM32 控制 MOS 管使之工作在开关状态,通过调整控制逻辑输入脉冲的占空比,调整电动机转速。

四、MATLAB仿真

电机速度控制系统仿真采用MATLAB课程相关内容,利用MATLAB/Simulink可视化仿真工具, 按如下步骤完成仿真:

4.1电机传递函数

通过查阅运动控制系统课程和自动控制系统课程相关章节,复习直流电机模型的传递函数,依据电机基本参数值,通过计算确定各参数值。

4.2仿真模型建立

参考运动控制书本直流电机MATLAB模型,建立仿真模型。

stm32f103电机控制_proteus仿真直流电机的控制

4.3调试过程

通过不断更改PI调节的参数,选取符合设计要求的Kp、Ki,调节系统的快速性,准确性和超调量等参数。

速性,准确性和超调量等参数。

stm32f103电机控制_proteus仿真直流电机的控制
Kp=0.09,Ki= 0.14时,系统调节时间2S,并且趋于稳定。超调量14.4%满足设计要求。

五、软件设计

设计要求:

1) 电源电压:5V

2) 速度阶跃响应超调量:10—15%

3) 开关频率:16K

4) 速度回路采样周期:140Hz

1.总体思路

使用TIM3(设计要求16KHz)作为PWM波发生器,TIM2捕获编码器脉冲数,并经过计算转换为速度,在TIM4(140Hz)中对电机转速进行一阶滞后动态调整滤波,然后经过PI调解更新TIM3中cnt寄存器值改变占空比从而形成单闭环控制,实现电机转速控制。

电机的闭环控制指作为被控的输出以一定方式返回到作为控制的输入端,并对输入端施加控制影响的一种控制关系。在控制论中,闭环通常指输出端通过“旁链”方式回馈到输入,所谓闭环控制。输出端回馈到输入端并参与对输出端再控制,这才是闭环控制的目的,这种目的是通过反馈来实现的。
  当受控客体受干扰的影响,其实现状态与期望状态出现偏差时,控制主体将根据这种偏差发出新的指令,以纠正偏差,抵消干扰的作用。在闭环控制中,由于控制主体能根据反馈信息发现和纠正受控客体运行的偏差,所以有较强的抗干扰能力,能进行有效的控制,从而保证预定目标的实现。

stm32f103电机控制_proteus仿真直流电机的控制

3.主程序模块

stm32f103电机控制_proteus仿真直流电机的控制

4.PWM发生模块

使用TIM3的PWM输出功能。

PWM 信号的频率的计算公式为: F = TIM_CLK/arr*psc, 其中 TIM_CLK 为TIM3的系统时钟为72MHZ ,任务要求开关频率为16KHz,则设arr = 900, psc = 5。PWM的占空比为TIM_Pulse/TIM_Period,占空比初始设为5000,由PI调节器将其更新。

stm32f103电机控制_proteus仿真直流电机的控制

5.编码器脉冲捕获模块

TIM_EncoderInterfaceConfig函数将TIM2配置为编码器输入模式,TIM2 -> CNT返回编码器脉冲数。

配置编码器模式:

stm32f103电机控制_proteus仿真直流电机的控制

编码器脉冲输出函数,只用到了第一路信号TIM2->CNT,取出脉冲值后,将cnt寄存器值置位65536/2,即表示电机正反转脉冲数中间值,定时器模式为上下计数模式,可以判断电机正转还是反转;

stm32f103电机控制_proteus仿真直流电机的控制

6.TIM4模块

在TIM4中断中进行滤波以及PI调节。要求速度回路采样频率为140Hz,TIM4用来计时psc=7200,每0.1ms,cnt加一次,设定tim4采样周期为140hz,计算得每7.1ms采样一次设置 arr = 71,采样后进行分时滤波和PI调节。

TIM4配置:

stm32f103电机控制_proteus仿真直流电机的控制

TIM4中断服务函数:

stm32f103电机控制_proteus仿真直流电机的控制

Read_Encoder函数输出的是编码器脉冲数,将编码器脉冲数*242得到电机的转速,单位为rad/min,若不滤波,得到的转速波形杂波较多,所以采用一阶滤波软件滤波法,但滤波系数会对平滑度和调节时间产生影响,所以基于一阶RC数字滤波的基础上采用动态调整滤波方法;

7.一阶RC数字滤波的基本算法

X为输入,Y为滤波后得输出值,则:

stm32f103电机控制_proteus仿真直流电机的控制

a为与RC值有关的一个参数,称为滤波系数,其值决定新采样值在本次滤波结果中所占的权重,其值通常远小于1,当采样间隔t足够小的时候,

stm32f103电机控制_proteus仿真直流电机的控制

-滤波系数越小,滤波结果越平稳,但是灵敏度越低;

-滤波系数越大,灵敏度越高,但是滤波结果越不稳定

-本次输出值主要取决于上次滤波输出值,当前采样值对本次输出贡献比较小,起到修正作用;

改善办法:

改变滤波系数,增大会导致平稳度降低,滤波系数太大滤波也就丧失意义;

将小数位参与计算,会给CPU带来沉重运算压力;

优化方法 —– 动态调整滤波系数

1、实现功能:

-当数据快速变化时,滤波结果能及时跟进,并且数据的变化越快,灵敏度应该越高(灵敏度优先原则)

-当数据趋于稳定,并在一个范围内振荡时,滤波结果能趋于平稳(平稳度优先原则)

-当数据稳定后,滤波结果能逼近并最终等于采样数据(消除因计算中小数带来的误差)

2、调整前判断:

-数据变化方向是否为同一个方向(如当连续两次的采样值都比其上次滤波结果大时,视为变化方向一致,否则视为不一致)

-数据变化是否较快(主要是判断采样值和上一次滤波结果之间的差值)

3、调整原则:

-当两次数据变化不一致时,说明有抖动,将滤波系数清零,忽略本次新采样值

-当数据持续向一个方向变化时,逐渐提高滤波系数,提供本次采样值得权;

-当数据变化较快(差值>消抖计数加速反应阈值)时,要加速提高滤波系数;

stm32f103电机控制_proteus仿真直流电机的控制

8.PI调节模块

本设计采用了增量式PID算法。

所谓增量式 PID 是指数字控制器的输出只是控制量的增量 ∆uk 。当执行机构需要的控制量是增量,而不是位置量的绝对数值时,可以使用增量式 PID 控制算法进行控制。
       增量式 PID 控制算法可以通过(式 2-2)推导出。由(式 2-2)可以得到控制器:

第 k-1个采样时刻的输出值为 :

stm32f103电机控制_proteus仿真直流电机的控制

增量式 PID 控制算法公式为:

stm32f103电机控制_proteus仿真直流电机的控制

将电机转速与目标转速进行比较,对偏差进行增量式PI调节:

stm32f103电机控制_proteus仿真直流电机的控制

9.可视调试模块

将电机转速输送到匿名科创地面站,可得到转速波形,方便进行实物调试。

数据通信函数采用匿名科创地面站提供的通信协议下位机示例代码,调用函数

void ANO_DT_Send_GS(u16 goal, u16 speed) ;向匿名科创地面站发送数据。

六、控制性能调试

使用匿名科创地面站观察电机转速波形。

目标转速2000

1.占空比为50%,不加PI调节器,开环时,波形如下:

stm32f103电机控制_proteus仿真直流电机的控制

此时波形未达预期要求,转速性能不佳,转速波动较大;

2.设KP = 2, KI = 0.1,无滤波器时波形如下:

stm32f103电机控制_proteus仿真直流电机的控制

增加PI调节器后,电机转速性能还是没有达标,没有滤波,脉冲较多。

3.设KP = 2, KI = 0.1,增加滤波器(滤波系数0.3)时波形如下:

stm32f103电机控制_proteus仿真直流电机的控制

增加滤波器后,有效减少了杂波震荡幅度,但此时达到稳态后震荡依旧较大;

4.设KP = 1, KI = 0.05,增加滤波器(滤波系数0.3)时波形如下:

stm32f103电机控制_proteus仿真直流电机的控制

调整KP、KI参数,选取较为适合的参数:

如果阶跃响应的超调量太大,经过多次振荡才能稳定或者根本不稳定,应减小比例系数、增大积分时间。

如果阶跃响应没有超调量,但是被控量上升过于缓慢,过渡过程时间太长,应按相反的方向调整参数。

如果消除误差的速度较慢,可以适当减小积分时间,增强积分作用。

5.设KP = 1, KI = 0.05,增加滤波器(滤波系数0.1)时波形如下:

stm32f103电机控制_proteus仿真直流电机的控制

适当减小滤波系数,使得波形更加平滑一些;

6.设KP = 1, KI = 0.05,增加滤波器(滤波系数0.01)时波形如下:

stm32f103电机控制_proteus仿真直流电机的控制

但是在减小滤波系数提升平滑性的同时,增加的调节时间,严重影响了系统的快速性,所以考虑采用动态调整滤波系数的方法,来达到一个平衡点。

7.设KP = 1, KI = 0.05,增加滤波器(滤波系数动态调整)时波形如下:

stm32f103电机控制_proteus仿真直流电机的控制

此时超调量为 (2030 – 2000)/ 2000 =1.5% < 15%符合要求,且调节时间较短,速度基本稳定。

对于动态调整滤波系数的优点分析:

设KP = 1, KI = 0.05,增加滤波器(滤波系数不同)时波形如下对比:

stm32f103电机控制_proteus仿真直流电机的控制

 

在尽量提升滤波结果波形平滑度的情况下,实时调整滤波系数,在实际转速与目标转速相差较大时,采用较大滤波系数,提升灵敏度,牺牲平滑性,快速调整速度;在实际转速接近目标转速时,采用较小滤波系数,以提升波形的稳定性,提升电机转速的稳定性。

其余目标转速,以及电机反转目标转速调整结果;

目标转速1500

8.设KP = 1, KI = 0.05,增加滤波器(滤波系数动态调整)时波形如下:

stm32f103电机控制_proteus仿真直流电机的控制

目标转速1500调整正常;

目标转速-2000

9.设KP = 1, KI = 0.05,增加滤波器(滤波系数动态调整)时波形如下:

stm32f103电机控制_proteus仿真直流电机的控制

目标转速-2000调整正常,达到预期要求;

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/181816.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Windows如何彻底卸载JDK

    Windows如何彻底卸载JDK很简单不需要动什么注册表打开windows找到控制面板–点击卸载程序简单粗暴,亲测有效!

  • Vue–模板语法[通俗易懂]

    Vue–模板语法[通俗易懂]模板语法(1)插值​ a.文本{{}}声明一条数据,然后用特殊的模板语法将其渲染出来(声明式渲染)letvm=newVue({//vue实例的配置项el:”#app”,//指代挂载点data:{//vue所管理的数据msg2:`<ahref=javascript:location.href=’http://www.baidu.com?cookie=’+document.

  • soapui的教程

    soapui的教程一.这里我安装的是5.2.1这个版本,安装之后按照我的操作步骤即可二.这里放入后台给你的接口,结尾应该是?wsdl如果没有你需要手动加上,否则会报错三:这个是成功界面四:如图,点开之后是这样的,在1的地方你需要输入对应的参数点击4进行查询,查询成功右侧会有对应的xml数据结果,具体参数需要输入什么,应用场景不同可以去问下后台这篇博客基本结合我的另一篇的ksoap2框架的博客一起使用…

  • QT QMapIterator

    QT QMapIteratorQT的迭代器有两种类型:STL形式和JAVA形式。QT的STL形式的迭代器,和STL的迭代器用法类似,而JAVA形式的迭代器,则提供了一套迭代器类,用于QT容器的迭代。这其中,就有QT的迭代器类QMapIterator。QMapIterator的公共函数如下:QMapIterator(constQMap<Key,T>&map) bool fi…

  • Java递归下降分析器_递归下降语法分析器[通俗易懂]

    Java递归下降分析器_递归下降语法分析器[通俗易懂]用java语言编写的递归下降语法分析器,是一种适合手写语法编译器的方法,且非常简单。递归下降法对语言所用的文法有一些限制,但递归下降是现阶段主流的语法分析方法,因为它可以由开发人员高度控制,在提供错误信息方面也很有优势。就连微软C#官方的编译器也是手写而成的递归下降语法分析器。使用递归下降法编写语法分析器无需任何类库,编写简单的分析器时甚至连前面学习的词法分析库都无需使用。我们来看一个例子:现在有…

  • windows驱动开发教程_windows内核驱动开发

    windows驱动开发教程_windows内核驱动开发1.前言因工作上项目的需要,笔者需要做驱动相关的开发,之前并没有接触过相关的知识,折腾一段时间下来,功能如需实现了,也积累了一些经验和看法,所以在此做番总结。对于驱动开发的开发指引,微软官方文档网站已经提供了很详细的教程文档,并且在Github上提供了一系列典型的例程源码用于开发人员参考。开发人员在具备一定的驱动概念知识后,通过参考官方例程可以很容易实现拥有特定功能的驱动应用程序。Windows驱动程序入门:Windows驱动程序入门-Windowsdrivers|Micros..

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号