历史上的今天
返回首页

历史上的今天

今天是:2025年04月01日(星期二)

正在发生

2018年04月01日 | 基于AT89C51单片机低成本温度控制实验系统

2018-04-01 来源:eefocus

  笔者在电子市场购买了一块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

  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拉低*/

  delay(80);

  /*精确延时大于480μs*/

  DQ=1;

  /*拉高总线*/

  delay(1 4):

  x=DQ;

  /*稍做延时后,如果x=0则初始化

  成功x=1则初始化失败*/

  }

  char ReadoneChar()

  /*读一个字节*/

  {

  unsigned char i=O;

  unsigned char dat=O;

  for(i=8;i>O;i--)

  {

  DQ=0:

  /*给脉冲信号*/

  dat>>=1;

  DQ=1;

  /*给脉冲信号*/

  if(DQ)

  datl=Ox80;

  delay(4);

  }

  return(dat);

  }

  WriteOneChar(unsigned char dat)

  /*写一个字节*/

  {

  unsigned char i=O;

  for(i=8:i>O:i--)

  {

  DO=0;

  DQ=dat&Ox01;

  delay(5);

  DQ=1:

  dat>>=1;

  }

  delay(4);

  }

  void delay(unsigned int i)

  /*延时函数*/

  {

  while(i--);

  }

  2,串行通信程序设计

  单片机通过引脚RXD(P3.O,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界通讯,SBUF为串行口缓冲寄存器,包括发送寄存器和接收寄存器,具有相同名字和地址空间,但不会出现冲突,因为其中一个只能被CPU读出数据,另一个只能被CPU写入数据。

  单片机的串行口的四种工作方式中,方式0和2的波特率是固定的,方式1和3的波特率是可变的,由定时器T1的溢出率控制,方式2为自动重装入初值的8位定时器/计数器模式,作为本文的波特率发生器。

  上位机编程中,本文采用最常用的通信控件MSComm,实现可视化界面。MSComm控件的常用属性有:Comm-Port设置并返回通讯端口号:Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位;PortOpen设置并返回通讯端口的状态,也可以打开和关闭端口;Input从接收缓冲区返回和删除字符;Output向传输缓冲区写一个字符串。

  串口初始化程序如下

  BOOLJWDIg::OnInitDialog()

  {

  Comport SetCommPort(1):

  if(!Comport GetPortOpen())

  Comport.SetPortOpen(TRUE);

  /*打开指定的串口*/

  Comport.

  SetlnputMode

  (cOm-Input-

  ModeBinary);

  /*设置数据

  获取方式*/

  Comport.

  SetSettings

  (“9600,n.8,1”);

  /*设置波特率及其他通信

  数*/

  Comport.

  SetRThreshOld

  (n);

  /*设定每接受n个字符触发一次

  MSComm事件*/

  Comport.SetInputLen(0);

  /设置读取方式*/

  Comport.GetInput();

  /*预置缓冲区以清除残留数据*/

  return TRU E;

  }

  系统测试

  本系统实现的电路实物图如下图所示,通过按键设置预定温度,如81.7℃,设定PID参数,比例系数Kc=O.8、积分系数KI=O.007以及微分系数KD=5,设定PWM控制信号周期为20ms,采样周期Ts=1S,测量的实验数据经串行通信传递到上位机后实时显示的响应曲线实验中,测量温度由低升高,最后与设定温度值一致。

34

  结论

  本文介绍的温控实验系统即有单片机主控的可靠性,又有上位机监测的方便性,同时基于1-Wire总线DS18820实现多路温度测控,具有现场安装简单、控制方便、系统性能好、易于扩展和成本低等优点,应用领域和市场前景非常广。


推荐阅读

史海拾趣

Capax Technologies Inc公司的发展小趣事

Capax Technologies Inc在市场定位和产品策略上表现出色。公司深入调研市场需求,发现高端电子设备市场对于高性能、高可靠性的组件有着旺盛的需求。于是,Capax Technologies Inc将产品定位为高端市场,专注于研发和生产高品质的电子组件。通过精准的市场定位和优质的产品,Capax Technologies Inc迅速在高端市场中占据了一席之地。

HEICO Corporation公司的发展小趣事

HEICO Corporation在电子技术领域的成功离不开其对技术创新的重视。公司不断推出新产品,如大功率电容器充电电源、行波管放大器、光电探测器等,这些产品以其卓越的性能和可靠性赢得了市场的广泛认可。同时,HEICO还致力于提升生产效率和产品质量,通过引入先进的生产设备和工艺,确保产品能够按时交付并满足客户的严格要求。这种技术创新和品质保证的策略,使得HEICO在电子行业中保持了领先地位。

Hammond公司的发展小趣事

在追求业务增长的同时,HEICO Corporation也积极履行社会责任,注重环保与可持续发展。公司致力于减少生产过程中的能源消耗和废弃物排放,采用环保材料和工艺进行生产。此外,HEICO还积极参与环保公益活动,推动电子行业的绿色发展。这种环保理念不仅提升了公司的社会形象,也为公司在电子行业中树立了良好的口碑。通过持续推动环保与可持续发展战略的实施,HEICO在电子行业中实现了经济效益与社会效益的双赢。

Holtek(合泰)公司的发展小趣事

在追求业务增长的同时,HEICO Corporation也积极履行社会责任,注重环保与可持续发展。公司致力于减少生产过程中的能源消耗和废弃物排放,采用环保材料和工艺进行生产。此外,HEICO还积极参与环保公益活动,推动电子行业的绿色发展。这种环保理念不仅提升了公司的社会形象,也为公司在电子行业中树立了良好的口碑。通过持续推动环保与可持续发展战略的实施,HEICO在电子行业中实现了经济效益与社会效益的双赢。

CyOptics Inc公司的发展小趣事

2013年4月,Avago宣布以约4亿美元的价格收购CyOptics Inc。这一收购标志着CyOptics的技术实力和市场地位得到了业界的进一步认可。Avago看中了CyOptics在InP光学芯片及组件领域的领先地位,希望借此增强其在新兴40G和100G企业及数据中心应用市场中的竞争力。收购完成后,CyOptics成为了Avago旗下光器件品牌,继续为市场提供高质量的光学产品。

Fischer Elektronik公司的发展小趣事

在追求业务增长的同时,Fischer Elektronik也始终关注可持续发展和环保问题。公司积极采用环保材料和生产工艺,努力减少对环境的影响。此外,Fischer Elektronik还致力于推动绿色能源的应用,通过研发高效节能的产品,帮助客户降低能耗和减少碳排放。这种负责任的企业形象,不仅提升了公司的社会声誉,也为其在未来的发展中赢得了更多的支持和机遇。

问答坊 | AI 解惑

关于S3C2410裸机驱动LCD的问题

/************************************************************** 320×240 16Bpp TFT LCD功能模块初始化 **************************************************************/ void Lcd_Init(void) {         rLCDCON1=( ...…

查看全部问答>

别人的导航软件的手写输入在我定制的CE平台上识别不了,为什么?跟平台定制有关没?CE组件没加?

别人的导航软件的手写输入在我定制的CE平台上识别不了,为什么?跟平台定制有关没?CE组件没加?…

查看全部问答>

nand drive 问题

nand cach write/read 命令是自动连续读写nand 如果用这个命令后遇到坏blcok 怎么办?nand 自己会跳过吗? 谢谢…

查看全部问答>

请教KEIL中如何输入“%”,我输入就会出现错误

如题,这问题该怎么解决啊?哪位高手知道指点指点啊!谢谢了!…

查看全部问答>

wince5.0下直接读写内存

想在wince5.0下直接读写内存,往指定的空间读写数据,该怎么实现,忘达人们给点建议!!谢谢!!…

查看全部问答>

分析一个程序错误!

module delay_line(start,stop,up_out,upQ,down_out,downQ,clk,reset);input clk,start,stop,reset;reg [60:0]up_out,down_out,upQ,downQ;integer i,j,m,n;delay_unit du0(start,reset,up_out[0]);delay_unit du2(stop,reset,down_out[0]);always @ ...…

查看全部问答>

LM3S8962学习(四) -- 温度传感器

上次使用学习了一下Timer,每隔1秒钟中断一次,现在准备实现每隔1S钟读取一下内部的温度值,并在LCD上显示出来。   从手册288页上可以看出,LM3S8962的内部温度传感器有两个目的: 1.  防止温度过高或过低,影响系统芯片正常运行 ...…

查看全部问答>

大家来说说用DSP的时候你都遇到过什么样无法解决的问题

大家来说说用DSP的时候你都遇到过什么样无法解决的问题?…

查看全部问答>

超级给力DIY钢铁侠MK3方舟反应堆

从《钢铁侠1》到《复仇者联盟》再到《钢铁侠3》,托尼胸前的反应堆,也更新了好几代。高中刚毕业,放假在家,就有了想自己做一个反应堆的想法,然后就开始实践了。 ◆ 第一步:采购原材料(具体如下)      ● 网上定制的亚 ...…

查看全部问答>

∑ -μ01 HELP2416 入门分享

本帖最后由 DavidZH 于 2014-7-9 00:05 编辑 已经收到的HELP2416开发板,很精致。准备开始学习,按照以往学习其他MCU的经验,先是了解开发板的硬件,然后开始收集相关资料,如下图所示: 一、HELP2416的主芯片是S3C2416 芯片,其内核属于ARMv5 ...…

查看全部问答>