聚丰项目 > 基于AB32VG1的隔震测试台设计

基于AB32VG1的隔震测试台设计

采用AB32VG1开发板通过PID算法实现隔震测试台的反馈控制器设计。首先通过开发板上的10位ADC,将隔振台上的震动速度传感器上的速度模拟信号进行采样,然后经过主程序PID算法计算反馈控制电压,计算结果再经PWM输出,滤波后控制音圈电机驱动隔振台,驱动力与震动速度方向相反,以达到隔振的目的。

meibin2016 meibin2016

分享
1 喜欢这个项目
团队介绍

meibin2016 meibin2016

团队成员

梅斌 博士生

分享
项目简介
采用AB32VG1开发板通过PID算法实现隔震测试台的反馈控制器设计。首先通过开发板上的10位ADC,将隔振台上的震动速度传感器上的速度模拟信号进行采样,然后经过主程序PID算法计算反馈控制电压,计算结果再经PWM输出,滤波后控制音圈电机驱动隔振台,驱动力与震动速度方向相反,以达到隔振的目的。
硬件说明

硬件上主要采用AB32VG1开发板,还需要额外的电路和硬件配合:1、光学平台和支架及悬挂系统;2、Guralp微震仪;3、信号放大电路;4、滤波和压流转换电路;5、音圈电机。

系统硬件结构框图.png

软件说明

软件开发环境采用RT-Thread Studio2.1.3,设备驱动有:GPIO/ADC/PWM 等

软件流程图如下:

软件流程图.jpg

ADC和PWM根据例程稍作修改就可以用了,PID控制算法要根据单片机PID常用算法来编写。

PID反馈控制采用增量式单片机常用算法。PID算法,大家应该比较熟悉,它在很多地方都有应用,如电机速度控制,恒温箱温度控制,四轴飞行器平衡控制等。作为闭环控制系统重要的一种算法,得到了广泛的应用。

PID算法由比例P,积分I,微分D三部分组成。所谓比例部分,就是与输入残差呈线性关系的部分,此值大,控制反应的速度就快,但快到控制目标时,如果还这么快,那就容易控制过头超过预设值,所以还需要积分部分和微分部分,使最终控制结果逼近目标

用C语言来实现PID算法,主要是时域上来实现,有位置式和增量式两种:

位置式:

比例部分: Kp:比例系数  SetValue:预设值  FactValue:当前实际值  Error_1:当前误差

则比例部分为:  Sp  =   Kp*(SetValue - FactValue)

或者    Sp  =  Kp*Error_1

注解:Sp大小反应需要控制的量大小,比如Sp越大,功率越大。当Sp为负值时,表示要超过预设值,如果是电机,则需要反转

积分部分: Ki:积分系数  Error_1:当前误差  Error_2:上一次误差  Error_3:上上一次误差  ........Error_n:开始时的误差

则积分部分为: Si  =  Ki*(Error_1+Error_2+Error_3+......+Error_n)

注解:因为整个是一个过程,所以上一次误差其实就是上一次的当前误差

微分部分: Kd:微分系数  Error_1:当前误差  Error_2:上一次误差 

则微分部分为:  Sd  =  Kd*(Error_1-Error_2)

综上部分的PID得:PID=Sp + Si + Sd = Kp*Error_1 + Ki*(Error_1+Error_2+Error_3+......+Error_n) + Kd*(Error_1-Error_2)

增量式:

 将上述推导的PID记作时间为k时刻的PID控制量,则

    PID(k) =Sp + Si + Sd = Kp*Error_1(k) + Ki*(Error_1(k)+Error_2(k-1)+Error_3(k-2)+......+Error_n(0)) + Kd*(Error_1(k)-Error_2(k-1))        

将上式k=k-1代入得:

    PID(k-1) =Sp + Si + Sd = Kp*Error_1(k-1) + Ki*(Error_1(k-1)+Error_2(k-2)+Error_3(k-3)+......+Error_n(0)) + Kd*(Error_1(k-1)-Error_2(k-2))           

1-2得:

    PID(k) - PID(k-1) =  Kp*(Error_1(k)-Error_1(k-1)) + Ki*(Error_1(k)) + Kd*(Error_1(k)-2*Error_2(k-1)+Error_2(k-2))

PID(k) - PID(k-1)记作detPID

    detPID = Kp*(Error_1(k)-Error_1(k-1)) + Ki*(Error_1(k)) + Kd*(Error_1(k)-2*Error_2(k-1)+Error_2(k-2))

这样就得到了增量式的PID算法,其计算的结果为增加的控制量

增量式的PID有个好处就是只与当前三个误差量有关系,与其他无关,这样就简化的处理过程,而且提高了精度。

参考文献:单片机之PID算法 - LSWen - 博客园 (cnblogs.com)   作者: LSWen

程序的输入是ADC采样的隔振台运动速度,输出是控制隔振台反向运动的控制力。

编译成功的固件,用Downloader v1.9.7下载到芯片。

程序运行逻辑图如下:

逻辑图.jpg

软件模块由主程序和ADC、PWM、PID组成。

调试时串口打印输出的情况:

初步调试输出情况.jpg

演示效果

成果图.jpg

地面振动经过“四线摆”被动隔振悬挂系统后滤除了几赫兹以上的高频振动,隔振台上的残余振动经悬挂的光学平台上摆放的微震仪(震动速度传感器)转换为速度电压模拟信号,通过放大电路盒后变成适合数字采集的电压,通过开发板上的10位ADC进行采样,然后经过主程序PID算法计算反馈控制电压,计算结果再经PWM输出,在电路板上滤波后控制音圈电机驱动隔振台,驱动力与震动速度方向相反,以达到隔振的目的。

代码地址:

https://gitee.com/meibiny/rtt-seismic-isolation

附件

(6.79 MB)下载

评论区(0 )