这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [分享应用笔记]基于PB375 U盘读写模块的温度记录系统

共3条 1/1 1 跳转至

[分享应用笔记]基于PB375 U盘读写模块的温度记录系统

菜鸟
2009-01-23 12:26:23     打赏

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

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盘存储功能。

具体Datasheet下载地址:http://www.chinamcu.com/files/PB375.pdf   

 

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盘文件,大大缩短了开发周期,




关键词: 分享     应用     笔记     基于     PB375     读写     模块         

高工
2009-01-25 12:43:08     打赏
2楼
可惜了看不见框图。

高工
2009-02-20 09:56:27     打赏
3楼

确实看不见图,不过无妨,只要知道了器件,基本就知道怎么做了。PB375貌似仿CH375做的,只用过CH375,很方便的USB接口芯片,可以免费申请,资料也很全。


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]