传感器部分-用压电元件检测振动

本例向你展示如何使用一个压电元件来检测震动。(压电元件有很多种应用,蜂鸣器就是一种,但是这里不是”正向”使用压电元件,而是利用其电路特性“逆向”使用。即原来是通电产生振动,振动发声,现在是振动产生电流,通过电流判断振动。)本例向你展示如何使用压电元件来进行振动的检测,你可以用本例的方法来对敲门、敲桌子、或者敲其他固体表面的振动进行识别。

当压电元件因为声波、机械扰动或振动产生形变时,会产生压差。而相反,如果你给压电元件加电压,它就会产生振动。由此可知,压电元件既可以由电产生振动,又可以由振动生电。

本例不断使用analogRead() 读取压电扬声器两端电压,并且将探测到的电压(0-5V)通过数模转换技术 (ADC)映射成为数字(0-1023)。

如果压电元件的输出超过了一定极限值(表明振动达到了一定强度)你的板子就会通过串口输出“检测到振动!”这一字符串到电脑。

你需要打开串口监视器来看到效果。

 

硬件需求

Arduino板

压电元件

1mΩ电阻

用作敲击的固体表面

连接线

 

电路

image

压电元件是有极性的,就是说电势总是一侧高一侧低,如果加上外电路,那么电流总是从一侧流向另一侧。

将黑色线(通常电势较低的一级)连接到GND。将红色线(通常电势较高的一级)连接到A0口。还要并联一个1mΩ的电阻,以保证过大电流不会损坏A0口。

你可以去掉压电元件的塑料外壳。这样它能够更好地接收到外部的振动。请将压电元件粘在被测表面,并且适当用力按压、敲击以让它更好地检测到振动。

原理图

image

代码

在下列代码中,从压电元件读出的值会和你设定的极限值做比较。你可以尝试增加/减少极限值来调整对振动的敏感度。

/* 
    用压电元件检测振动
  
    本例通过读取压电元件来对敲击进行检测。代码将读取压电元件的数值并且将它与极限值进行比较。
 
    如果结果大于极限值,就会输出"检测到振动"到串口监视器。13号引脚的板载LED也会随之点亮。
  
     电路搭建:
     * 压电元件阳极(+)连接A0
     * 压电元件阴极(-)连接GND
     * 1mΩ电阻连接A0和GND
 
   代码公开


*/ 
  
// 常量: 
const int ledPin = 13;      // 13号引脚连接LED 
const int knockSensor = A0; // 压电元件 
const int threshold = 100;  // 极限值,用于检测是否有振动 
  
// 可变量: 
int sensorReading = 0;      // 存储值的变量 
int ledState = LOW;         // 存储LED状态量 
  
void setup() { 
   pinMode(ledPin, OUTPUT); // 将ledPin声明为OUTPUT模式 
   Serial.begin(9600);       // 串口 
} 
 
void loop() { 
   // 读取传感器的值并且存入sensorReading变量: 
   sensorReading = analogRead(knockSensor); 
  
   // 如果sensorReading超过了极限值: 
  if (sensorReading >= threshold) { 
     // 改变ledPin的状态: 
     ledState = !ledState; 
     // 根据状态点亮/关闭: 
     digitalWrite(ledPin, ledState); 
     // 输出消息"检测到振动!" 并且换行 
     Serial.println("检测到振动!"); 
   } 
   delay(100);  // 延迟100毫秒保持串口稳定性 
} 

 

 

数据

clip_image002

0
分享到:

评论0

请先

本站资料配套硬件销售店铺:天猫店ultirobot.tmall.com 、三冠淘宝店zhongbest.taobao.com
没有账号? 忘记密码?