欢迎来到天天文库
浏览记录
ID:38720733
大小:343.50 KB
页数:17页
时间:2019-06-18
《设计一种PID控制算法,实现对海水流量的控制;》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、摘要:本文介绍了一种PWM结合数字PID算法在液体流量变量控制系统中的应用方案,系统以AVR单片机atmega32为核心,以比例电磁阀为控制对象,利用atmega32的PWM功能,采用数字PID调节实现液体流速闭环控制。仿真结果表明采用PWM和数字PID控制液体流速具有良好的动态、稳态性,从而证明了这种设计的合理性和优越性。关键词:AVR单片机PWM PID比例电磁阀1. 引言液体流量控制通常采用电磁阀实现,近年来,电磁阀的结构和控制方式发生了很大的变化,随着计算机进入控制领域,以及新型的电力电子功率元器件的不断出现
2、,使采用全控制的开关功率元件进行脉宽调制(pulsewidthmodulation,简称PWM)控制方式得到了广泛的应用。这种控制方式很容易在单片机中实现,从而为电磁阀的控制数字化提供了契机。 将偏差的比例(proportion)、积分(integral)、微分(differential)通过线性组合构成控制量,用这一控制量对被控对象进行控制,这样的控制器称PID控制器。PID控制器最早出现在模拟控制系统中,传统的模拟PID控制器是通过硬件(电子元件、气动和液压元件)来实现它的功能。随着计算机的出现,把它移植到计算机
3、控制系统中来,将原来的硬件实现的功能用软件来代替,因此称作数字PID控制器,所形成的一整套算法则称作数字PID算法。数字PID控制器与模拟PID控制器相比,具有非常强的灵活性,可以根据试验和经验在线调整参数,因此可以得到更好的控制性能。2. 液体流量控制系统组成本系统采用AVR系列的atmega32单片机为核心,通过设置atmega32的PWM控制寄存器产生脉宽可调的PWM波,对比例电磁阀的输入电压进行调制,从而实现了对液体流量的变量控制。单片机统过涡轮流量计采集实际流量信号,根据该信号在其内部采用数字PID算法对P
4、WM控制寄存器的值进行修改,从而达到精确的变量控制。为了防止外界干扰信号进入控制系统,单片机和涡轮之间采用光藕隔离,提高了系统的可靠性。温度传感器和压力传感器用来做监测喷杆中的压力和温度。通过4*4键盘和128*64液晶模块实现人机对话,便于用户操作。系统原理图如图2-1所示: 3硬件部分3.1PWM驱动电路 单片机输出的PWM脉冲信号分别经7406和7407输入到Q1,Q2的G极,在每个PWM周期的高电平区间,Q1导通,Q2截止,电磁阀导通。在每个PWM周期的低电平区间,Q1截止从而切断了电源,电磁阀的感应电动势经
5、Q2内部续流二极管形成回路。此时Q2的G极为高电平但是由于二极管的钳位作用使开关二极管关闭,因此通过调整单片机的PWM波就可以实现电磁阀输入电压占空比的调节,从而实现对流量的调节。3.2比例电磁阀比例电磁阀在上世纪60年代末就已经得到了应用,最初是用于液压控制系统。随着单片机和集成电路的发展,其逐渐应用到各种液体的流量控制中。比例型电磁铁的工作原理如下:线圈通电后,轭铁和衔铁内部产生磁通并产生电磁吸力,将衔铁吸向轭铁,同时衔铁上的弹簧受到压缩,当衔铁上的电磁力和弹簧力平衡时,衔铁停止位移。比例型电磁铁的吸力在有效行程
6、范围内和线圈的电流或电压大小具有线形关系。因此通过调解输入的电流或者电压就可以控制其开口的大小,从而达到变量控制的目的。本系统采用的比例电磁阀特性曲线如图3-1所示:(Kvs代表比例电磁阀最大开口时的流量,Kv代表对应某一电压或者电流值时的流量值)。 图3-14. 软件部分4.1PWM波的产生设计采用单片机atmega32产生PWM信号。atmega32的定时/计数器的PWM模式可以分成快速PWM和频率(相位)调整PWM两大类。本设计采用快速PWM模式,快速PWM可以的到比较高频率的PWM输出,响应比较快,因此具有很
7、高的实时性。此时计数器仅工作在单程正向计数方式,计数器的上限值决定PWM的频率,而比较匹配寄存器的值决定了占空比的大小。快速PWM模式的控制寄存器设置如下: //输出端口初始化 PORTD=0x44; DDRD=0x20; //T/C1初始化 TCCR1A=0xC3;/*比较匹配时OC1A输出高电平,在top值时清零ICP下降沿捕捉, 时钟1/8分频(暂定),即工作在反相pwm模式*/ TCCR1B=0x0A;//10位快速pwm模式 TCNT1H=0x00;//startat0 TCNT1L=0x
8、00;4.2 PID算法 图4-1常规的PID算法的基本原理如下图4-1所示,模拟PID控制器的控制规律为 图4-2用C编程实现程序如下所示:voidPID(){floatu; //电压差值 sintz;
此文档下载收益归作者所有