Arduino Piezo-Vibrationsmessschaltung

Ich suche eine sehr einfache Messschaltung zur Messung von Vibrationen mit einem Piezoelement und einem Arduino-Gerät. Ich möchte positive und negative Werte lesen.

Ich habe diesen Sensor: http://www.seeedstudio.com/wiki/Grove_-_Piezo_Vibration_Sensor

Ich weiß, dass dieses Sensormodul mir nur eine digitale Ausgabe gibt. Ich möchte aber die Schwingungsamplituden und die Frequenz messen. Also würde ich nur das Piezoelement verwenden.

Ich habe viele Beispiele gefunden, von sehr einfach bis hochgenau. Aber die meisten von ihnen schneiden die negativen Werte ab. ZB http://www.learningaboutelectronics.com/Articles/Piezo-knock-sensor-circuit.php

Und im obigen Beispiel gibt es keinen Schutz für das Arduino. Ich habe auch Aussagen gefunden, dass das Arduino wegen des niedrigen Stroms keinen Schutz benötigt, wenn es einen Piezosensor am Analog-Pin liest. Und die analogen Pins sind gegen höhere Spannungen geschützt.

Ich möchte nur eine einfache Schaltung, um negative und positive Werte von diesem Piezoelement zu lesen. Mein Arduino-Gerät verwendet eine Eingangsspannung von 3,3 V. Der Piezosensor kann im Extremfall bis zu 70-90V haben.

Was ist die Mindestkonfiguration, um eine solche Messschaltung aufzubauen? Ich brauche nicht höchste Genauigkeit. Es sollte so einfach wie möglich sein. Es dient nur zu Testzwecken. Ich denke, ich muss einen Spannungsteiler mit zwei gleich hohen Widerständen verwenden, um einen DC-Offset für die Messung der negativen Werte einzustellen. Aber was brauche ich noch für ein funktionierendes Minimalbeispiel?

Das Messen des negativen Teils des Signals erhöht die Schaltungskomplexität. Warum gibt es Ihrer Meinung nach nützliche Informationen im negativen Teil des Signals, die nicht auch im positiven Teil enthalten sind? Sie scheinen zu planen, das Signal mit dem Analog-Digital-Wandler (ADC) des Arduino abzutasten. Welche Frequenz erwarten Sie von dem Signal? AFAIK, ein Piezosensor kann ein Signal erzeugen, das für einen Arduino-ADC viel zu schnell ist, sodass die Samples Aliase sein können und daher zu ungenau sind, um Ihnen viel zu sagen. Ein Grund, warum Piezosensoren digital abgetastet werden können, ist, dass es möglich ist, viel schneller abzutasten.
@gbulmer Ich möchte einfach die Vibrationen einer Maschine wie einer Waschmaschine oder eines Motors sehen. Wie würden Sie die digitale Ausgabe abtasten? Aber dann muss ich die Amplitude im Voraus kennen, um die Empfindlichkeit mit dem Pontentiometer richtig einzustellen? Wenn die Empfindlichkeit zu hoch und die Vibration zu stark ist, würde ich immer eine binäre 1 als Messwert bekommen. Und wenn die Empfindlichkeit zu niedrig und die Vibration zu schwach ist, würde ich die Vibration nicht erkennen, oder?
"Aber dann muss ich die Amplitude im Voraus kennen, um die Empfindlichkeit mit dem Pontentiometer einzustellen, richtig?" Nein, das Signal geht bei jedem Zyklus durch Null. Die Frequenzinformationen sind also weiterhin in einem digitalen Stream verfügbar. Amplitude geht verloren. „Wenn die Empfindlichkeit zu hoch und die Vibration zu stark ist, würde ich immer eine binäre 1 als Messwert bekommen.“ Nein, falsche Annahme; Nulldurchgänge geben einem digitalen Signal Frequenz. "Und wenn die Empfindlichkeit zu niedrig und die Vibration zu schwach ist, würde ich die Vibration nicht erkennen, oder?". Ja. Mit einem Pizeo-Sensor ist das jedoch unwahrscheinlich.
@gbulmer Ah ok, richtig. Vielen Dank! Der Sensor ist mit einem Arduino-Gerät verbunden. Das Gerät sendet die gemessenen Daten an einen Raspberry Pi, auf dem Windows iot läuft. Würden Sie die FFT (um die Frequenz zu erhalten) direkt auf dem Arduino oder auf dem Himbeer-Pi ausführen? Gibt es ein Problem, wenn ich die Daten zuerst auf den Pi übertrage?
Es wäre besser, dafür eine zweite Frage zu stellen und diese Frage auf ihren derzeitigen Umfang zu konzentrieren. Erklären Sie in dieser neuen Frage, wofür Sie die Messungen verwenden möchten. Ich habe Code gesehen, der veröffentlicht wurde, um eine FFT bei ein paar KHz auf einem Arduino durchzuführen, aber ich habe nie versucht, ihn zu verwenden. Im Allgemeinen ist es viel einfacher, ein System mit viel zu viel Computerleistung zum Laufen zu bringen und es dann zu optimieren, als ein System mit kaum genug Rechenleistung zum Laufen zu bringen. Also würde ich das R-Pi verwenden, um es zum Laufen zu bringen.

Antworten (1)

Die Verwendung fast aller im Internet veröffentlichten Artikel über die digitale Erfassung eines Piezosensors liefert die Frequenz der Vibration. Dies hat den großen Vorteil, dass ein digitaler Pin etwa 1000-mal schneller erfasst werden kann als der ADC.

Ein Problem bei der Verwendung des ADC zum Abtasten des tatsächlichen Signals besteht darin, dass der Arduino-ADC so langsam ist, dass die Abtastungen unter Aliasing leiden (das Signal wird unterhalb der Nyquist-Shannon- Kriterien abgetastet) und sehr unzuverlässige Informationen liefern.

Die Signalspannung vom Piezosensor wird um Null oszillieren. Dies wird durch ein digitales Sample erkannt, wodurch die Frequenz wiederhergestellt wird.

Schützen Sie die Pins der MCU mit einem Widerstand und einer Diode, verbinden Sie das Signal mit dem Pin über den Widerstand mit dem MCU-Pin und mit Masse über die Diode. Ich würde wahrscheinlich eine Schottky-Diode verwenden, um zu verhindern, dass das Signal weit unter die Erde geht.

Schützen Sie den Eingang außerdem vor den potenziell sehr hohen Spannungen mit einer Zenerdiode (3,3 V für eine 3,3-V-MCU, 5 V/5,1 V für eine 5-V-MCU), die ebenfalls mit Masse verbunden ist, damit das Signal nicht über die Arduino-Pins steigen kann Arbeitsbereich.

Während es in Ordnung sein kann , sich auf die ESD-Schutzdioden zu verlassen, geht das Vertrauen auf die ESD-Diode zum Schutz über die Spezifikation des Geräts hinaus. Außerdem kenne ich einen Typen, der mehrere Arduino-Pins mit einem Piezosensor beschädigt hat. Da lohnt es sich nicht, ein paar Cent zu sparen.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Wenn Sie die Amplitude wirklich abtasten möchten, fügen Sie auch einen Tiefpassfilter hinzu. Ich würde wahrscheinlich beim digitalen Eingang (in dieser Schaltung) für die Frequenz bleiben und einen zweiten ADC-Pin verwenden, um zu versuchen, die Amplitude zu messen.

Es ist nicht klar, welche Motoren Sie messen möchten. Bei so etwas wie einer Waschmaschine mit beispielsweise 1200 U / min sind das 20 Hz. Ein Tiefpassfilter bei 100 Hz+ und eine Abtastung bei 1 kHz+ sollten also gut genug sein. Das sollte innerhalb der Möglichkeiten des Arduino liegen.