本文开始介绍新的内容,开始涉及一些外设,本次整理的是关于震动传感器的东西。传感器的使用并不复杂,只是多了接线的步骤。
传感器是能感受到外界被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求的检测装置 。
传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体变得活了起来,传感器是人类五官的延长。传感器具有微型化、数字化、智能化、多功能化、系统化、网络化等特点,它是实现自动检测和自动控制的首要环节。
震动传感器是一种测量和检测机械设备或结构物振动的装置,它可以将振动信号转换成电信号进行处理和分析。震动传感器通常由敏感元件、信号放大器和滤波器等组成,常用于监测工业设备、建筑结构、车辆和飞行器等的振动情况,并帮助诊断问题和预测故障。
从能量观点来看,震动传感器实现了将机械能到电能的转换,实质上,可以把它看作一个换能器。
震动传感器的实物图如下:
在震动传感器上有四个针脚,分别是 AO、DO、GND、VCC,各个口的介绍如下:
在上面的四个针脚中,我们使用三个,分别是:DO、GND 和 VCC,这三个针脚需要和开发板上的针脚进行连接。其中把 OD 口连接到一个指定的 P 口,开发板就可以得到振动传感器送来的输入;在振动传感器没有感知到震动时,输出的是高电平,在感知到震动时会输出低电平。
在具体完成代码之前,需要先将震动传感器和开发板使用杜邦线进行连接,我们将震动传感器连接到开发板的 P3.3 口上,其他的两个针脚分别接到开发板的 VCC 和 GND 口即可。
为了更好的观察震动传感器给开发板送来的输入,我们让 LED 灯的亮与灭来配合震动传感器。
具体代码如下:
#include <intrins.h>
#include "reg52.h"
sbit led1 = P3 ^ 7;
sbit vibrate = P3 ^ 3;
void Delay2000ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
i = 15;
j = 2;
k = 235;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while (1)
{
if (vibrate == 0)
{
led1 = 0;
Delay2000ms();
led1 = 1;
}
else
{
led1 = 1;
}
}
}
在代码中可以看到,当震动传感器感知到震动以后会送来低电平,然后相应的我们给 LED1 也送去低电平,这样感知到震动时 LED1 会亮起。如果没有震动传感器没有感知到震动,我们则让 LED1 保持高电平,使其在灭的状态下。
下面进行一个简单的演示,把相应的线连接好,然后将代码编译生成的 hex 文件写入单片机,让它们都处于加电的状态。然后最关键的步骤来了,我拍动桌子,注意观察,在我拍动桌子的同时,开发板上的 LED1 灯亮了,并且按照代码的功能,LED1 亮了大约有 2 秒的时间。
视频地址:https://mpvideo.qpic.cn/0b2eqqac6aaaoyac4nhtcjsvbbgdf6caalya.f10002.mp4?