1、 *****学校 课程设计论文 论文题目:数字液位计 系 部 自动控制系 专 业 生产过程自动化 班 级 学生姓名 学 号 成 绩 2011年 12月 22日 目录 第1章 选题背景及设计指导思想 1.1选题背景 1,2指导思想 第2章 方案论证 2.1设计原理 2.2.系统框图 第3章 单元电路设计 3.1传感器设计 3.2将电容转化
2、成电信号部分 3.3 电信号放大电路设计 3.4A/D转换器设计 3.5 控制软件系电路的设计 3.6 显示电路设计 3.7 软件系统的设计 3.8 误差分析及结果图 第4章元器件清单 第5章 心得体会 参考文献 附录一:系统总图 附录二:程序清单 摘 要::讨论电容式传感器的原理、电容频率转换电路、精确测量频率量的频率测量法,及利用DS1820 测量温度和用单片机进行温度补偿的方法。设计并制作了圆柱形电容器,利用555 振荡电路将容量变化转换成频率的变化,并利用单片机进行测频,通过软件计算液位高度,减小了电容与频率转换的线性误差,具
3、有温度软件补偿功能。通过实验测试,该装置的测量精度优于1cm。 关键词:电容式液位计;频率转换;频率测量 引 言 液位检测在许多控制领域已较为普遍,各种类型的液位检测传感器较多,按原理分有浮子式、压力式、超声波式、吹气式等。各种方式都根据其需要设计完成,其结构、量程和精度适用于各自不同的场合,大多结构较为复杂,制造成本偏高;市面上也有现成的液位计,有投入式、浮球式、弹簧式等,多数成品价格惊人。以上液位计多数输出为模拟量电流或电压,有些为机械指针读数,不能用于远程监视;普遍适用于静止液面,在波动液面易引起读数的波动;也有用
4、电容法测液位的系统,此法是一种简单易行的方案。本文利用圆柱形电容器原理,结合单片机设计出一种智能液位检测装置。 第1章 选题背景及设计指导思想 1.1课题背景 本专业开设了传感器及传感器技术,自动控制原理,单片机,电机拖动,计算机控制技术等课程。本课程设计是在学完这么多课的基础上,为了能更好的掌握这些课的内容,把理论应用于实际而提出来的。旨在发挥我们的设计,创新意识。通过本课程设计可以掌握和巩固传感器的基本设计方法,工业水位的测量方法,放大电路的设计,单片机的基本应用,显示电路的连接等知识。进一步加强对课堂理论知识的理解与综合应用能力,从而提高我们解决问题的能力和创造发明能力。 1,2
5、指导思想 使用电容式液位传感器,设计传感器放大电路,将液位信号转变为标准电信号,将液位值显示出来(液位高度2.5米,显示精度1厘米)。再设计控制电路,控制料罐的进口阀门开度,使其能够稳定在设定的高度值。 具体要求 1).设计以测量显示部分电路为主; 2).要绘制原理框图; 3).绘制原理电路; 4).要有必要的计算及元件选择说明; 5).提供元件清单。 第2章方案论证 2.1设计原理 本设计采用筒式电容传感器采集液位的高度。主要利用其两电极的覆盖面积随被测液体液位的变化而变化,从而引起对应电容量变化的关系进行液位测量。由于从传感器得出的电压一般在0~30mv之间,太小不易测
6、量,所以要通过放大电路进行放大。从放大电路出来的是模拟量,因此送入ADC0809转换成数字量,ADC0809连接于单片机,把信号送入单片机。通过单片机控制水泵的运转。显示电路连接于单片机用于显示水位的高度。该显示接口用一片MC14499和单片机连接以驱动数码管。 2.2.系统框图 被测物理量:主要是指非电的物理量,在这里为水位。 传感器:将输入的物理量转换成相应的电信号输出,实现非电量到电量的变换。传感器的精度直接影响到整个系统的性能,所以是系统中一个重要的部件。 放大,整形,滤波:传感器的输出信号一般不适合直接去转换数字量,通常要进行放大,滤波等环节的预处理来完成。 A/D转换
7、器:实现将模拟量转换成数字量,常用的是并行比较型、逐次逼近式、积分式等。在此用到逐次逼近式。 单片机:目前的数据采集系统功能和性能日趋完善,因此主控部分一般都采用单片机。 显示设备:在此用到8段数码管。 控制设备:控制电动机的运行或关闭。 第三章单元电路设计 3.1传感器设计 3.1.1传感器原理 电容式液位传感器系统; 它利用被测体的导电率, 通过传感器测量电路将液位高度变化转换成相应的电压脉冲宽度变化, 再由单片机进行测量并转换成相应的液位高度进行显示,该系统对液位深度具有测量、显示与设定功能, 并具有结构简单、成本低廉、性能稳定等优点。 3.1.2传感器的组成 图3-
8、1-2 为传感器部分的结构原理图。它主要是由细长的不锈钢管(半径为R1 ) 、同轴绝缘导线(半径为R0 ) 以及其被测液体共同构成的金属圆柱形电容器构成。该传感器主要利用其两电极的覆盖面积随被测液体液位的变化而变化, 从而引起对应电容量变化的关系进行液位测量。 图3-1-2传感器原理图 3.1.3 测量原理 由图1 可知, 当可测量液位H = 0 时, 不锈钢管与同轴绝缘导线构成的金属圆柱形电容器之间存在电容C0 , 根据文献得到电容量为: (1)式中, C0 为电容量, 单位为F ; ε0 为容器内气体的等效介电常数,单位为F/ m; L 为液位最大高度; R1 为不锈
9、钢管半径;R0 为绝缘导线半径, 单位为m。当可测量液位)为H 时, 不锈钢管与同轴绝缘电线之间存在电容CH : (2) 式中, ε为容器内气体的等效介电常数, 单位为F/ m。因此, 当传感器内液位由零增加到H 时, 其电容的变化量ΔC 可由式(1) 和式(2) 得 (3) 由式可知, 参数ε0 , ε, R1 , R0 都是定值。所以电容的变化量ΔC 与液位变化量H 呈近似线性关系。因为参数ε0 , ε, R1 , R0 , L 都是定值, 由式(2) 变形可得:CH = a0 + b0 H ( a0 和b0 为常数) (4)。可见,
10、传感器的电容量值CH 的大小与电容器浸入液体的深度H 成线性关系。由此, 只要测出电容值便能计算出水位。 3.2将电容转化成电信号部分 采用运算法测量电路来转化。该电路由传感器Cx和固定的标准电容Co以及运算放大器A组成,如图3-2所示。 图3-2 运算放大器测量电路原理图 3.3 电信号放大电路设计 由于从传感器得出的电压一般在0~30mv之间,太小不易测量,所以要通过放大电路进行放大,如图3-3所示,采用最基本的比例运算反放大电路. 图3-3 比例放大电路 要将30mV电压放
11、大成5V,根据公式U=-(R1/R2)Uo,所以选择R1=500K,R2=3K,R4=R1//R2,,后边的是一个反相器,把第一个运放得到的电压反相成正的,其中R3=R5=1K,R6=R3//R5。 3.4 A/D转换器设计 本设计采用A/D转换器ADC0809。 ADC0809是CMOS单片型逐次逼近式A/D转换器,由于输出级有8位三态输出锁存器,因而0809的数据输出端可以直接与单片机的数据总线连接。 ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A
12、/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上. ADC0809转换是采用逐次比较的方法完成A/D转换的,由单一的+5V供电,片内带有锁存功能的8路选一的模拟开关,由A,B,C引脚的编码来确定所选通道。0809完成一次转换需要100us左右,输出具有TTL三态锁存缓冲器,可直接连到MCS-51的数据总线上,通过适当的外接电路,0809可对0-5V的模拟信号进行转换。 ADC0809与单片机的接口电路 图3-4
13、 ADC0809与单片机的接口电路 3.5 控制电路的设计 控制电路在这里起到非常重要的作用,在水位测量中测量到水罐中水位的高度,当水位高于2.5m水位时,电动机停转,水泵停止对水罐供水;当水位低于2.5m水位时,电动机起转,水泵开始对水罐供水。其电路图如图3-5所示。 图3-5 控制电路电路图 3.6 显示电路设计 发现需要4位的LED足可满足本设计的显示精度要求,为了减少所需的I/O数量,降低成本,采用动态显示控制方式。通过对显示接口电路的综合分析,发现测距仪利用串行输入BCD码—十进制译码驱动显示器件MC14499来完成与单片机系统的显示接口较为简单可靠。用MC14
14、499设计的LED显示器动态显示接口电路如图3-6所示。 图3-6 MC14499设计的LED显示器动态显示接口电路 用MCS - 51系列单片机作为控制核心的水位测量计,其数据输出既可以通过单片机的通用I/O口输出,也可以通过单片机的串口用串行方式输出。这里假设使用的单片机是8051 ,单片机的P1口为数据输出口, 显示器采用共阴极8段LED, 显示位数为4位,由于一片MC14499 可以驱动4 个LED 显示器,因此该显示接口只需用一片MC14499和单片机连接。图是该动态显示接口的原理图。P1.0用来向MC14499 发送数据,P1.1用来向MC14499发送时钟脉冲,P1.2用于控
15、制单片机输出数据向MC14499串行输入(当P1.2 = 0时,允许MC14499输入数据)。反相器74LS06作为显示器的位驱动, 8 个47Ω的电阻是LED 的限流电阻, 3个5.1kΩ的电阻是上拉电阻,使单片机8031输出电平与MC14499输入电平相兼容。由于MC14499 具有输入自动锁存功能,而串行输入一帧数据又需要一定的时间,所以LED显示的数据不会出现闪烁现象。 3.7 软件系统的设计 软件主要由主程序、定时中断程序、外中断程序组成。其中主程序完成参数的初始化,中断的管理,结果的显示等工作。主程序流程图如下:程序运行开要初始化各种参数,可以默认液位设定值等,之后如果要进入液
16、位设定的话就按SET按键进入液位设定模式,然后进行比较,看当前的液位有没有超过默认的极限值,如果超过了极限值,通过按键UP或DOWN进行液位调节,直至液位到达正常范围;没有超过极限值就正常显示。 报警 >80% 开始 初始化 取液位值 显示液位值 是 否 打开供水阀 取液位值 是 <20% 液位在20%~80%? 液位在20%~80%? 液位在20%~80%? 液位值? 关闭供水阀 显示液位值 >90% 取液位值 是 显示液位值 <10% 报警 5分钟后? >30% <30% 报警 3.8数据测试与误差修正 在实际设计中,
17、 取L为100cm,对水位进行实测,当无液时的频率=279.0KHz, 100cm高液位时=3.312KHz,频率最大时小于单片机的最高频率测量范围,频率最小时也不至于降低测频精度。经过测试,实际高度与测试结果如表1。 表1 液位实际高度与测试结果比较 (测试水温20℃) 实际值 0 1 5 10 15 20 25 30 35 42 45 测量值 0 0.6 3.2 6.5 10.7 15.6 21.9 27.5 33.5 41.9 46.1 实际值 50 55 60 65 70 75 80 85 90 95 100
18、 测量值 52.7 59.0 65.8 73.3 78.3 83.8 88.9 94.0 98.1 101.3 104.7 由上表中可知,测量结果是一条波动曲线, 在0cm、20cm处误差较小,为两线的交点,低误差为负,高端误差为正,90cm以后误差逐渐减小,预计在110cm处达到交点。经分段修正后,测量结果如表2。 表2 修正后液位实际高度与测量结果比较(测试水温20℃) 实际值 0 1 5 10 15 20 25 30 35 45 45 测量值 0 1 5.2 10.4 14.8 19.5 24.7 30.1 35.0
19、 39.6 44.6 实际值 50 55 60 65 70 75 80 85 90 95 100 测量值 50.1 54.8 59.8 64.5 70.3 75.4 80.4 85.2 89.3 95.0 99.8 由表2可知,经过修正后,误差小于0.5cm,分辨率为0.1cm。抽样检测不同水温的不同高度,误差都在1.0cm以内,符合设计要求。 液位高度与电压变化曲线: 第4章 元器件清单 元器件 参数 个数 筒式液位传感器 1 电解电容 160nF 1 电解电容 174nF 1
20、 NE5532 3 电阻 500K 1 电阻 3K 1 电阻 5.5K 1 电阻 1K 2 电阻 500 1 电阻 47 8 电阻 5.1K 3 74LS02 2 74LS04 1 数码管 4 ADC0809 1 74LS373 1 NPN 4 PNP 1 MC14499 1 74LS74 1 二极管 1 电解电容 0.015uF 1 MCS-51系列的8051 1 第5
21、章 心得体会 一个多星期的课程设计就在忙碌中匆匆度过,对于这次的测控电路课程设计,总的来说基本完成了课设的任务要求,从这次的课程设计当中也学会了许多的东西,在平时当中我们设计的的程序比较简单,趋于理论化,而这次的课程设计题目趋于生活的实际,做起来有较大的兴趣。由于平时在实验室做实验时,有较多的外接硬件供使用,程序就相对简单一些,而这次的课程设计没有外加的硬件设施,全由汇编语言控制执行,开始时觉得无从下手,经过多方面的搜索资料,慢慢有了头绪,并且发现要用到的知识并非所想象中的那么难以理解,经过一番自学,逐一的弄明白,使自己对这次设计有了很大的帮助。通过将要实现的任务分成多块,然后分而治之,最终
22、将各分功能进行合并,最终获得成功,完成之时,相当有成就感。 在我们平时的学习期间,我们所学的知识都是书本上的一些不大灵活的东西,而且学习期间的这种考核是单科进行,主要是考查我们对本门学科所学知识的记忆程度和理解程度。但我认为这种实践性课程设计则不同,它不是单一地对我们进行某一学科已学知识的考核,而是着重考查我们运用所学知识对某一问题进行探讨和研究的能力。 整个设计的过程,同时也是专业知识的学习过程,而且是更生动、更切实、更深入的专业知识的学习。首先,一个设计是结合科研课题,把学过的专业知识运用于实际,在理论和实际结合过程中进一步消化、加深和巩固所学的专业知识,并把所学的专业知识转化为分析和
23、解决问题的能力。其次,在搜集材料、调查研究、接触实际的过程中,既可以印证学过的书本知识,又可以学到许多课堂和书本里学不到的活生生的新知识。此外,我们在这种自己动手的设计中,对所学专业的某一侧面和专题作了较为深入的分析。在此我感谢赵老师对我的帮助和鼓励! 总之,这次的课程设计对我来说不仅仅是一个很好锻炼自己的机会,它让我感觉到实践才是检验一切真理的唯一标准。 参考文献 【1】何道清、张禾.传感器与传感器技术(第二版).科学出版社 【2】胡寿松.自动控制原理(第五版).科学出版社 【3】阎石.数字电子技术基础(第五版).北京:高等教育出版社 【4】童诗白、华成英编.模拟电子技术
24、基础(第四版).北京:高等教育出版社 【5】 鲍芳,王春茹. 新型单片机频率测量系统的研究[J ] . 微机与应用,2001 【6】 龙北生,任庆凯. 电容式智能温度仪的硬件设计[J ] . 长春工程学院学报,2001 ,2 (1) 【7】阮亚婕.智能电容式液位计系统设计.仪表技术,2002,6 【8】朱玉玺,崔如春,计算机控制技术,电子工业出版社 【9】江力 单片机原理应用技术 清华大学出版社 附录一:系统总图 附录二:主要程序清单 ----------------------MC144999显示程序---------------------------
25、 MC14499XS: MOV P2.4,#0 ;将使能端清零,使能端低电平有效 MOV P2.3,#1 ;将时钟信号置1 MOV 30H,#8 ;将8位依次送入MC14499驱动芯片 MOV A,30H AA: ANL A,#01H ;使第一位数码管显示 MOV P2.2,A MOV 30H,A RR A DJNZ 20H,AA MOV P2.4,#1 MOV P2.3,#0 ACALL DELAY1 MOV P2.4,#0 ;将使能端清零,使能端低电平有效 MOV P2.3,#1 ;将时钟信号置1 MOV 30H,#
26、8 ;将8位依次送入MC14499驱动芯片 MOV A,30H BB: ANL A,#01H ;使第二位数码管显示 MOV P2.2,A MOV 30H,A RR A DJNZ 20H,BB MOV P2.4,#1 MOV P2.3,#0 ACALL DELAY1 MOV P2.4,#0 ;将使能端清零,使能端低电平有效 MOV P2.3,#1 ;将时钟信号置1 MOV 30H,#8 ;将8位依次送入MC14499驱动芯片 MOV A,30H CC: ANL A,#01H ;使第三位数码管显示 MOV P2.2,
27、A MOV 30H,A RR A DJNZ 20H,CC MOV P2.4,#1 MOV P2.3,#0 ACALL DELAY1 MOV P2.4,#0 ;将使能端清零,使能端低电平有效 MOV P2.3,#1 ;将时钟信号置1 MOV 30H,#8 ;将8位依次送入MC14499驱动芯片 MOV A,30H DD: ANL A,#01H ;使第四位数码管显示 MOV P2.2,A MOV 30H,A RR A DJNZ 20H,DD MOV P2.4,#1 MOV P2.3,#0 ACALL DELAY1
28、 RET ---------------------------初始化程序----------------------------- 晶振:12MHZ ; WATER EQU 32H ;设定的水位值 NUB_VAL EQU 34H ;加1、减1的暂存值 WATER_1 EQU 36H ;采集到的水位值 WATER_NUM EQU 30H ; ORG 0000H LJMP START ORG 0030H START: MOV SP,#60H ;设置堆栈值 MOV IE,#00H ;屏蔽所有的中断信号 MOV
29、 TCON,#00H ; MOV TMOD,#10H ;选用T0定时/计数器 SETB P2.1 ;关水泵电机 MOV R0,#20H MOV R1,#20H MOV A,#00H START_1: MOV @R0,A INC R0 DJNZ R1,START_1 START_2: CLR P2.1 ;开水泵电机 MOV WATER,#2.5H ;初始水位值设为2.5m -------------------------主程序--------------------------
30、 MAIN: ACALL DISPLAY MOV A,WATER_NUM CJNE A,WATER,MAIN1 CLR C MAIN1: JC MIAN2 CLR P2.1 ;启动水泵 LJMP MAIN MAIN2: CJNE A, WATER,MAIN3 CLR C MAIN3: JNC MAIN4 SETB P2.1 ;关闭水泵 LJMP MAIN MAIN4: CLR P2.1 ;水泵复位 LJMP MAIN ----------------------A/D转换程序---------------------
31、 ORG 0000H LJMP A/D_ABCD ;转主程序 ORG 0003H ;中断服务程序入口地址 LJMP INT0F ;中断服务程序 ORG 0100H A/D_ABCD: MOV R0,#30H ;内部数据指针指向30H单元 MOV DPTR,#7FF8H ;指向P2.7口,且选通IN0(低三位地址为 000H) SETB IT0 ;设置外部中断0为下降沿出发 SETB EX0 ;开允许中断 SETB EA ;开总中断允许 MOVX @DPTR,A ;启动A/D转换 LJMP $ ;等待转换结束中断 ----------------------A/D中断服务程序--------------------------- INT0F: MOVX A,@DPTR ;取A/D转换结果 MOV @R0,A ;存结果 CLR EX0 ;关中断允许 RETI ;中断返回 23






