混凝深度处理城市污水厂初步设计_第1页
混凝深度处理城市污水厂初步设计_第2页
混凝深度处理城市污水厂初步设计_第3页
混凝深度处理城市污水厂初步设计_第4页
混凝深度处理城市污水厂初步设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

混凝深度处理城市污水厂初步设计 一、设计目的 随着人们生活水平的不断提高 ,智能化控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子。 数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计使用控制器测温传感器 DS18B20,单片机 AT89E52,用 LED 数码管实现温度显示 ,能准确达到以上要求。 低温的测量常采用具有玻璃外壳的酒精温度计和水银温度计,这类温度计具有价格低廉、性能稳定、直观性强的优点,但也具有易破碎且只能在现场观察的缺点,水银温度计还易造成污染而有害健康。目前,应用最为广泛的是温度敏感元件和二次仪表的组合,既可用于远程显示,也可进行温度报警,还可做到自动记录。 二、设计要求 1、 测量精度 0.5 2、 范围: -50 -110 3、 可测多点温度,演示两点以上 4、 LED 直读显示 5、 可任意设计温度报警的上限与下限 6、 可上传通信( RS232 口) ,也可以相互对通 (485 口 ) 单片机AT89E52 LED 显示 扫描驱动 DS18B20 传感器 报 警 三、数字温度计的总体设计方案 硬件部分 1、 设计思路: 温度只要在所设定的上下温度界限内,就会在显示设备中精确的显示出来,如果温度超过了所设定的温度界限,就发出报警声。能够及时向温度监控人员发出温度超限信息。便于温控人员及时的调整与控制。另外此温度控制器操作简单,体积小,灵敏度高,精度高。 2、总体设计方框图 : 上图所示为数字温度控制器的单体设计方框图。其工作原理为:当该电路上电工作以后,首先扫描驱动刷新 LED 显示,然后,温度传感器采集温度送单片机检查温度的高低是否触发报警,由单片机送出信号经过驱动电路送往显示电路或报警电路。电路图见附录 3、设计所用主要零件 ( 1) DS18B20 传感器 概述: DS18B20 数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样。主要根据应用场合的不同而改变其外观。封装后的 DS18B20 可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。 性能特点: 1、适应电压范围更宽,电压范围: 3.0 5.5V,在寄生电源方式下可由数据线供电。 2、独特的单线接口方式, DS18B20 在与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 3、 DS18B20 支持多点组网功能,多个 DS18B20 可以并联在唯一的三线上,实现组网多点测温。 4、 DS18B20 在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内。 5、温范围 55 +125,在 -10 +85时精度为 0.5。 6、可编程 的分辨率为 9 12 位,对应的可分辨温度分别为 0.5、 0.25、 0.125和 0.0625,可实现高精度测温。 7、在 9位分辨率时最多在 93.75ms内把温度转换为数字, 12位分辨率时最多在 750ms内把温度值转换为数字,速度更快。 8、测量结果直接输出数字温度信号,以 ” 一线总线 ” 串行传送给 CPU,同时可传送CRC 校验码,具有极强的抗干扰纠错能力。 9、负压特性:电源极性接反时,芯片不会因发热而烧毁, 但不能正常工作。 DS18B20与单片机的接口电路(引脚图见右图) DS18B20 可以采用电源供电方式,此时 DS18B20 的第 1 脚接地,第 2 脚作为信号线,第3 脚接电源。 ( 2) 单片机 AT89E52 具有低电压供电和小体积等特点,两个端口刚好满足电路系统的设计需要,很适合便携手持式产品的设计使用。 1、 VCC:电源电压。 2、 GND:地 3、 P0 口: P0 口是一个 8 位双向 I/O 口。口引脚 P1.2P1.7 提供内部上拉电阻, P1.0和 P1.1要求外部上拉电阻。 P1.0和 P1.1还分别作为片内精密模拟比较器的同相输入 (ANI0)和反相输入 (AIN1)。 P1 口输出缓冲器可吸收 20mA 电流并能直接驱动 LED 显示。当 P1 口引脚写入“ 1”时,其可用作输入端,当引脚 P1.2P1.7 用作输入并被外部拉低时,它们将因内部的写入“ 1”时,其可用作输入端。当引脚 P1.2P1.7 用作输入并被外部拉低时,它们将因内部的上拉电阻而流出电流。 4、 P3 口: P3 口的 P3.0P3.5、 P3.7 是带有内部上拉电阻 的七个双向 I/O 口引脚。P3.6 用于固定输入片内比较器的输出信号并且它作为一通用 I/O 引脚而不可访问。 P3 口缓冲器可吸收 20mA 电流。当 P3 口写入“ 1”时,它们被内部上拉电阻拉高并可用作输入端。用作输入时,被外部拉低的 P3 口脚将用上拉电阻而流出电流。 5、 RST:复位输入。 RST 一旦变成高电平所有的 I/O 引脚就复位到“ 1”。当振荡器正在运行时,持续给出 RST 引脚两个机器周期的高电平便可完成复位。每一个机器周期需12 个振荡器或时钟周期。 6、 XTAL1:作为振荡器反相器的输入和内部时钟 发生器的输入。 7、 XTAL2:作为振荡器反相放大器的输出。 ( 3)显示电路 显示电路采用 4 位共阴极 LED 数码管,从 P0 口输出段码,列扫描用 P2.4 P2.7 口来实现,列驱动用 s9013 三极管。 四 、数字温度计的总体设计方案 软件部分 1、设计思路 系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序、按键输入子程序和报警子程序等。 2、程序设计 ( 1)主程序 主程序的主要功能是负责温度的实时显示、读出并处理 DS18B20 的测量温度值,达到报警温度时进行报警,并扫描按键输入。主程序流程图如图 4.1 所示。 ( 2) 温度转换命令子程序 温度转换命令子程序主要是发温度转换开始命令。当采用 12 位分辨率时,转换时间约为 750ms。在本程序设计中,采用 1s 显示程序延时法等待转换的完成。温度转换命令子程序流程图如下图所示 开始 DS18B20 的初始化 温度显示 初始化报警温 度上、下限 读取按键值进行功能转换 RET 扫描按键 发跳过 ROM 命令 发 DS18B20 复位命令 发温度转换开始命令 ( 3) 读出温度子程序 读出温度子程序的主要功能是读出 RAM 中的 9 字节。在读出时须进行 CRC 校验,校验有错时不进行温度数据的改写。得出温度子程序流程图如下图所示。 五、系 统 调试 1、硬件调试 发温度转换开始命令 读取操作, CRC 校验 9 字节完? CRC 校验正确? 移入温度暂存器 发跳过 ROM 命令 发 DS18B20 复位命令 结 束 硬件调试比较简单,首先检查电感的焊接是否正确,然后可用万用表测试 或通电检测,观察是否短路。焊接时需特别注意电容焊接的正负方位是否正确。 2、软件调试 软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序 等的编程及调试 由于 DS18B20 与单片机采用串行数据传送,因此,对 DS18B20 进行读 /写编程时必须严格地保证读 /写时序;否则将无法读取测量结果。本程序采用单片机汇编或 C 语言编写用 Wave3.2 或 Keil C51 编译器编程调试。 软件调试到能显示温度值, 并且可以实时监测,设计就 基本完成。 精度性能衡量可以采用与标准温度计进行测量对比 。由于 DS18B20 的精度很高,所以误差指标可以限制在 0.5以内。 另外, -55 至 +125的测温范围使得该温度计能够胜任一般的温度测量工作 ,其低电压供电特性可做成用电池供电的手持温度计。 DS18B20 温度计还可以在高低温报警、远距离多点测温控制等方面进行应用开发,但在实际设计中应注意以下问题; 1、 DS18B20 工作时电流高大 1.5mA,总线上挂接点数较多且同时进行转换时要考虑增加总线驱动,可用单片机端口在温度转换时导通一个 MOSFET 供电。 2、连接 DS18B20 的总线电缆是有长度限制的,因此在用 DS18B20 进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配等问题。 3、在 DS18B20 测温程序设计中,向 DS18B20 发出温度转换命令后,程序总要等待DS18B20 的返回信号。一旦某个 DS18B20 接触不好或断线,当程序读 DS18B20 时,将没有返回信号,程序进入死循环。这一点在进行 DS18B20 硬件连接和软件设计时要给予一定的重视。 六、设计心得 通过本次设计学习,我们基本掌握了两种重要元器件的使用方法 -测温传感器DS18B20 与 单片机 AT89E52, 并且通过温度计的制作,我们课堂上学到的知识进行运用 ,并在实际操作中发现问题,解决问题,更加增加对知识的认识和理解。 在设计过程中,我们又重新温习了电路图的设计, PCB 的布局,电子元器件的焊接等一系列基础知识,从而让我们深深地体会到基本动手能力对学习和工作的重要性,有时候理论知识遇到理解瓶颈的时候,我们就需要从实际操纵上去理解与升华吧。这可能是工科学习的一种重要的途径。 一个产品的诞生,绝不是某一个人的功劳。设计过程中所遇到的问题是不少的,比如液晶 led 的乱码现象,报警设备无法正常报警等一些问题,在老师和同学们的指导和帮助下,我们成功的解决了这些问题。在此表示衷心感谢!同时也希望以后有更多这样的机会向你们学习请教。 七 、 附录 实验程序代码: #include #includeplatform.h #includeDS18B20.h #includeTemp.h extern unsigned short TempLowerBound,TempUpperBound; extern beep; void main(void) unsigned char num4 = 0,1,2,3; unsigned char key; unsigned short temp; Init_DS18B20(); TempLowerBound = 100; TempUpperBound = 300; beep = 1; while(1) key = key_scan(); if(key = KEY_SET_MIN) SetTempBoundary(SET_LOWER_BOUND); else if(key = KEY_SET_MAX) SetTempBoundary(SET_UPPER_BOUND); temp = ReadTemperature(); ShowTemp(temp); check_alarm(temp); *按键控制 * #include #includeplatform.h #define DATA_PORT P0 #define WEIXUAN_PORT P2 unsigned char code key_table= 0xf7,0xfb,0xfd,0xfe; unsigned char code weixuan_table= 0x10,0x20,0x40,0x80; unsigned char code shuma_table = 0x77,0x42,0x3b,0x6b, 0x4e,0x6d,0x7d,0x43, 0x7f,0x6f; void shuma_display(unsigned char channel, unsigned char num) if( num 15 ) return; WEIXUAN_PORT &= 0x0F; WEIXUAN_PORT |= weixuan_tablechannel; DATA_PORT = shuma_tablenum; void shuma_display_with_pot(unsigned char channel, unsigned char num) if( num 15 ) return; WEIXUAN_PORT &= 0x0F; WEIXUAN_PORT |= weixuan_tablechannel; DATA_PORT = shuma_tablenum|POT; void shuma_setdata(unsigned char channel, unsigned char dat) WEIXUAN_PORT &= 0x0F; WEIXUAN_PORT |= weixuan_tablechannel; DATA_PORT = dat; void delay(unsigned int z) unsigned int x,y; for(x=z;x0;x-) for(y=110;y0;y-); unsigned char key_scan(void) unsigned char temp,key_num = 0; temp = P2; temp &= 0x0F; switch(temp) case 0x0E: key_num = KEY_INC; break; case 0x0D: key_num = KEY_MOVE; break; case 0x0B: key_num = KEY_SET_MAX;break; case 0x07: key_num = KEY_SET_MIN;break; default: break; while(temp != 0x0F) temp = P2; temp &= 0x0F; return key_num; void clear_key(unsigned char *key) *key = 0xFF; * DS18B20 驱动 * #includeDS18B20.h int AlarmMax=500, AlarmMin=200 ; static void delay(unsigned int i); static unsigned char ReadOneChar(void); static void WriteOneChar(unsigned char dat); sbit DQ = P33; unsigned char Init_DS18B20(void) unsigned char x=0,i; DQ = 1; delay(8); DQ = 0; delay(500); DQ = 1; delay(40); for ( i = 16; i 1; i- ) x = DQ; if(!x) break; return ( x ); delay(200); unsigned short ReadTemperature(void) unsigned char a=0; unsigned char b=0; unsigned int T=0; Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0x44); Init_DS18B20( ); WriteOneChar(0xCC); WriteOneChar(0xBE); a=ReadOneChar(); b=ReadOneChar(); T=a+b*256; if (T=0xffff) return 0xffff; if (T0x8000) T=-T; return (0x8000+T*5/8); else return (T*5/8); static unsigned char ReadOneChar(void) unsigned char i; unsigned char dat = 0; for (i=8;i0;i-) DQ = 0; dat=1; DQ = 1; if(DQ) dat|=0x80; delay(4); return(dat); static void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat=1; static void delay(unsigned int i) while(-i); *温度转换、显示以及报警 * #includeplatform.h #includeTemp.h #include sbit beep=P14; sbit baojin=P10; unsigned short TempLowerBound,TempUpperBound; void ShowTemp(unsigned short temp) unsigned char num4; num0 = temp%10; num1 = (temp/10)%10; num2 = (temp/100)%10; num3 = temp/1000; shuma_display(3,num3); delay(4); shuma_display(2,num2); delay(4); shuma_display_with_pot(1,num1); delay(4); shuma_display(0,num0); delay(4); static void show_temp_bit(unsigned char s,unsigned char num) if(s!=1) shuma_display(s,num); else shuma_display_with_pot(s,num); void setting_display(char index,unsigned char num) unsigned char i; static unsigned char

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论