您当前的位置:五五电子网电子知识单片机-工控设备综合-其它基于AT89C51单片机低成本温度控制实验系统 正文
基于AT89C51单片机低成本温度控制实验系统

基于AT89C51单片机低成本温度控制实验系统

点击数:7874 次   录入时间:03-04 11:39:06   整理:http://www.55dianzi.com   综合-其它

  笔者在电子市场购买了一块3.6V450mAh的锂离子充电本文介绍一种以AT89C51单片机为核心的低成本温度控制实验系统。该系统采用温度传感器DS18820实现一线数字式测温,经过PID算法输出PWM波,再由PWM信号控制固态继电器,调节热阻丝发热功率,最终达到控制被控对象温度的目的,该系统还扩展了人机接口和串口通信,实现温度设定、控制及图像显示。

  硬件设计

  1.总体设计

系统结构框图

  系统结构框图如图1所示,以AT89C51单片机为控制核心,DS18820电池,外型尺寸完全符合原机的内部空间要求。按照正确的正负极性焊连到电路中即可完成电池的更换工作。实际使用效果极佳,连续播放时间超过了7个小时(图4)。测量被控温度,外围电路包括人机接口的按键与数码显示电路、温度读取与控制驱动电路以及与上位机串行通信电路。用户通过按键设定加热温度后,系统启动加热“热得快”烧水。当前水温经过DS18820测量送给单片机,单片机经PID校正后输出PWM信号,然后通过固态继电器驱动热得快加热,最终使水温保持在设定值上,误差不超过O.1℃。

  单片机系统通过串口与上位PC机实现通讯,上位机实现温度、温度曲线显示以及PID参数的设定,用户通过上位机可以清晰地看到设定的PID参数所产生的控制作用,如系统的微调、时间等参数。

  2温度测试模块

  系统选用美国DALLAS公司生产的单总线DS18820数字式温度传感器作为温度模块,引脚图如下图所示。

引脚图

DS18820具有体积小、经济、使用方便灵活、测试精度高、性价比高、CRC校验功能等特点,温度测量范围为-55+125℃,可编程为9位~12位A/D转换精度,测温分辨率达0.0625℃,被测温度采用带符号位扩展的16位数字方式串行输出。其工作电源即可在远端引入,也可采用寄生电源方式产生,多个DS18820可以并联到3根或2根线上,CPU只需一根端口线即可与多个DS18820通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。

  文中的DS18820三引脚分别接公共电源+5V、电源地和单片机P1.O引脚,具体电路如下图所示,由于DS18820为1-WIRE器件,只需在其信号线上加一个上拉电阻到+5V电源即可。

具体电路

  同时,每一个DS18820均有唯一系列号,即允许在不同地方放置温度灵敏器件,通过SearchRom指令选择不同的DS18820芯片,实现温度的多点监测,如HVAC环境控制、建筑物、设备或机械内温度检测、过程温度监视和控制等。

  3键盘及显示电路模块

  本系统采用PT6961驱动控制电路同时驱动键盘与数码管。PT6961为带有键盘扫描接口的LED驱动控制专用电路,内部集成MCU数字接口、数据锁存器、LED高压驱动、键盘扫描等电路。主要应用于VCR、VCD、DVD及家庭影院等产品的显示屏驱动、多种显示模式(11段×7位~14段×4位)、键扫描(10×3bit)电路、灰度调节电路(占空比8级可调),与单片机实现串行数据传输,节省了单片机引脚。PT6961可以自己驱动显示和键盘模块电路,可实现串行数据传输,同日寸对时序要求较高。

  单片机的P0.6引脚与PT6961的时钟线相连,控制时序;P0.7引脚与PT6961的片选端相连,选通芯片,P0.4、PO.5引脚与PT6961的DOUT、DIN端相连,进行数据和指令的串行传输,具体的传输数据仍由单片机编程控制。PT6961在cLOCk端产生下降沿时,读取DIN口的数据,在clock端产生上升沿时,在DOUT口产生按键寄存器值可供单片机读取。硬件连接电路如下图所示,该芯片可以同时驱动(8~14)段×(4~7)位数码管和3×10个按键,本文选用驱动6个数码管和1×6个按键。

硬件连接电路

  4.执行模块

  系统采用固态继电器(SSR)控制热得快电源,固态继电器是一种四端器件,两个输人端,两个输出端,输入端接控制信号,输出端与负载、电源串联,SSR实际是一个受控电力电子开关。

  单片机经PID算法,从P1.5口输出PWM波,经ULN2003反相驱动后,作为SSR的控制信号,如图5所示,在固态继电器输出端接两个二端口插件,方便引线串入热得快插线中。由于SSR与热得快接口是整个系统和电路板唯一一块强电部分,为将其对弱电部分的干扰降到最低,弱电电路线远离该部分电路,且不共地,接线端子的脚间距应大于SSR的脚间距。

硬件连接电路

  5.串行通信模块

  本系统采用串口实现单片机与上位计算机的连接,单片机向上位机传送温度值,上位机显示该值,并画出温度变化曲线图,反应温度的变化情况,同时上位机可以调整PID参数,使系统适用于不同的对象。串行通信连接如下图所示,其中5个电容均取O.1μF的典型值,串口

串行通信连接

  DB9的5端为公共端接地端,2、3端则分别连接信号的接收端和发送端,该电路完成TTL电平与RS232电平转换,DB9接口通过交叉串口线连接到PC机上,完成硬件的串行通信。

  软件设计

  为加强程序的可读性、可移植性和便于调试,系统软件设计采用模块化思想,程序运行时,通过主程序调用各子程序模块。本文主程序流程如下图所示,软件设计主要讲述DS18820信号处理子程序和串口通信子程序。

主程序流程

  1.DS18820信号处理子程序

  DSl8820为1-wire制器件,采用一根信号线即可与单片机进行串行通信,简化了硬件电路,但是,在软件设计中须进行复杂的时序控制。DS1820单线通信功能为分日寸完成,有严格的时隙概念,系统对DS1820的各种操作必须按协议进行。

  操作协议为:初始化DS1820(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据,DS18820操作程序流程如下图所示。

DS18820操作程序流程

  本文只有一个DSl8820挂在总线上,因此每次对总线进行读写日寸,可跳过读ROM指令,为提高测温精度,文中采用默认的12位数码转换,即0.0625度/位,程序如下:

   #include<reg51. h>

  sbit DQ=P1^O;

  void Init_DS18820();

  WriteOneChar(unsigned char dat);

  char ReadOneChar();

  void deIay(unsigned int i);

  unsigned int ReadTemperature()

  {

  unsigned char a=0,c=O:

  unsigned char b=O;

  unsigned int t=O;

  float tt=0;

  Init_DS18820();

  WriteOneChar(0xCC);

  /*跳过读序号列号的操作*/

  WriteOneChar(Ox44);

  /*启动温度转换*/

  Init_DS18820();

  WriteOneChar(OxCC);

  /*跳过读序号列号的操作*/

  WriteOneCha r(0xBE);

  /*读取温度寄存器等(共可读9个寄

  存器)前两个就是温度*/

  a=ReadOneChar();

  /*Read the low byte of the tem-perature*/

  b=ReadOneChar();

  /*high*/

  c=a;

  a>>=4;

  b<<=4;

  t=aㄧb;

  ,  c&=0x0F;

  tt=c;

  tt*=0.0625;

  c=tt*1 0+0.5;

  t=t*1 0+c;

  return t;

  /*温度转化,位了避免浮点数运算,

  尽量用整形数据运算,这样可以减轻CPU负担*/

  }

  void Init_DS18820()

  /*初始化函数*/

  {

  unsigned char x=0;

  DQ=1;

  /*DQ复位*/

  delay(8);

  /*稍做延时*/

  DQ=0;

  /单片机将DQ拉低*/

[1] [2]  下一页


本文关键字:单片机  成本  综合-其它单片机-工控设备 - 综合-其它