《自制USB接口温度仪.doc》由会员分享,可在线阅读,更多相关《自制USB接口温度仪.doc(7页珍藏版)》请在金锄头文库上搜索。
1、自制USB接口温度记录仪日常生产、生活中温度计是一种不可或缺的仪器仪表,比如我们常用的室温温度计、体温计,它们都有一个共同的特点:就是只能显示即时的温度,不能记录温度变化的过程,需要操作人员定时查看并记录,如果要记录温度变化的过程需要专门的温度记录仪,一般价格不菲。微型计算机的普及为温度记录工作打开了一扇新的窗户,这里介绍一个笔者自制的温度记录仪,自制价格低于100元,同时体积不大,可以随身携带,有计算机的地方随时可以记录温度的变化,本温度记录仪即可用于日常生活中,如记录病人体温的变化,也可用于科研、生产活动中,比如冷藏库温度监测、电信机房监控、过程温度控制和空调监测等。探头经过适当的封装完全
2、可以用于化学实验过程中温度变化的记录,图1是温度记录仪运行时的情况:图1一、性能指标采样通道:1温度测量范围:-55-+125精度:在-10+85范围内,精度为0.5记录点数:5000采样周期:2秒、4秒、5秒、10秒、15秒、30秒、60秒和300秒八档可调,记录时间最短约3小时,最长约17天。二、电路原理电原理图请参考无线电200911期图2电原理图如图2所示,电路比较简单,测温元件采用了最常见的单总线温度传感器DS18B20,DS18B20支持“单总线”接口,测量温度范围为-55+125,在-10+85范围内,精度为0.5。现场温度直接以“单总线”的数字方式传输,大大提高了系统的抗干扰性
3、。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。DS18B20的指令见表1、表2,具体的使用方法可以参见元件手册。电路核心是一片来自MICROCHIP的USB单片机PIC18F2550,PIC18F2550是一款采用纳瓦技术的28引脚高性能增强型闪存USB单片机,拥有32KB闪存,2KB RAM,256字节EEPROM, 3个外部中断,4个定时器模块(Timer0到Timer3),2个捕捉/比较/PWM(CCP)模块,其USB接口兼容USB V2.0
4、,支持低速(1.5 Mbit/s)和全速(12 Mbit/s)数据传输,支持控制、中断、等时和批量数据传输模式。DS18B20共有三条引线,分别是电源线、数据线和地线,其中数据线接在了PIC18F2550的BO脚,PIC18F2550通过软件模拟单总线时序,由于只有一片DS18B20,所以仅模拟了读ROM、跳过ROM、温度变换和读暂存器四条指令。单片机与晶振等周边元件构成了USB单片机最小系统。表1 ROM指令表指 令约定代码功 能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址)。符合ROM55H发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18
5、20使之作出响应,为下一步对该DS1820的读写作准备。搜索ROMFOH用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。为操作各器件作好准备。跳过ROMCCH忽略64位ROM地址,直接向DS1820发温度变换命令。适用于单片工作。告警搜索命令ECH执行后只有温度超过设定值上限或下限的片子才做出响应。表2RAM指令指 令约定代码功 能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。读暂存器BEH读内部RAM中9字节的内容。写暂存器4EH发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后
6、,是传送两字节的数据。复制暂存器48H将RAM中第3、4字节的内容复制到EEPROM中。重调EEPROMB8H将EEPROM中内容恢复到RAM中的第3、4字节。读供电方式B4H三、软件编程温度记录仪的单片机软件采用PICC编写,其中主要有USB编程和单总线编程两部分,USB接口部分主要采用了PICC提供的几个库函数:usb_task、usb_enumerated、usb_kbhit、usb_get_packet和usb_put_packet,按顺序首先调用usb_task初始化本地环境,调用usb_enumerated初始化与USB主机的联接环境,然后进入主循环调用usb_kbhit判断主机是
7、否发出命令,如果有命令调用usb_get_packet接收数据,调用usb_put_packet发送数据,各个库函数的使用方法可参考PICC手册。PIC18F2550本身没有提供硬件的单总线接口,本机采用软件模拟的方法实现了单片机与DS18B20间的通迅,通过单片机B0口的三种状态配合接在BO口的4.7K的上拉电阻模拟了单总线的时序,本刊2009年第1期对DS18B20的时序进行了详尽分析,同时读者也可在网上下载到DS18B20的用户手册,这里不再赘述,这里给出一段读单总线数据的代码,写单总线数据的代码与此类似:BYTE touch_read_byte() BYTE i,data; for(i
8、=1;i=8;+i) output_low(TOUCH_PIN); delay_us(14); output_float(TOUCH_PIN); delay_us(5); shift_right(&data,1,input(TOUCH_PIN); delay_us(100); return(data);有了读写单总线函数后就可以编写DS18B20的程序了,参考前面的DS18B20命令表,按次序发出0x33,0xCC,0x44和0xBE命令就可以取得温度值了。PC机上面的程序采用VC6.0编写,由于本机使用了USB中的UID协议,因此在WINDOWS平台上面无需任何驱动程序。程序使用了文档-视结
9、构,在程序的MainForm中设定了一个时钟,最低每两秒与单片机通迅一次,读取其中的温度值,其中温度若为零上转换公式为:(out_data0+ out_data1*256) * 0.0625温度若为零下转换公式为:out_data0+( out_data1-0xf8)* 256-2048) * 0.0625读取的温度值写入文档,然后更新视图,实现了温度记录仪功能。四、制作调试电路比较简单,单面板PCB即可胜任,图3为单面PCB布线图供参考,图4是笔者使用热转印法制作的PCB,图5是组装完成后的照片,为了适应手边的外壳,所以布线不是很紧凑,读者可以根据自已外壳的实际情况重新布线,重新布线时只要注
10、意一下各器件,特别是晶振要安排在单片机尽可能近的地方。单片机需要写好程序才能工作,可以使用任何支持PIC编程的编程器,笔者使用了MICROCHIP的ICD2完成了程序烧写工作。将PC机程序复制到PC机硬盘中,PC机程序是一个绿色软件,可以复制到PC机的任一目录下;硬件组装完成后,将温度记录仪插入任一PC机USB口中,系统会发现一名为的设备并自动安装相应的设备驱动程序,运行PC机软件即可看到即时的温度和温度记录曲线。图3图4图5五、操作指南针对不同的测量对象可能要对温度传感器进行适当的封装,特别是化学实验的温度过程记录需要特殊的封装,网上有现成的不锈钢、黄铜等各类封装的DS18B20出售,可以选购适当封装的DS18B20使用,也可以根据工作介质的不同自制适当的封装。PC机软件主要提供了即时温度显示、最大、最小值显示和温度变化曲线记录功能,当鼠标在程序窗口内移动时程序会给出对应点的温度记录和时间点。同时程序还提供了历史数据保存和再现功能,可以再现过去某一时刻的记录曲线,当打开历史数据时移动鼠标给出的是历史数据的温度和时刻,可能通过菜单关闭历史数据的显示。程序的打印功能可以打印当前窗口内的温度记录曲线。采样周期和波形展宽操作可以通过鼠标点击操作完成。所有功能未能尽述,操作比较简单,略加摸索即可上手。