一、STM32 PID
1.PID基础知识
PID即Proportional(比例)、Integral(积分)、Differential(微分)的缩写。顾名思义,PID控制算法是结合比例、积分和微分三种环节于一体的控制算法。
闭环控制是根据控制对象输出反馈来进行校正的控制方式,它是在测量出实际与计划发生偏差时,按定额或标准来进行纠正的。比如控制一个电机的转速,就得有一个测量转速的传感器,并将结果反馈到控制路线上。下图所示,是PID控制原理图。
2.直流电机控制与TB6612
①直流电机原理
调速:改变直流电压的大小。
换向:改变直流电压的极性。
②减速器
作用:降低电机速度、提高输出扭矩。
分类:齿轮减速器、蜗杆减速器、行星齿轮减速器。
③电机实物接线图
④TB6612电机驱动芯片
3.编码器使用教程与测速原理
①编码器概述
编码器是一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感器。测量位置(倒立摆),测量速度(平衡小车)。光电编码器(光学),霍尔传感器(磁式)。
②编码器原理
A、B相输出正交方波信号,存在相位差。根据相位差判断旋转方向,根据单位时间内脉冲个数判断速度。
③编码器软件四倍频技术
四倍频的方法是测量A相和B相的上升沿和下降沿。
单片机如何采集编码器数据:STM32F1、STM32F4采用硬件计数,51采用软件计数。
4.离散化PID入门
根据采样时刻的偏差值计算控制量,需要用使用离散的差分方程代替连续的微分方程。
假设采样时间为10ms,可以用一介差分代替一阶微分,可以用累加代替积分。
5.位置PID控制基础
①理论分析
位置闭环控制就是根据编码器的脉冲累加测量电机的位置信息,并与目标值进行比较,得到控制偏差,然后通过PID,使偏差趋向于0的过程。
离散式PID控制公式,如图所示:
②控制原理图
设定一个目标值,反馈偏差,进行PID控制,驱动电机误差趋近于0。
③C语言实现
Encoder测量值,Target目标值,Bias偏差值,Integral_bias偏差的微分,Last_Bias上次偏差。
放在中断函数调用,比如10ms调用一次中断函数。
6.位置PID控制参数整定
P用于提高响应速度,I用于减小误差,D用于抑制震荡。
7.速度PID控制基础
①理论分析
速度闭环控制就是根据单位时间获取脉冲数测量电机的速度信息,并与目标值进行比较,得到控制偏差,使用PID控制,使偏差趋向于0的过程。
增量式离散PID公式,如下图所示:
②控制原理图
③C语言实现
Encoder测量值,Target目标值,Bias偏差,Last_bias上一次偏差。
8.直流电机速度位置控制实验
①直流电机速度开环控制
1)硬件
电源适配器,控制器,直流电机及支架。控制器上有STM32F103C8T6 芯片,TB6612电机驱动模块,OLED显示屏,电源适配器接口,直流电机接口。
2)IO口介绍及控制原理
AIN1、AIN2连接GPIO,PWMA连接TIMx_CHx口,A01、A02连接电机正负极。
BIN1、BIN2连接GPIO,PWMB连接TIMx_CHx口,B01、B02连接电机正负极。
VM1/2/3连接12V电源,PGND1/2/3接地,VCC接3.3/5V电源,GND接地,STBY接高电平使能。
3)软件设计
用到OLED、Delay模块。
TB6612.c
TB6612.h
Key.c
Key.h
main.c
②直流电机速度闭环控制
1)硬件设计
1、6连接电机正负极;2、5连接电机编码器正负极;3、4连接PB7(TIM4_CH2)、PB6(TIM4_CH1)。
速度闭环控制,即有速度反馈的控制。当Vnow<Vtarget,加大速度;当Vnow>Vtarget,减小速度。
2)软件设计
添加一个定时10ms读取编码器数值的函数(TIM2)。
编码器读数与电机转速的关系:10ms读取一次编码器(100Hz),电机减速比20,霍尔编码器精度13,AB相4倍频,转一圈编码器读数20*13*4=1040。电机转速=编码器读数*100/1040(r/s)。电机本身有误差,一圈编码器读数可能不等于1040,可以加入误差系数。
用到OLED、Key、Delay、TB6612模块。
MotorEncoder.c
MotorEncoder.h
main.c
③直流电机位置闭环控制
用到OLED、Key、Delay、TB6612、MotorEncoder模块。
Key.c
Key.h
TB6612.c
TB6612.h
MotorEncoder.c
MotorEncoder.h
main.c
④直流电机位置闭环控制案例
实验现象:按键按下,前3秒正转2圈,3秒后反转3圈,旋转过程中按键按下电机停止。OLED显示对应参数。