学海荡舟手机网

主页 > 实用文摘 > 教育文摘_12 > > 详细内容

单总线协议转换器在分布式测控系统中的应用_单片机论文

摘要:介绍ds2480b uart/rs232至单总线协议转换器的主要特性、工作原理、接口技术,并具体阐述ds2480b在农业温室分布式测控系统设计中的应用。

    关键词:ds2480b 单总线 rs232  分布式测控

单总线技术是美国dallas半导体公司近年推出的新技术。它将地址线、数据线、控制线合为1根信号线,允许在这根信号线上挂接数百个单总线器件芯片。基于单总线的每个芯片内部均有1个出厂前被光刻好的64位rom序列号,它可以看作是该芯片的地址序列码。开始8位是产品类型标号,如dsl8b20为28h,ds2450为20h等;接着的48位是该芯片自身的序列号,用以保证在同类芯片中的唯一性;最后8位是前面56位的循环冗余校验码,以确保数据传输的可靠性。光刻rom的作用是使每个"单总线"器件的地址都各不相同,这是定位和寻址器件实现单总线测控功能的前提条件,并以此为依据实现1根总线上挂接多个"单总线"芯片。芯片内部集成有收发控制电路和电源存储电路。与微处理器的接口非常简单,可节省大量的引线和逻辑电路。芯片的耗电量很小,从总线上"偷"一点电(空闲时几μw,工作时几mw)存储在片内的电容中就可正常工作,一般不用另附电源。最可贵的是这些芯片在检测点已把被测信号数字化了,因此在单总线上传送的是数字信号,这使得系统的抗干扰性能好、可靠性高、传输距离远。

 单总线技术具有节省i/o口线资源、结构简单、成本低廉、便于总线扩展和维护等优点,因此,在分布式测控系统中有着广泛应用。

1 ds2480b主要特性

◇ 串口uart/rs232至单总线通信协议的转接桥,可直接连到uart和5v rs232系统中, 支持dallas全系列单总线器件,如数字温度传感器ds18b20、a/d转换器ds2450等;

◇ 将主机从单总线时序控制中解脱出来,提供规范的、灵活的和强驱动的单总线定时;

◇ 支持标准uart通信,支持9.6(默认)、 19.2、57.6和115.2 kbps速率;

◇ 具有较强的总线驱动能力,通信距离可达300 m;

◇ 可编程下拉摆率控制和有源上拉,工作范围 5 v,-40 ~ +85 ℃,8引脚soic封装。

2 引脚说明及原理框图

ds2480b为8脚贴片式封装,如图1所示。引脚功能如表1所列。

表1 引脚功能说明

引脚号引脚名称引脚功能
1gnd地线
21-w单总线输入输出端
3nc悬空
4vdd4.5~5.5v电压
5vppeprom编程电压
6polrxd/txd选择端
7txd发送端
8rxd接收端

ds2480b工作原理框图如图2所示。

3 ds2480b与rs232的接口技术

    电路应用了串口"窃电"技术,不用外加电源,同时有ds9502对单总线提供静电保护,如图3所示。

4 基于ds2480b的单总线农业温室分布式测控系统设计

    4.1 核心器件介绍

 温度信号的检测选用单总线数字温度计dsl8b20。它利用温敏振荡器的频率随温度变化的关系,通过对振荡周期的计数来实现温度测量。dsl8b20采用3引脚to-92小体积封装形式;温度测量范围为 -55~+125 ℃,可编程为9~12位 a/d转换精度,测温分辨率可达 0.0625 ℃,典型转换速度200 ms/次;被测温度用符号扩展的16位二进制补码数字量方式串行输出;内部非挥发的温度报警触发器可由用户设置高、低限报警值。

  湿度信号、二氧化碳浓度等信号的检测,先由相应的传感器和信号调理电路将其转换成电压信号,然后挂接到ds2450上。ds2450是单总线4通道逐次逼近式a/d转换器,其输入电压范围、转换精度位数(2~6位)、报警门限电压等均可编程;每个通道有各自的存储器以存储电压范围设置、转换结果、门限电压等参数;普通方式下串行通信速率达16.3 kbps;片内16位循环冗余校验码生成器可用于检测通信的正确性;芯片正常工作时仅消耗2.5 mw功率,空闲情况下消耗25μw。

 温室控制系统的执行机构采用开关量控制,选用可寻址的单总线控制开关ds2405,由它送出1位0或1作为控制码,先触发光电耦合器,经功率放大,驱动继电器、晶闸管或固态继电器,控制通风机、增湿器执行机构等的开启与关闭。

 对于控制系统中所需要的数字输入信号,可选用ds2401。ds2401是符合单总线协议的rom硅片。当外围电路接通ds2401后,通过条件搜索rom命令,可以由计算机查询到该输入开关量的状态。

    4.2 系统硬件组成框图

    系统硬件组成框图如图4所示。

    4.3 软件设计

 为了保证数据可靠地传输,任一时刻单总线上只能有一个控制信号或数据。进行数据通信时应符合单总线协议,计算机对某一测控对象操作时,一般有以下4个过程:① 初始化;② 传送rom命令;③ 传送ram命令;④ 数据交换。每次传送的数据或命令是由一系列的时序信号组成,单总线上共有4种时序信号:① 初始化信号(复位信号);② 写0信号;③ 写1信号;④ 读信号。软件设计时要产生这四种时序信号波形。在单总线系统中,软件设计是技术的关键。简捷的硬件设计是靠复杂的软件来支撑的。

 为了提高开发效率,我们采用了dallas公司授权的软件开发商(asdb)提供的免费tmex软件开发工具套件。在tmex中已包含上述4种时序信号波形程序,编程时可直接调用。tmex实际上是一些动态链接库,包括ibfs32.dll 、ib97u32.dll 等文件,提供了对单总线芯片进行访问和控制的函数。它支持windows及dos操作平台,可以采用c、c++、delphi、vb等计算机语言开发用户应用程序;它还支持基于ds2480b的串口转换器ds9097u、ds1410d并行转换口。因此,可以设计精美、生动的界面,既可以看到测控系统的总布局图,又可查看某个测控现场的状态数据和指示信号,达到了现代化、自动化的管理水平。

  下面是用vb6.0开发工具调用tmex的api函数,驱动ds2480b进行单总线通信的程序。

......

dim dmmy,search, result as integer

dim myhandle as long

state-buffer(15360) as byte

private declare function tmextendedstartsession lib "ibfs32.dll"(byval portnum as integer byval porttype as integer, byval reserved as any) as long

private declare function tmsetup lib "ibfs32.dll"(byval session_handle as long ,state_buffer as byte) as integer

private declare function tmfirst lib "ibfs32.dll" (byval session_handle as long, state_buffer as byte) as integer

private declare function tmrom lib "ibfs32.dll" (byval session_handle as long, state_buffer as byte, rom as integer) as integer

private declare function tmendsession lib "ibfs32.dll"(byval session_handle as long) as integer

......

myhandle= tmextendedstartsession(1,5,vbnullstring)

'检查ds2480b是否准备就绪,准备建立会话注意,针

'对ds2480b,该函数第2个参数必须为5

if (myhandle>0) then '成功建立会话

dmmy=tmsetup(myhandle) '初始化

search=tmfirst(myhandle,state_buffer(0)) '查找设备,找

'到第1个设备返回"1"

if (search=1) then

rom[0] = 0; '表示读数据

result = tmrom(session_handle, state_buffer(0), rom(0));

if (result = 1) then

'此时rom中数据表示该设备的64位rom序列号,其中

' rom[0]为器件类型代码,如rom(0)=20h 表示找到

' ds2450, rom[7] 存放的是 8 bit crc

......         '对找到的设备进行相应操作

......

end if

dmmy= tmendsession(myhandle) '结束会话,释放单总线

......

结束语

 基于ds2480b的单总线分布式测控系统,具有节省i/o口线资源、结构简单、开发快捷、成本低廉、便于总线扩展和维护等优点,因此有广阔的应用空间,具有较大的推广价值。