首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于PB375 U盘读写模块的温度参数记录系统 [

基于PB375 U盘读写模块的温度参数记录系统 [

本帖最后由 yuchengze 于 2016-12-27 10:05 编辑

1 引言
传统温度参数记录系统中,一般选用模拟式温度传 感器。常用的模拟温度传感器,输出为模拟量,因此在测量电路中须经过A/D转换成为数字量。而数字式温度传感器则将非电模拟量直接转换到数字信号,有效解 决了传统温度传感器外围电路复杂,抗干扰能力差的弊病,降低了对系统的要求。作为一个参数记录系统,通常是将每次测量的温度数据保持到eeprom或者 flash中,然后通过串口或者其它的通信方式传输到计算机或者其它系统中,操作繁琐,且需要计算机的配合。使用U盘读写模块,将数据保持到U盘(或者其 它的闪存存储卡上),方便实用。
该系统以Atmel公司的ATmega8L单片机为控制中心,温度测量使用DS18B20单总线数字温度传感器,U盘读写模块则使用PB375模块,其兼容CH375 U盘读写模块,在价格上又非常有优势。
2 硬件设计
图1给出系统框架图。ATmega8L单片机的PB0口线连接DS18B20;。DS18B20采用源端连接方式,PB375 U盘读写模块采用4线SPI。



2.1 ATmega 8L单片机
Atmel公司的EEPROM电可擦除技术、闪速存储器技术是最引人瞩目的高质量和高可靠性生产技术。在CMOS器件生产领域,Atmel的设计水平、生产工艺及封装技术一直处于世界领先地位。这些技术使单片机也具有优秀的品质,在结构、性能等方面具有明显优势。
ATmega8L单片机的特点是:8 KB的系统内可编程Flash,512字节EEPROM,1 KB SRAM,32个通用I/O口线,32个通用工作寄存器,3个具有比较模式的灵活的定时器/计数器,片内/外中断,可编程串行USART,面向字节的两线 串行接口,10位6路A/D转换器,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及5种可以通过软件进行选择的省电模式。
2.2 PB375 U盘读写模块
PB375 U盘读写模块是由深圳第五元素科技有限公司开发的U盘存储模块。用于嵌入式系统/单片机读写U 盘、闪盘、闪存盘、USB 移动硬盘、USB 读卡器等。 支持符合USB 相关规范基于Bulk-Only 传输协议的各种U 盘/闪存盘/外置硬盘、支持文件系统FAT12 和FAT16 及FAT32、 文件操作功能:新建、删除、读写数据,打开关闭文件等、 SPI接口,支持3.3V电平、 兼容CH375模块的操作命令、单芯片解决方案,该模块只需要一个主控芯片外加少量的电容电阻便可,相对于51MCU+SL811/CH375的模块,无论模块尺寸还是成本都有着极大的优势、模块尺寸38mm*38mm 。在使用上基本不需要占用单片机系统的存储空间,最少只需要几个字节的RAM 和几百字节的代码。
其命令接口兼容CH375,函数接口有:检测U盘连接、打开文件、关闭文件、读取文件数据、写入文件数据、创建新文件、删除文件等。其价格便宜,比目前主流方案低将近40%,非常轻松的为您的系统添加U盘存储功能。


2.3 DS18B20数字温度传感器
1-Wire是Dallas公司的一项专有技术,与目前多数标准串行数据通信方式,如SPI/I2C/MICROWIRE不同,它采用单根信号线,既传输 时钟,又传输数据,而且数据传输是双向的,因此具有节省I/O口线资源、结构简单、成本低廉、便于总线扩展和维护等诸多优点。
DS18B20的测量温度范围是 -55~+125℃。该温度传感器的输出温度数据可与摄氏度校准,使用查找表或转换规则就可计算温度值。在温度寄存器中温度数据存储格式 为一个16位符号扩展的两个单元。符号位S表示温度的正负。S=0时为正;S=1时为负。当DS18B20的配置为12位分辨 率时(测量精度是0.062 5℃),温度寄存器的所有位数据都是有效的;当DS181320的配置为11位分辨率时(测量精度是0.125℃),bit0未定义;当DS181320 的配置为10位分辨率时(测量精度是0.25℃),bit0和bit1未定义的;当DS181320的配置为9位分辨率时(测量精度 是..5℃),bit0~bit2未定义。

3软件设计
3.1程序框架


在调用功能函数对DS18B20进行操作时,由 于每片DS18B20都有唯一的代码(64位产品序列号),在多点温度测控系统中,代码是识别和操作 DS18B20的基础,无论读取还是选择对某一个传感器进行操作,主机必须发送64位代码。如果只有1个DS18B20,就不需要ROM码,指针addr 要设为NULL(0)。如果有多个器件,首先要读ROM码对每一个器件进行识别,然后才能在调用时对需要的器件通过ROM码进行地址匹配。程序先对I/O 口初始化操作,然后利用头文件ds18b20.h中的函数floatds18b20_temperature(unsigned char*addr)读取温度值。由函数定义可知,该函数的返回值是浮点型数据,提取各个位的值时需要进行整除和取余操作。由于浮点型数据无法进行整除和 取余操作,需要先转化为长整型数据。浮点型数据转化为长整型数据时,小数点后的值会丢失,为了保持小数点后的数值不会因为转化为长整型后丢失,同时对浮点 型数据乘以1 000,这样就可以分离出百位、十位、个位、十分位、百分位、千分位的值。
写U盘文件流程:⑴ CMD_FileOpen,打开文件
⑵ CMD_ByteLocate,移动文件指针到指定位置
⑶ CMD_ByteWrite,写入数据,期间还可以移动文件指针
⑷ CMD_FileClose,关闭文件
只需要用spi接口简单发送操作命令即可完成写文件到U盘的工作。

4 结语
该温度参数记录系统硬件设计简单,充分利用编译器的库函数,省去编写驱动程序的麻烦,同时采用PB375 U盘读写模块,能实时的将测量的温度参数保存到U盘文件,大大缩短了开发周期,
返回列表