控制/MCU
风力摆系统是一种利用风力对物体进行位置控制的设备,在我国虽然还没有成品的销售与应用,但这种控制理论已经应用于方方面面。目前的普遍问题风力摆系统的自动控制水平不高。
系统由五部分构成,分别是控制器AT89S52,驱动电路L298N,风力摆运动部件,摆角度检测电路、人机交互键盘和LCD显示器。
1.1 AT89S52控制器
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在线可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器,时钟频率、存储空间和基本接口完全可以满足系统控制要求。
1.2 L298N直流风机驱动
L298N是一款高输入电压,具有双H桥大电流输出驱动的集成电路,输入信号兼容TTL电平,输入电压最大46V,输出直流电流最大4A,可以驱动直流电机、步进电机或继电器等执行机构。它具有两个使能控制端,在不受输入信号影响的情况下允许器件控制两路输入信号,所以使用一片L298N芯片可以驱动两台直流电机。通过输入PWM脉冲,控制加在直流电机上的平均电压,从而达到控制风机转速[1]。
1.3 MPU6050三维角度传感器
MPU是一款6轴运动检测传感器,包括三轴陀螺仪角速度检测,利用内部16位A/D转换器可以实现检测X、Y、Z轴在±250°、±500°、±1000°与±2000°/s数字量可控输出,三轴加速度检测可以实现±2g,±4g,±8g和±16g范围测量,利用16位A/D转换器输出相应数字量。另外芯片内部集成一个数字运动处理器DMP完成三维运动数据处理或运动姿态识别。
将MPU6050固定在风力摆上,通过它监测摆的角度,同时将采集的数据送给控制器进行处理。MPU6050构成的角度监测电路如图2。
1.4 LCD液晶显示电路
系统采用12864LCD,用于显示角度、幅度等参数,为了节省单片机I/O口资源,LCD选择串行通信方式完成信息传递。
1.5 按键电路
为了能够对风力摆运动的模式、距离和偏转角度等参数进行设定,同时考虑电路简洁,选择独立式结构的五个键组成按键电路,分别接到单片机的I/O口上。
由于风力摆是在运动状态下控制器不断地采集姿态数据并进行判断,然后控制风机对摆的运动轨迹做出修正。这是一种典型的随动系统,由于控制对象的准确数学模型建立较为困难所以采用数字PID控制算法。
PID算法
PID算法就是对偏差的比例(P)、积分(I)和微分(D)进行控制的调节算法[3]。数字化的PID算法如(1)。
[uk=Kpek+TTIj=0kej+TDTek-ek-1] (1)
其中uk是控制量,e(k)是控制偏差,Kp是比例系数,T是系统采样周期,TI是积分时间,TD是微分时间。
由于风力摆的实时性要求较高,要能够迅速对摆的运动做出响应,所以除了比例调节外,必须要有微分调节,由于积分调节过程会增加调节时间,所以算法利用PD调节器进行偏差计算得到控制量。
[e=set_angle-cur_angle]
其中e是摆的偏差,set_angle是摆的设定角度,cur_angle是采集到当前摆的角度。
[u=Kpek+TDTek-ek-1=Kpek+Kd?ek] (2)
其中Kd是微分系数。通过上述算法式计算出控制量u(最后将控制量转变为PWM),利用计算出的PWM控制量控制风机速度,同时反复调整Kp和Kd值使控制系统运动性能符合要求。
实验结果表明,通过反复测试和调整PD调节器参数,风机可控制摆做指定长度直线运动、指定角度直线运动和指定半径的圆周运动,在稳定性、准确性和快速性上能够达到设计要求。
基于STM32的风力摆系统结构图
本系统由微处理器STM32,直流风机及驱动,惯性测量单元MPU6050,OLED显示,4X4矩阵键盘,蜂鸣器构成。系统运行可分为两部分:风力摆的控制部分和预设值输入与显示部分。风力摆控制是由STM32定时器输出频率,占空比可调的PWM波经驱动模块之后,使直流风机的转数与PWM波占空比成线性关系,以此达到控制风力摆摆动的目的。预设值输入与显示是通过矩阵键盘将预设值输入到微处理器。再由处理器将数据送至OLED上显示。MPU6050的三轴加速度数据和三轴角速度数据,经MCU解算之后得到风力摆摆角,形成信号反馈回路。组成闭环控制系统。控制算法为PI调节。
全部0条评论
快来发表一下你的评论吧 !