基于Arduino的低功耗地磁车辆检测器设计
2018-09-21谢健刘伟罗嵘余思远胡顺仁
谢健 刘伟 罗嵘 余思远 胡顺仁
摘 要:根据铁磁性物体会引起周围地磁场扰动这一现象,利用磁阻传感器,可实现对车辆的实时检测。以开源硬件Arduino为平台,结合高集成度、低功耗和低成本的HMC5883L磁阻传感器,设计了一种车辆检测器。在实验室条件下,使用条形磁铁进行测试。结果表明,附近有铁磁性物体存在时,地磁场检测信号有显著变化,且信号特征与物体的距离、移动方向和速度有明显联系。该设计可用于道路车流量、车位占用等交通基础信息的获取。
关键词:低功耗;Arduino;磁阻传感器;地磁场;车辆检测
中图分类号:TP212.9 文献标识码:A 文章编号:2095-1302(2018)07-00-04
0 引 言
随着我国经济水平的不断提高和城市化进程的持续深入,汽车保有量快速增长的同时,也带来了各种城市交通问题,如拥堵严重、停车困难等。为了缓解日益严重的城市交通压力,对交通系统进行智能化改造,实时获取整个城市范围内的交通基础信息[1],包括道路车流量、车道占用率、停车位占用情况等,从而优化城市交通的运行和管理。因此,低成本、高精度、小体积、易安装和易维护的车辆检测器成为实现上述目标的关键。
目前,常用的车辆检测器包括地感线圈、视频检测器、红外线检测器和超声波检测器等[2]。地感线圈[3]主要用于道路车辆的检测,其技术成熟、准确性高,但体积较大、安装维护需要破坏路面。视频检测器[4]主要用于道路车辆的检测,能提供更为丰富的车辆信息,但造价昂贵、对环境光线要求较高。红外线检测器[5]主要用于道路车辆的检测,其成本低、响应快,但性能受天气变化影响较大。超声波检测器[6]主要用于车位车辆的检测,其体积小、易于安装,但性能受环境温度影响较大。
综上所述,传统车辆检测器无法满足大规模交通基础信息获取的要求,且不能同时用于道路和车位的车辆检测。近年来,基于地磁场变化的车辆检测的技术开始出现,特别是随着半导体技术和微机电系统技术的不断进步,使用低功耗磁阻传感器芯片检测地磁场成为可能[7-10]。本文以开源硬件Arduino UNO为平台[11],结合高集成度、低功耗和低成本的HMC5883L磁阻传感器[12],设计了一种车辆检测器原型。该车辆檢测器具有结构简单、体积小、功耗低等优点,易于安装和维护,不受外界环境因素干扰,能够同时用于道路和车位的车辆检测。
1 系统框架设计
本文设计和构建的车辆检测器由HMC5883L磁阻传感器模块、Arduino UNO和笔记本电脑组成,其结构框图如图1所示。Arduino UNO通过I2C接口与磁阻传感器模块通信,控制磁阻传感器进行模式配置、数据采集和传输等操作。Arduino UNO与笔记本电脑通过USB接口连接,为了实现采集数据的传输,利用Atmega16U微控制器实现USB接口到UART接口的转换。HMC5883L采集的数据经Arduino UNO传输到笔记本电脑进行显示、存储和处理。Arduino UNO的电源由笔记本电脑通过USB接口提供,而HMC5883L模块的电源则由Arduino UNO的3.3 V稳压输出提供。
2 检测器硬件设计
2.1 开源硬件Arduino
Arduino是一款流行的开源电子原型平台,包含一系列型号的Arduino开发板和Arduino IDE集成开发环境。其结构简单、使用方便,适用于产品开发早期验证系统功能和可行性,能够快速建立产品原型、缩短研发上市时间。本文使用的Arduino UNO是Arduino USB接口系列的入门版本,具有14路数字输入输出引脚,6路模拟输入引脚,一个USB接口,一个电源插座,一个在线串行编程接口和一个复位按钮。Arduino UNO上已经预置了Bootloader程序,因此可通过Arduino IDE直接下载程序到UNO中。
Arduino UNO的主控芯片是Atmel公司生产的Atmega328微控制器,其工作电压范围为1.8~5.5 V,最大频率为20 MHz。Atmega328拥有32 kB的FLASH程序存储器和2 kB的SRAM数据存储器,及1 kB的E2PROM存储器。虽只有28个引脚,Atmega328仍提供了包括1个UART,1个I2C,1个SPI和1个6通道10 bit模数转换器在内的多种外设。为满足电池供电应用的需求,Atmega328还提供了五种可软件选择的低功耗模式。上述特征使其完全满足了车辆检测器的功能设计要求。
2.2 HMC5883L传感器模块
地球可以被视为南北方向的巨大磁体,其磁感应强度范围约为250~650 mG,且在一个相对广阔的区域内,磁场强度基本恒定。当周围有铁磁性物体存在时,会引起地磁场分布情况的扰动。车辆可以看作是由多个双极性磁铁组成的铁磁性物体,因此可通过测量其对地磁场的扰动来检测车辆的存在[8]。地磁传感器根据铁镍合金的磁阻效应制成,当传感器周围的地磁场发生微小扰动时,沉积在硅片上的铁镍薄膜的电阻会发生改变。利用这一特性,构建通过检测地磁场变化来判断车辆存在的车辆传感器。与传统车辆检测技术相比,使用地磁传感器进行车辆检测具有体积小、功耗低、成本低、灵敏度高和范围较大等优点。
目前可用于车辆检测的地磁传感器主要包括各向异性磁阻传感器[9](Anisotropic Magneto Resistive,AMR)和巨磁阻传感器[10](Giant Magneto Resistive,GMR)两大类。鉴于车辆检测器需大规模部署,长时间免维护运行等实际需求,高集成度、小体积、低功耗和低成本成为选择地磁传感器型号的基本要求。因此,选择了Honeywell公司生产的HMC5883L芯片。该芯片的工作电压范围为2.16~3.6 V,测量模式电流仅有100 μA,待机模式电流更低至2 μA。最大磁场强度测量范围为-8.1~8.1 G,可通过内部寄存器进行配置,以满足不同的量程需求。HMC5883L具有很高的集成
度,在3.0 mm×3.0 mm×0.9 mm的尺寸上集成了三轴高精度HMC118X系列磁阻傳感器和用于信号调理、模数转换的专用集成电路。因此,只需一个微控制器接口和少量外部阻容器件即可使用,如图2所示。三轴HMC118X传感器具有很高的轴内灵敏度和很低的跨轴灵敏度,这使得它可以测量地磁场的方向和幅度。
在HMC5883L的外围电路中,C1用作内部电路的充电电容器,其标称值为4.7 μF;C2用于内部的SET/RESET驱动电路,其标称值为0.22 μF;C3用作电源电路的去耦电容,其标称值为0.1 μF。R10和R11分别用作I2C接口数据线和时钟线的上拉电阻,取值均为2.2 kΩ。按照I2C规范,空闲时数据线和时钟线必须为高电平,因此需要这两个电阻在其不工作时将电压拉高。HMC5883L的I2C接口直接与Arduino UNO的对应I2C管脚连接,同时将数据采集完成指示引脚DRDY连接到Arduino UNO的一个数字输入输出引脚,用于通知其接收数据。
3 系统软件设计
3.1 Arduino与磁阻传感器模块之间的操作
在本设计中,Arduino UNO与HMC5883L磁阻传感器模块使用I2C接口通信,其中Arduino UNO为主设备,HMC5883L为从设备。HMC5883L的7位从设备地址为0x1E。Arduino UNO发出的控制命令与HMC5883L返回的传感器测量数据都通过I2C总线进行传输。单次数据采集的操作流程如下:
(1)Arduino UNO向HMC5883L内部寄存器写入命令,初始化传感器、配置采集模式并发起采集操作;
(2)HMC5883L进行地磁信号采集,并在完成后通过DRDY低电平信号通知Arduino UNO;
(3)Arduino UNO从HMC5883L内部数据缓冲区中读取数据。
Arduino开发环境提供对I2C接口的函数库支持,通过在源文件添加#include
Wire.beginTransmission(0x1E);
Wire.write(0x02);
Wire.write(0x01);
Wire.endTransmission();
通过将微控制器的底层硬件操作抽象为易于理解和记忆的函数,Arduino大大简化了原型开发的复杂度。
3.2 Arduino与笔记本电脑之间的操作
Arduino UNO与笔记本电脑通过USB接口连接,其板载芯片Atmega16U实现USB接口到主控芯片UART接口的转换。因此对笔记本电脑而言,可将Arduino UNO视为串口设备,可通过设备管理器查询其端口号,并利用串口工具读取数据。Arduino UNO读取HMC5883L采的集数据后,直接通过UART接口传送到笔记本电脑。本设计使用Matlab串口函数库来控制串口,并实时显示和存储。
Arduino开发环境同样提供对UART接口的函数库支持。使用UART接口前,需要设置波特率等参数,可以直接调用Serial.begin()实现。通过UART接口发送数据可调用Serial.print()实现。接收数据时,可通过Serial. available()查询缓冲区是否收到数据,如果收到可调用Serial.read()读取。
3.3 软件流程描述
根据以上分析,检测器的软件部分主要包括传感器数据采集、I2C数据收发、UART数据收发和数据预处理等功能。软件流程如图3所示,简要描述如下:Arduino UNO平台上电后,首先调用Wire.begin(),Serial.begin()等函数进行外设接口初始化。其次通过I2C接口发送命令对HMC5883L进行初始化。程序进入无限循环,调用I2C接口发送命令配置HMC5883L进入单次采集模式(HMC5883L每次采集完成后会回到空闲模式,因此每次采集前都要使其进入单次采集模式)。轮询DRDY信号,当其为低电平时,通过I2C接口读取传感器X,Y,Z三轴数据。由于原始数据输出为二进制补码形式,所以通过预处理函数进行格式转换,并将处理后的数据通过UART接口传输到笔记本电脑进行显示和存储。为了实现不同的数据采集速率,可在循环末尾延时特定的时间,可使用Arduino自带的延时函数delay()来实现。
4 实验结果与分析
4.1 实验方法说明
为了验证车辆检测器原型的功能,在实验室使用条形磁铁进行测试。一方面,条形磁铁具有已知的磁场分布,有利于对实验结果进行分析;另一方面,地磁场分布与条形磁铁相似,对条形磁铁的实验结论可以扩展到地磁场。具体方案如图4所示。条形磁铁与HMC5883L模块位于同一水平面,且二者的中心距离为L。条形磁铁沿HMC5883L的X轴方向匀速运动(先从X轴正方向往负方向移动,到达预定位置后,再以相同速度沿相同路径从负方向往正方向移动)。第一组实验测量同一距离,测试不同移动速度对地磁信号检测的影响。第二组实验测量相同移动速度,测试不同距离对地磁信号检测的影响。测量时,距离L分别取10 cm和20 cm。
4.2 实验结果分析
第一组实验的地磁响应信号波形如图5所示。从图中波形可以看出,传感器对条形磁铁的经过有明显的响应。当条形磁铁从X轴正方向向负方向移动时,由于条形磁铁的磁场分布特性,X轴、Y轴和Z轴输出显现出不同的信号特征。对于X轴而言,当条形磁铁接近传感器时,磁场强度向正方向增强后迅速向负方向减小,在条形磁铁与传感器垂直的地方达到负向最大值;随着条形磁铁远离传感器,磁场强度回到初始值。对于Y轴而言,当条形磁铁接近传感器时,磁场强度向正方向增强后向负方向减小,但在条形磁铁与传感器垂直的地方回到初始值(此时条形磁铁施加的磁场方向与Y轴垂直);随着条形磁铁远离传感器,磁场强度向负方向增强后向正方向减小。对于Z轴而言,当条形磁铁接近传感器时,磁场强度向正方向增强,在条形磁铁与传感器垂直的地方达到正向最大值;随着条形磁铁远离传感器,磁场强度回到初始值。
从图5可以清楚地看出,当条形磁铁从X轴正方向往负方向移动时,传感器的响应信号与以相同速度沿相同路径从X轴负方向往正方向移动时是对称的。分析两种运动方向的磁场分布特性比较不同移动速度下的响应信号,可以发现信号具有相似的信号特征以及相同的峰值幅度和出现位置,只是信号的持续时间不同,这是由于在相同的数据采集速率下,速度快时采集的数据点更少,因此信号更窄。这一特性可用于评估铁磁性物体的经过速度,比如在道路上测量车辆通行速度等。
第二组实验的地磁响应信号波形如图6所示。从图中波形可以看出,当条形磁铁与HMC5883L模块之间的距离增加时,响应信号的幅度会大大减小。间距为10 cm时,各轴信号的最大变化量为间距为20 cm时的6~7倍。另一方面,虽然在不同距離下,响应信号仍具有相似的特征,但随着距离的增加,信号细节会部分丢失。从两组实验结果可以看出,传感器响应信号包含非常丰富的信息,能够反映铁磁性物体的磁场分布特征,因此本文设计的车辆检测器原型不仅能够实现车辆的检测,还能用于车速、车型等参数的评估。
5 结 语
本设计以开源硬件Arduino UNO为平台,结合HMC5883L磁阻传感器模块,设计了一种低功耗车辆检测器原型。实验结果表明,在采用USB接口为原型系统供电的情况下,传感器对条形磁铁移动有明显的响应,其信号特征与根据条形磁铁磁场分布所做的理论分析相吻合。当条形磁铁移动速度不同时,响应信号具有相似的信号特征和不同的持续时间。当条形磁铁与传感器距离增加时,响应信号的幅度会大大减小,同时部分细节丢失。这些现象不仅可以用来评估车辆的存在、车辆的通行速度等,还可判断车辆类型。因此,可同时用于道路和车位的车辆检测,实现普适的交通基础信息获取。
参考文献
[1]仲元昌,蔡增增,赵贞贞,等.面向交通信息采集的智能的无线传感器节点[J].计算机工程与应用,2012,48(24):62-66.
[2]彭春华,刘建业,刘岳峰,等.车辆检测传感器综述[J].传感器与微系统,2007,26(6):4-7.
[3]赵艳秋,刘桂香,王广义.环形线圈车辆检测器的研究[J].微计算机信息,2007,23(20):266-268.
[4]王骁,李博,张硕.基于DSP的地下停车场车流量视频检测的改进算法[J].电子器件,2016,39(3):741-745.
[5]艾红,王捷,孙硕.基于热释电红外传感器的车流量监测系统[J].仪表技术与传感器,2007(6):46-48.
[6]黄训磊,王丽静,王兴宇,等.基于ARM的停车场车辆管理系统[J].现代电子技术,2014,37(2):100-104.
[7]邹初建,钱正洪,白茹,等.基于三轴GMR传感器的无线车位检测系统[J].仪表技术与传感器,2014(9):62-65.
[8]高天龙,章伟.基于AMR传感器和ZigBee技术的车辆检测器设计[J].传感器与微系统,2016,35(3):96-98.
[9] WANG R,ZHANG L,SUN R L. EasiTia:a Pervasive traffic information acquisition system based on wireless sensor networks[J].IEEE Transactions on intelligent transportation systems,2011,12(2):615-621.
[10] SIFUENTES. E,CASAS O,PALLAS R. Wireless magnetic sensor node for vehicle detection with optical wake-up[J].IEEE Sensors journal,2011,11(8):1669-1676.
[11] Michael Margolis. Arduino权威指南[M]. 杨昆云,译.北京:人民邮电出版社,2015:1-6.
[12] Honeywell Microelectronics & Precision Sensors. 3-Axis Digital Compass IC HMC5883L Datasheet [EB/OL].