一、传感器介绍
这里我们只采用AO输出的电压模拟量信号,因为该电压信号可以反映振动的强度大小。对于DO引脚则使用起来更简单,通过传感器模块电路板上的电位器调整好灵敏度后,就可以用Core提供的GPIO库函数来实现对DO信号高低电平的检测,这里就不涉及了。
二、接线图
四、完整代码
--配置Core的USB口以虚拟串口模式工作,这样print()输出的内容就可以在电脑串口终端上显示了
LIB_UsbConfig("CDC")
--配置AD电压采集功能,最大值采样值4096对应3.6V输入电压
--当通道采集满1个点时缓存满,每个点的采集时间间隔为300ms
LIB_ADConfig(1,300000)
--开始大循环
while(GC(1) == true)
do
--每隔300ms查询A0通道是否转换完成
--开发者也可以将传感器接至A1-A3中的任一通道,也可以多个通道接多个传感器,用法都和下面一样
LIB_DelayMs(300)
A0_full_flag, A0_buf = LIB_ADCheckBufFull("A0")
if A0_full_flag == 1 then
--打印输出A0通道的AD采样值以及对应的电压值
print(string.format("A0=%04d Voltage=%.2fv", A0_buf[1], A0_buf[1]*3.6/4096.0))
end
end
注意:上面的代码中将AD采样间隔设置为300ms是为了不让print()打印太快,实际应用中为了及时检测到振动和敲击,您应当将这个时间设置为1ms
- 10ms内的值更为合适。
五、实验过程及结论
步骤一:当传感器静置时
此时传感器输出的电压值在0.02V左右
步骤二:当手指轻敲击传感器时
手指轻敲传感器探头检测到的电压为0.19V