管道阴极保护点位现场仪表设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

管道阴极保护电位现场仪表设计报告2013/12/14一、设计思路用极化探头KR2测量管道的阴极保护电位,每5min采集一次电位信号经过MAX187的AD转换将电位信号经过89C52单片机进行数据处理后,打开GPRS的电源控制端再经过RS232串行传输到GPRS发送给远端,远端会回发一个确认信号。若确认信号正确就关闭GPRS的电源控制节省能源。同时,为了保证时间的准确以及低功耗,故使用DS1307时间芯片,当计时时间到5min,再唤醒单片机,其余时间单片机工作与睡眠模式。系统工作流程图:极化探头连接原理图:二、选型依据1.LM2596开关电压调节器:LM2596开关电压调节器是降压型电源管理单片集成电路,具有很好的线性和负载调节特性。固定输出版本有3.3V、5V、12V,可调版本可以输出小于37V的各种电压。该器件内部集成频率补偿和固定频率发生器,开关频率为150KHz,与低频开关调节器相比较,可以使用更小规格的滤波元件。在特定的输入电压和输出负载的条件下,输出电压的误差可以保证在±4%的范围内,振荡频率误差在±15%的范围内;可以用仅80μA的待机电流,实现外部断电;具有自我保护电路。如图将12V固定直流输入转化为5V输出电压,符合后续芯片输入电压要求。2.DS1307串行实时时钟:DS1307是一款低功耗,具有56字节非失性RAM的BCD码时钟日历实时时钟芯片.地址和数据通过两线双向的串行总线传输.芯片可提供秒,分,小时,天数,日期,月份,年份等信息.每一个月的天数能自动调整,并具有闰年补偿功能.AM/PM标志位决定时钟工作于24小时或12小时模式.芯片有一个内置的电源感应电路,具有掉电检测和电池切换功能,同时能够输出方波以便通过单片机的外部中断唤醒单片机。SDA和SQW需要外加上拉电阻。3.AT89C52单片机:AT89C52ATMEL公司生产的低电压,高性能CMOS8位单片机.片内含8KbyTES的可反复擦写的只读程序存储器(PEROM)和256byTES。的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和FLASH由存储单元,功能强大AT89C52单片适用于许多较为复杂控制应用场合。4.HK4100继电器:HK4100F继电器,三极管T5的基极B接到单片机的P3.6,三极管的发射极E接到继电器线圈的一端,线圈的另一端接到+5V电源VCC上;继电器线圈两端并接一个二极管IN4148,用于吸收释放继电器线圈断电时产生的反向电动势,防止反向电势击穿三极管T5及干扰其他电路;R3和发光二极管LED9组成一个继电器状态指示电路,当继电器吸合的时候,LED9点亮,直观的看到继电器状态。5.MAX232单电源电平转换芯片:MAX232是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换芯片,符合所有的RS-232C技术标准;只需要单一+5V电源供电;片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V-;功耗低,典型供电电流5mA;内部集成2个RS-232C驱动器;高集成度,片外最低只需4个电容即可工作。6.集成ADmax187:max187是一个SPI串行总线的12位A/D,单+5V电源工作低功耗:关断模式下2uA,5mA操作电流。最大功耗7.5mW。7.LM358运放:LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。8.GPRS模块:选用华为的GTM900C,9.太阳能供电系统:根据以上选型计算系统平均功率为6.588W,假设每5分钟发送一次数据,每次时长5s,全天24小时大约工作0.4h,得出24小时内消耗6.588*0.4=2.6352wh,,假设当地最多8天没有足够光照,则8天电池需输出21wh的电量,因为市场上没有电压为5V的电池,所以用电压为12V的铅酸蓄电池,这种电池市场上较为常见,并考虑电源不能完全耗尽,得出大约需要3AH的电源。太阳辐射能量为1.369W每平方米,假设当地每日平均日照时间为4h,则一天内每平方米太阳辐射能量约为11wh,要求一天内太阳能电池板为电路板提供电源外,还要为铅酸蓄电池冲入足够的电量,则太阳能电池板至少提供(2.63+4*12)/3=12.6W的功率,考虑到能量转换的效率和市场上太阳能电池板的产品选择功率为20W,12V。三、电路原理图四、PCB印制电路板图五、程序设计1.程序流程图2.程序代码voidmain(void){EA=1;……………………………//开中断EX0=1;……………………………//开外部中断sleep();……………………………//调用sleep进入睡眠。}voidsleep(void){PCON|=0x01;}voidINT0_Routine(void)interrupt0……//中断服务程序{inta=0;………………………………………//应答标志位P1.7=1;…………………………………………//打开继电器while(a==0){a=1;MAX187read();………………………………………//启动AD转换Rs3232send();………………………………………//发送数据Rs3232res();………………………………………//等待接收应答信息a=sbuf;………………………………………//检测应答}write_1307byte();………………………………………//应答无误,校正1307P1.7=0;………………………………………//关断继电器main();………………………………………/进入睡眠模式}//MAX187串行12位模数转换//unsignedintMAX187read(void){sbitMAX187_DO=P1^7;sbitMAX187_CS=P1^5;sbitMAX187_SK=P1^6;ucharH,L,i;uintcount;………………………………………//16位变量MAX187_CS=0;………………………………………//低电平有效,开始转换MAX187_SK=1;MAX187_SK=0;H=0;………………………………………//高位变量清零for(i=0;i4;i++)………………………………………//高4位{MAX187_SK=1;if(MAX187_DO)H++;…………………//位标量,如为1则H加1,如为0则跳过MAX187_SK=0;if(i!=3)H=1;}L=0;for(i=0;i8;i++)//低8位{MAX187_SK=1;if(MAX187_DO)L++;…………………//位标量,如为1则L加1,如为0则跳过MAX187_SK=0;if(i!=7)L=1;}MAX187_CS=1;count=H;count=(count8)|L;returncount;}}//向1307写一个字节//voidwrite_1307byte(unsignedchardate){sbitsdio_out=P1^1;sbitsclk=P1^2;sbitcs=P1^3;………………………………………//端口定义unsignedchari;sdio_out;CS=1;………………………………………//片选for(i=0x01;i!=0x00;i=1)………………………………………//8位传送{if(date&i)sdio_1;elsesdio_0;sclk_1;sclk_0;}cs=0;}/*读一个字节*/unsignedcharread_1307byte(){sbitsdio_in=P1^1;sbitsclk=P1^2;sbitcs=P1^3;unsignedchari,date=0;sdio_in;CS=1;for(i=0;i8;i++){if(read_sdio){date|=_BV(i);}sclk_1;sclk_0;}sdio_out;return((date/16*10)+(date%16));CS=0;}voidinit(void)………………………………………//串口初始化{EA=0;//暂时关闭中断TMOD&=0x0F;………………………………………//定时器1模式控制在高4位TMOD|=0x20;…………………………//定时器1工作在模式2,自动重装模式SCON=0x50;………………………………………//串口工作在模式1TH1=256-jingzhen/(botelv*12*16);//计算定时器重装值TL1=256-jingzhen/(botelv*12*16);PCON|=0x80;………………………………………//串口波特率加倍ES=1;………………………………………//串行中断允许TR1=1;………………………………………//启动定时器1REN=1;………………………………………//允许接收EA=1;………………………………………//允许中断}voidsend(unsignedchard)//发送一个字节的数据,形参d即为待发送数据。{SBUF=d;//将数据写入到串口缓冲sending=1;//设置发送标志while(sending);//等待发送完毕}voidrs3232send(){unsignedcharcount;………………………………………//待发送数据。init();send(0xff);………………………………………//首部校验字节send(count);………………………………………//数据部分send(0xff);………………………………………//尾部校验字节}voiduart(void)interrupt4……………………//串口发送中断{if(RI)………………………………………//收到数据{RI=0;………………………………………//清中断请求}else………………………………………//发送完一字节数据{TI=0;sending=0;………………………………………//清正在发送标志}}voidrs3232res(void)………………………………………//串行接收数据{SCON=0x50;………………………………………//设定串口工作方式PCON=0x00;………………………………………//波特率不倍增TMOD=0x20;……//定时器1工作于8位自动重载模式,用于产生波特率EA=1;ES=1;………………………………………//允许串口中断TL1=0xfd;TH1=0xfd;………………………………………//波特率9600TR1=1;while(1);}voidserial()interrupt4//串行接收中断服务函数{ES=0;//关闭串行中断RI=0;//清除串行接受标志位buf=SBUF;//从串口缓冲区取得数据}ES=1;//允许串口中断}//接收方校验中断服务程序//voidcheck()interrupt1{inta[1];………………………………………//创建数组记录首部和尾部inti=0;ES=0;………………………………………//关闭串行中断RI=0;………………………………………//清除串行接受标志位buf=SBUF;………………………………………//从串口缓冲区取得数据if(i==0){a[0]=SBUF;………………………………………//记录首部}i++;a[1]=SBUF;………………………………………//记录尾部if(a[0]==0xff&&a[1]==0xff)send(1);elsesend(0);ES=1;………………………………………//允许串口中断}六、总结之前做的课程设计以及实验全部都是一些与日常生活和工业现场比较脱节的,但是这次的课程设计涉及到工业现场的阴极保护电位的采集与发送,学习到不少知识,对工业现场有了一些初步

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功