基于89C51单片机和CAN总线的供热温度控制器的设计研究

※发布时间:2018/3/21 5:42:18   ※发布作者:habao   ※出自何处: 

  建设部要求城镇新建公共建筑和居民建筑,凡使用集中供热设施的,均需设计、安装具有分户计量及室温调控功能的供暖系统。节能型供热温度控制器是利用自动控制技术,将节能措施与热计量功能融为一体,从以人为本的角度提出的一种新型节能和方法,使集中供暖用户既可通过控制器设定、调整并与配套设备共同完成对室内温度的自动控制和远程控制,又可随时了解室内温度、热消耗量,达到节约能源的目的。

  一个完整的大型公建节能型供热温度控制器由两部分组成:温度测控系统和通信模块系统。系统总体结构如图1所示。系统温度测控的硬件包括:单片机、温度传感器、信号放大器、A/D转换器及D/A转换器、稳压器、显示驱动芯片和数码管等。系统通信模块的硬件包括CAN控制器和CAN收发器。

  在温度测控系统中,稳压器完成对单片机的供电,数码管完成温度的显示。系统的被测参数是温度,被测温度首先由传感器测量后得到mV信号,再经放大器放大后变为0~5 V电压信号,送入A/D转换器转换后,将模拟信号变为数字信号供给单片机,在单片机内进行数据处理。一方面,与所设定的温度值进行比较产生偏差信号,单片机根据预定的PID算法计算出相应的控制量,用控制量控制电气阀的导通和关断,实现温度控制;另一方面,将实时测量得到的温度送至数码管显示,同时用户也可通过键盘来设想温度。

  当CAN总线上的一个节点发送数据时,其以报文形式给网络中所有节点。对每个节点而言,无论数据是否是发给自己的,均对其进行接收。每组报文开头有11位字符作为标识符,其了报文的优先级,这种格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置尤为重要。当一个站要向其他站发送数据时,该站的CPU要将发送的数据和自身的标识符传送给本站的CAN控制器,并处于准备状态;当收到总线分配时,转为发送报文状态。CAN控制器将数据根据协议组织成一定的报文格式发出,此时网上的其他站点处于接收状态。每个处于接收状态的站对接收到的报文进行检测,判断是否接收这些报文。通常每个CAN模块都是南不同的功能单元构成。CAN控制器与物理总线间需要一个接口CAN接收发送器,CAN接收发送器将来自CAN控制器的逻辑电平信号转换为总线上的物理电平。再将总线上的物理电平转换为CAN控制器能接收的逻辑电平信号。CAN接收发送器的上一层是CAN控制器,该控制器执行完整的CAN协议,包括信息缓冲和接收滤波。

  系统单片机采用8位AT89C51,因控制器所需的单片机,无需在语音、图像进行大规模的数据处理,且对速度要求较低,无需高位单片机。温度传感器该产品采用美国Dallas公司生产的DS18B20数字式温度传感器。选用此类温度传感器可省去信号放大部分及A/D转换器,使得该温度控制器结构变得简单、清晰。稳压器采用三端LM7805供给单片机电源。LM7805为正稳压电,TO-220封装,可提供多种固定的输出电压,应用范围广。D/A转换器选择DAC0832.其是8分辨率的D/A转换集成芯片与微处理器完全兼容。显示芯片采用PS7219,是一种新型的串行接口的8位数字静态显示芯片,可与任何单片机方便接口,并可同时驱动8位LED.

  温控系统包括单片机最小系统和测温传感器。单片机最小系统中,复位电采用12 MHz晶振,复位电由复位按钮控制,同时提供单片机AT89C51、CAN控制器SJA1000和显示接口器件PS7219的复位信号。单片机温度采集电如图2所示,从RST引出线,分别与各芯片的复位信号线相连采用上电复位模式。

  对输出信号进行数模转换中,DAC0832采用单缓冲工作方式。DAC0832的两级寄存器的写信号WR1和WR2均由单片机的WR引脚控制。当单片机的地址线后,只要输出WR控制信号,便可同时完成数字阳的输入锁存和D/A转换输出。由于DAC0832是电流输出型,所以为了得到电压信号,需在DAC0832的输出端接入运算放大器。接入一级运算放大器可得到负的电压信号,接入二级运算放大器,得到正的电压信号。数模转换电如图3所示。

  SJA1000作为CAN的控制部分,在与单片机连接时,其数据线与单片机的输入输出管脚P0口连接,片选信号CS接地,低电压允许访问,RST、1NT、WR、WD、ALE管脚分别与单片机的相应管脚连接,控制器的收发端RX0、TX0分别接收发器CTM1050的收发端RXD、TXD引脚相连。系统通信模块电如图4所示。

  当稳压器LM7805对单片机进行供电时,220 V交流市电通过电源变压器变换为交流低压,再经桥式整流电和滤波电容C1的整流和滤波,在固定式三端稳压器LM7805的Vin和GND两端形成一个并不稳定的直流电压。此直流电压经LM7805的稳压和C3的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压。单片机AT89C51的P1.6作串行数据输出,连接到PS7219的DIN脚,P1.7和P1.5通过程序分别模拟PS7219的时钟脉冲CLK及数据加载LOAD信号。PS7219的SA~SG,SDP端连接到各LED数码管对应的a~f及dp端,DIG1~DIG3分别接3位LED数码管的共阴极,从而实现位选。PS7219应紧靠LED显示器放置,且连线尽可能短,两个GND引脚均必须连接到地线个按键,分别是功能键、增加键、减小键和确定键。在按键的线连接中,每个按键并联一个0.1F电容,目的是实现消抖。

  主程序模块的主要工作是上电后对系统初始化和构建系统整体软件框架,其中初始化包括对单片机的初始化、D/A芯片初始化和温度传感器初始化等。随后等待温度设定,若温度设定后,判断系统运行键是否按下,若系统运行,则依次调用各相关模块,循环控制直到系统停止运行。图5所示为主程序流程图。

  由于常规PID控制器控制效果不佳,温度测量控制中存在非线性、时变、干扰和纯滞后问题,而增量式PID算法具有计算误差小、切换无冲击和可靠性高的特点,所以本系统采用该算法。数字增量式PID的输出为:

  温度传感器DS18B20的操作协议:初始化DS1820(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。其操作程序流程如图6所示。其中任何一步失败时自动重新初始化。

  CAN通信的软件设计主要包括3部分:CAN节点初始化、报文发送和报文接收。AT89C51通电或复位后,调用复位程序给SJA1000的复位端RST提供复位信号,使SJA1000进入复位模式,SJA1000的初始化只有在复位模式下才可进行。初始化程序主要包括以下寄存器的设计:(1)通过时钟分频寄存器定义:是使用BasIC CAN模式或Peli CAN模式;是否能使CLKOUT输出时钟频率;是否旁CAN输入比较器;TX1输出是否用专门的接收中断输出。(2)通过验收码寄存器和屏蔽寄存器定义接收报文的验收码与对报文之间进行比较的相关位定义验收屏蔽码。(3)通过总线定时寄存器定义总线的位速率、位周期内的采样点和一个位周期内的采样数量。(4)通过输出寄存器定义CAN总线的输出模式、配置。最后,要清除SJA1000的复位请求标志进入工作模式,方可进行报文的发送和接收。

  单片机将要发送的报文送到SAJ1000发送缓冲区,然后将SJA1000命令寄存器的发送请求标志位(TR)置位,发送过程南其完成。在新报文写入发送缓冲区前,必须先检查状态寄存器的发送缓冲器状态标志(TBS),若为“1”,发送缓冲器被,可将新的报文写入发送缓冲器。否则,发送缓冲器被锁定,新报文不能被写入。

  报文接收也由SJA1000完成。收到的报文通过接收滤波器放在FIFO队列中,第1条报文进入接收缓冲器,由状态寄存器的接收缓冲器状态标志位(RBS)和接收中断标志位(RI)标出。单片机从接收缓冲器取走1条报文后,通过置位SAJ1000的命令寄存器来接收缓冲器。

  在硬件设计和软件的编程后,将针对要实现的功能编写程序在Keil C51中将编译无误的程序运行,对整个系统而言,首先要对键盘输入和数码显示进行调试,就是整个硬件电对照电图进行检查,查找错焊、虚焊、漏焊等错误。检查无误后,便开始运行电,为稳定的电源供给,给PC机的USB接口提供5 V直流电源。将结果与要实现的理想状态对照,再通过结果对硬件电进行检验和修改,并将所编程序进行适当优化,如图7所示。运行结果证明整个系统稳定、可靠,满足了设计要求。

  本方案采用了基于89C51单片机和CAN总线的设计方法,给出了供热温度控制器的总体设计方案,以及主要电原理图的引脚连接,并根据功能要求和实际电设计了系统软件,给出了主要程序的流程图。最终对单片杌进行了软硬件联调,实现了相应功能。