本篇文章只重点介绍如何利用ADXL345传感器根据外部的受力情况来决定系统是休眠还是唤醒工作,对于ADXL345传感器的介绍以及三轴加速度的概念请回看《ADXL345传感器测量三轴加速度/倾斜角》。
配置ADXL345的休眠及唤醒:
1、当传感器的X轴加速度低于1000.0mg并持续10秒后自动进入休眠
2、当传感器的X轴加速度大于2000.0mg时,传感器唤醒且INT1引脚此时会输出一个高电平脉冲
利用INT1引脚输出的这个高电平脉冲(您也可以设置成低电平脉冲),可以利用这个脉冲唤醒给Ubeeto开发板供电的模块进而让开发板开始上电工作。
1、当传感器检测到自身的X轴加速度低于1000mg时并且持续时间达到10秒时传感器会自动进入休眠状态,休眠状态下传感器的耗电量大概为26uA。
2、传感器进入休眠状态后,开发板读取到的传感器三个轴向的加速度值全是0,此时开发板可以判断出传感器已经进入休眠状态了,那么开发者可以决定开发板自身是否也需要让电源管理模块断掉开发板自己的电源来节省耗电量(注意传感器的电源需要保持长期供应)。
3、当传感器的X轴加速度大于2000mg时,传感器不仅自身会唤醒工作,而且还会通过INT1引脚对外输出一个电平脉冲,告知管理开发板电源的模块,系统需要开始工作了,可以给开发板供电了。
注意:上面所提及的1000mg,2000mg,以及10秒这些值都是可灵活配置的
对管理Core电源的模块设计要求:
1、电源管理模块可以控制物联网开发板模块电源的导通与断开。
2、开发板可以通过IIc接口和电源管理模块通信,配置电源管理模块,以及告诉电源管理模块断开自己的电源。
3、当电源管理模块检测到传感器INT1引脚发来的脉冲时,能够立马给开发板恢复供电。
LIB_ADXL345AutoSleepConfig()
--配置USB以虚拟串口模式工作,这样调用print()函数就会在电脑串口终端打印输出 LIB_UsbConfig("CDC") --配置ADXL345的休眠及唤醒参数:当X轴加速度低于1000.0mg并持续10秒后进入休眠,当X轴加速度大于2000.0mg时 --传感器唤醒且INT1引脚会输出一个高电平脉冲。注意:该函数一定要在LIB_ADXL345Config()之前调用 LIB_ADXL345AutoSleepConfig("X", 1000.0, 10, 2000.0, "HIGH") --配置ADXL345开始工作,占用IIc0接口,三轴加速度测量结果输出频率默认100Hz,测量范围默认+-16g LIB_ADXL345Config("IIC0") --开始大循环 while(GC(1) == true) do --每隔200ms查询一次传感器是否出数。注意:最低可以每隔10ms查询一次 LIB_DelayMs(200) flag, acc_x, acc_y, acc_z = LIB_ADXL345GetAccXYZ() if flag == 1 then --打印三轴加速度,单位mg,1g=1000mg print(string.format("acc_x:%dmg,acc_y:%dmg,acc_z:%dmg",acc_x,acc_y,acc_z)) end end
如果感兴趣,上面代码中出现的LIB开头的库函数可以在API文档中通过Ctrl+F查询。
简单、快捷、高效、强大的物联网开发板
© 2022. All Rights Reserved. 粤ICP备2021058065号