基于USB接口的温度传感器设计方案.docx
《基于USB接口的温度传感器设计方案.docx》由会员分享,可在线阅读,更多相关《基于USB接口的温度传感器设计方案.docx(24页珍藏版)》请在冰豆网上搜索。
基于USB接口的温度传感器设计方案
基于USB接口的温度传感器设计方案
第1章绪论
1.1 设计理念与背景
基于USB接口的温度传感器,就是利用USB接口实现单片机技术的温度传感器与PC机之间通信的温度采集系统,以提高温度采集的准确度于精度。
实现低成本、高可靠性、告诉的温度数据采集和传输。
在工业生产、科研及医疗等需要严格进行温度控制的行业中,常常利用PC机对温度进行监控和处理,这就需要一种精度和自动化水平高、应用围广的温度采集手段,这就为基于单片机技术的温度采集系统得到了普遍应用。
这种温度采集系统可以根据主机命令通过传感器采集温度信号,并通过放大转换后经通讯接口上传至主机,以进一步的显示、分析和处理。
温度采集系统由温度采集模块和主机系统组成,之间通过总线接口进行通信。
温度采集模块是以单片机及温度传感器为核心构成的智能系统,具有完整的信号采集、放大、A/D转换、变换数据格式标准及执行上位机命令等功能。
主机系统用来实现对温度采集模块的控制,进行温度数据的读取,同时提供人机交互界面,实现对温度数据的显示、分析和处理等功能。
而要实现主机系统的功能,则需要通过总线接口将对温度采集模块所采集到的温度数据发送到主机系统来完成。
随着现代工业生产和科学研究对温度数据采集的要求日益提高,传输速度、纠错能力和操作安装的简易性是人们在使用温度采集系统的过程中关注的目标,而数据通信技术则成为其中的关键技术。
任何一种数据通讯技术都离不开接口,温度采集系统采用何种接口进行通信是影响系统整体效率的重要因素之一。
1.2 目前常用的总线接口
(1)PCI
PCI总线是Intel公司为Pentium处理器设计的一种新型标准总线,这种总线技术允许快速的存,磁盘和视频访问。
PCI总线结构的高传输速度限制了PCI接口的数量,一般只能有两到三个(通常用于图形和硬盘控制器)。
最大传输速度为264Mbps(只能在基于Pentium处理器的系统中使用64位软件才能达到)。
1.3USB
USB,UniversalSerialBus(通用串行总线),是一种新规格的快速、灵活的总线,是PC机和MAC记都支持的总线标准。
在传统的个人电脑领域中,外围设备存在着许多问题,不管是ISA总线还是PCI总线,I/O地址冲突十分常见,都不能可靠地支持共享式中断。
同时,这些大多数都是不可以随意插拔的,必须在开机前装好才能正常使用。
事实上,这种接口使设备的连接毫无灵活性可言。
USB正是作为克服这些困难的一种解决方案而出现的。
USB的主要特点如下:
(1)速度快。
USB有全速和低速两种方式,主模式为全速模式,速率为12Mbps,还提供低速方式,速率为1.5Mbps。
新推出的USB2.0协议提供最高达480Mbps的数据传输速率,可以适应各种不同类型的外设。
(2)支持热插拔和即插即用。
所有的USB设备可以随时的插入和拔离系统,USB主机能够动态的识别设备的状态,并自动给接入的设备分配地址和配置参数,添加、删除设备完全不用关闭计算机,不必像过去那样需要手动跳线和拨码开关来设置新的外设。
(3)易于扩展。
如图1所示。
USB使用的是一种易于扩展的级联星形拓扑结构,通过使用USBHub(USB集成器)扩展可连接多达127个外设。
标准USB电缆长度为3米(低速为5米)。
通过Hub或中继器可以使外设距离达到30米,可以使用多种连接方式进行扩展。
复合设备
主机
根HUB
设备
设备
HUB
HUB
设备
设备
设备
设备
图2.1USB总线物理拓扑结构
(4)使用灵活。
USB共有4种传输模式:
控制传输(control)、同步传输(synchronization)、中断传输(interrupt)、批量传输(bulk),适应不同设备的需要。
在本系统中采用了控制传输和批量传输两种方式。
(5)能够采用总线供电。
普通使用串口、并口的设备都需要单独的供电系统,而USB设备则不需要,因为USB接口提供了置电源。
USB电源能向低压设备提供最大5V,500mA的电源,从而降低了这些设备的成本并提高了性价比。
(6)实现成本低。
USB对系统与PC的集成进行了优化,适合于开发低成本的外设。
1.4 国外发展现状
传统上,数据的采集系统与独立的机箱设备通过串口或GPIB接口与计算机连接组成。
随着基于计算机的测量技术的出现,数据采集设备可以通过PCI、ISA或PXI连接到PC的数据总线。
在USB1.1推出之前,支持USB的功能模块并不多,原因除了因为传统的通信接口,如RS232,IEEE488等,一时难以退出应用领域外,一些早期USB应用者因为平台的实用性不强而步履艰难。
随着Windows98对USB驱动软件(USBD)完善,使其可提供对USB的强有力的支持,对USB技术的发展起到重要推进作用。
自此,市场上涌现出大批的USB产品。
在1999年初,在Intel开发者论坛大会上,与会者介绍了USB2.0规,该规的支持者除原有的成员外,又增加HP,Lucent和PHILIPS三个新成员。
USB2.0对USB1.1所规定的性能有所扩展,又向下兼容,数据的传输率将达到480Mbps。
现在,越来越多的测量系统包含有通过USB总线连接的测量设备。
2004年5月,NI公司发起了一波“传感器即插即用”(SensorsPlug&Play)行动,在针对灵巧的TEDS(TransducerElectronicDataSheet,传感器电子数据表) 传感器的IEEE1451.4标准的基础上推出了一系列数据采集产品。
通过采用传感器即插即用技术和新的USB数据采集设备,工程师和科学家们可以创建一个从传感器到软件的完整的即插即用数据采集系统。
现在有许多厂商提供经过预先测试可以无缝地与传感器即插即用硬件共同工作的传感器,开发人员可以使用NILabVIEW、MicrosoftVisualBasic和C来开发软件应用,以迅速、方便地进行测量。
随着USB数据采集设备继续减小体积和降低功耗,它们也变得更加便携和经济。
通过兼容传感器即插即用特性和多种扩展技术,NI公司USB数据采集设备的功能更超越了它们自己本身。
2006年VDC公司一份关于数据采集发展趋势的研究表明,几乎半数受访者计划购买一件USB数据采集设备。
随着USBOn-The-Go和无线USB等新技术的出现,未来USB在测量和自动化领域的应用必定无可限量。
1.5 课题的目标及意义
基于USB接口的温度采集系统,不仅仅是将USB接口用来传输数据,它需要依据USB协议进行数据格式的转换;底层硬件设备与操作系统之间需要以驱动程序为桥梁;驱动程序要实现与Windows系统底层核心机制相交互的功能。
因此,研究USB接口技术的核原理,掌握系统设备端USB接口设计和固件编程方法,及主机端设备驱动程序和应用程序的开发技术就成其关键。
本课题以研究基于USB接口温度采集系统的开发和应用为主要目的,在深入分析研究USB协议和设备构架的基础上,对基于USB接口的温度采集系统进行硬件设计和软件编程。
使温度采集模块采集来的数据通过USB 接口传送到主机系统,使客户应用程序通过驱动程序得到数据,并根据需要对数据进行处理。
意义在于深入研究USB接口技术的核,掌握温度采集系统的硬件设计、固件程序、驱动程序及应用程序的开发等关键技术,积累设备开发经验,为今后温度采集系统更好地应用奠定基础。
第2章硬件设计
2.1 基于USB接口的温度传感器的工作原理
2.1.1 工作原理图
图2.2 基于USB接口的温度传感器
2.1.2 工作原理
首先由DS18B20单总线温度传感器采集温度,通过单片机,经单片机驱动程序将温度信号送入PDIUSBD12芯片及外围设备,再由USB接口与PC机进行通信,并在PC机上显示温度。
系统总体框架由4 部分构成:
温度采集器、USB接口、上位机驱动程序和上位机应用程序。
温度采集器是一个智能单片机系统,它负责采集温度数据,并把从上位机发送的数据传输命令从USB接口接收后解析执行,再把数据值打包后通过USB接口发送到上位机等;USB接口负责把数据转换成USB协议要求的格式来传输;驱动程序负责在上位机应用程序和温度采集器专用代码之间的转换,把应用程序的数据通过USB接口发送到温度采集器,并把温度采集器传来的数据发送给应用程序;应用程序负责把用户的操作命令通知给驱动程序,并把温度采集器送来的温度数据通过驱动程序的转换显示给用户。
我将在下面几节中介绍各硬件部分的功能。
2.2 温度采集部分
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
2.2.1 DS18B20数字温度传感器的外形及引脚说明
SOIC封装的DS18B20的引脚排列见图3,其引脚功能描述见表1。
图2.3TO-92封装和SOIC封装的DS18B20的引脚排列
DS18B20采用3脚TO-92封装或8脚SOIC封装。
图3是其采用3脚TO-92封装的底视图及8脚SOIC封装的引脚排列图。
其中GND接地;VDD为电源端;DQ是数据输入/输出端;其余为空脚。
序号
名称
引脚功能描述
1
2
3
GND
DQ数据输入/输出引脚
VDD
地信号
开漏单总线接口引脚。
当被用在寄生电源下,也可以向器件提供电源。
可选择的VDD引脚。
当工作于寄生电源时此引脚必须接地。
2.2.2.DS18B20的性能及特点
由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。
它具有体积小,接口方便,传输距离远等特点,而且兼具如下几个性能:
①适应电压围3.0―5.5V,在寄生电源方式下可由数据线供电。
②独特的单线接口方式,DS8B20在与微处理器连接时,仅需要一根口线即可实现微处理器与DS18B20的双向通信。
③DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。
④DS8B20在使用中,不需要任何外围元件,全部传感原件及转换电路集成在形如一只晶体管的集成电路。
⑤测温围:
-55℃~125℃,在-10~+85℃时精度为±0.5℃。
⑥可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃﹑0.25℃﹑0.125℃和0.0625℃,可实现高精度测温。
⑦在9位分辨率时,最多在93.75ms把温度转换为数字;12位分辨率时,最多在750ms把温度值转换为数字,速度更快。
⑧测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。
⑨负压特性,电源极性接反时,芯片不会因发热而烧毁,但不能正常工作
2.2.3 DS18B20工作过程及时序
数器1提供一频率稳定的计数脉冲。
高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。
初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。
初始时,计数器1预置的是与-55℃相对应的一个预置值。
以后计数器1每一个循环的预置数都由斜率累加器提供。
为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。
计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数。
DS18B20部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。
在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25℃进行比较,若低于0.25℃,温度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃时,温度寄存器的最低位就进位然后置0。
这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5℃,四舍五入最大量化误差为±1/2LSB,即0.25℃。
温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。
测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。
1.初始化
单总线上的所有处理均从初始化序列开始。
初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。
存在脉冲让总线控制器知道DS1820在总线上且已准备好操作。
2.ROM操作命令
一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。
所有ROM操作命令均为8位长。
这些命令列表如下:
ReadROM(读ROM)[33h]
此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。
此命令只能在总线上仅有一个DS18B20的情况下可以使用。
如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象(漏极开路会产生线与的结果)。
3.存储器操作命令
WriteScratchpad(写暂存存储器)[4Eh]
这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。
接下来写入的两个字节将被存到暂存器中的地址位置2和3。
可以在任何时刻发出复位命令来中止写入。
ReadScratchpad(读暂存存储器)[BEh]
这个命令读取暂存器的容。
读取将从字节0开始,一直进行下去,直到第9(字节8,CRC)字节读完。
如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。
4.处理数据
高速暂存存储器(RAM)由9个字节组成,包含了8个连续字节,前两个字节是测得的是温度信息,第一个字节的容是温度的低八位,第二个字节是温度的高八位。
第三个和第四个字节是温度高限TH、温度低限TL暂存区,第五个字节是配置寄存器暂存区,第6、7、8字节是系统保留所用,就相当于DS18B20的运算存,第九个字节是冗余检验字节。
其分配如表2所示。
寄存器容
字节地址
温度值低位(LSByte)
温度值高位(MSByte)
高温限值(TH)
低温限值(TL)
配置寄存器
保留
保留
保留
CRC校验值
0
1
2
3
4
5
6
7
8
2.3 USB接口芯片部分
要实现USB设备与计算机接口,通常的做法有两种:
一是使用USB接口芯片通过微处理器,或是使用带微处理器的USB接口芯片实现与PC机的接口。
二是将USBcore做进FPGA芯片中实现与PC的接口。
目前,市场上供应的USB 控制器主要有两种:
一种是带USB接口的单片机,如CYPRESS的EZ-USB系列;另一种就是纯粹的USB接口芯片,仅处理USB通信,如PHILIPS的PDIUSBD12,NationalSemiconductor的USBN9604等。
选择带USB接口的单片机的最大好处在于开发者对系统结构和指令集非常熟悉,开发工具简单,缺点是灵活性不够高,开发工具与原来的单片机开发工具不兼容,开发成本较大。
对于简单或低成本系统,其价格也是在实际选择过程中需要考虑的因素。
纯粹的USB接口芯片仅处理USB通信,必须有一个外部微处理器来进行协议处理和数据交换。
典型产品有Philips公司的PDIUSBD12(并行接口)、ISP1581(USB2.0),NS公司的US—BN9603/9604(并行接口),NetChip公司的NET2888等。
这种USB接口芯片的主要特点是价格便宜、接口方便、可靠性高,系统组成灵活,可根据不同的系统需求,搭配不同的MCU,具有较高的性能价格比。
尤其适合于产品的改型设计(硬件上仅需对并行总线和中断进行改动,软件则需要增加微处理器的USB中断处理和数据交换程序、PC机的USB接口通信程序,无需对原有产品系统结构作很大的改动)。
但因为USB控制器是通过串行口或并行口与MCU连接,在传输速度方面不如集成了MCU的控制芯片。
2.3.1 PDIUSBD12USB芯片简单介
PDIUSBD12是一款性价比很高的USB器件。
它通常用作微控制器系统中实现与微控制器进行通信的高速通用并行接口。
它还支持本地的DMA传输。
这种实现USB接口的标准组件使得设计者可以在各种不同类型为控制其中选择出最合适的微控制器,这种灵活性减小了开发时间、风险以及费用(通过使用已有的结构和减少固件上的投资),从而用最快捷的方法实现最经济的USB外设的解决方案。
PDIUSBD12完全符合USB1.1版的规。
它还符合大多数器件的分类规格:
成像类、海量存储器件、通信器件、打印设备以及人机接口设备。
同样地,PDIUSBD12理想地适用于许多外设,例如:
打印机、扫描仪、外部的存储设备(Zip驱动器)和数码相机等等。
它使得当前使用SCSI的系统可以立即降低成本。
PDIUSBD12所具有的低挂起功耗连同LazyClock输出可以满足使用ACPI、OnNOW和USB电源管理的要求。
低的操作功耗可以应用于使用总线供电的外设。
2.3.2PDIUSBD12的引脚分布及其功能
1.PDIUSBD12的引脚分布
图2.4PDSIUBD12引脚分布图
2.PDIUSBD12的引脚功能
表4 PDSIUBD12引脚功能
管脚 符号 类型 功能描述
1 DATA<0> IO2 双向数据位0
2 DATA<1> IO2 双向数据位1
3 DATA<2> IO2 双向数据位2
4 DATA<3> IO2 双向数据位3
5 GND P 地
6 DATA<4> IO2 双向数据位4
7 DATA<5> IO2 双向数据位5
8 DATA<6> IO2 双向数据位6
9 DATA<7> I02 双向数据位7
10 ALE I 地址锁存功能。
在多路地址/数据总线中,下降沿关闭地 址信息锁存。
将其固定为低电平用于单地址/数据总线配置。
11 CS_N I 片选(低有效)
12 SUSPEND I,OD4 器件处于挂起状态
13 CLKOUT O2 可编程时钟输出
14 INT_N OD4 中断(低有效)
15 RD_N I 读选通(低有效)
16 WR_N I 写选通(低有效)
17 DMREQ O4 DMA请求
18 DMACK_N I DMA应答(低有效)
19 EOT_N I DMA传输结束(低有效),仅当脚18和脚15或脚16一起激活时才有效。
20 RESET_N I 复位(低有效且不同步)片上电复位电路,可固定接VCC
21 GL_N OD8 GoodLink LED指示器(低有效)
22 XTAL1 I 晶振连接端1(6MHZ)
23 XTAL2 O 晶振连接端2(6MHZ),如果采用外部时钟信号取代晶振,可连接XTAL1 ,XTAL2应当悬空。
24 VCC P 电源电压(4.0-5.5V),要使器件都工作在3.3v,对VCC和Vout3.3都提供3.3V电压
25 D- A USB D- 数据线
26 D+ A USB D+ 数据线
27 VOUT3.3 P 3.3V调整输出
28 A0 I 地址位。
A0=1选择命令指令,A0=0选择数据。
该位在多路地址/数据总线配置时可忽略,应将其接高电平。
注:
O2:
2mA驱动输出 OD4:
4mA驱动开漏输出
OD8:
8mA驱动开漏输出 IO2:
4mA输出
2.3.3 PDIUSBD12外围电路及其与AT89C52之间的连线图
1. PDSIUBD12外围电路
图2.5 PDSIUBD12外围电路
2. PDIUSBD12与AT89C52的连线图
图2.6 PDIUSBD12与AT89C52的连线图
PDIUSBD12采用SO28或TSSOP28封装,在本设计中D12采用的是SO28封装。
第3章上位机软件编程
在设备硬件和单片机固件调试通过之后,主机就能够正确识别设备了,但主机与 USB设备的信息交互是通过软件来实现的。
主机软件开发在本系统中是设计的难点。
USB主机系统软件开发分为两部分:
主机操作系统上的客户驱动程序以及主机应用程序。
设备驱动程序是提供连接到计算机的硬件的软件接口,它是操作系统的一个信任部分,通过在应用层和固件专用代码之间的转换来完成它的任务。
用户应用程序一般通过使用一套操作系统支持的函数的方式访问硬件,而不必考虑如何控制硬
完整的上位机程序代码见附录1。
以下将介绍各部分程序的实现:
3.1 使用Visual Studio 2005实现温度数据的显示
3.1.1 用Visual Studio 2005创建温度显示窗体
Visual Studio 2005是一个程序开发平台,先在电脑中新建一个文件夹,命名为“温度显示”,在打开Visual Studio 2005,选择创建项目,选择的项目类型为Windows应用程序,将名称改为“Text Temperature”并将其存放在之前建立的文件夹,方便查找。
然后进入界面设计,即设计温度显示窗体Form1。
将Form1窗体拉伸至合适的大小,在界面的左侧“工具箱”中选择所需控件单击就可将其放在Form1窗体的合适位置,右键单击窗体中的控件可对其属性进行更改。
在本设计中使用的控件有3个Label和两个Button。
其属性设置如下表所示:
表5 各控件属性表
控件 Text Font Size
Label1 温度:
宋体 初号 192,56
Label2 0 宋体 初号 192,56
Label3 ℃ 宋体 初号 192,56
Button1 开始 宋体 9pt 75,23
Button2 停止 宋体 9pt 75,23