当前位置:文档之家› 基于STM32的温度采集系统设计

基于STM32的温度采集系统设计

《ARM嵌入式系统》课程论文

题目:基于STM32的温度采集系统设计

学生姓名:刘笑

学生学号: 1314020120

年级: 13级

专业:电子信息工程

班级:(1)班

任课教师:王宜结

电子工程学院制

目录

1、设计的任务与要求............................................................................................ 错误!未定义书签。

1.1设计目的 .................................................................................................... 错误!未定义书签。

1.2设计意义 .................................................................................................... 错误!未定义书签。

2、温度系统设计方案制定.................................................................................... 错误!未定义书签。

2.1设计要求 .................................................................................................... 错误!未定义书签。

2.2方案论证 .................................................................................................... 错误!未定义书签。

3、硬件设计方案实施............................................................................................ 错误!未定义书签。

3.1单元模块功能及电路设计......................................................................... 错误!未定义书签。

3.2 电路参数计算及元器件选择.................................................................... 错误!未定义书签。

3.2.1 电源电路设计.................................................................................. 错误!未定义书签。

3.2.2温度采集电路设计........................................................................... 错误!未定义书签。

4、设计的仿真实现 ............................................................................................... 错误!未定义书签。

4.1设计思路 .................................................................................................... 错误!未定义书签。

4.2程序清单 .................................................................................................... 错误!未定义书签。

4.3 STM32温度系统设计仿真实现................................................................. 错误!未定义书签。

5、心得体会和总结 ............................................................................................... 错误!未定义书签。参考文献 ................................................................................................................. 错误!未定义书签。

基于STM32的温度采集系统设计

学生:刘笑

指导教师:王宜结

电子工程学院电子信息工程专业

摘要:本设计是基于嵌入式技术作为主处理器的温度采集系统,利用S3C44B0x ARM微处理器作为主控CPU,辅以单独的数据采集模块采集数据,实现了智能化的温度数据采集、传输、处理与显示等功能,并讨论了如何提高系统的速度、可靠性和可扩展性。并解决了传统的数据采集系统由于存在响应慢、精度低、可靠性差、效率低、操作繁琐等弊端,能够完全适应现代化工业的高速发展。

关键词:嵌入式系统、ARM、S3C44B0、STM32、温度采集、数据处理。

1、设计内容

1.1设计目的:

1、注重培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。

2、了解所选择的STM32芯片各个引脚功能,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。

3、通过软硬件设计实现利用STM32芯片对周围环境温度信号的采集及显示。1.2设计意义:

嵌入式系统是以应用为中心,以计算机技术为基础,且软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由以下几部分组成:嵌入式微处理器、外围硬件设备、嵌入式操作系统。嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求。所以,如果能建立相对通用的软硬件基础,然后在其上开发出适应各种需要的系统,是一个比较好的发展模式。目前的嵌入式系统的核心往往是一个只有几K到几十K微内核,需要根据实际的使用进行功能扩展或者裁减,但是由于微内核的存在,使得这种扩展能够非常顺利的进行。

数据采集(DAQ),是指从传感器和其它待测设备等模拟和数字被测单元中自

动采集非电量或者电量信号,送到上位机中进行分析,处理。数据采集系统是结合基于计算机或者其他专用测试平台的测量软硬件产品来实现灵活的、用户自定义的测量系统。被采集数据是已被转换为电讯号的各种物理量,如温度、水位、风速、压力等,可以是模拟量,也可以是数字量。采集一般是采样方式,即隔一定时间(称采样周期)对同一点数据重复采集。采集的数据大多是瞬时值,也可是某段时间内的一个特征值。准确的数据量测是数据采集的基础。数据量测方法有接触式和非接触式,检测元件多种多样。不论哪种方法和元件,均以不影响被测对象状态和测量环境为前提,以保证数据的正确性。

传统的温度采集系统由于存在响应慢、精度低、可靠性差、效率低、操作繁琐等弊端,已经不能完全适应现代化工业的高速发展。随着嵌入式技术的迅猛发展,设计高速度、高效率、低成本、高可靠性、操作方便的温度采集系统成为当务之急。基于STM32的温度采集系统就成为了解决传统温度采集系统各种弊端的优先选择方案。

2、设计方案

2.1设计要求:

1、查阅相关文献资料,熟悉所选STM32芯片及温度传感器

2、总体设计方案规划

3、系统硬件设计,熟悉AD转换原理及过程,温度传感器与STM32芯片的硬件接口实现及温度显示。

4、系统软件设计,包括温度的AD转换及显示的软件实现,用C语言编程

5、设计心得体会及总结

2.2方案论证:

有许多客观需求促进了STM32处理器的设计改进。首先,便携式的嵌入式系统往往需要电池供电。为降低功耗,STM32处理器已被特殊设计成较小的核,从而延长了电池的使用时间。高的代码密度是嵌入式系统的又一个重要需求。由于成本问题和物理尺寸的限制,嵌入式系统的存储器是很有限的。所以,高的代码密度对于那些只限于在板存储器的应用是非常有帮助的。

另外,嵌入式系统通常都是价格敏感的,因此一般都使用速度不高、成本较低的存储器。 STM32 内核不是一个纯粹的RISC体系结构,这是为了使它能够更好的适应其主要应用领域--嵌入式系统。在某种意义上,甚至可以认为STM32 内核的成功,正是因为它没有在RISC的概念上沉入太深。现在系统的关键并不在于单纯的处理器

速度,而在于有效的系统性能和功耗。

在本系统的设计过程中,根据嵌入式系统的基本设计思想,系统采用了模块化的设计方法,并且根据系统的功能要求和技术指标,系统遵循自上而下、由大到小、由粗到细的设计思想,按照系统的功能层次,在设计中把硬件和软件分成若干功能模块分别设计和调试,然后全部连接起来统调。

3、硬件设计

3.1设计思路:

IN4148是为了防止输出端并接高于本稳压模块的输出电压而烧坏7809和7805而特别设计,达到了可靠性电源设计目的。另外,由于系统正常工作电流较大,因此使用时均应在7809和7805上加散热片散热。由图可见,系统采用双电源供电,提供了系统正常工作所需的电源电压。另外,由于考虑到便携目的,本系统采用+12V铅蓄电池提供系统所需的恒定直流电源。

图3-2 系统电源电路原理图

如图3-2:I/O 口提供了相应的稳定直流电源。其中的IN4004是为了防止电源输入反接烧坏集成稳压块而设计的。由于S3C44B0x采用2.5V作为STM32 内核电源,使用3.3V作为I/O 口电压,故STM32核心控制模块电源需要另外单独设计,其电源电路如图3-2所示。由系统总电源电路提供的+9V稳压电源作为输入,分别经

AS1117-5.0、AS1117-3.3、 AS1117-2.5稳压后,输出5.0V、3.3V和2.5V恒定电源,为STM32 内核和I/O口提供了相应的稳定直流电源。其中的IN4004是为了防止电源输入反接烧坏集成稳压块而设计的。

3.2.2温度采集电路设计:

温度采集模块电路采用AT89S52单片机作为模块的协控制器。对于温度传感器的选用DS18B20,因为DS18B20是Dallas公司最新单总线数字温度传感器,该传感器集温度变换、A/D转换于同一芯片,输出直接为数字信号,大大提高了电路的效率。

由于现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,且提高了CPU的效率。AT89S52单片机的P0 口与8路温度传感器相连,用于采集温度数据;另外,模块提供RS-232串行口与STM32核心控制模块通信,达到数据传输的目的。温度采集模块电路原理图如图3-3。

图3-3 温度采集电路原理图

四、软件设计

4.1设计思路:

本系统软件设计是在CodeWarrior for ADS开发环境下完成的。本温度数据采集与显示装置的主体由S3C44B0x核心控制模块和温度数据采集模块构成,所以系统软件也是围绕这两个模块来编写的。而又由于系统采用了S3C44Box和AT89S52两个CPU协同工作,所以软件的编写需要对这两个CPU分别编写,以实现所要求的功能。程序流程图如图4-1。

图4-1程序流程图

由该流程图可看出,刚上电时,S3C44B0x要先进行STM32 内部的初始化,以使STM32进入相应的状态和模式;然后初始化硬件装置,以使硬件系统可以正常支持温度数据采集;接着通信初始化,以确定温度采集模块与STM32核心控制模块连接正常,并通过UART复位温度数据采集模块,确保其进入正常温度数据采集状态;然后初始化LCD显示和键盘,在LCD上显示相应的菜单列表,供用户通过键盘选择操作;至此,系统初始化完成,并进入正常主程序循环状态。

在正常主程序循环状态中,首先扫描键盘,以快速的响应用户的按键操作;若没有键值按下,则STM32立即进行数据的采集、处理与显示,以实现实时数据采集与显示等功能。

其主程序包括温度采集程序、STM32获取温度子程序、温度处理和转换子程序。当STM32 处理器接收到正确的温度数据后,立即进行相应的温度数据处理与转换,变成可被LCD直接显示的正确温度值。

4.2程序清单:

温度处理与转换子程序如下:

//存放读取到的当前温度值,未转换

Static U16 a-temp-now[8]={8*0}

//存放经精度计算后的实际温度值,高8位整数部分,低8位小数部分

static U16 b-temp-now[8]={8*0};

//存放8路转换后温度值,分别为百位,十位,个位,小数位

static U8 temp-convent-all[32]={32*0};

//-------------------------------

//温度处理与转换子程序

//----------------------------------

void temp-change(void)

{

U8 negtive=0x00; //存放数的符号,若为正=0;若为负,=0xff

U8 j=0;

U8 *pt=temp-convent-all;

U16 *p1=a-temp-now;

U16 *p3=b-temp-now;

U16 temp=0;

for(j=0;j<8;j++)

{

negative =0x00;

temp=*p1;

//若温度为负值,进行相应处理

if((temp&0xf80) !=0)

{

temp=(~temp)+1;//转为正的原码

negative=0xff; // 同时置符号为0xff }

//根据精度消除无关数据

switch(a-temp-prec)

{

case 0x1f: //精度为9位,则清除最低3位无效位 {

temp=temp&0xfff8;break;

}

case 0x3f: //精度为10位,则清除最低2位无效位 {

temp=temp&0xfffc;break;

}

case 0x5f: //精度为11位,则清除最低1位无效位 {

temp=temp&0xfffe;break;

}

case 0x7f: //精度为12位

{

break;

}

}

//换算成实际温度,并扩大10倍,去掉小数部分

temp=(U16)((float)(temp)*0.625);

//折算放入b-temp-now 数组中

//高8位放整数部分,低8位放小数部分,最高位放符号位if(negtive== 0xff) //若为负值

{

*p3=((temp/10)<<8)|(temp%10)|0x8000;

}

else

{

*p3=((temp/10)<<8)|(temp%10)&0x7fff;

}

if(negative==0xff) //若为负值

{(*pt++)=0x80;}

else

{

(*pt++)=temp/1000%10+0x30;

}

(*pt++)=temp/100%10+0x30;

(*pt++)=temp/10%10+0x30;

(*pt++)=temp%10+0x30;

p1++;

p3++;

}

//转换完成后清除读回的原始温度

p1=a-temp-now;

for(j=8;j>0;j--)

{

*p1++=0x0;

}

}

5、心得体会

在这次ARM嵌入式系统课程设计中,我们小组的设计课题是《基于STM32的温度采集系统设计》。通过这次课程设计,我对ARM嵌入式系统尤其是数据处理中的温度采集系统有了更进一步的了解,同时知识面也进一步得到了扩展和加深。

本次课程设计的任务主要是对基于传统温度采集系统的使用环节中遇到的一些问题提出的一种改进方法,有助于温度采集系统更好的发展与使用,帮助我们更好的理解嵌入式系统和温度采集系统的原理和应用。温度采集是一种直接数字处理方法。

所谓温度采集系统,就是通过温度传感器对被采集物体进行温度数据的收集与处理,最后得到我们所需要的有用的数字信号并送入系统的下一环节进行其他操作。目前,由于传统的温度采集系统存在响应慢、精度低、可靠性差、效率低、操作繁琐等弊端,已经不能完全适应现代化工业的高速发展。随着嵌入式技术的迅猛发展,设计高速度、高效率、低成本、高可靠性、操作方便的温度采集系统成为当务之急。所以,学习和应用温度采集系统及其应用技术对我们以后的学习和工作有着十分重要的意义。

在这次课程设计的过程中,我深深的感触到了团队合作的重要性,尤其是在当今的社会工作中,一个人的力量在一个巨大的任务前是那么的渺小,必须靠多人合作才能共同完成。在设计规划过程,我们小组四个人亲密无间的合作,使得本次课程设计能够非常顺利地完成,在课程设计的过程中,每个人都能按要求很好的完成分配给自己的任务,最后大家一起通过讨论把所有任务串连起来完成总的设计任务。

通过本次课程设计,让我很好的锻炼了理论联系实际,与具体项目、课题相结合开发、设计产品的能力。既让我们懂得了怎样将理论应用于实际,又让我们懂得了在实践中遇到的问题怎样用理论去解决。在设计过程中,总是会遇到这样或那样的问题。有时一个问题可能会需要大家集体去查阅资料,做大量的工作,花大量的时间才能解决。通过不断地发现问题,解决问题,自然而然,我的发现问题和解决问题的能力便在其中建立起来了。这都为以后的工作积累了经验,同时也增强了我们解决问题的能力。

参考文献

[1] 周立功,ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版,2008.

[2] 周立功,深入浅出ARM7-LPC213X/214X[M].北京:北京航空航天大学出版社,2006.

[3] 周立功,从51到ARM-32位嵌入式系统入门[M].北京:北京航空航天大学出版社,2006.

[4] 王田苗,嵌入式系统设计与实例开发[M].北京:清华大学出版社,2003.

[5] 杜春雷,ARM 体系结构与编程[M].北京:清华大学出版社.2003.

[6] 王中训李树起等,基于水温控制的数据采集系统[M].煤矿机械出版社,2013.

相关主题
文本预览
相关文档 最新文档