用单片机S3C44BOX控制红外线通信接口电路设计

发布者:phi31最新更新时间:2014-11-03 来源: 21ic关键字:数字温度传感器  DS18B20  S3C44BOX 手机看文章 扫描二维码
随时随地手机看文章
  0 前言

  热误差是数控机床的最大误差源,数控机床的温度测试为机床热误差的补偿提供依据。传统的测温方案是将模拟信号通过电缆远距离传输至数据采集卡进行A/D转换并处理,实用中必须解决长线传输和模拟量传感器布线等问题。本文介绍了一种新型的设计方案,控制器采用SAMSUNG公司的32位ARM微控制器S3C44BOX,温度传感器采用单总线数字温度传感器DS18B20。采用数字温度传感器即在测试点完成了信号的数字化,提高了传输的可靠性,同时简化了外围电路,也便于传感器在机床上的布置安装。ARM处理器控制数字温度信号的采集,并与上位PC机通讯,同时其他硬件资源提供热补偿系统其他功能。本文在介绍数字温度传感器DS18B20的基础上,给出了系统的软硬件设计方案,对软件实现中的关键点做了详尽的注释说明。

  1 数字温度传感器DS18B20介绍

  1.1 DS18B20的结构

  DS18B20是美国DALLAS公司推出的一种可组网数字温度传感器。DS18B20只有一个数据输入/输出口,是单总线专用芯片。DS18B20工作时,被测温度值直接以单总线的数字方式传输。

  DS18B20体积小,电压适用范围宽(3V-5V),可以通过编程实现9~12位的温度读数,即有可调的温度分辨率。测温范围-55℃~+125℃,在-10℃~+85℃时,精度为±0.5℃。其可选封装有TO-92、SOIC及CSP封装。

  每个DS18B20出厂时都有一个唯一的64位序列号,因此一条总线上可以同时挂接多个DS18B20而不会出现混乱。

  DS18B20包括一个暂存RAM和一个E2RAM。暂存存储器RAM用于存放工作参数和测量值,其作用是保证在单线通讯时的完整性,包括8个字节。E2RAM用于设定非易失性温度报警上下限值TH和TL(调电后依然保存)。内部结构如图1所示。

  头两个字节表示测得的温度读数,数据格式如图2所示:  

  S=1时表示温度为负,S=0时表示温度为正,其余低位以二进制补码形式表示,最低位为1,表示0.0625℃

  内部存储器的第五个字节是结构寄存器,主要用于温度值的数字转换分辨率。

  1.2 DS18B20的工作时序

  DS18B20严格遵循单总线协议,工作时,主机先发一复位脉冲,使总线上的所有DS18B20都被复位,接着发送ROM操作指令,使序列号编码匹配的DS18B20被激活,准备接受下面的RAM访问指令。RAM访问指令控制选中的DS18B20工作状态,完成整个温度转换,读取等工作。在ROM命令发送之前,RAM命令命令不起作用。表1列出了所有操作命令。

  整个操作主要包括三个关键过程:主机搜索DS18B20序列号、启动在线DS18B20做温度转换、读取温度值。

  其工作流程如图3:   

  DS18B20对时序及电特性参数要求较高,必须严格按照DS18B20的时序要求去操作。它的数据读写主要由主机读写特定的时间片来完成,包括复位(初始化)、读时间片和写时间片。

  (1) 复位时序

  使用DS18B20时,首先需将其复位,然后才能执行其它命令。复位时,主机将数据线拉为低电平并保持480μs~960μs,然后释放数据线,再由上拉电阻将数据线拉高15~60μs,等待DS18B20发出存在脉冲,存在脉冲有效时间为60~240μs,这样,就完成了复位操作。其复位时序如图4所示。[page]

   (2) “写”时序

  在主机对DS18B20写数据时,先将数据线置为高电平,再变为低电平,该低电平应大于1μs。在数据线变为低电平后15μs内,根据写“1”或写“0”使数据线变高或继续为低。DS18B20将在数据线变成低电平后15μs~60μs内对数据线进行采样。要求写入DS18B20的数据持续时间应大于60μs而小于120μs,两次写数据之间的时间间隔应大于1μs。写时隙的时序如图5所示。“读”时序机理类似,不再赘述。 

   2 系统软硬件设计

  2.1 硬件设计

  我们采用的控制器是SAMSUNG公司的32位ARM微控制器S3C44BOX,是三星公司为一般应用提供的高性价比和高性能的微控制器的解决方案,功耗小,可靠性高。它使用ARM7TDMI核,工作在66MHz。采用的该ARM控制器将服务于整个热误差补偿系统,完成包括数据处理与通讯、控制等多任务的实现。机床测温系统只使用小部分片上资源。

  我们主要通过对I/O引脚的电平读写来完成单总线的通讯,采用ARM内部的定时器产生中断来完成有时隙要求的工作。由于我们通过预分频后产生的计时值单位达到1μs,完全能够满足时序工作的需要。

  DS18B20与控制器的接口及其简单,只需将DS18B20的信号线与控制器的一位双向端口连接即可。系统连接如图8所示:

 

  2.2 软件设计

  遵循DS18B20单总线通讯协议,温度转换与读取工作的软件流程可表示为图9(该流程是在已经选中激活某个选中的DS18B20以后,选中激活流程软件原理类似,此处省略)。

  可见,与DS18B20进行通讯主要完成以下三个基本子程序:初始化程序(复位程序)、‘读’子程序,‘写’子程序。系统采用 C语言进行设计,以下是初始化(复位)子程序,设计如下:

  U8 resetpulse(void) //复位函数定义

  {

  U8 RX=1; //函数返回值设置

  rPCONF=0x01; //PF0输出口

  rPDATF=0x0; //PF0输出0,拉低

  rTCNTB1=0x1f4; //定时缓冲器设定,延时500us

  rTCON=0x0200; //定时控制器设定,将定时器1手动更新

  rTCON=0x0100; //定时器开启,手动更新关闭

  while(TIME); //在定时中断产生以前踏步等待(我们在中断中改变这个标志值)

  rPDATF=0x01; //低脉冲时间500us已过,PF0置高

  TIME=1; //将TIME值恢复

  rTCON=0x0; //关闭定时器

  rTCNTB1=60; //延时60us

  rTCON=0x0200;

  rTCON=0x0100;

  while(TIME);

  TIME=1;

  rTCON=0x0;

  rPCONF=0x0; //改为输入口,进行读值

  if((rPDATF & 0x01)==0) //读到PF0口为低时说明存在脉冲收到

  {RX=0;}

  rTCNTB1=0x0190; //延时400us

  rTCON=0x0200;

  rTCON=0x0100;

  while(TIME);

  TIME=1;

  rTCON=0x0;

  return(RX); //函数返回RX值,在收到存在脉冲时RX为零

  }   

  调用该初始化程序就可以实现复位要求。“读”子程序、“写”子程序实现机制类似,代码不再赘述。在单总线协议下,通过调用这几个子程序进行相应的控制,就能完成主机与DS18B20的通讯,实现温度的采集。

  3 结论

  本系统接口电路简单,通讯可靠,集成后的系统运行良好,测试精度高,试验证明能完成预定测试任务。

关键字:数字温度传感器  DS18B20  S3C44BOX 引用地址:用单片机S3C44BOX控制红外线通信接口电路设计

上一篇:LPC2138串口中断总结
下一篇:基于STM32L152和S14432的无线网络系统设计

推荐阅读最新更新时间:2024-03-16 13:44

1-Wire总线与DS18B20应用仿真(图)
  作为一种单主机多从机的总线系统,在一条1-Wire总线上可挂接的从器件数量几乎不受限制。为了不引起逻辑上的冲突,所有从器件的1-Wire总线接口都是漏极开路的,因此在使用时必须对总线外加上拉电阻(一般取5kΩ左右)。主机对1-Wire总线的基本操作分为复位、读和写三种,其中所有的读写操作均为低位在前高位在后。复位、读和写是1-Wire总线通信的基础,下面通过具体程序详细介绍这3种操作的时序要求。(程序中DQ代表1-Wire总线,定义为P1.0,uchar定义为unsigned char)    1 1-Wire总线的复位   复位是1-Wire总线通信中最为重要的一种操作,在每次总线通信之前主机必须首先发送复位信号。如程序
[安防电子]
1-Wire总线与<font color='red'>DS18B20</font>应用仿真(图)
读取温度传感器DS18B20的实例
配置IO引脚 #define DS18B20 BIT4 //配置IO引脚 #define DS18B20_HIGH P2OUT |= BIT4 #define DS18B20_LOW P2OUT &= ~BIT4 精确延时宏代码 #define CPU_CLOCK 8000000UL //MCLK设为8MHz #define delay_us(us) __delay_cycles(CPU_CLOCK/1000000*(us)) #define delay_ms(ms) __delay_cycles(CPU_CLOCK/1000*(ms)) 求
[单片机]
DS18B20汇编程序与C程序
ds18b20 c程序 //DS1820 C51 子程序 //这里以11.0592M晶体为例,不同的晶体速度可能需要调整延时的时间 //sbit DQ =P2^1;//根据实际情况定义端口 typedef unsigned char byte; typedef unsigned int word; //延时 void delay(word useconds) { for(;useconds 0;useconds--); } //复位 byte ow_reset(void) { byte presence; DQ = 0; //pull DQ line low delay(29); // leave it lo
[单片机]
DS18B20温度计制作详细全过程
元件盒一直躺着几只DS18B20,从没试过,决定用它做个电子温度计,说干就干... 1、构思  Mega8做大脑、小塑料盒做外壳、3位LED数码管显示、废弃手机电池做电源、线路板热转印制作、设置2个开关(1个按键式、1个拨动式可常开)、RS232升级程序。先想这些吧,开始干了。 2、画电路出图  电路原理图很简单,很快用PROTEL99SE画完;  根据小塑料盒大小设计PCB板,布好线,这步也不复杂。 裁好热转印纸,准备出图了,我喜欢打印时选择 Show Holes ,这样在焊盘上就有孔。用我刚买的HP3050Z一体机,那天逛科技市场,看了感觉不错就搬回来了,从没用它打过转印纸,还不知道效果呢。   ......图出来了,还不错
[单片机]
<font color='red'>DS18B20</font>温度计制作详细全过程
#51单片机#DS18B20硬件原理以及通信的工作时序
DS18B20的硬件原理——温度存储器 DS18B20的温度测量范围:-55~+125°C。 如上图所示,DS18B20温度存储器一共有两个字节。LSB低字节,MSB高字节。Msb字节高位,Lsb字节低位。图中的S表示的是符号位。 通过编程,DS18B20可实现最高12位的温度存储器。以补码的格式存储在寄存器中。 结合下面寄存器温度对应存储数值的表格,理解DS18B20温度存储器。 ps:二进制数最低位变化1,代表温度变化0.0625°C。 DS18B20与单片机通信 单片机可通过1-Wire协议与DS18B20通信,读取温度 1-Wire总线的硬件接口简单,时序复杂。 下面可根据DS18B20工作协议过程,了解其
[单片机]
#51单片机#<font color='red'>DS18B20</font>硬件原理以及通信的工作时序
stm32实用篇6:HAL库 DS18B20 驱动
DS18B20是很常用的温度传感器,精度很高,测试结果如下: 整个驱动程序基本是根据时序写的。要注意的地方有两个: 1 读数据的时间 15us,这个值要实际测试,跟自己实现的延时函数效率有关,我使用的是10us,这个值如果设置的不合理,会直接导致整个数据读取出错; 2 建议使用DS18B20_GetTemp_SkipRom函数,不推荐使用设备号相关的那个读取函数,不太稳定; HAL库驱动程序源码: bsp_ds18b20.c /** ****************************************************************************** * @
[单片机]
stm32实用篇6:HAL库 <font color='red'>DS18B20</font> 驱动
便携式低功耗温度检测仪设计
温度测量被广泛应用于生产生活中,在工业锅炉供暖控制系统运行效果的检查,电力变压器运行状态监控,大中型恒温仓库温度控制等方面都需要对关键点的温度等参数进行实时采集和存储。该测仪系统设备少且简单,投资小对环境要求较低,能自动进行数据采集、分析和处理,并能自动记录与显示结果,可灵活应用于远程电力网监控,油田测井系统,楼宇自动化等领域。 1 系统总体结构设计 便携式低功耗检温度测仪以MSP430F247低功耗单片机为控制CPU,采用一体化智能温度传感器DS18B20作为数据采集模块,利用nRF905无线传输模块进行数据收发,检测仪设有RS232通信接口,可与计算机直接通信,同时可通过无线模块将数据按规定格式发送到上位机,由上位机进行
[测试测量]
便携式低功耗温度检测仪设计
TMP03/04型数字温度传感器在温度保护中的应用
 1 tmp03/04的性能特点 tmp03/04是美国模拟器件公司(adi)生产的串行输出数字温度传感器,输出数据的高低电平占空比与器件温度成比例关系,其内置的温度传感器产生的电压与热力学温度精确成比例,与内部的电压基准作比较后,输入内置的较精度σ-δ数字调制器,与目前常用的串行数据调制技术(如压频转换)相比,tmp03/04内置调制器采用的比率计调制技术具有更好的抗干扰性能,由于不受时钟漂移误差影响,该器件的温度测量范围一般在-25℃-+100℃之间,测量误差为±1.5℃(典型值)且不需要校准。 tmp03 和tmp04二者的主要区别在于:tmp03是集电极开路输出,适用于需要通过光电耦合器与微处理器隔离的电路,而tmp
[工业控制]
TMP03/04型<font color='red'>数字</font><font color='red'>温度传感器</font>在温度保护中的应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved