安全系统通过测量不同的物理参数来工作。其中一个参数就是声音。每一个运动的物体都产生声音和震动。这些声音和振动可以被采样,物体也可以被识别。采集声波并训练系统区分物体需要大量的时间。
对于本教程,让我们使用一个简单的声音传感器,并将其与STM32微控制器接口。声音传感器将识别拍击声和开关的LED。
我们使用的传感器是最流行的KY-038。在KY-038上,声音传感器被放置在与其他电子元件一起的电路中。即
- 差分放大器
- 可变电阻器(电位计)
为什么差分放大器?
声音传感器输出电压/信号远低于标准微控制器工作电压(3.3或5伏)。为了读取声音传感器的输出,它必须调高到3.3或5伏,这取决于微控制器的操作电压。
KY-038在市场上有许多变种,并有各种各样的差分放大器。最流行的差分放大器是LM-393。Lm-393实际上是一个比较器,但是在我们的传感器板上,输出电压是向上拉的。此外,传感器模块还可以输出数字信号和模拟信号。
可变电阻器
可变电阻器正在设置声音识别的阈值。可变电阻的输出输入到差分放大器。差分放大器的另一个输入是声音传感器的输出。
那么它是如何工作的呢?
一个固定的电压(阈值)通过可变电阻馈送到比较器的一个输入端。在任何干扰声传感器输出电压。比较器比较电压阈值和干扰。如果干扰大于阈值,则放大输出1。如果小于没有输出。
通过转动可变电阻器的旋钮,我们可以调整声音检测等级。
项目电路:
使用Stm32f103发现开发板测试拍片传感器。如果靠近传感器,输出端的一个led会打开一段时间。
为此需要STM32单片机的两个GPIO管脚。一个作为输入,检测来自传感器模块的拍击信号,一个作为输出,打开led。项目电路图如下。
我使用PC8作为输入引脚,PC9作为输出引脚。Led采用550欧姆电阻串联拉高。led和传感器模块都可以通过stm32发现功率输出引脚供电。stm32的板载调节器可以管理所有三个组件的电源。
项目代码
项目的代码简单明了。首先,为stm32的c端口启用时钟。我们必须启用时钟,因为我们在应用程序中使用了端口c的两个引脚。如果在任何应用程序中错过了这一步,那么在输出中将看不到任何内容。所以一定要为正在使用的端口启用时钟。
接下来,声明GPIO管脚PC8和PC9。我们需要为每个引脚设置所有参数。引脚8宣布为输入,采样速度设置为50MHz,最后,没有上拉或下拉电阻启用。
PC9与PC8的唯一区别是它被声明为输出引脚。可根据电路要求使能上、下推电阻。另一种选择是使用STM32发现的板载led。上面标签为3的代码单元中的单个语句可以取消注释以使用板载led。在板载led声明功能的后面,执行框2中编写的相同代码来声明led。
接下来是while循环。while循环会连续执行,除非发现关闭。首先在while循环中,如果语句正在检查传感器输出的状态。如果发现值高,则控件进入If语句体。
假设语句体仅由两个语句组成。第一个语句将PC9或led设置为高。第二个语句是for循环,迭代1000次。这1000次迭代产生以毫秒为单位的延迟。这种延迟是非常重要的。它使人能够看到led开关,然后在视觉上关闭。Led off语句在if语句之外。
在测试过程中,发现如果没有环路延迟,是不可能看到led的开启和关闭的。由于stm32的工作频率,Led转换如此之快。
如果您使用板载引导的stm32发现,您必须取消STM_EVAL_LEDToggle()指令的注释。如果使用GPIOC->BSSR和BSR代替GPIO_SetBits(),也可以实现LED切换。BSR和BSSR是与stm32端口相关联的输出寄存器。所有的指令都在上面的代码中。
下载完整的代码Github
上述概念可应用于不同的应用领域,如安全系统、开门关门、车辆启动盗窃等。传感器的模拟输出在干扰时提供精确的电压变化。模拟特性可以用于精确的声音区分。使用模拟特性需要了解ADC,我们将在接下来的教程中学习。
让我们DIY这个项目:到哪里去买零件?
StM32发现:从捕鼠动物
声音传感器:从捕鼠动物
领导:从捕鼠动物
电阻:从捕鼠动物
你也可以喜欢:
了下:单片机项目,188appcob