简介
从上图中可以看到, 其中下方的是压电陶瓷, 红色的线是信号线, 黑色的线是GND. 没有VCC输入. 然后在上方的PCB板子上. 中间的红色线是悬空的, 不需要接VCC. 蓝色线接ADC的输入引脚. 黑色线接GND引脚. (我也是第一次见到这种不需要接VCC的传感器)
接线图如下
由于这个传感器输出的是模拟电压, 所以可以接到ESP32上的任意的引脚,然后配置其ADC功能即可. 我们使用Arduino IDE快速创建一个项目来读取来自传感器的模拟量输出.
void setup() { // initialize serial communication at 115200 bits per second: Serial.begin(115200); //set the resolution to 12 bits (0-4095) analogReadResolution(12); } void loop() { // read the analog / millivolts value for pin 2: int analogValue = analogRead(4); int analogVolts = analogReadMilliVolts(4); // print out the values you read: Serial.printf("ADC analog value = %d\n", analogValue); Serial.printf("ADC millivolts value = %d\n", analogVolts); delay(100); // delay in between reads for clear read from serial }
然后我们把代码下载到开发板里之后便可以通过串口来观察到对应的ADC的数据转换结果.
每次触动传感器的时候, 压电陶瓷便会产生一个模拟量数据,并且被ESP-32进行转换. 可以从下图中看到, 在强烈敲击这个传感器的时候其输出的电压在1.1v左右.
至此成功的读取到了这个传感器的输出数据. 另我觉得困惑的一点是: 这个PCB的板子是否有点多余. 直接接一个压电陶瓷片是不是也可以正常的测量出物体的振动?
压电陶瓷简介
总结
本文介绍了DFROBOT的压电陶瓷振动传感器, 并且使用Arduino IDE快速的对传感器的模拟量输出进行了功能性验证. 原本打算使用ESP-IDF来进行ADC转换并且将本文章归类到ESP-IDF系列.但是ESP-IDF的ADC API有点复杂. 因此快速使用了Arduino对传感器进行了验证. 同时提出了对当前的传感器提出了疑问(是否能够直接使用压电陶瓷连接到开发板上进行ADC转换). 肯请各位大佬解答!
附件: