风筝
发表于: 2019-4-26 17:19:09 | 显示全部楼层

有几种关键机器或昂贵的设备因振动而受损。在这种情况下,需要振动传感器来确定机器或设备是否产生振动。如果使用适当的传感器来检测振动,识别连续振动的物体并不是一项棘手的工作。市场上有几种类型的振动传感器可以通过感应加速度或速度来检测振动,并且可以提供很棒的结果。然而,在使用加速度计的情况下,这种传感器太昂贵。加速度计非常灵敏,可用于制作地震探测器电路。但是,很少有专用且便宜的传感器也可用于检测振动,其中一个这样的振动传感器是SW-420,我们将使用Arduino Uno开发板连接该传感器。


在本篇文章中,我们将一个基本的振动传感器模块与流行的Arduino UNO开发板连接,每当振动传感器检测到任何振动或加速时,LED将开始闪烁。


振动传感器模块SW-420

Vibration-Sensor-Module-SW-420.jpg

振动传感器模块SW-420


这是一款SW-420振动模块,可在3.3V至5V范围内工作。传感器使用LM393比较器检测阈值点以上的振动,并提供数字数据,逻辑低电平或逻辑高电平,0或1。在正常操作期间,传感器提供逻辑低电平,当检测到振动时,传感器提供逻辑高电平。模块中有三个外围设备,两个LED,一个用于电源状态,另一个用于传感器的输出。另外,可以使用电位计,其可以进一步用于控制振动的阈值点。在这个项目中,我们将使用5V为模块供电。


需要的组件

●    Arduino UNO开发板

●    SW-420振动传感器模块

●    5mm LED(任何颜色)

●    跳线(连接线)

●    用于上传程序的USB电缆


Arduino振动传感器电路图

振动传感器与Arduino uno的连接示意图如下。

Circuit-Diagram-for-Interfacing-Vibration-Sensor-Module-with-Arduino.png

LED连接在D13引脚中。该模块使用Arduino中的5V引脚供电。接地和5V引脚用于为Arduino供电,而A5引脚用于从振动传感器获取数据。


以下是W-420模块和LED与Arduino Uno连接的示意图。

Wiring-Diagram-for-Interfacing-Vibration-Sensor-Module-with-Arduino.png


Arduino Uno振动传感器编程

将Arduino UNO编程为接口振动传感器不需要太多努力,因为只应监控输入引脚以得出结果。


首先包含头文件。由于本文是在带有Arduino扩展的Eclipse IDE中编写的,因此包含了arduino头文件。此草图也适用于Arduino IDE,在Arduino IDE中使用此草图时,无需包含<Arduino.h>头文件。

  1. #include <Arduino.h>
复制代码

这里为ON和OFF定义了两个宏。

  1. #define ON 1
  2. #define OFF 0
复制代码

以下声明用于集成LED和振动传感器。振动传感器连接到A5引脚。板载的LED连接到引脚13。

  1. /*
  2. * Pin Description
  3. */
  4. int vibration_Sensor = A5;
  5. int LED = 13;
复制代码

在传感器存在输出和先前输出的情况下,将声明两个整数,这将进一步用于检测振动是否发生。

  1. /*
  2. * Programme flow Description
  3. */
  4. int present_condition = 0;
  5. int previous_condition = 0;
复制代码

声明为外围连接的相同引脚,配置引脚的方向。传感器引脚作为输入,LED引脚作为输出。

  1. /*
  2. * Pin mode setup
  3. */
  4. void setup() {
  5.             pinMode(vibration_Sensor, INPUT);
  6.             pinMode(LED, OUTPUT);     
  7. }
复制代码

以下函数是将LED闪烁两次。可以通过更改延迟值来配置延迟。

  1. void led_blink(void) {
  2.             digitalWrite(LED, ON);
  3.             delay(250);
  4.             digitalWrite(LED, OFF);
  5.             delay(250);
  6.             digitalWrite(LED, ON);
  7.             delay(250);
  8.             digitalWrite(LED, OFF);
  9.             delay(250);
  10. }
复制代码


在循环函数中,比较当前和先前的条件。如果这两个不相同,则指示灯开始闪烁,直到两者相同。在启动时,两个变量保持为0,并且在程序启动期间LED保持关闭状态。当存在一些virbraion时,present_condition变量变为1并且led开始闪烁。并且当振动停止时,两个变量都变为0并且LED停止闪烁。

  1. void loop() {
  2.             previous_condition = present_condition;
  3.             present_condition = digitalRead(A5); // Reading digital data from the A5 Pin of the Arduino.
  4.             if (previous_condition != present_condition) {
  5.                        led_blink();

  6.             } else {
  7.                        digitalWrite(LED, OFF);
  8.             }
  9. }
复制代码

这完成了使用振动传感器对arduino UNO进行编程。最后一步将测试整个设置。


测试Arduino振动传感器电路

该电路不需要额外的面包板。它可以使用Arduino UNO 开发板进行简单测试。当振动传感器动作或者其状态改变时,监视LED。当有一些振动时,连接到Arduino UNO的引脚13的LED将闪烁。如果振动传感器不起作用,请检查连接和电源。避免传感器和微控制器之间的连接松动。

Interfacing-Vibration-Sensor-Module-with-Arduino.jpg


以上就是振动传感器如何与Arduino UNO连接。如果您有任何疑问或建议,那么您可以在本帖下面进行回复。


代码

本文使用的完整代码如下: main.rar (482 Bytes, 下载次数: 16)

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-24 20:23 , Processed in 0.039279 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表