您的位置:首页 > 产品设计 > UI/UE

【Arduino官方教程第一辑】示例程序 6-2 用压电元件检测振动

2016-06-22 14:11 399 查看

用压电元件检测振动

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

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

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

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

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

完成本例所需的硬件设备

Arduino板或Genuino板

压电元件

1mΩ电阻

用作敲击的固体表面

连接线

电路连接



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

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

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

原理图



例程代码

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

/*
用压电元件检测振动

本例通过读取压电元件来对敲击进行检测。代码将读取压电元件的数值并且将它与极限值进行比较。

如果结果大于极限值,就会输出"检测到振动"到串口监视器。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毫秒保持串口稳定性
}


相关资料

pinMode()

analogRead()

if()

serial.begin()

serial.print()

ADXL3xx: 读取ADXL3xx加速度计。

Knock: 用压电元件来检测碰撞。

Memsic2125: 两轴加速度计。

Ping:使用超声波来检测物体的远近。

原文链接

更新进程

日期日志译者
2016年6月22日创建并翻译文档Steven

译者:Steven

邮箱:gammapi@qq.com

转载请注明出处,一切只因为热爱。

希望您能指出宝贵意见,谢谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  arduino 应用