引言

  测温测量和控制在当今社会生活中扮演着至关重要的角色,国际国内市场现有的多种测温技术涵盖了安检、市 场、生活、消防、科研等诸多领域。温度的测量和控制在工 业生产中有广泛的应用,尤其在石油、化工、电力、冶金等 重要工业领域中,对温度的测量和监控是非常重要的一个环节。在传统的温度测量系统中,温度采集器通常采用模拟温 度传感器,模拟信号在传输的过程中容易受到干扰从而影响测量的准确度,模拟信号转化成数字信号,精度较高的A/D 转换器一般价格昂贵,对于传统系统存在的不足,结合国内外在温度监测系统上的研究现状,本文进行了新的设计。


  本文智能测温系统基于物联网技术与嵌入式技术实现 远程无线可移动的视频监控系统,依托于FS_S5PC100开发 平台用三星公司先进的基于Cortex-A8 内核的 S5PC100处理 器和无线网卡WI-FI作为硬件载体,综合应用WLAN、嵌入 式Linux和JSP技术等技术,以程序软件的通用性和易用性为 方向,实现无线视频和智能测温系统控制以及环境信息采集。

基于ARM的智能测温系统经典案例
图1   平台硬件组成结构图 

基于ARM的智能测温系统经典案例

   图2  系统软件结构框图


  1 系统总体设计

  1.1 平台设计接口目标与功能

  本文设计智能温度采集系统,需要具备温度采集、温 度数据的存储、温度数据的显示和网络通信功能。因此,平 台拟设计的接口如下:

  电路板设计温度传感器采集接口1路,温度传感器采用 DS18B20一线制通信接口;由于平台需要对采集的数据存储 同时又需要存储本地操作系统代码,需要有稳定的存储方 案,因此平台设计NAND FLASH与SD卡结合的存储方案, 其中NAND FLASH主要用于存储本地代码,SD卡用于存储 采集数据;系统需要将采集的温度以及历史温度实时的显示

基于ARM的智能测温系统经典案例
图3   S5PC100 DDR2 SDRAM电路原理图

基于ARM的智能测温系统经典案例
图4    S5PC100 NandFlash电路原理

  出来, 因此需要集成图形显示接口,系统中采用24bit TFT LCD接口电路;系统为满足远程对平台采集数据访问功能, 因此集成一路10M/100M 自适应以太网接口;为满足对温度 的监控需要,平台集成一路PWM蜂鸣器接口以及一路RS232 接口,RS232接口可连接GPRS模块。调试扩展接口:系统应集成1路RS232接口,用于使用控制终端对系统进行调试。课题设计平台可实现定时温度采集、显示 以及温度超限报警等功能,其主要工作流程如下:

  1.平台能够以定间间隔对采集 温度传感器数据;

  2.采集的温度数据按时间顺序保存在本地数据库中;

  3 。 每次采集温度与设定温度上、下限进行比较,当温度超限后 可发出本地报警或远程报警信号,本地报警信号通过蜂鸣器报警音实 现 , 远程报警信号可以通过外接GPRS实现短信报警;

  4 。 平台具备远程数据访问功能,可通过网络实现对本地数据库的访问。


  1.2 平台的硬件电路各模块选型

  根据平台的接口和功能需求,将系统按照功能划分进行模块化设计,其个功能模块的选型如下:

  1.2.1 平台处理器单元

  平台需要具备温度采集、大容 量数据存储、网络通信等功能。因 此,其处理器部分具备运行文件系 统以及网络协议簇的能力。课题提 出以ARM微控制器为核心处理器的 解决方案,利用ARM微控制器可搭 载操作系统和能够处理复杂协议族 的能力;降低了系统设计的风险, 提高平台计的可实施性与灵活性。

  A R M 微 控 制 器 在 本 系 统 中 的 作用主要是,采集温度传感器温度 值,并实现存储以及转发功能。平台采用三星公司先进的 基于Cortex-A8 内核的 S5PC100处理器设计而成。S5PC100 处理器采用64位内部总线构架,包括强大的硬件加速器, 如:动态视频处理,显示控制和缩放。支持多种格式的硬件 编解码:MPEF-1/2/4、H263/H264、CV-1、DivX。其硬件加速功能支持实时的视频会议和模拟电视输出,支持NTSC 和PAL模式的HDMI。S5PC100内部集成了24BIT LCD接口、 TVout接口、Camera输入接口、4路串口、SD卡接口、SPI、100M网口、USB2.0-OTG接口,USB Host接口、矩阵按键扫 描接口、SPI通信、I2C通信接口等硬件资源,适用于有高性 能要求的嵌入式系统应用场合。

基于ARM的智能测温系统经典案例
图5    S5PC100 SD卡电路原理图
基于ARM的智能测温系统经典案例

图6   DS18B20与接口原理图


  在平台中需要NAND FALSH、SD卡、以太网等复杂接口的支持,S5PC100具备强大的片内接口,平台需要的外设 接口通过S5PC100搭载简单的外部电路即可实现,提高了系 统设计的集成度,因此S5PC100非常适用于本系统。


  1.2.2 温度传感器

  平台采用美国DALL A S公司生产的DS18B20可组网数 字温度传感器。其耐磨耐碰,体积小,使用方便,封装形 式多样,适用于各种狭小空间设备数字测温和控制领域。


  DS18B20具有一线通信接口,只需要单根口线即可实现微控 制器通信互联,极大地简化了外部温度传感器通信线路。 DS18B20具有宽泛的工作电压和温度测量范围,750毫秒内 完成温度测量,可在-10℃至+85℃范围达到±0.5℃的测量精 度。DS18B20在出厂时内部集成了唯一的序号, 可用于实现 DS18B20通过一总线进行组网。DS18B20简化的通信接口以 及便捷的组网方式可降低产品的设计成本,提高系统的灵活 性。目前,DS18B20已经被用于各种环控,设备温度监控测 量,以及各种温度测量系统中。


  1.3 平台的硬件电路总体构成

  平台硬件组成如图1所示。其中核心模块为S5PC100, DD2 SDRAM、NAND FLASH、TFT LCD、SD卡、RS232接 口均可通过S5PC100内部外设接口直接扩展,以太网接口通 过S5PC100的外部静态总线接口连接。


  1.4 平台主要软件方案的选定

  在简单系统中 , 一般采用前 、 后台编程方式设计软件,但在复杂的系统中,前后台方式的软件设计方法无法满 足系统的要求,需要网络协议栈支持、文件系统支持、多进 程支持后,前、后台软件由于其超循环编程方法的限制很 难实现系统的功能要求,因此复杂的嵌入式系统往往加入 了嵌入式操作系统的支持。 目前,常用嵌入式操作系统有 VxWorks、WinCE、Linux等。这里我选用的是Linux,它是开 放源代码的类UNIX操作系统。目前经过长期的发展Linux已 成为世界领先的操作系统,可以运行在服务器、大型机和超 级计算机, 由于Linux的可剪裁性和可移植性,目前也广泛 应用在嵌入式设备上,如消费电子产品、交换设备、工业控 制等。


  Linux具备良好的多进程与多线程支持,并且支持多种 网络协议、具备丰富的文件系统,并且其开源代码的特性受 到广大的开发者支持。


  在本系统中采用L inu x操作系统能够充分利用嵌入式 Linux中成熟的网络协议簇以及模块化的剪裁方法,降低系 统软件的开发难度,提高了系统设计的灵活性。


  1.5 系统软件架构

  平台设计的软件采用分层以及模块化的方式进行设计。由于采用嵌入式Linux操作系统作为解决方案。因此, 将软件划分为应用层、系统层、驱动层;系统层软件需要完 成Linux在操作系统上的移植和各个模块的驱动;应用层软 件需要完成温度采集模块、显示模块以及网络通信模块的软 件设计。软件层次示意图如图2所示。


  2 系统各主要接口硬件电路设计

基于ARM的智能测温系统经典案例
图7   PWM接口蜂鸣器电路连接图


  2.1 S5PC100存储系统设计

  设计的目标平台中需要扩展三种类型的存储介质,分 别为DDR2 SDRAM、NAND FLASH以及SD卡电路。下面按 照三种存储介质在系统中的功能分别进行阐述。

  (1)DDR2 SDRAM电路

  S5PC100 SDRAM控制器通过向外部16位或32位SDRAM

  提供接口来扩展芯片存储能力。本平台采用2片K4T1G164

  16位宽度DD2 SDRAM组成32位内存,容量256MB,如图3。

  (2)NANDFLASH电路与SD卡存储电路 由于系统需要运行Linux系统,系统代码较为复杂,需要一定容量的存储器存放Linux操作系统源代码以及应用程 序,由于S5PC100内置了NAND FL ASH控制器,因此平台 采用K9F2G08 256MB NAND FLASH直接与S5PC100 NAND FLASH控制器接口连接。SD卡可通过S5PC100内置SDIO1总 线直接连接。其NAND FLASH电路原理图如图4所示、SD卡 的原理图如图5所示。


  2.2 温度传感器接口

  平台设计了采用DS18B20一线制温度传感器接口。采用 S5PC100处理器GPIO引脚接口控制温度传感器DS18B20的温 度测量,LCD屏输出测量温度,原理图如图6所示。


  2.3 温度报警电路

  本 设 计 采 用 软 件 处 理 报 警 , 利 用 无 源 蜂 鸣 器 进 行 报 警,当所测温度超限后输出PWM信号,驱动蜂鸣器报警, 其电路原理图如图7所示。


  3 系统软件设计

基于ARM的智能测温系统经典案例

  3.1 Linux操作系统移植

  完整的嵌入式linux系统由bootloader、kernel、rootfs等3个基本部分组成。其中bootloader用于引导和装载操作系统、kernel为linux内核程序、rootfs为文件系统,如图8。


  3.1.1 交叉编译环境

  嵌入式开发系统受到自身硬件以及软件资源的限制, 无法完成代码的本地编译,其开发需要在宿主机上建立交叉 开发环境。


  交叉开发环境是包含了编辑器、编译器、连接器、调 试器和libc库等的程序环境。在开发嵌入式Linux相关软件 时,常用的交叉开发工具是GNU工具链。系统中宿主机使 用的开发环境为ubuntu12.04操作系统,目标板内核版本号为 标准linux-2.6.35,使用到的交叉编译器是arm-linux-gcc-4.5.1。


  3.1.2 Bootloader程序设计

  Bootloader是在操作系统运行前运行的一段专用程序, 可以完成平台硬件设备的初始化,并能完成引导和调试操作 系统。 Bootloader依赖CPU体系结构,一般将Bootloader按功 能划分为两个阶段,其中第1阶段实现基本硬件电路的初始 化,为操作系统的运行准备环境。在平台中,由于使用的是 ARM微控制器,因此第一阶段需要实现设置处理器进入管 理模式、关闭处理器中断与快中断、设置处理器主频、高速 总线主频与告诉外设主频、CPU关闭MMU与数据Cache,初 始化内存控制器,代码由存储器自搬运至内存,设置运行程 序需要的临时堆栈、BSS段清零等工作。第2阶段主要实现 进入交互模式或者自引导模式,实现操作系统的加载,一般 要根据操作系统与硬件平台的需要实现相关硬件的初始化工 作, 如初始化GPIO、串口、网口等外部设备,完成向内核 传递启动参数等功能。


  3.1.3 Linux内核的定制

  Linux目前已经支持了x86、ARM、MIPS等多种处理器 架构,支持的平台类型多达3000多种。各种ARM处理器的 设计厂商为了更好地推广处理器的使用,都会Linux中添加补丁, 使得该处理器能够在L i nu x 行正常运行。 平台选用Linux-2.6.35版本,面对大规模的Linux源代码,我们需要对Linux进行剪裁移植。


  Linux源代码采用模块化的组织方式,可以通过条件编 译的方式对Linux源码的功能进行剪裁,但是条件编译法裁 剪的是功能模块,对于具体的硬件驱动和优化就需要对源代 码进行细微的修改了。


  3.1.4 根文件系统的建立

  根文件系统是存放各种工具软件、库文件、脚本、配 置文件的地方,任何包括这些Linux系统启动所必须的文件 都可以成为根文件系统。Linux支持jffs2,nfs,cramfs,yaffs2 等多种文件系统。在本系统中使用的Ramdisk文件系统,实 际上是把内存划出一部分当作硬盘使用,使得程序运行效率 更高。系统中的工具集合采用BusyBox完成,BusyBox 将许多 具有共性的小版本的UNIX工具结合到一个单一的可执行文 件。这样的集合可以替代大部分常用工具比如GNU fileuTIls, shelluTIls等工具,BusyBox提供了一个比较完善的环境,可 以适用于任何嵌入式设备。


  3.2 温度传感器驱动程序的设计

  在Linux中,为实现模型抽象和统一操作接口,设备驱 动程序隐藏了设备的具体细节,向用户提供了统一的设备接 口。Linux设备驱动运行于内核中,完成直接硬件操作、设 备管理等工作,并向用户提供了统一的接口模型。Linux下 将设备分为字符、块和网络设备三类,同样设备驱动也分为 字符驱动、块设备驱动和网络设备驱动。字符设备面向的设 备是流式设备,如鼠标、键盘等;块设备面向的是需要随 机存储的设备,它主要包括硬盘、光驱等存储设备;其中 DS18B20属于字符设备。


  在字符与块设备中由一个主设备号和一个次设备号(minor number)标识驱动设备。主设备号用于标识设备类 型,次设备号用于识别同类设备序号。字符驱动程序通过 file_operaTIons结构的指针向用户程序提供接口抽象。


  其内核定义如下:

  struct file_operaTIons

  {

  int (*read) (struct inode *inode,struct file *filp,char *buf,int count); /*设备读*/

  int (*write) (struct inode *inode,struct file *filp,char *buf,int

  count); /*设备写*/int (*ioctl) (struct inode *inode,struct file *filp,unsigned int

  cmd,unsigned int arg); /*I/O控制*/

  int (*open) (struct inode *inode,struct file *filp); /*设备打 开*/

  void (*release) (struct inode *inode,struct file *filp); /*设备 关闭*/

  ??????

  };


  在结构file_operations里,指出了设备驱动程序所提供的 入口点位置,分别是:

  read读操作,完成由应用设备向应用程序传递的数据。 write写操作,完成由应用程序向设备发送的数据。 ioctl,进行读、写以外的其它命令操作。 open,打开设备准备进行I/O操作。 release,设备释放操作。 每一个字符设备驱动由一个cdev结构体抽象,具体的驱动的实现由 file_operations实现,用户程序通过dev_t代表设 备号查找到内核中的cdev,由cdev调用到file_operations,从 而调用到实际的硬件操作函数。


  4 结论

  本文以便携式手持温度测试仪为技术、应用背景,设计了一套具备温度测量、数据记录、LCD显示以及网络通信 功能的温度测试设备。


  由于便携式手持温度测试仪具有体积小、功耗低同时 又具备较高性能的要求,系统采用了ARM微控制器作为系 统的核心控制单元,并在平台上移植了Linux操作系统以满 足系统对联网、存储方面的需要。对比众多的处理器,选用 了三星公司基于Cortex-A8 内核的 S5PC100处理器,围绕核心电路设计了温度采集,大容量存储、人机交互、以及网络 通讯等单元电路;在平台电路的基础上实现了Linux系统的 移植工作,并完成了这些设备接口电路的驱动移植工作; 在Linux系统下实现了DS18B20的驱动设计工作,并编写了基 于液晶显示的测试程序。经过实际测试,应用程序能够在 Linux下采集DS18B20的温度数据,并能够实现在LCD上的显示、存储功能,存储文件能够通过网络的NFS服务导出到PC 端,实现了课题设计的功能。

关键字:ARM  智能测温系统  准确度 引用地址:基于ARM的智能测温系统经典案例

上一篇:LCD的ARM编程方式,LCD Linux程序如何写入?
下一篇:arm7单片机编程实例,ARM7之输入/输出端口GPIO编程教程

推荐阅读

   9月21日苹果新iPhone上市销售的时间。作为苹果在全球的第505家体验店,苏州苹果体验店也在今天正式迎来了开业,iPhone XS首销加上体验店开业,可谓是双喜临门,为此库克也发了一条微博来表示祝贺。图片来自微博  库克表示“很高兴能在美丽的苏州开设我们的第一家Apple Store零售店!希望大家能喜欢全新上市的iPhone XS、iPhone XS Max和Apple...
“现在的手机,多数都采用塑料或者金属后盖,金属的强度比玻璃会好,但是它对信号有屏蔽。”宫汝华的回答,说的是现有材质的局限性。 宫汝华是东旭光电全资子公司旭虹光电的研发总监。2019年9月19日,旭虹光电在四川绵阳发布了新产品“耐摔玻璃”。 旭虹光电相关负责人向记者表示...
最新爆料称,iPhone 12入门版将冠以mini后缀,采用5.4寸显示屏。  iPhone 12 mini有着入门定位,价格无疑也将是系列最低的。此前有消息称,苹果的策略是仅让其支持Sub 6GHz 5G频段,同时简配掉充电器、耳机来抵消成本,可似乎还不够。  来自国外爆料人的最新消息称,iPhone 12 mini可能会搭载残血版A14处理器,名为B14。B14做减法的...
ROHM开发出防水等级达IPX8的小型高精度气压传感器IC“BM1390GLV”非常适用于白色家电和工业设备等对防水性能有要求的应用全球知名半导体制造商ROHM(总部位于日本京都市)面向白色家电、工业设备和小型物联网设备,开发出防水等级达IPX8*1的小型高精度气压传感器 IC“BM1390GLV(-Z)”。 在智能手机和可穿戴式设备等应用中,气压传感器已被广泛用于获取...

史海拾趣

问答坊 | AI 解惑

急!platform builder 链接不上库的问题!

我用的一个芯片,需要特定的算法,所以必须用它自带的库。现在我能确定,该库是wince5.0平台的,且是个静态库。即我手上有.lib,.pdb,及.h文件。我在sources的TARGETLIBS加库,结果不行,后来查到TARGETLIBS是加动态库的,我就用SOURCELIBS来加,结 ...…

查看全部问答∨

arm arp

想在嵌入式2.4内核上 增加一个arp命令 我下载了 net-tools-1.60 然后编译有问题,有没有简介的代码可供编译…

查看全部问答∨

在ADS下如何用malloc

处理器是pxa270 nor flash 64M sdram 64M 请问在ADS下(完全当单片机使用,不跑操作系统) 如何用malloc申请内存 是否需要我自己实现malloc函数?? 内存管理机制是什么样的呢?? …

查看全部问答∨

WIN CE里对话框上的 OK 传递的消息是不是IDOK?

WIN CE里对话框上的 OK 传递的消息是不是IDOK啊? 我在MFC下建两个消息函数 ON_MESSAGE(IDOK,ALLIDOK) ON_MESSAGE(IDCANCEL,ALLCANCEL) 结果发现不管是点对话框上的 OK 还是 叉叉 都是进到ALLCANCEL里进行执行? 想问下WIN CE里对话框上的 OK ...…

查看全部问答∨

EDB的CeWriteRecordProps的相关问题(麻烦高手指点)

ceOid=CeWriteRecordProps(m_hCPSDB,0,4,pProps);  //第二个参数设置为0则表示向数据库中写入新的项 向数据库中写入新的项 它会自动的写到数据库的最后吗? 为什么我顺序写入的几项数据 读出来的时候顺序乱了啊? 还有个问题是: ...…

查看全部问答∨

请问如何实现把S3C2410的USB 的从口设置为主口

各家的开发板再用S3C2410的芯片时,USB有1个主口,1个从口,从口主要是使用来下载NK或其他程序,目前要把从口实现进入系统后也可以作为主口使用,如何更改喃?…

查看全部问答∨

关于或门的真值表,书上的这个是不是写错了?

   0 1 x z 0 0 0 0 0 1 1 1 1 1 x x 1 x x z x 1 x x 应该都是对称矩阵吧?或们的两个输入端肯定是公平的啊 我看其他门的真值表都是对称的…

查看全部问答∨

VxWorks 组播sendto() error 0x41

程序设置如下: bzero ((char *)&sMAddr, sizeof (sMAddr));    sMAddr.sin_len = (u_char) sizeof(sMAddr);    sMAddr.sin_family = AF_INET;    /*sMAddr.sin_addr.s_addr =inet_addr(MyIP);*/   ...…

查看全部问答∨

STM32以太网接口可以远程升级和远程控制吗?

现在想做工业以太网通讯,STM32本身以太网接口可以远程升级和远程控制吗?集成了PHY吗?昨天参加了TI的流明的技术研讨会,感觉还是ST的技术支持好啊,TI恐怕还要努力演讲的人大多无工程经验,照本宣科.不过流明的带以太网接口的芯片很方便外设集成了 ...…

查看全部问答∨

需要8寸左右的液晶屏

需要8寸左右的液晶屏,谁给推荐一款,不带控制器的…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved