基于stm32的半实物仿平台开发——FreeRTOS、PID控制电机

目录

一、系统方案

1.1 系统基本方案

1.2 程序结构方案设计

二、系统理论分析计算

2.1控制算法的分析

三、硬件的选型

3.1编码器电机的选型

四、源代码


摘要:

        本文基于STM32F103ZET6开发板开发了一个直流电机的实物控制系统,在stm32上开发了基于PID的电机转速控制器。STM32F103ZET6开发板作为FreeRTOS系统控制中心,与电机、传送带、编码器电机、L298N驱动模块、蜂鸣器、OLED显示屏、LED灯一起构成滑块运动状态与电机速度分配的双闭环调速系统。单片机输出占空比可变的PWM波给电机驱动模块,控制电机的速度,从而实现了PID控制器对电机的转速控制。通过编码器反馈电机的速度,PID的位置环准确控制滑块移动的位置和速度之间的关系,采样后反馈给单片机,使电机及时矫正。控制方式采用PID算法,比例环节进行快速响应,积分环节实现无静差,微分环节减小超调,加快动态响应。从而使该系统具有良好的性能,能很好地实现滑块稳定的来回运动、平稳快速的启动静止,具有很好地稳定性。

        关键词:STM32F103ZET6、编码器电机、FreeRTOS、PID、二值信号量

一、系统方案

1.1 系统基本方案

        根据自己想法以及实际应用,设计一个滑块来回运动控制系统,在具有一定抗干扰的能力的情况下完成稳定启动、稳定制动、显示运动速度位置以及极限位置报警等任务。我采用STM32F103ZET6单片机做为主控芯片,用磁编码器来计算电机速度状态,用直流电机带动传送带运动。当滑块运动到极限位置时计算出滑块现在位置(方向、距离),单片机控制PWM波的输出大小来控制机的速与方向,使滑块达到在极限位置静止或反向运动滑块到达极限位置时蜂鸣器发出警报,电机反向运动,在运动的过程中实时显示电机的速度和位置,实现人机交互功能在此系统中通过一个电源,通过2个稳压模块给单片机、OLED显示屏和电机供电

       控制系统框图如图1.1所示。

基于stm32的半实物仿平台开发——FreeRTOS、PID控制电机_第1张图片

1.2 程序结构方案设计

        本次设计采用以FreeRTOS系统为基础,在stm32ZET6控制板上实现。本系统设计5个任务:start_task(),task1_task(),task2_task(),task3_task(),,task4_task(),其中5个任务的功能如下:

        start_task():启动任务,用来创建其他任务。

        task1_task():Led 灯闪烁任务,实现 LED 灯有规律的闪烁。

        task2_task():收集电机的速度值,进行pid计算出占空比,控制电机的转动,同时释放一个二值信号量。

        task3_task():OLED实时显示电机的速度和位置。

        task4_task():电机运动到极限位置时获得二值信号量,蜂鸣器报警。


二、系统理论分析计算

2.1控制算法的分析

系统采用PID来控制电机转动的速度。PID控制器是一种线性控制器。假定系统给定值为rin(t),实际输出值yout(t) ,根据给定值和实际输出值构成控制偏差。公式为:

基于stm32的半实物仿平台开发——FreeRTOS、PID控制电机_第2张图片

式中,kp是比例系数,T1是积分时间常数TD是微分时间常数。

        PID是一个基于负反馈理论的控制方法,所以影响控制效果的好与坏大部分依赖于编码器获得数据的精确程度。电机开始工作后,编码器不断采集当前电机状态,并与之前的状态进行比较,使得滑块运动状态趋于稳定。简单来说,PID控制器各校正环节如下:

        比例环节:比例控制系统的偏差信号error(t)一旦产生,控制器立即产生控制作用,以减小误差,其控制器的输出与输人误差成比例关系。当仅有比例控制时系统输出存在稳态误差。

        积分环节:在积分控制中,控制器的输出与输人误差信号的积分成正比关系。对一个自控制系统,如果在进人稳态后还存在稳态误差,则称这个控制系统是有稳态的或简称有系统长差。为了消除稳态误差,必须在控制器中引人积分项。随着时间的增加,积分项会变大。这样,即便误差很小,积分项也会随着时间的增加而增大,它推动控制器的输出增大使稳态议进一步减小,直到等于零。

        微分环节:反映偏差信号的变化趋势,并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。

2、PID算法框图

基于stm32的半实物仿平台开发——FreeRTOS、PID控制电机_第3张图片


三、硬件的选型

3.1编码器电机的选型

        伺服电机编码器是安装在伺服电机上用来测量磁极位置和伺服电机转角及转速的一种传感器,从物理介质的不同来分,伺服电机编码器可以分为光电编码器和磁电编码器,另外旋转变压器也算一种特殊的伺服编码器,市场上使用的基本上是光电编码器,不过磁电编码器作为后起之秀,有可靠,价格便宜,抗污染等特点,有赶超光电编码器的趋势。

伺服驱动器和编码器是构成伺服系统的两个必要组成部分,伺服驱动器控制部分通过读取编码器获得:转子速度,转子位置和机械位置,可以完成:

        A、伺服电机的速度控制

        B、伺服电机的转矩控制

        C、机械位置同步跟踪(多个传动点)

        D、定点停车

两种常用编码器的优缺点:

        光电编码器优点:体积小,精密,本身分辨度可以很高,无接触无磨损;同一品种既可检测角度位移,又可在机械转换装置帮助下检测直线位移;多圈光电绝对编码器可以检测相当长量程的直线位移(如25位多圈)。寿命长,安装随意,接口形式丰富,价格合理。成熟技术,多年前已在国内外得到广泛应用。缺点:精密但对户外及恶劣环境下使用提出较高的保护要求;量测直线位移需依赖机械装置转换,需消除机械间隙带来的误差;检测轨道运行物体难以克服滑差。静磁栅绝对编码器优点:体积适中,直接测量直线位移,绝对数字编码,理论量程没有限制;无接触无磨损,抗恶劣环境,可水下1000米使用;接口形式丰富,量测方式多样;价格尚能接受。缺点:分辨度1mm不高;测量直线和角度要使用不同品种;不适于在精小处实施位移检测(大于260毫米)。

        在这里,我选用的是增量编码器中的磁编码器。

3.2 驱动模块的选型

我选用的是L298驱动模块。

编码器电机的接线方法如图所示:

基于stm32的半实物仿平台开发——FreeRTOS、PID控制电机_第4张图片

这是一个l298n模块,可以驱动步进电机。

产品参数:

1.驱动芯片:L298N双H桥直流电机驱动芯片

2.驱动部分端子供电范围Vs:+5V~+35V ; 如需要板内取电,则供电范围Vs:+7V~+35V

3.驱动部分峰值电流Io:2A

4.逻辑部分端子供电范围Vss:+5V~+7V(可板内取电+5V)

5.逻辑部分工作电流范围:0~36mA

6.控制信号输入电压范围:   低电平:-0.3V≤Vin≤1.5V    高电平:2.3V≤Vin≤Vss

7.使能信号输入电压范围:   低电平:-0.3≤Vin≤1.5V(控制信号无效)   高电平:2.3V≤Vin≤Vss(控制信号有效)

8.最大功耗:20W(温度T=75℃时)

使用说明:

        步进电机的驱动: 板上的ENA与ENB为高电平时有效,这里的电平指的是TTL电平。ENA为A1和A2的使能端,ENB为B1和IB2的使能端。BJ接步进电机公共端。

模块的原理图:

基于stm32的半实物仿平台开发——FreeRTOS、PID控制电机_第5张图片


四、源代码可主页联系作者获取

你可能感兴趣的:(stm32,pid,freertos,编码器,嵌入式硬件)