基于ARM的实时温度监控系统分析Word文件下载.docx

上传人:b****7 文档编号:22380638 上传时间:2023-02-03 格式:DOCX 页数:26 大小:586.22KB
下载 相关 举报
基于ARM的实时温度监控系统分析Word文件下载.docx_第1页
第1页 / 共26页
基于ARM的实时温度监控系统分析Word文件下载.docx_第2页
第2页 / 共26页
基于ARM的实时温度监控系统分析Word文件下载.docx_第3页
第3页 / 共26页
基于ARM的实时温度监控系统分析Word文件下载.docx_第4页
第4页 / 共26页
基于ARM的实时温度监控系统分析Word文件下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

基于ARM的实时温度监控系统分析Word文件下载.docx

《基于ARM的实时温度监控系统分析Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于ARM的实时温度监控系统分析Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。

基于ARM的实时温度监控系统分析Word文件下载.docx

不论是工业生产中需要实时监控温度的变化,还是农业生产中也离不开对温度的测量。

随着这些需要的不断提高,我们的先辈发明温度传感器。

温度传感器是最早开发,应用最广的一类传感器。

从17世纪初伽利略发明温度计开始,人们开始利用温度进行测量。

真正把温度变成电信号的传感器是1821年由德国物理学家赛贝发明的,这就是后来的热电偶传感器。

温度监控是生产中的一个重要环节,尤其在环境及其恶劣和复杂的工业现场,温度监控更是起着不可替代的作用。

因此,研究温度测量的方法和装置具有重要的意义。

而测量温度的关键是温度传感器。

通过温度传感器实时采集环境的实时温度,对采集到的数据进行处理,发出相应的动作,已达到我们的需求。

本系统的温度测量端采用Nationalsemiconductor公司的lm75芯片,该芯片是一种含9位ADC、温度分辨率为0.5℃的数字温度传感器,测量范围是-55℃~125℃。

它提供两条支持I2C总线协议的接口来监测温度,并具备自校准功能。

上位机可以随时要求lm75读取温度,当温度超过设定的温度时,芯片系统会自动输出一个超温报警信号。

对环境温度进行数据的采集和存储。

该系统具有读取数据方便、测温范围广、测温准确等优点。

该温度监控系统由四个基本组件组成,分别由lm75温度传感器、LED灯、蜂鸣器、GSM模块组成,其中由LED灯、蜂鸣器组成声光报警系统。

该温度监控系统由lm75温度传感器实时采集当前环境温度,当环境温度超过用户设定的温度值时,将触发声光报警系统,使LED灯闪烁、蜂鸣器发出警告,并有GSM发出短信通知用户。

2监控系统主要元器件介绍

2.1基于Cortex-A8的FS_S5PC100的开发板

FS_S5PC100开发平台用三星公司先进的基于Cortex-A8内核的S5PC100处理器设计而成。

S5PC100处理器采用了64/32位的内部总线结构,最大833M赫兹的运算速度。

包括强大的硬件加速器,如:

动态视频处理,显示控制和缩放。

支持多种格式的硬件编解码如MPEF-1/2/4、H263/H264等。

其视频解码能力很强大并且省电,编解码能力达到1280x720,支持电视输出(NTSC/PAL/HDMI)。

支持2D/3D加速。

本处理器广泛应用于智能手机、平板电脑等产品。

2.1.1FS_S5PC100开发板

FS_S5PC100拥有丰富的硬件资源,开发板实物图如图1所示。

存储器:

256MByte的NANDFlash,256MByte的DDR2内存,2M的NorFlash;

显示输出接口:

LCD接口、VGA接口、TVout接口、HDMI接口;

视频输入接口:

Camera接口;

串口:

2路5线串口、1路3线串口;

红外通讯接口:

1路红外收发;

存储卡接口:

SD卡接口;

SPI:

SPI的E2PROM(用于SPI实验);

I2C:

I2C的温度传感器(用于I2C实验);

A/D:

变阻器(用于A/D实验);

USB:

USB2.0-OTG接口、4路USBHost接口;

PWM:

蜂鸣器(用于PWM实验);

网络接口:

DM9000AE以太网控制器,实现10M/100M自适应以太网通信;

外扩接口:

蓝牙、wifi等;

音频接口:

WM9714;

图1FS_S5PC100开发板

2.2LM75温度传感器

LM75温度传感器包含一个Δ-Σ模/数转换器和一个数字过热检测器。

主机可通过器件的I2C接口随时查询LM75,读取温度数据。

当温度超过可编程温度门限时,漏极开路过热报警输出(OS)将吸入电流。

OS输出具有2种工作模式:

比较器模式或中断模式。

主机控制报警触发门限(TOS)和滞回温度(THYST),温度低于滞回门限时解除报警条件。

另外,主机还可以读取LM75的Tos和THYST寄存器。

LM75的地址有三个引脚设置,允许多个器件工作在同一个总线。

器件上电时进入比较器模式,默认条件下Tos=+80oC且THYST=+75摄氏度。

3.0V至5.5V供电电压范围、低电源电流以及I2C接口使得LM75成为需要热管理和保护应用的理想选择。

2.2.1LM75功能特性

LM75芯片如图2所示。

⏹SO(SOP)和uMAX(uSOP)封装;

⏹I2C总线接口;

⏹独立的漏极开路OS输出作为中断或比较器、温度调节器输入;

⏹寄存器回读功能;

⏹上电默认状态允许独立工作在温度调节状态;

⏹3.0V至5.5V供电电压;

⏹较低的工作电流:

250uA(典型值)、1mA(最大值);

⏹4uA(典型值)关断模式有效降低功耗;

⏹同一总线可最多挂接8个LM75;

⏹引脚和寄存器兼容Maxim升级版传感器,例如:

MAX7500、MAX6625。

图2LM75芯片

2.2.2LM75引脚配置

LM75引脚配置如图3所示。

图3LM75引脚配置

2.2.3LM75在本开发平台的电路原理图

LM75在本开发平台的电路原理图如图4所示。

图4LM75在开发板的原理图

2.3WISMO218模块芯片

WISMO218模块芯片如图5所示。

图5WISMO218模块芯片

2.3.1WISMO218模块特性

⏹WISMO218GSM/GPRS无线通讯模块。

它具有体积小,易用性强,品质优良等特性。

以极具竞争力的价格,推向M2M行业。

⏹频段:

GSM900/1800MHz,CSD,SMS,FAX,GPRSclass10,顺从3GPP.

⏹信号灵敏度:

-108dbm.

⏹全球认证:

CE,GCF,ChinaRTE,R&

TTE,FCC,PTCRB,AT&

T.

⏹语音编码:

HR,FR,EFR,AMR

⏹温度范围:

-30-75度

⏹工作电压:

3.2-4.8V

⏹功耗:

36uA(off)/1.6mA(Idle)/205mA(connected)

⏹硬件接口:

46PIN邮票口封装,1个语音,1个SPI,1个ADC,1个RTC,1个BUZZER,1个串口,3个GPIO,3个PWM.

⏹SIM卡接口:

1.8和3V

⏹尺寸:

25x25x2.8mm

2.3.2AT指令介绍

AT即Attention,AT指令一般应用于终端设备与PC应用之间的连接与通信。

AT指令集是从终端设备(TerminalEquipment,TE)或数据终端设备(DataTerminalEquipment,DTE)向终端适配器(TerminalAdapter,TA)或数据电路终端设备(DataCircuitTerminalEquipment,DCE)发送。

其对所传输的数据包大小有定义:

即对于AT指令的发送,除AT两个字符外,最多可以接收1056个字符的长度(包括最后的空字符)。

每个AT命令行中只能包含一条AT指令;

对于由终端设备主动向PC端报告的URC指示或者response响应,也要求一行最多有一个,不允许上报的一行中有多条指示或者响应。

AT指令以回车作为结尾,响应或上报以回车换行为结尾。

2.3.3AT指令的基本用法

AT指令是以AT作首,字符结束的字符串,AT指令的响应数据包在中。

每个指令执行成功与否都有相应的返回。

其他的一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理。

大概分为测试指令、读取指令和执行指令。

1)测试命令(TestCommand)在AT指令后面加上“=?

”即构成测试命令。

例如“AT+CSCS=?

”会列举出所有支持的字符集;

2)读取命令(ReadCommand)在AT指令后面加上“?

”即构成读取命令。

例如“AT+CSCS?

”会列举出当前设置;

3)执行命令(ExecuteCommand)一般而言在AT指令后加上“=”及命令参数即可。

有些命令例如AT+CMGR命令没有参数,直接就可以执行。

注:

并不是所有的AT指令都支持1和2;

2.3.4AT指令的常用命令

AT

测试连接是否正确

ATE0

关闭回显。

程序初始化AT部分首先关闭回显。

ATE1

打开回显。

使用超级终端测试命令时打开。

AT+CGMI

得到厂商信息

AT+CGMR

得到手机版本号

AT+CGSN

得到手机序列号(IMEI)

AT+CIMI

得到手机IMSI号码

AT+CSCS

获取、设置手机当前字符集。

可设置为GSM或UCS2

AT+CBC

获取手机电量

AT+CCLK

获取设置手机时钟

AT+CSQ

当前信号

AT+COPS

网络营运商

AT+CSCA

短信中心号码

AT+CPMS

选择短信储存地点。

可选择ME(SIM卡)和MT(机身)

AT+CMGL

列出指定状态的短信息的PDU代码

AT+CMGR

列出指定序号的短信息PDU代码

AT+CMGS

发送短信

AT+CMGD

删除指定的短信

AT+CMGF

短信格式。

分为Text模式和PDU模式

AT+CNMI

设置新短消息通知电脑端

2.4PWM驱动蜂鸣器

2.4.1PWM概述

PWM脉宽调制,是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。

而输出频率的变化可通过改变此脉冲的调制周期来实现。

这样,使调压和调频两个作用配合一致,且于中间直流环节无关,因而加快了调节速度,改善了动态性能。

由于输出等幅脉冲只需恒定直流电源供电,可用不可控整流器取代相控整流器,使电网侧的功率因数大大改善。

利用PWM逆变器能够抑制或消除低次谐波。

加上使用自关断器件,开关频率大幅度提高,输出波形可以非常接近正弦波。

在本开发平台S5PC100的内部有5个32位的定时器,这些定时器能产生内部中断到ARM子系统。

并且定时器0,1,和2具有产生PWM的能力来驱动外部I/O信号。

定时器3,4是一个没有输出引脚的内部定时器,定时器0有一个用于大电流设备的死区生成器。

在S5PC100中PWM定时器如图6所示。

图6PWM定时器

2.4.2蜂鸣器概述

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“LB”、“JD”等)表示。

2.4.3PWM驱动蜂鸣器

PWM输出口直接驱动是利用PWM输出口本身可以输出一定的方波来直接驱动蜂鸣器。

通过设置几个系统寄存器是用来设置PWM口的输出的,可以设置占空比、周期等等,通过设置这些寄存器产生符合蜂鸣器要求的频率的波形之后,只要打开PWM输出,PWM输出口就能输出该频率的方波,这个时候利用这个波形就可以驱动蜂鸣器了。

比如频率为2000Hz的蜂鸣器的驱动,可以知道周期为500μs,这样只需要把PWM的周期设置为500μs,占空比电平设置为250μs,就能产生一个频率为2000Hz的方波,通过这个方波再利用三极管就可以去驱动这个蜂鸣器了。

2.4.4PWM驱动蜂鸣器在本开发平台的电路原理图

PWM驱动蜂鸣器在本开发平台的电路原理图如图7所示。

图7蜂鸣器电路原理图

3监控系统各个模块功能实现

3.1PWM驱动蜂鸣器

3.1.1蜂鸣器硬件原理图

蜂鸣器硬件原理图如图8所示。

图8蜂鸣器硬件原理图

3.1.2蜂鸣器驱动程序设计

由于这个蜂鸣器是无源的,所以要想使其产生声音必须给他提供一个有一定频率的高低电平。

所以这里我们采用S5PC100的PWM定时器来使蜂鸣器发出声音。

在S5PC100中,有两个寄存器,TCNTB1、TCMPB1,TCNTB1表示计数器从TCNTB1对应的值开始递减,当其递减到TCMPB1时,电平翻转。

当逆变器未使能时,从TCNTB1减到TCMPB1时候TOUT输出高电平,而从TCMPB1到0时输出低电平。

由此可知,当TCMPB1相同时,TCNTB1值越大声音越低,反之越尖。

实现:

关键步骤:

1)分别设置定时器1的预分频器值和时钟分频值,以供定时器1的比较缓存寄存器和计数缓存寄存器用;

2)设置比较缓存寄存器TCMPB1和计数缓存寄存器TCNTB1的初始值(即定时器0的输出时钟频率);

3)关闭定时器1的死区生成器(设置TCON的第4位);

4)开启定时器1的自动重载(设置TCON的第3位);

5)关闭定时器1的反相器(设置TCON的第2位);

6)开启定时器1的手动更新TCNTB1&

TCMPB1功能(设置TCON的第1位);

7)启动定时器1(设置TCON的第0位);

8)清除定时器1的手动更新TCNTB1&

TCMPB1功能(设置TCON的第1位)。

由此可以看到,PWM的输出频率跟比较缓存寄存器和计数缓存寄存器的取值有关,而比较缓存寄存器和计数缓存寄存器的值又跟预分频器和时钟分频器的值有关;

要使用PWM功能其实也就是对定时器的相关寄存器进行操作。

手册上也有一个公式:

定时器输出频率=PCLK/{预分频器值+1}/时钟分频值。

下面我们来通过一个蜂鸣器的实例来说明PWM功能的使用。

关键代码:

//初始化

staticvoidbeep_init(void)

{

writel((readl(S5PC100_GPD_BASE)&

(~0xF<

<

4))|(0x2<

4),S5PC100_GPD_BASE);

writel((readl(S3C2410_TCFG0)&

(~0xFF)),S3C2410_TCFG0);

writel((readl(S3C2410_TCFG1)&

(~0xF<

4)|(0x1<

4)),S3C2410_TCFG1);

writel(tcntb1,S3C2410_TCNTB

(1));

writel(tcntb1/2,S3C2410_TCMPB

(1));

writel(readl(S3C2410_TCON)&

8)|(0xA<

8),S3C2410_TCON);

}

//打开蜂鸣器

staticvoidbeep_on(void)

8)|(0x9<

//关闭蜂鸣器

staticvoidbeep_off(void)

(~0xf<

//设置相关参数

staticvoidset_cnt(unsignedlongarg)

writel(arg,S3C2410_TCNTB

(1));

writel(arg/2,S3C2410_TCMPB

(1));

staticvoidset_pre(unsignedlongarg)

~0xff)|(arg&

0xff),S3C2410_TCFG0);

3.1.3蜂鸣器应用程序设计

(1)voidbeep_start(void);

函数功能:

打开蜂鸣器;

(2)voidbeep_stop(void);

关闭蜂鸣器;

3.2LED报警灯

3.2.1LED报警灯的原理图

LED报警灯的原理图如图9所示。

图9LED报警灯的原理图

3.2.2LED报警灯驱动程序设计

在裸板程序开发中,对LED的操作很方便,只需要直接对LED的相应的寄存器写1就可以把灯点亮。

在本次开发中,把LED写成一个简单的字符设备驱动。

由于GPG3IO口是一个复合端口,需要把GPG3口置为output状态如图10所示;

图10GPG3IO口

2)向对应的数据寄存器写1;

//初始化把GPG3置为输出状态;

staticvoidled_init(void)

writel((readl(S5PC100_GPG3_BASE)&

(~0XFFFF))|(0X1111),

S5PC100_GPG3_BASE);

//打开led灯,flag表示是哪盏灯;

staticvoidled_on(charflag)

switch(flag){

case0:

writel((readl(S5PC100_GPG3_BASE+0x4)&

(~0x1))|(0x1),S5PC100_GPG3_BASE

+0x4);

break;

......

}

//关闭led灯,flag表示是哪盏灯;

staticvoidled_off(charflag)

writel((readl(S5PC100_GPG3_BASE+0x4))&

(~0x1),S5PC100_GPG3_BASE+0x4);

......

3.2.3蜂鸣器应用程序设计

(1)voidled_off(constint);

函数功能:

关闭led灯;

(2)voidled_off(constint);

打开led灯;

3.3GSM通信模块

本次设计的GPRS模块主要需要完成的功能为:

通过ARM开发板的串口,控制GPRS短信息模块,实现短信息的即时收发,实时了解库房温度。

3.3.1GSM通信模块设计流程图

1)数据流流程图如图11所示。

图11数据流流程

2)程序设计流程图如图12所示。

图12程序设计流程

3.3.2串口的初始化及读写

为了串口能正常通信处理,必须做一些相应配置,最后将以下配置步骤合为一个初始化函数serial_init(char*COM),文件描述符保存在全局变量中。

1)打开串:

intopen(constchar*pathname,intoflag,.../*mode_tmode*/);

2)串口初始化配置包括以下这些参数设置:

1.设置波特率(一般为115200)

2.输入波特率intcfsetospeed(structtermios*termptr,speed_tspeed);

3.输出波特率speed_tcfgetospeed(conststructtermios*termptr);

4.设置校验位staticintset_parity(intfd,charparity)

5.设置数据位staticintset_databits(intfd,intdatabits)

6.设置停止位staticintset_stopbits(intfd,intstopbits)

7.设置最大等待时间newflag.c_cc[VTIME]=time

8.设置最小接收字符数newflag.c_cc[VMIN]=min;

9.设置未接收的字符tcflush(serial_fd,TCIFLUSH);

3)激活配置inttcsetattr(intfd,intoptional_actions,conststructtermios*termios_p);

4)串口的读写封装的函数分别为serial_write(char*str);

和serial_read(char*str);

3.3.3GPRS模块初始化

1)测试与GPRS连接状况,向串口写命令,serial_write("

at\r"

);

如果返回\n\nOK\n\n或at\n\nOK\n\n则连

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1