STM32的方位角度与倾斜数据测量仪系统设*
2016-01-26云中华刘洪春李勇峰阴欢欢
云中华,刘洪春,李勇峰,阴欢欢
(1.西藏大学 工学院,拉萨 850012;2.武汉大学 珞珈学院)
* 基金项目:国家自然科学基金资助项目(61440045);西藏自治区自然科学基金重点资助项目(2015ZR-14-3);2014西藏自治区级大学生创新创业训练计划项目(2014QCX044)。
云中华1,刘洪春1,李勇峰1,阴欢欢2
(1.西藏大学 工学院,拉萨 850012;2.武汉大学 珞珈学院)
* 基金项目:国家自然科学基金资助项目(61440045);西藏自治区自然科学基金重点资助项目(2015ZR-14-3);2014西藏自治区级大学生创新创业训练计划项目(2014QCX044)。
摘要:介绍一种使用STM32微处理器作为主控制器,采用HMC5883L传感器的电子方向角度测量装置。该装置利用I2C总线接口进行方位角度数据读取与传输,利用ADXL345传感器进行倾斜数据采集,最后方位角在彩色液晶显示器上进行显示。经过实物测试,该设计可即时准确地测量所在位置的方位,是一种可靠的方向角测量装置。
关键词:STM32微处理器;HMC5883L;ADXL345;TFTLCD
引言
伴随着现代科技的不断发展,人类的活动范围也逐渐增大,在大范围的活动中容易发生方位迷失的现象,就需要响应迅速且精确的测量设备。传统的指北针等设备采用平衡架式结构,体积较大,难以实现微型化,在数据测量中无法精确获取当前坐标,且GPS系统模块成本较高。针对以上诸多问题,提出了一种基于STM32微处理器,采用Honeywell HMC5883L弱磁传感器进行实时方位角测量的设计方案,微处理器通过I2C总线将测量结果在彩色液晶显示器上进行显示。该方案具有方位度测量值精度高、测量读数速度迅速且成本低的优点,并且采用数字化微型传感器,电路较简单,容易集成到便携式设备中。
1方位角度测量原理
可以通过测量地球磁场水平方向的分量来确定北极,当北极确定之后可推算出其他极性方向[2,6]。如把传感器放在水平位置时,坐标示意图如图1所示。
图1 传感器水平放置时坐标图
2传感器HMC5883L
HMC5883L传感器是美国Honeywell公司的一种表贴封装并具有数字接口的弱磁传感器芯片,主要应用于低成本的磁场检测领域。传感器内部集成HMC118X系列磁阻传感器、放大器、自动消磁驱动器、偏差校准单元和12位 A/D转换器,能利用I2C总线接口快速传输数据。HMC5883L传感器采用各向异性磁阻(AMR)技术,具有轴向高灵敏、高精度的特点,测量范围可以从milli-gauss 到 8 gauss,是灵敏度和可靠性较高的一款传感器。由于地球磁场强度在最强的两极且强度不到10-4(T),平均强度约为0.6×10-4(T),故HMC5883L的测量精度完全能满足测量地球磁场大小和方向的准确性。HMC5883L内部结构图略——编者注[2]。
3主控制器STM32F103RBT6
主控制器选用内核为Cortex-M3的32位高性能微处理器STM32F103RBT6,其频率可达72 MHz,拥有128 KB 闪存容量,工作范围达到-40~85 ℃,内部集成16位定时器和12位A/D转换器,拥有多达51个I/O端口(可以方便地进行设备扩展),集成SPI和I2C总线接口(方便数据传输),对于一般的运算控制和数据处理已经完全满足要求[1]。本设计中,通过微处理器读取HMC5883L数据,测量到的数据经过ADXL345L的倾角补偿后将结果显示在TFT液晶屏幕上,同时将数据通过USART口输出以便被其他装置调用。系统总体结构图如图2所示,图中预留了按键以扩展启动复位等功能,预留USART端口以便数据和其他设备传输。
图2 系统总体结构图
4电源处理部分
设计所用STM32F103RBT6微处理器、加速度传感器ADXL35所需电源电压为2.0~3.6 V,弱磁传感器HMC5883L所需电压为2.16~3.6 V,TFT液晶3.3 V也可使用,故本设计可采用锂电池供电。由于锂电池充满电时电压为4.16~4.22 V,随着剩余容量的下降其输出电压也在下降,当其容量剩余1%时电压达到3.59 V,故需要进行电源转换,将锂电池电压转换为3.3 V稳恒电压。本设计采用AMS1117-3.3 V稳压器,可将锂电池电压转换为3.3 V电压,其电路图如图3所示。
图3 电源转换电路
5测量数据显示输出部分
图4 液晶显示器电路图
6方位测量系统设计部分
图5 HMC5883L电路图
利用STM32F103RBT6读取HMC5883L传感器的方位角数据,按照HMC5883L手册,芯片采用3.3 V电压,SETP需要连接一个0.22 μF的电容连接到SETC端,DRDY为数据准备端,HMC5883L的数据以I2C方式传输数据,SCL时钟信号连接STM32F103RBT6的PB6,SDA连接STM32电路的PB7引脚,HMC5883L的原理如图5所示。
7三维加速度传感器处理倾斜部分
在实际情形中,HMC5883L传感器常由于未水平放置而导致偏差,这时需要进行倾斜角度采集并对方位角进行纠正,ADXL345是一款13位分辨率的三维加速度传感器,直接输出16位数字数据,可在倾斜检测中测量重力加速度并通过SPI或者I2C总线接口进行数据传输,STM32处理器控制传感器ADXL345进行倾斜数据采集,根据所采集到的倾斜数据对MC5883L姿态进行修正,ADXL345电路图如图6所示,图中SCL和SDA分别为ADXL345的I2C总线的时钟和数据端口。
图6 速度传感器ADXL345电路图
8系统软件设计
图7 系统总流程图
系统软件部分包含HMC5883L、ADXL345的数据采集部分,STM32主控程序以及求得的数据在TFT液晶显示部分。系统首先进行初始化,然后进行HMC5883L数据采集,接下来进行ADXL345L数据采集并监测修正水平度,最后将数据进行计算求得的方位角显示在TFT液晶显示器上。系统总流程图如图7所示。
8.1弱磁传感器部分
弱磁传感器HMC5883L的初始化比较简单,主要设置其采样频率和采样量程,初始化之后就可以直接读取其数值,初始化程序代码段如下:
void Init_HMC5883L(){
I2C1_WriteByte(HMC5883L_Addr,0x00,0x18);
I2C1_WriteByte(HMC5883L_Addr,0x01,0x40);
I2C1_WriteByte(HMC5883L_Addr,0x02,0x00);
}
8.2加速度传感器部分
加速度传感器初始化主要是设置其测量范围和速率等,初始化之后同样可以直接读取其数值,加速度传感器初始化代码段如下:
void Init_ADXL345(void){
I2C1_WriteByte(ADXL345_Addr,0x31,0x0B);
I2C1_WriteByte(ADXL345_Addr,0x2C,0x0B);
I2C1_WriteByte(ADXL345_Addr,0x2D,0x08);
I2C1_WriteByte(ADXL345_Addr,0x2E,0x80);
}
8.3TFT液晶显示部分
图8 TFT液晶初始化流程图
TFT液晶显示首先需要初始化,然后进行数据的读写操作,这样就可以把求得的数据显示在TFT液晶显示器上。由于TFT液晶显示的初始化主要部分为ILI9328的初始化,而其初始化程序较占篇幅,此处仅给出其初始化流程图如图8所示。
9测量系统的测试分析
系统测试结果图如图9所示,图中以数字形式准确地显示出了当前的方位角,并以箭头的方式给出了正北方,和标准指南针相比其角度误差小,满足使用要求。
图9 系统测试结果图
结语
本文利用STM32微处理器结合HMC5883L弱磁传感器设计了一款方位角度测量装置,并将结果显示在TFT彩色液晶显示器上,得益于HMC5883L的性能优势和STM32较强的处理性能,经实地检测证明其响应速度较快,测量精度较高,适合于对响应速度和测量精度要求较高的场合,且由于STM32和HMC5883L的高集成度和小体积封装,该方案也可集成到其他便携式设备中,有较强的实用性。
参考文献
[1] ST.STM32微处理器数据手册[EB/OL].[2015-06].http://www.st.com.
[2] Honywell.hmc883L传感器数据手册[EB/OL].[2015-06].http://honeywell.com.
[3] ADI.ADXL345传感器数据手册[EB/OL].[2015-06].http://www.analog.com.
[4] 时尧,周佳璐.基于I2C的嵌入式多点触摸屏幕驱动设计[J].单片机与嵌入式系统应用,2011(3).
[5] 刘苍,王建业,张景伟.基于ARM的便携式数据采集存储系统设计[J].仪表技术与传感器,2013(8).
[6] 胡宁博,李剑, 赵榉云.基于HMC5883的电子罗盘设计[J].传感器世界,2011(6).
云中华(助教)主要研究方向为嵌入式系统和传感器应用技术等;刘洪春(本科),主要研究方向为基于STM32微处理器的嵌入式系统应用。
Yun Zhonghua1,Liu Hongchun1,Li Yongfeng1,Yin Huanhuan2
(1.School of Engineering,Tibet University,Lhasa 850012,China;2.Luojia college Wuhan University)
Abstract:An Electronic longitude and latitude meter is designed based on STM32 microprocessor and HMC5883L sensor.The device uses I2C bus to read and deliver the azimuth data,and ADXL345 sensor to collect the tilt data.Finally,the azimuth result is displayed on the color TFT displayer.The design can accurately measure the azimuth,and it is a reliable direction angle measuring device.
Key words:STM32 microprocessor;HMC5883L;ADXL345;TFT LCD
收稿日期:(责任编辑:杨迪娜2015-06-08)
中图分类号:TP391
文献标识码:A