有几台关键机器或昂贵的设备会因振动而损坏。在这种情况下,需要一个振动传感器来确定机器或设备是否产生振动。如果使用适当的传感器来检测振动,那么识别持续振动的物体并不是一件棘手的工作。市场上有几种类型的振动传感器可以通过感应加速度或速度来检测振动,并且可以提供出色的结果。然而,在使用加速度计的情况下,这种传感器过于昂贵。加速度计非常灵敏,可用于制作地震探测器电路。 但是,也很少有专用且廉价的传感器可用于仅检测振动,其中一种振动传感器是 SW-420,我们将与 Arduino Uno 接口。
所以在这个项目中,一个基本的振动传感器模块与流行的 Arduino UNO 接口,每当振动传感器检测到任何振动或抖动时,一个 LED 就会开始闪烁。
振动传感器模块 SW-420
这是一个SW-420振动模块,可以工作在3.3V到5V之间。传感器使用 LM393 比较器检测超过阈值点的振动并提供数字数据,逻辑低或逻辑高,0 或 1。在正常工作期间,传感器提供逻辑低,当检测到振动时,传感器提供逻辑高。模块中提供三个外围设备,两个 LED,一个用于电源状态,另一个用于传感器输出。此外,还提供了一个电位器,可进一步用于控制振动的阈值点。在本项目中,我们将使用 5V 为模块供电。
所需组件
Arduino UNO
SW-420 振动传感器模块
5mm LED(任何颜色)
跳线(连接线)
上传程序的 USB 数据线
Arduino振动传感器电路图
下面给出了将振动传感器与 Arduino uno 连接的示意图 。
LED 连接在 D13 引脚上。该模块使用 Arduino 中可用的 5V 引脚供电。接地和 5V 引脚用于为 Arduino 供电,而 A5 引脚用于从振动传感器获取数据。
该电路是在 SW-420 模块和 LED 与 Arduino Uno 连接的地方构建的。
Arduino Uno 振动传感器编程
将 Arduino UNO 编程为接口振动传感器不需要太多努力,因为只需监控输入引脚即可得出结论。最后附上完整的代码和工作视频。
最初包含头文件。由于本教程是在带有 Arduino 扩展的 Eclipse IDE 中编写的,因此包含了 arduino 标头。此草图也适用于 Arduino IDE,在 Arduino IDE 中使用此草图时,无需包含 标头。
#include
这里为 ON 和 OFF 定义了两个宏。
#define 开 1
#define 关 0
以下语句用于集成 LED 和振动传感器。振动传感器连接到引脚 A5。还使用了内置 LED,它直接连接到板子中的引脚 13。5mm LED 也连接到引脚 13。
/*
* 引脚说明
*/
intvibration_Sensor = A5;
整数 LED = 13;
声明了两个整数,其中传感器当前输出和先前输出将被存储,这将进一步用于检测是否发生振动。
/*
* 程序流程描述
*/
int present_condition = 0;
int previous_condition = 0;
声明为外围连接的同一引脚,配置引脚的方向。传感器引脚作为输入,LED 引脚作为输出。
/*
* 引脚模式设置
*/
void setup() {
pinMode(vibration_Sensor, INPUT);
pinMode(LED,输出);
}
编写了一个函数以使 LED 闪烁两次。可以通过更改延迟值来配置延迟。
无效 led_blink(void) {
digitalWrite(LED, ON);
延迟(250);
数字写入(LED,关闭);
延迟(250);
数字写入(LED,开);
延迟(250);
数字写入(LED,关闭);
延迟(250);
}
在循环函数中,比较当前条件和先前条件。如果这两个不相同,则LED 开始闪烁,直到两者相同。启动时,两个变量保持 0,程序启动期间 LED 保持熄灭。当有一些 virbraion 时,present_condition变量变为 1 并导致开始闪烁。当振动停止时,两个变量都变为 0,LED 停止闪烁。
无效循环(){
前一个条件=现在条件;
present_condition = digitalRead(A5); // 从 Arduino 的 A5 引脚读取数字数据。 if (previous_condition != present_condition) {
led_blink();
} 其他 {
数字写入(LED,关闭);
}
}
这样就完成了使用振动传感器对 arduino UNO 的编程。最后一步是测试整个设置。
测试 Arduino 振动传感器电路
该电路不需要额外的面包板。可以使用 Arduino UNO 板对其进行简单测试。当振动传感器被击中或它是否改变其状态时,会监控
LED。当有一些振动时,LED 将闪烁连接到 Arduino UNO 的 Pin
13。如果振动传感器不起作用,请检查连接和电源。避免传感器和微控制器之间的任何松散连接。
/*//=============================================== =================================//
* 与 Arduino 接口的振动传感器
* 日期: - 15-04-2019
* 作者:- 苏拉夫古普塔
* 对于:- circuitdigest.com
*/ //=============================================== ================================//
#include
#include
#define ON 1
#define 关闭 0
/*
* 引脚说明
*/
int 振动传感器 = A5;
整数 LED = 13;
/*
* 程序流程说明
*/
int present_condition = 0;
int previous_condition = 0;
/*
* 引脚模式设置
*/
无效设置(){
pinMode(振动传感器,输入);
pinMode(LED,输出);
}
/*
* LED 闪烁
*/
无效led_blink(无效);
/*
* 主循环
*/
无效循环(){
以前的条件=现在的条件;
present_condition = digitalRead(A5); // 从 Arduino 的 A5 引脚读取数字数据。
if (previous_condition != present_condition) {
led_blink();
} 别的 {
数字写入(LED,关闭);
}
}
无效led_blink(无效){
数字写入(LED,开);
延迟(250);
数字写入(LED,关闭);
延迟(250);
数字写入(LED,开);
延迟(250);
数字写入(LED,关闭);
延迟(250);
}