电子系统设计实验报告

 

电子系统设计实践

设计报告

学院:                           

班级:      20##级               

学生:         学号:            

学生:          学号:            

学生:           学号:            

指导老师:                         

时间:   20##年9月             

摘   要

在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。其中,温度控制也越来越重要。在工业生产的很多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用单片机对温度进行控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的控制问题。

单片机是一种集CPU、RAM、ROM、I/O接口和中断系统等部分于一体的器件,只需要外加电源和晶振就可实现对数字信息的处理和控制。因此,单片机广泛用于现代工业控制中。

本论文侧重介绍“单片机温度控制系统”的软件设计及相关内容。论文的主要内容包括:采样、滤波、键盘、LED显示和报警系统,加热控制系统等。作为控制系统中的一个典型实验设计,单片机温度控制系统综合运用了微机原理、自动控制原理、模拟电子技术、数字控制技术、键盘显示技术等诸多方面的知识,是对所学知识的一次综合测试。

温度控制系统在国内各行各业的应用虽然己经十分广泛,但从国内生产的温度控制器来讲,总体发展水平仍然不高,同日本、美国、德国等先进国家相比,仍然有着较大的差距。成熟的温控产品主要以“点位”控制及常规的PID控制器为主,它们只能适应一般温度系统控制,而用于较高控制场合的智能化、自适应控制仪表,国内技术还不十分成熟,形成商品化并广泛应用的控制仪表较少.随着我国经济的发展及加入WTO,我国政府及企业对此都非常重视,对相关企业资源进行了重组,相继建立了一些国家,企业的研发中心,开展创新性研究,使我国仪表工业得到了迅速的发展。

目前,温度控制器产品从模拟、集成温度控制器发展到智能数码温度控制器。智能温控器(数字温控器)是微电子技术、计算机技术和自动测试技术的结合,特点是能输出温度数据及相关的温度控制量,适配各种控制器,并且它是在硬件的基础上通过软件来实现控制功能的,其智能化程度也取决于软件的开发水平,现阶段正朝着高精度高质量的方向发展,相信以我国的实力,温控技术在不久的将来一定会为于世界前列。

一、      设计要求:

1.       (温度控制系统模块)基本要求

(1)测量温度范围-55℃~120℃

(2)精度0.1℃

(3)显示测量温度

(4)自动控制温度

2. 红外防盗报警器模块)基本要求

(1)该设计包括硬件和软件设计两个部分。模块划分为信号检测、报警等模块子函数。

(2)本红外线防盗报警系统由红外传感器、单片机最小系统、报警器组成。

(3)系统可实现功能。当人员外出进,可把报警系统设置在外出布防状态,探测器工作起来,当有人闯入时,红外传感器将检测出信号,并将检测到的信号送入到单片机内部,并由单片控制报警器发出报警信号,以提示人们有非法人员闯入,

(4)红外线具有隐蔽性,在露天防护的地方设计一束红外线可以方便地检测到是否有人出入。

二、理论设计:

温湿度与生产及生活密切相关。像仓库、农田、生产过程,温度变化会影响品质;精密仪器、半导体器件,过温而导致性能降低,另外,人们的生活质量提高,对室内环境的高要求也需要对温度的适时监控,可见,温度传感器的应用范围是很广的。而在日常生活中,温度,尤其是水温的测控尤为重要,婴儿奶瓶,热水壶等等一系列产品对温度测控的需求相当的迫切。虽然市面上已经有许多成品测温仪器,但我们希望,通过自己的努力,能够作出一款功能齐全,制作简单的温度测控仪器。希望能在在精进学识的同时培养我们的动手能力。

2.1.1芯片介绍

AT89C52是一种低电压、高性能CMOS 8位微处理器,它自带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory),俗称单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪存存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器。AT89C系列单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。它的部分引脚功能介绍如下。

    

AT89C52单片机的外形及引脚排列如上图:

2.1.2 DS18B20简介

    DALLAS最新单线数字温度传感器DS18B20简介新的“一线器件”体积更小、适用电压更宽、更经济 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822 “一线总线”数字化温度传感器 同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。DS1822的精度较差为± 2°C 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。 DS18B20、 DS1822 的特性 DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! DS1822与 DS18B20软件兼容,是DS18B20的简化版本。省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。 继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。

 DS18B20中的温度传感器对温度的测量

    DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

DS18B20的内部结构

DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下:

DQ为数字信号输入/输出端;

GND为电源地;

VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

1)  64位的ROM

    光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

2)  DS18B20温度传感器的存储器

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

     暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。

DS18B20的时序

    由于DS18B20采用的是单总线协议方式,即在一根数据线实现数据的双向传输,而对89C51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。

    由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。

DS18B20的复位时序

DS18B20的读时序

  对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。

DS18B20的写时序

  对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。

DS1820使用中注意事项

  DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:

1)   较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。

2)   在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。

3)   连接DS1820的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。

4)   在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。

红外报警系统设计结构

红外传感感器、报警电路、单片机、复位电路及相关的控制管理软件组成;它们之间的构成框图如图1总体设计框图所示

                         图1 电路的总体设计院框图(1)

2.2设计方案

方案一:选用光电耦合器,双向可控硅和功率电阻组成可以与单片机端口和市电连接大功率工作的设备,以供风扇与加热器的正常工作。此电路可控制大功率设备,但是在制作和调试的过程中要注意安全。

方案二:选用小功率演示器件,用不同颜色的发光二极管或小功率风扇来代替风扇和加热器,能直观的反应单片机控制哪路电路的工作,这样不仅表达出来的效果比较好,而且在调试和使用的时候比较的安全,并且在单片机下载版数码管上显示当前的温度范围。该设计方案虽然安全,但该设计不能在现实生活中实现自动控制。

从上面两个方案比较,要想实现该系统的自动控制选择方案一比较好。

2. 2.1  LED显示模块

本课题的LED显示模块是由一个四联共阳七段数码管组成。七段数码管是由若干发光二极管组合而成的,一般的“8”字形显示块由“a、b、c、d、e、f、g、h”8发光二极管组成。四个七段数码管分别与P0口相连,通过对单片机输入程序达到控制显示输出的目的(如图)。

四个七段数码管由单片机的P2.0~P2.3控制亮灭,P2.0~P2.3分别对应Q2~Q5,当P2.0~P2.3其中之一置高电平,对应的三级管导通,段码管亮,置低电平,对应的三级管截止,段码管灭。

2.2.2系统框架设计如下图所示:

温度测量模块我们采用DS18B20

1.下图为温度测量的原理图:

               图1        温度测量原理图

                 图2     红外传感器的原理图

2.2.3 温度测量控制器模块

本课题的控制器模块式采用89C51单片机作为MCU,如图89C51。89C51的 P0.0~P0.7作为四联七段数码管总线;P2.4作为连接DS18B20的I/O口;P1.7作为升温电路的控制端;P2.0~P2.3控制四个七段数码管的亮灭。

2.2. 4温度测量电源电路

给系统电路输入一个稳定的+5V的电源(如图)。

2.3.1红外报警器时钟电路

                  图3   时钟电路图

2.3.2红外报警复位电路

                         图4  复位电路图

2.3.3红外传感器电路的设计

D1为红外发射管,其负极端直接地, D1发红外光。D4为红外接收管,当接收到红外光时导通, 5V电源通过D4加到反相器74LS14的输入端,经反相为低电平,这时P1。1为低电平。发射管和接收管分别安装在门和窗口的适当位置,当有人闯入时遮挡了红外线,接收管截止,反相器输入端为低电平,这时U1的P1。1为高电平。当在一定时间内检测到有光束被遮挡时,则由P3.7口输出报警信号。驱动声报警电路,进行声报警,当报警时间延迟14S钟后,电路自动消除报警,也可以人员手动解除报警。由于红外收发管之间没有遮挡时为正常,有遮挡时为异常,则当P1。1口输出0时,P3。7口的正常状态数据为0。电路图如图5所示

图5红外传感器电路

2.3.4报警电路的设计

    该报警电路的发出的声音是模拟警车的声音,当单片机发出报警信号时,该报警电路将发出洪亮的似警车声音报警声音,由于该电路输出信号通过两个三极管组成的复合管放大,通将输出放大一百倍,从而由扬声器发出洪亮的声音,由软件设计输出信号高低电平时间间隔的不同,从而可发出警车似的声音。电路图如图6所示

                  图6   报警电路的原理图

2.3.5稳压电源电路的设计

稳压电路由变压器、桥式整流堆、电容与芯片78L05组成,使输入220V的交流电经过变压为输出5V的直流电。其电路图如

7所示

图7  5V稳压电路

  电源是系统中最重要的模块之一,输入电源经稳压块后输出稳定的+5V电源,用以驱动整个系统。

2.3.6系统硬件电路的选择及说明

   硬件电路的设计见附图示,从以上的分析可知在本设计中要用到如下器件:ST89C52、红外发射/接收管、反相器74LS14、扬声器等,以及一些单片机外围就用电路,其中D2为电源工作指示灯,R4为扬声器起报警作用,当P3.7f输出高低电平时报警器开始报警

三软件的程序实现

3.1红外报警模块设计编程程序

主程序清单如下:

  ORG     00H

   LOOP3: MOV   P1,#0FFH

          CLR  P1.2

          mov   A,P1

          JNB    ACC.1,STAR

          SJMP  LOOP3

     STAR:MOV   R2,#2

    LOOP2:MOV   R1,#4

    LOOP1:MOV  R6,#126

          MOV  R5,#193

          ACALL SOUND

          MOV   R6,#95

          MOV   R5,#255

          ACALL  SOUND

          DJNZ   R1,LOOP1

          DJNZ   R2,LOOP2

          SETB   P3.7

          AJMP   LOOP3

    SOUND:CLR   P3.7

          ACALL  DELAY

          SETB   P3.7

          ACALL  DELAY

          DJNZ   R5,SOUND

          RET

   DELAY: MOV  B, R6

      DL: MOV  R7,#6

          DJNZ   R7,$

          DJNZ   R6,DL

          MOV     R6,B

          RET

          END

3.2温度测量模块系统的调试

 DS18B20 数据的部分程序代码为

#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

#define uint  unsigned int

sbit DQ=P3^7;

uint temp;

uchar code ditab[16]=

       {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};

                                                               //

uchar code dis_7[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};

                                                               //共阴LED段码表        "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9" "不亮" "-"             

uchar code scan_con[4]={0xef,0xdf,0xbf,0x7f};    //列扫描控制字

uchar data temp_data[2]={0x00,0x00};             //读出温度暂放

uchar data display[5]={0x00,0x00,0x00,0x00,0x00};     //显示单元数据,共4个数据和一个运算暂用

void delay(uint t){

       for(;t>0;t--);

}

/***********18B20复位函数**********/

ow_reset(void)

{

       char presence=1;

       while(presence){

              while(presence){

                     DQ=1;

                     _nop_();_nop_();

                     DQ=0;    //

                     delay(50); // 550us

                     DQ=1;    //

                     delay(6); // 66us

                     DQ=presence; // presence=0继续下一步

              }

              delay(45);    //延时500us

              presence = ~DQ;

       }

       DQ=1;

       delay(1);

}

//向 1-WIRE 总线上写一个字节

void write_byte(uchar val){

       uchar i;

       for (i=8; i>0; i--){

              DQ=1;

              _nop_();_nop_();

              DQ = 0;

              _nop_();_nop_();

              _nop_();_nop_();

              _nop_();//5us

              DQ = val&0x01;      //最低位移出

              delay(6);           //66us

              val=val/2;          //右移一位

       }

       DQ = 1;

       delay(1);

}

//从总线上读取一个字节

uchar read_byte(void){

       uchar i;

       uchar value = 0;

       for (i=8;i>0;i--){

              DQ=1;

              _nop_();_nop_();

              value>>=1;

              DQ = 0;           

              _nop_();_nop_();

              _nop_();_nop_();   //4us

              DQ = 1;

              _nop_();_nop_();

              _nop_();_nop_();   //4us

              if(DQ)value|=0x80;

              delay(6);           //66us

       }

       DQ=1;

       return(value);

}

read_temp(){

       ow_reset();    

       delay(200);

       write_byte(0xCC); // Skip ROM

       write_byte(0x44); // 发转换命令

       ow_reset();       //总线复位

       delay(1);

       write_byte(0xCC); // 发Skip ROM命令

       write_byte(0xBE); // 发读命令

       temp_data[0]=read_byte(); //温度低8位

       temp_data[1]=read_byte(); //温度高8位

       temp=temp_data[1];

       temp<<=8;

       temp|=temp_data[0];

//     return (temp);

}

work_temp(){  //数据处理函数

       uchar n=0,j,tem;

       tem=temp;

       if(tem>6348){

              tem=65536-tem;

              n=1;

       }     //负温度求补码,标志位置1

       display[4]=tem&0x0f;//取小数部分的值    

       display[0]=ditab[display[4]]; //存入小数部分显示值

       display[4]=tem>>4;                       

       display[3]=display[4]/100;      

       display[2]=display[4]%100/10;       //存入十位

       display[1]=display[4]%100%10;   //存入个位

       if(!display[3]){

              display[3]=0x10;

              if(!display[2])

                     display[2]=10;

       }    

       if(n==1){

              display[3]=11;

       }    

}

void scan(){    //显示函数

}

main()

{                                

       ow_reset();                       // 开机先转换一次

       write_byte(0xCC);                       // Skip ROM

       write_byte(0x44);                 // 发转换命令

       while(1){

              read_temp();         //读出18B20温度数据

              work_temp();         //处理温度数据

           scan();    

       }

}

四、实验步骤

1.  使用专业软件进行电路图的绘制

2.  在绘图完成后,根据绘制的电路图进行软件的设计和开发

3.  在专业软件中进行软件的仿真测试

4.  测试成功后开始设计并焊接电路板

5.  在完成的电路板上进行上电仿真操作,并针对不完善的地方进行修改和微调。

五、测量方法

 首先我们在基本大气下,测得系统所在的环境的温度,并计入下来。接着我们把DS18B20放入热水里面,看看后级驱动电路会不会驱动风扇使温度传感器散热。当温度传感器恢复到室温时,我们在吧温度传感器放入冷水中,看看温度传感器会不会驱动加热管使温度传感器加热。

功能实现分析

该硬件电路在最后测试中实现了准确的温度采集、能够传给单片机发送采集到得参数,同时实现加热或制冷功能。基本实现了设计任务,并可根据外界运用需要更换和外扩其他功能传感器。

六、实验成果和总结

经过半个月设计,调试和实践,我们已经在焊接完成的电路板上成功仿真运行了显示模块和温度测试模块。仿真运行结果符合最初的实验设计要求。

在工业生产和日常生活中,对温度控制系统的要求,主要是保证温度在一定温度范围内变化,稳定性好,不振荡,对系统的快速性要求不高。在论文中简单分析了单片机温度控制系统设计过程及实现方法。本系统的测温范围为25℃~80℃,温度检测系统根据用户设定的温度范围完成一定范围的温度控制。

由于时间的原因在设计过程中不能很好的做出我们毕业设计所要达到的要求,对于以上的不足,我们只有通过以后的努力不断的提升。在设计中我们基本实现了温度的读取,在后级电路中由于个人能力有限,而不能实现后级驱动电路,在这方面我相信在以后的学习生涯中能得到解决,

最后我要感谢我的导师贾磊磊老师,在她的帮助下我们做好了基于DS18B20温度控制系统的课程设计,同时我也要感谢那些在我遇到难题时候给予我帮助的同学和好友。

七、    参考文献

[1] 电源网.MOC3081芯片运用介绍, http://www.dianyuan.com

[2] 伟纳电子. DS18B20单线数字温度传感器, www.willar.com

[3] 单片机原理与应用   李精华主编

[4] 李华.MCS-51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993,8,203-228.

[5]新概念51单片机C语言教程:入门、提高、开发、拓展全攻略: 北京:电子工业出版社,2009.1

[6] 张靖武等.单片机原理、应用与PROTEUS仿真.北京:电子工业出版社,2008.8:13—17

[7] 宋文绪.传感器与检测技术[M].西安:西安电子科技大学出版社,2000

[8] 梁森等.自动检测与转换技术.北京:机械工业出版社,164—175

相关推荐