实验一 四线制 PT100 温度采集测量实验
1. 实验目的
1. 四线制 PT100温度传感器测量原理;
2. 掌握 ADuC 单片机数据采集技术;
3. 学习单片机串口通讯原理;
4. 掌握温度的信号测试方法.
2. 实验要求
1.将四线制 PT100温度传感器每秒一次的速率进行采集;
2.四线制 PT100温度传感器用主通道采集,并采用单极性,输入电压范围 ±40mV ,使用外部参考电压 2.5V;
3.采用时间由间隔定时器 TIC 产生的中断控制;
4. 使用串口调试工具显示温度的温度值。
3. 信号采集测量记录表
4. 误差分析
产生实验误差可能的原因:
① 手动测量的弊端。a). 为了测量数据,水箱需要停止加热,测量完数据后才再次进行加热。由于手动测量需要较长的时间,期间水箱散热,水温降低。后续的实验因此受到影响,产生较大的误差。b).
手动测量电流和电压有较大的时间间隔,导致误差。
② 水泵不断搅拌,电机运动产生的热量,会对水温造成影响。 ③ 虽然单片机的输入阻抗非常大,但是不可能是无穷大。因此恒流源的电流并非全部流入Pt100中,有部分流入了单片机。
④ AD 采样前,没有对电压电流采样值进行校准,单片机AD 采样测量的电流电压值可能跟实际值有所偏差。因此,测得的温度跟实际温度也会有所偏差。
5. 实验心得
本次实验,我们系统地进行了一个基于计算机控制的项目,从单片机数据的采集,到单片机串口通信等,将本学期学习的理论知识,和实验相结合,巩固加深了我们对计算机控制系统的了解。
实验二 单水箱液位控制实验
一、 实验目的
1. 了解水泵控制及液位测量原理;
2. 了解单水箱一阶液位控制系统的工作原理;
3. 掌握PID 控制算法编程及其控制参数的调整方法;
4. 了解Matlab 的M 文件编写方法和利用Matlab 制作相应的dll 文件;
5. 学习三容水箱计算机控制实验台控制软件的使用方法。
二、 实验要求
1. 利用三容水箱计算机控制实验台自带控制软件,完成单水箱一阶液位PID 控制参数的调整,达到控制最优效果;
2. 利用Matlab 编写PID 控制算法,实现单水箱液位控制。
三、 实验原理
水泵2和电动球阀1是控制水箱液位的主要控制器。水泵2控制进水口的流
量,作为入水口的控制,通过电压的改变控制其出水流量;电动球阀1作为放水口控制出水口的流量;电动阀1作为进水的总控制,在整个实验期间全开。在本实验中,设置电动球阀1开口度不变,通过改变水泵2的电压实现液位控制。
1. 水泵控制
在水泵控制电路中,ADuC 单片机通过其DAC 脚输出0~5V,并间接控制可调开关电源0~24V 直流电压输出,实现水泵2功率和流量的控制。在ADuC834单片机中,通过设置DAC 专用寄存器的值输出控制。DAC 为12位的寄存器,当DACH=0x0F,DACL=0xFF时,整个控制周期都为高电平,即水泵的控制电压为24V ;当DACH=0x00,DACL=0x00时,整个控制周期都为低电平,水泵的控制电压为0V ;当DACH=0x07,DACL=0xFF时,为50%高电平,水泵控制电压为12V 。
2. 液位软件自动标定操作
在主界面菜单栏中选择设置->液位标定,出现图4所示标定界面,标定对象选择液位1标定,标定公式会出现y=k1x+b1,液位高度1为50,flash 上点击选择打开手动阀1(第一次试验已经默认打开电动阀1,因此不需要再次打开了) 选择开始打水,观察水箱1液位高度到达50mm 时点停止打水(开始打水会变为停止打水键),通过手动阀1进行微调后关闭手动阀;点击AD1采样值,此时会获得50mm 时的AD 采样值;重复上述过程,获取水箱1液位高度在100mm 时的AD 值(获取AD1变为获取AD2),然后点击标定结果可以看到标定结果框中会计算出标定公式,至此标定工作完成,请打开手动阀1将水放掉至任意高度如50mm ,点击验证,在标定验证中可以看到通过该标定公式换算出的当前液位高度,可以与水箱1中的实际液位进行比较,如果标定正确,则两者值接近。最后点击保存,将标定结果存储在数据库中,点击退出。
图4 液位自动标定界面
3. C#-matlab混合汇编
利用Matlab 软件,自行编写算法,生成相应的dll 文件,上位机(C#编写)调用dll 文件实现相应的控制策略(整个过程可以理解为Matlab 生成的dll 相当于一个函数,上位机调用该函数并获得该函数的返回值。)
类C_Matlab_Mixed_Compilation中包含的具体方法(函数)如下EasyFlowPID (简单流量PID )、EasyOnePID (简单一阶液位PID )、EasyTwoPID (简单二阶液位PID )、EasyTempPID (简单温度PID )、CompOnePID (复杂一阶液位PID )、CompTwoPID (复杂二阶液位PID )、CascadeOnePID (一阶串级液位PID )、CascadeTwoPID (二阶串级液位PID )、Feedfor_backOnePID(前馈-反馈液位PID )、Example (示例编程PID )。
四、 实验记录和分析
4.1实验结果:
4.2实验误差分析:
① 液位标定不准确。本实验中,由于系统仅能使用两组数据进行液位标定,数据过少偶然因素较大,液位标定不准确。比如读数误差等随机误差会对实验结果造成影响。
② PID 参数不完善。由实验得到的液位实时图可知,本实验的PID 参数还是不错的。但是响应速度欠佳。达到给定值所需的时间不够快。
③ 软件的缺陷。读取Matlab 制作的dll 文件所需的时间过久,占用资源较大,导致PID 调节滞后,引起超调或响应滞后。
五、 实验心得
通过本次试验,基本了解水泵控制及液位测量原理,单水箱一阶液位控制系统的工作原理,熟练掌握PID 控制算法编程及其控制参数的调整方法,了解Matlab 的M 文件编写方法和利用Matlab 制作相应的dll 文件,学习了三容水箱计算机控制实验台控制软件的使用方法。
实验三 基于组态王的液位PID 控制实验
一、 实验目的
1)了解单水箱一阶液位控制系统的工作原理;
2)掌握组态王软件的使用方法
3)了解水泵控制及液位测量原理;
4)了解组态王软件与基于单片机的采集控制器通讯协议;
5)掌握组态王编程和 PID控制算法编写;
二、 实验要求
1) 用组态王软件完成单水箱一阶液位控制系统;
2) 利用组态王编写PID 控制算法,实现基于水泵控制的单水箱液位控制。
三、 实验原理
水泵 2 和电动球阀1 是控制水箱液位的主要控制器。 水泵 2 控制进水口的流量,作为入水口的控制,通过电压的改变控制其出水流量;电动阀 1作为放水口控制出水口的流量;进水阀 1作为进水的总控制,在整个实验期间全开。在本实验中,设置电动阀 1 开口度不变(但初始开口度可调) ,通过改变水泵 2 的电压实现液位控制。
四、实验结果
五、实验误差分析
④ 液位没有进行标定。由于时间和个人能力有限,本实验没有对液位进行标定,实验采集的数据可能不准确。
⑤ 实验曲线图最小刻度设置过大,导致整体温度曲线过于密集,曲线图不能很好反应实际的温度变化曲线。
六、实验心得
本次实验让我们理论结合实践,对组态王有了更深刻的认识。
通过本次实验,我们了解了单水箱一阶液位控制系统的工作原理, 掌握了组态王软件的使用方法,了解组态王软件与基于单片机的采集控制器通讯协议,掌握组态王编程和 PID控制算法编写,最终用组态王软件完成单水箱一阶液位控制系统实现基于水泵控制的单水箱液位控制。
实验四 基于组态王的温度PID 控制实验
一、实验目的
6. 了解四线制PT100温度传感器测量原理;
7. 掌握组态王软件的使用方法;
8. 了解加热管控制温度的原理;
9. 了解组态王软件与基于单片机的采集控制器通讯协议;
10. 掌握组态王编程和PID 控制算法编写;
二、实验要求
3. 用组态王软件完成温度控制系统;
4. 利用组态王编写PID 控制算法,实现基于固态继电器的加热管温度控制。
三、实验原理
加热管为主要控制器件,温度控制通过加热管功率输出以及温度传感器的反馈来实现水温的温度控制,加热管通过固态继电器来控制加热输出功率,温度传感器用来采集当前水温,从而实现温度控制。
四、实验结果
五、实验误差分析
⑥ 温度没有进行标定。本实验并没有对温度进行标定,实验采集的数据可能不准确。
⑦ 实验曲线图最小刻度设置过大,导致整体温度曲线过于密集,曲线图不能很好反应实际的温度变化曲线。
六、实验心得
本次试验是基于试验三的基础上,进行温度的采集,利用组态王编写PID
控制算法,实现基于固态继电器的加热管温度控制。了解了四线制PT100温度传感器测量原理,掌握了组态王软件的使用方法,了解加热管控制温度的原理,学习了组态王软件与基于单片机的采集控制器通讯协议。
实验一 四线制 PT100 温度采集测量实验
1. 实验目的
1. 四线制 PT100温度传感器测量原理;
2. 掌握 ADuC 单片机数据采集技术;
3. 学习单片机串口通讯原理;
4. 掌握温度的信号测试方法.
2. 实验要求
1.将四线制 PT100温度传感器每秒一次的速率进行采集;
2.四线制 PT100温度传感器用主通道采集,并采用单极性,输入电压范围 ±40mV ,使用外部参考电压 2.5V;
3.采用时间由间隔定时器 TIC 产生的中断控制;
4. 使用串口调试工具显示温度的温度值。
3. 信号采集测量记录表
4. 误差分析
产生实验误差可能的原因:
① 手动测量的弊端。a). 为了测量数据,水箱需要停止加热,测量完数据后才再次进行加热。由于手动测量需要较长的时间,期间水箱散热,水温降低。后续的实验因此受到影响,产生较大的误差。b).
手动测量电流和电压有较大的时间间隔,导致误差。
② 水泵不断搅拌,电机运动产生的热量,会对水温造成影响。 ③ 虽然单片机的输入阻抗非常大,但是不可能是无穷大。因此恒流源的电流并非全部流入Pt100中,有部分流入了单片机。
④ AD 采样前,没有对电压电流采样值进行校准,单片机AD 采样测量的电流电压值可能跟实际值有所偏差。因此,测得的温度跟实际温度也会有所偏差。
5. 实验心得
本次实验,我们系统地进行了一个基于计算机控制的项目,从单片机数据的采集,到单片机串口通信等,将本学期学习的理论知识,和实验相结合,巩固加深了我们对计算机控制系统的了解。
实验二 单水箱液位控制实验
一、 实验目的
1. 了解水泵控制及液位测量原理;
2. 了解单水箱一阶液位控制系统的工作原理;
3. 掌握PID 控制算法编程及其控制参数的调整方法;
4. 了解Matlab 的M 文件编写方法和利用Matlab 制作相应的dll 文件;
5. 学习三容水箱计算机控制实验台控制软件的使用方法。
二、 实验要求
1. 利用三容水箱计算机控制实验台自带控制软件,完成单水箱一阶液位PID 控制参数的调整,达到控制最优效果;
2. 利用Matlab 编写PID 控制算法,实现单水箱液位控制。
三、 实验原理
水泵2和电动球阀1是控制水箱液位的主要控制器。水泵2控制进水口的流
量,作为入水口的控制,通过电压的改变控制其出水流量;电动球阀1作为放水口控制出水口的流量;电动阀1作为进水的总控制,在整个实验期间全开。在本实验中,设置电动球阀1开口度不变,通过改变水泵2的电压实现液位控制。
1. 水泵控制
在水泵控制电路中,ADuC 单片机通过其DAC 脚输出0~5V,并间接控制可调开关电源0~24V 直流电压输出,实现水泵2功率和流量的控制。在ADuC834单片机中,通过设置DAC 专用寄存器的值输出控制。DAC 为12位的寄存器,当DACH=0x0F,DACL=0xFF时,整个控制周期都为高电平,即水泵的控制电压为24V ;当DACH=0x00,DACL=0x00时,整个控制周期都为低电平,水泵的控制电压为0V ;当DACH=0x07,DACL=0xFF时,为50%高电平,水泵控制电压为12V 。
2. 液位软件自动标定操作
在主界面菜单栏中选择设置->液位标定,出现图4所示标定界面,标定对象选择液位1标定,标定公式会出现y=k1x+b1,液位高度1为50,flash 上点击选择打开手动阀1(第一次试验已经默认打开电动阀1,因此不需要再次打开了) 选择开始打水,观察水箱1液位高度到达50mm 时点停止打水(开始打水会变为停止打水键),通过手动阀1进行微调后关闭手动阀;点击AD1采样值,此时会获得50mm 时的AD 采样值;重复上述过程,获取水箱1液位高度在100mm 时的AD 值(获取AD1变为获取AD2),然后点击标定结果可以看到标定结果框中会计算出标定公式,至此标定工作完成,请打开手动阀1将水放掉至任意高度如50mm ,点击验证,在标定验证中可以看到通过该标定公式换算出的当前液位高度,可以与水箱1中的实际液位进行比较,如果标定正确,则两者值接近。最后点击保存,将标定结果存储在数据库中,点击退出。
图4 液位自动标定界面
3. C#-matlab混合汇编
利用Matlab 软件,自行编写算法,生成相应的dll 文件,上位机(C#编写)调用dll 文件实现相应的控制策略(整个过程可以理解为Matlab 生成的dll 相当于一个函数,上位机调用该函数并获得该函数的返回值。)
类C_Matlab_Mixed_Compilation中包含的具体方法(函数)如下EasyFlowPID (简单流量PID )、EasyOnePID (简单一阶液位PID )、EasyTwoPID (简单二阶液位PID )、EasyTempPID (简单温度PID )、CompOnePID (复杂一阶液位PID )、CompTwoPID (复杂二阶液位PID )、CascadeOnePID (一阶串级液位PID )、CascadeTwoPID (二阶串级液位PID )、Feedfor_backOnePID(前馈-反馈液位PID )、Example (示例编程PID )。
四、 实验记录和分析
4.1实验结果:
4.2实验误差分析:
① 液位标定不准确。本实验中,由于系统仅能使用两组数据进行液位标定,数据过少偶然因素较大,液位标定不准确。比如读数误差等随机误差会对实验结果造成影响。
② PID 参数不完善。由实验得到的液位实时图可知,本实验的PID 参数还是不错的。但是响应速度欠佳。达到给定值所需的时间不够快。
③ 软件的缺陷。读取Matlab 制作的dll 文件所需的时间过久,占用资源较大,导致PID 调节滞后,引起超调或响应滞后。
五、 实验心得
通过本次试验,基本了解水泵控制及液位测量原理,单水箱一阶液位控制系统的工作原理,熟练掌握PID 控制算法编程及其控制参数的调整方法,了解Matlab 的M 文件编写方法和利用Matlab 制作相应的dll 文件,学习了三容水箱计算机控制实验台控制软件的使用方法。
实验三 基于组态王的液位PID 控制实验
一、 实验目的
1)了解单水箱一阶液位控制系统的工作原理;
2)掌握组态王软件的使用方法
3)了解水泵控制及液位测量原理;
4)了解组态王软件与基于单片机的采集控制器通讯协议;
5)掌握组态王编程和 PID控制算法编写;
二、 实验要求
1) 用组态王软件完成单水箱一阶液位控制系统;
2) 利用组态王编写PID 控制算法,实现基于水泵控制的单水箱液位控制。
三、 实验原理
水泵 2 和电动球阀1 是控制水箱液位的主要控制器。 水泵 2 控制进水口的流量,作为入水口的控制,通过电压的改变控制其出水流量;电动阀 1作为放水口控制出水口的流量;进水阀 1作为进水的总控制,在整个实验期间全开。在本实验中,设置电动阀 1 开口度不变(但初始开口度可调) ,通过改变水泵 2 的电压实现液位控制。
四、实验结果
五、实验误差分析
④ 液位没有进行标定。由于时间和个人能力有限,本实验没有对液位进行标定,实验采集的数据可能不准确。
⑤ 实验曲线图最小刻度设置过大,导致整体温度曲线过于密集,曲线图不能很好反应实际的温度变化曲线。
六、实验心得
本次实验让我们理论结合实践,对组态王有了更深刻的认识。
通过本次实验,我们了解了单水箱一阶液位控制系统的工作原理, 掌握了组态王软件的使用方法,了解组态王软件与基于单片机的采集控制器通讯协议,掌握组态王编程和 PID控制算法编写,最终用组态王软件完成单水箱一阶液位控制系统实现基于水泵控制的单水箱液位控制。
实验四 基于组态王的温度PID 控制实验
一、实验目的
6. 了解四线制PT100温度传感器测量原理;
7. 掌握组态王软件的使用方法;
8. 了解加热管控制温度的原理;
9. 了解组态王软件与基于单片机的采集控制器通讯协议;
10. 掌握组态王编程和PID 控制算法编写;
二、实验要求
3. 用组态王软件完成温度控制系统;
4. 利用组态王编写PID 控制算法,实现基于固态继电器的加热管温度控制。
三、实验原理
加热管为主要控制器件,温度控制通过加热管功率输出以及温度传感器的反馈来实现水温的温度控制,加热管通过固态继电器来控制加热输出功率,温度传感器用来采集当前水温,从而实现温度控制。
四、实验结果
五、实验误差分析
⑥ 温度没有进行标定。本实验并没有对温度进行标定,实验采集的数据可能不准确。
⑦ 实验曲线图最小刻度设置过大,导致整体温度曲线过于密集,曲线图不能很好反应实际的温度变化曲线。
六、实验心得
本次试验是基于试验三的基础上,进行温度的采集,利用组态王编写PID
控制算法,实现基于固态继电器的加热管温度控制。了解了四线制PT100温度传感器测量原理,掌握了组态王软件的使用方法,了解加热管控制温度的原理,学习了组态王软件与基于单片机的采集控制器通讯协议。