Hallo,
ich bin dabei eine Schaltung zu entwerfen, die es mir möglich macht
einen Piezosensor auszulesen.
Die Piezosensoren werden als Vibrationssensoren verwendet. Damit soll
präzise der Einschlagzeitpunkt eines Balls auf einer Platte gemessen
werden, um dann der Einschlagsort (Trilateration) zu bestimmen.
Ein paar Überlegungen:
I. Das Signal muss gleichgerichtet werden, da der Piezo ein AC Signal
generiert.
II. Es müssen Signale von 30mV bis 30V gemessen werden können.
III. Die Zeitmessung übernimmt ein µC.
Die Idee bis jetzt:
Das Signal geleichrichten und dann mittels eines Komparators bei einem
Schwellwert eine Flanke erzeugen. Der µC wird bei der Flanke getriggert
und startet die Zeitmessung.
Für die Gleichrichtung habe ich die Schaltung im Anhang erstellt
(http://www.planetanalog.com/document.asp?doc_id=528005) . Ich habe nun
ein Problem mit der Simulation. Die Schaltung funktioniert wunderbar
wenn ich sie mit einem Puls anrege. Positiv wie negativ.
Wenn ich nun aber eine Sinusspannung anlege, dann wirkt die Schaltung
wie ein Halbwellengleichrichter und die negative Halbwelle wird nicht
mehr gleichgerichtet.
Es liegt am OPV (OPA320). Wenn ich ein anderes Modell verwende (z.b.
OPA364), dann funktioniert die Schaltung wieder. Das Problem ist, dass
der OPA364 zu langsam ist und ich ihn deshalb nicht verwenden kann. Ich
habe schon dutzende andere OPVs versucht! Aber ich finde keinen der
schnell genug ist und single supply betrieben werden kann.
Wieso funktioniert die Simulation mit einem Impuls und nicht mit einem
Sinus? Wie sicher kann ich sein, dass die Schaltung wirklich
funktioniert wenn ich sie aufbaue?
Hat jemand eine Idee wie ich sonst noch meine Flanke für den µC
generieren kann? Die Signalform des Sensors ist mir eigentlich egal
(Aufwand für Gleichrichtung gerechtfertigt?) . Ich will nur eine Flanke
sobald der Sensor eine Schwellwert erreicht.
Und kann ich die Ausgangsspannung des Piezos mit den antiparallelen
1N4148 auf die Vorwärtsspannung der Dioden klemmen?
Viele Grüße,
fe_lab
Wenn eh schon ein Mikrocontroller benutzt wird, nehme einen single ended
to differential Treiber wie den ADA4941-1 und danach einen
differentiellen ADC.
Den dann einfach die ganze Zeit auslesen, und bei einer Änderung des
Wertes Messung starten und aufzeichnen.
Dann kannst du auch direkt positive und negative Werte messen.
(Den Treiber kann man auch mit zwei OPVs bauen, wie im Datenblatt des
ADA4941-1 gezeigt)
fe_lab schrieb:> Die Piezosensoren werden als Vibrationssensoren verwendet. Damit soll> präzise der Einschlagzeitpunkt eines Balls auf einer Platte gemessen> werden, um dann der Einschlagsort (Trilateration) zu bestimmen.>> Ein paar Überlegungen:>> I. Das Signal muss gleichgerichtet werden, da der Piezo ein AC Signal> generiert.
Nein.
> II. Es müssen Signale von 30mV bis 30V gemessen werden können.
Nein.
> III. Die Zeitmessung übernimmt ein µC.
Ja.
[schnipp]
> Hat jemand eine Idee wie ich sonst noch meine Flanke für den µC> generieren kann? Die Signalform des Sensors ist mir eigentlich egal> (Aufwand für Gleichrichtung gerechtfertigt?) . Ich will nur eine Flanke> sobald der Sensor eine Schwellwert erreicht.
Noch nicht mal.
Wenn ein Ball auf die Platte auftrifft, dann regt er die Platte zu
Schwingungen an, die der Piezo wiederum aufnimmt und als elektrisches
Signal bereitstellt. Auf dem Oszi sieht das Signal wie eine abklingende
Schwingung aus. Resonanzfrequenz und Dämpfung werden durch die
mechanischen Eigenschaften der Platte bestimmt.
Wenn dich der Zeitpunkt des Ballaufschlags interessiert, dann mußt du
das Signal einfach nur verstärken und begrenzen und dann die erste
Flanke "einfangen". Über die Verstärkung stellst du dabei die Schwelle
ein, ab der du ein Anstoßen der Platte als auftreffenden Ball ansiehst.
Das wird zwar sicher variieren, aber bestimmt nicht zwischen 30mV und
30V. Insbesondere kann dir vollkommen egal sein, wieviel stärker das
Signal ist als das von dir definierte Minimum. Allenfalls wirst du den
Vorverstärker vor zu hohen Spannungen schützen müssen, z.B. mit zwei
antiparallel geschalteten Dioden.
Wenn du als Vorverstärker Single-Supply OPV nimmst, dann begrenzen die
die Spannung an ihren Ausgängen ohnehin gleich. Bleibt noch das Problem,
daß ein Ereignis dir viele Flanken auf jedem Kanal liefert. Im
einfachsten Fall definierst du eine geeignete Totzeit nach der ersten
Flanke (das ist ja die einzige die dich interessiert). Da die
Folgefrequenz der Ereignisse eher gering sein dürfte, kannst du ruhig
großzügig sein und z.B. eine Sekunde wählen. Bis dahin ist der Impuls
sicher abgeklungen.
Kai Klaas schrieb:> Wie ist denn die Quellimpedanz für deinen Piezo?
Der Piezo hat eine Impedanz von 400 Ohm.
Axel Schwenke schrieb:> Wenn du als Vorverstärker Single-Supply OPV nimmst, dann begrenzen die> die Spannung an ihren Ausgängen ohnehin gleich. Bleibt noch das Problem,> daß ein Ereignis dir viele Flanken auf jedem Kanal liefert. Im> einfachsten Fall definierst du eine geeignete Totzeit nach der ersten> Flanke (das ist ja die einzige die dich interessiert). Da die> Folgefrequenz der Ereignisse eher gering sein dürfte, kannst du ruhig> großzügig sein und z.B. eine Sekunde wählen. Bis dahin ist der Impuls> sicher abgeklungen.
Danke für die Tipps. Die Piezos können, wenn sie direkt getroffen
werden, eine Spannung von ca. 30V erreichen. Ich muss halt nur die OPV
davor schützen. Das kleinste Signal das wir gemessen haben, bei eine
langsamen Ball und größter Entfernung zwischen Einschlagort und Sensor,
sind etwa 30mV.
Gerald M. schrieb:> Wenn eh schon ein Mikrocontroller benutzt wird, nehme einen single> ended> to differential Treiber wie den ADA4941-1 und danach einen> differentiellen ADC.> Den dann einfach die ganze Zeit auslesen, und bei einer Änderung des> Wertes Messung starten und aufzeichnen.> Dann kannst du auch direkt positive und negative Werte messen.> (Den Treiber kann man auch mit zwei OPVs bauen, wie im Datenblatt des> ADA4941-1 gezeigt)
Ich hatte eigentlich gehofft, die Signalverabeitung analog zu erledigen.
Ein ADC würde ich nur dann nehmen, wenn nichts anderes klappt.
Mein Problem ist die große Bandbreite der Signale. Da ich für eine
ideale Zeitmessung für 30mV, 300mV und 3000mV "idealerweise" immer den
gleichen Output generieren sollte. Der zeitliche Fehler zwischen den
verschiedenen Inputwerten sollte nicht größer sein als 1µs.
Ich glaube langsam, dass das Analog nicht zu erreichen ist.
Ich entschuldige mich dafür, dass ich schon wieder in den Thread poste,
aber ich wollte nochmal ein bisschen Klarheit zu dem Sensorsignal
schaffen.
Ich habe ein Bild angehängt, dass das Messiganl von zwei Piezosensoren
zeigt. Dabei schwingt jeder Piezo mit seiner Resonanzfrequenz von
4,4kHz. Diese Schwingung wird dann noch von der Schwingung der Platte
auf der die Sensoren befestigt sind überlagert. Gemessen werden soll die
Zeitdifferenz zwischen den Signalen.
Wenn ich das Signal mit einem ADC aufnehme, dann könnte ich das
Softwaretechnisch lösen. Doch geht das auch (mit vertretbarem Aufwand)
Analog?
Kannst du mal das Signal bei den 4,4kHz Hochpass/Bandpassfiltern?
Dann sollte ein ganz vertretbarer Sinus raus kommen, der wahrscheinlich
deutlich besser auszuwerten ist.
>Der zeitliche Fehler zwischen den verschiedenen Inputwerten sollte nicht>größer sein als 1µs.
Aber die Periode der 4,4kHz Eigenschwingung beträgt ja schon über 200µs.
Wie soll das gehen? Schau doch mal selbst deinen Plot an. Wie willst du
bei der unteren Kurve den Einsatz auf 1µs genau bestimmen? 10...20µs,
besser geht es wohl nicht.
Wenn du ein resonantes System hast, dann hast du eine charakteristische
Einschwingzeit. Ich schätze mal, daß du für 1µs Auflösung hier Sensoren
mit erheblich höherer Resonanzfrequenz brauchst. Da spielt es keine
Rolle, ob du das analog oder digital machen willst.
fe_lab schrieb:> Mein Problem ist die große Bandbreite der Signale. Da ich für eine> ideale Zeitmessung für 30mV, 300mV und 3000mV "idealerweise" immer den> gleichen Output generieren sollte.
Ich dächte doch, ich hätte mich klar genug ausgedrückt. Wenn das
schwächste Signal, das du von deinem Piezo-Sensor erhältst, 30mV
Spitzenwert hat. Und wenn dein µC ab 3V einen H-Pegel erkennt, dann mußt
du das Signal um Faktor 100 verstärken. Fertig.
Wenn der Piezo 100mV liefern sollte, dann würde der Verstärker nominell
10V liefern. Aber mit 5V Betriebsspannung ist bei 5V Spitzenspannung
ohnehin Schluß (Begrenzung).
Eine Verzögerung wird jetzt noch dadurch entstehen, daß zwischen
Aufprall des Balls (Nulldurchgang des ersten Schwingungszugs) und dem
Erreichen der Schaltspannung eine gewisse Zeit vergeht. Diese Zeit wird
bestimmt von der Resonanzfrequenz und der Amplitude. Frequenz sollte für
alle Sensoren gleich sein, Amplitude logischerweise nicht. Jetzt müßtest
du halt mal messen, wie stark sich die Amplitude für den nächsten und
den fernsten Sensor unterscheidet und wieviel das ausmacht.
Allerdings wird es einen gewissen Kompensationseffekt geben. Der dem
Aufschlagort nächste Sensor kriegt die höchste Amplitude und löst "am
zeitigsten" aus. Die anderen Sensoren sehen das Signal mit weniger
Amplitude und lösen deswegen etwas verspätet aus. Im Endeffekt wird das
so aussehen, als wäre der Schall im Holz etwas langsamer unterwegs, weil
sich die normale Verzögerung (Laufzeit) und die zusätzliche Verzögerung
durch den Amplitudenunterschied addieren (und zwar immer in der gleichen
Richtung). Vermutlich wird dieser Fehler also durch den ohnehin
notwendigen Abgleich wieder rausgerechnet.
fe_lab schrieb:> Dabei schwingt jeder Piezo mit seiner Resonanzfrequenz von> 4,4kHz. Diese Schwingung wird dann noch von der Schwingung der Platte> auf der die Sensoren befestigt sind überlagert.
Für korrekte Funktion müssen die Piezos mit der Platte verklebt werden.
Du willst definitiv nicht, daß die noch mit ihrer Eigenfrequenz
schwingen.
Auch der o.g. Amplitudenunterschied von 30mV bis 30V löst sich dann in
Wohlgefallen auf. Denn einen Piezosensor, der auf der Unterseite der
Platte aufgeklebt ist, den kannst du nicht direkt mit dem Ball treffen.