-
Conditionnement de signal piezo
Posté le 16th décembre 2009 4 commentaires(an english translation for this article is available here)
AVERTISSEMENT : la diode Schottky Bat85 utilisée ici a un Vrrm trop bas pour les piezos ! Utilisez une diode qui peut supporter au moins 200V Vrrm ! Thanks Alan for spotting this.
Les transducteurs Piezo sont très courants, ne coutent rien, et peuvent se révéler d’excellent capteurs : son, choc, vibrations; tant que quelque chose « bouge » suffisamment ou fait du bruit, un capteur piézo peut être intéressant.
En revanche, le signal généré par ces petites bêtes n’est pas très amical pour l’amateur d’électronique digitale : en gros, c’est une sinusoïde qui s’aplatit avec le temps. Par ailleurs, le signal se promène souvent dans les quartiers mal fréquentés des tensions négatives, ce qui n’est pas très agréable pour la plupart des chips et µcontrolleurs utilisés en électronique digitale. Par exemple, la datasheet de l’ATMega 168 (et c’est pareil pour la plupart des µ 8 bits d’atmel) indique que la tension appliquée à n’importe quelle patte doit se trouver entre -0.5V et VCC+0.5V. Les transducteurs piézo peuvent allègrement dépasser ces limites.
Dans la capture ci-dessous, la tension lue aux bornes du piézo descend jusqu’à -52V et monte jusqu’à 9.2V. Ca fait plus de 60V crête à crête. Si on ne fait rien, le µ peut rapidement en faire une jaunisse… :
Dans la capture suivante, le signal descend d’abord à -20V, puis s’envole au dessus de 35V. Presque 60Vpp (crête à crête) ici aussi :
Ce ne sont que des exemples. Je n’ai pas torturé ou frappé au marteau sur le piezo. Tapotez le juste avec un ongle et vous vous retrouverez en général avec des valeurs crête à crête énormes. L’autre problème c’est que ces valeurs sont imprévisible (les piézos le sont, mais pas la manière dont on les brutalise) : ça peut commencer par monter, puis descendre, puis monter, qui sait…
Un petit coup de zoom montre l’effet « sinusoïde qui s’aplatit » que l’on observe en général après les plus gros pics de tension :

Agrandissement du signal piezo
Le conditionnement de signal est donc une étape obligatoire si l’on travaille en digital avec des piézos.
Récapitulons ce que nous devons faire au signal pour le dompter :
- rendre le signal positif : la plupart du temps, les piezos sont lus par des CAN (convertisseurs analogiques/numériques), on veut donc des tensions positives
- restreindre son amplitude entre 0 et VCC, pour éviter que la tension n’affiche des valeurs effrayantes pour des µcontrolleurs et des CAN.
- modifier la forme du signal pour éviter les bosses, et le rendre plus propre et prévisible
Tout cela n’est pas très compliqué à obtenir en fait. On va y aller en trois étapes, traitant respectivement les trois points ci-dessus :
- ajouter un redresseur simple alternance, pour garder la partie positive du signal
- ajout d’une diode zener pour éviter que les valeurs de signal soient supérieure à la tension d’avalanche de la zener
- ajouter un couple RC afin de filtrer les vaguelettes du signal
Redresseur simple alternance
En premier lieu, nous voulons rectifier le signal piezo, c’est à dire le rendre toujours positif. Pour cela, nous allons utiliser des diodes Schottky. Les diodes Schottky sont plus intéressantes car elles ont un seuil de tension directe (Vf) très bas (par comparaison avec des diodes standard), aux alentours de 0.3V.
On peut se demander : pourquoi ne pas utiliser un pont redresseur complet à base de Schottky et rendre le signal tout entier positif (comme si l’on prenait la valeur absolue du signal) au lieu d’ignorer les tensions négatives ?
Regardons les premières captures de signal brut à l’oscillo. Lorsque le signal change de signe, il le fait plutôt violemment, et son amplitude peut même être plus importante après le croisement du zéro qu’avant. Maintenant essayons d’appliquer la fonction mathématique ‘abs’ sur la courbe. On va se retrouver avec une courbe erratique : faible amplitude, plus haute, puis faible, etc… Même avec un filtrage poussé, ça sera difficile d’arriver à quelque chose de propre, et on aura toujours une coube sautillante, moins sauve que l’originale et complètement positive certes, ais difficilement exploitable.
L’idée consiste donc à sacrifier la partie négative de la courbe pour obtenir un résultat plus lisse (le bug Agilent est offert gracieusement).
En fait, on va faire un peu plus qu’un redresseur simple alternance. Si on ne met qu’une diode Schottky en série on se retrouvera avec une courbe ressemblant à elle de gauche. Nous pouvons voir qu’il reste une partie non négligeable du signal sous 0V, et dans notre circuit, ce n’est pas censé se produire.
Même dans l’éventualité ou l’ADC s’en accommoderait, il ne ferait pas vraiment d’étincelles en mesurant une tension négative.Il y a surement une bonne raison pour que le signal se comporte de la sorte, mais je ne la connais pas. N’hésitez pas à commenter si vous avez la réponse.
On doit donc se débarrasser de ce reliquat négatif et pour cela, nous allons utiliser une deuxième Schottky entre la masse et le signal. On ne garde que le signal positif, ca sera nettement plus simple comme ça.
Notre signal rectifié par les deux Schottky ressemble à la courbe de gauche (la courbe à éét décalée vers le bas pour des raisons esthétiques). On a encore quelques tensions négatives qui apparaissent, mais c’est presque négligeable maintenant. On peut se demander si ces -400mV ont un rapport avec le Vf de la diode.
Même si l’échelle est différente, les vaguelettes semblent avoir disparues. C’est peut être du à la capacitance de la Schottky (14pF), qui, même si elle est faible, peut impacter les vaguelettes haute fréquence. Je n’ai pas eu le temps de vérifier.
Maintenant nous devons limiter la tension maximale dans notre circuit, histoire de ne pas martyriser notre CAN.
Diode Zener
Comme vu plus haut, l’amplitude en tension est importante et on peut rapidement atteindre des valeurs inadaptées pour de l’électronique digitale. On doit donc dompter cette tension générée par le piézo. Les diodes Zener peuvent le faire : elles peuvent limiter la tension dans un circuit à une valeur fixe : quand la tension dans le circuit est supérieure à la tension d’avalanche de la Zener, elle devient passante, aidant ainsi à maintenant la tension sous ce seuil.
En général, on doit ajouter une résistance en série avec la Zener afin de limiter le courant traversant la diode. Mais avec un piezo, ce n’est pas nécessaire, dans la mesure ou les courants en jeu sont très faibles.
Après avoir ajouté notre Zener de 5.1v dans le circuit, la tension le sur le piézo ressemble à la capture de gauche.
Vous pouvez torturer le piezo autant que vous voulez, vous ne pourrez pas dépasser le tension d’avalanche de la Zener.
Si l’on en reste là, on aura pas mal de difficulté à savoir si le pizeo a été actionné une ou plusieurs fois. Nous allons devoir filtrer les pics afin d’obtenir une courbe plus docile.
Filtrage du signal
Ce signal peut être filtré par une cellule RC. Nous avons juste besoin de savoir combien de temps nous voulons voir la courbe durer afin d’ajuster les valeurs de R et de C. Pour mon application (batterie électronique), je voulais que le signal s’estompe en 10ms maximum. Comme l’on sait que le voltage descend à 10% de sa valeur initiale après
, on peut trouver le bon condensateur en fonction de la résistance ou vice-vesa.Imaginons que nous utilisons une résistance de 1MΩ, on devra utiliser un condensateur d’approximativement
.Au final, on se retrouve avec ce circuit plutôt simple :

Et avec cette ravissante courbe :

Enfin, un signal propre, agréable en bouche pour le convertisseur analogique/digital
J’espère que ce petit article vous aura aidé à dompter ces petite bêtes sauvages que sont les piézos. Attention toutefois, les piézos sont tous différents, et la taille compte. Alors expérimentez sur ces bases avant de graver en me croyant sur parole.
-
Piezo transducer signal conditioning
Posté le 6th juin 2009 57 commentairesWORD Of WARNING : the Bat85 schottky diode used here has a too low Vrrm for the piezos ! Use a diode that can stand at least 200V Vrrm ! Thanks Alan for spotting this.
Piezo transducer are very common, very cheap, and can be very useful as sensors : sound, knock, shock, whenever it « moves » or « makes noise », a piezo sensor can help.
However, the signal from those things is very unpleasant for the digital hacker : it’s roughly a sinewave that dampens over time. Also, the signal often goes negative which is pretty bad for mots digital chips out there. The ATmega168 (and most of the atmel 8 bit microcontrollers), for instance, indicates that voltage on any pin must be between -0.5V to VCC+0.5V. Piezo transducer easily go far beyond those bounds.
In the capture below, voltage from the piezo goes a down as -52V and goes up to 9.2V. This is more than 60V peak to peak. If you don’t do anything, your poor microcontroller might get sick rather quicly :
In this capture, the signal first drops to -20V, and then flies up to over 35V. Almost 60Vpp here too.
These are just examples, I didn’t tweak the piezo or smashed it with a hammer : just a hit with a fingernail, and you almost always end up having huge Vpp values. Also, the behaviour is not predictable (well piezos are, but the way we smack it isn’t), so it might go up first, then down, then up, who knows…
A close up shows the « dampening sine-like signal » that occurs after the first big spikes :

Piezo signal close up
So signal conditioning is a must with those pesky animals if you’re doing digital.
Let’s recap what has to be done :
- make that signal all positive : most of the time, piezos signals are read by ADC, so we want positive voltages
- restrict signal bounds to 0 – VCC so voltage doesn’t climb to scary values (scary at least for microcontrollers and ADCs),
- shape the signal so it doesn’t make bumps and stays clean and predictable
All these requirements are surprisingly easy to achieve. We will get to this goal in three steps, each spect taking care of one item above. Respectively :
- add a half-wave rectifier, in order to keep positive part of the waves
- add a zener diode, so signal doesn’t climb over zener’s breakdown voltage
- add a RC pair so ripples get filtered
Half bridge rectifier
First, we want to rectify the piezo signal, i.e. make it all positive. We’ll use Schottky diodes for that. Schottky are more interesting since they have a pretty low (compared to standard rectifier diodes) forward voltage drop (Vf), around 0.3V.
You might ask : why not use a complete Schottky-based bridge rectifier, and make the whole signal positive, instead of filtering negative voltages ?
Well, look back at the first scope shots of raw piezo signals. When signal changes sign, it makes it rather violently, and can even be higher on the new side than it was on the previous side. Now try to make the math abs() operation on the shape, mirroring the negative part of the shape on the other side of the time axis. You’ll end-up with an erratic plot : low, then high, then low. This means that, even with some filtering, you wont end-up with clean shape, but with a jittering thing that will look like the first signal, but all positive and less wild. This is not what we want, so we are sacrificing the negative part of the signal to get something nicer (the fine Agilent firmware bug is provided free of charge
.In fact, well do a bit more than a half wave rectifier. If we just put a Schottky diode in series with the positive we’ll end up with the kind of signal shape shown on the left. We can see there is a fair amount of signal that is still below 0v, and in our circuit, we’re not supposed to have negative voltages. Even if the ADC can stand it, it probably won’t do any interesting measures with a negative signal.
There is probably a good reason for this to happen, but I don’t have a clue right now. If you do, please leave a comment.
So we have to get rid of this negative leftover, by adding a second Schottky diode, between ground and signal lines. We’ll just keep the positive signal, but it will be much easier to filter this way.
Our piezo signal rectified by two Schottky looks like this (the wavefom has been moved to the bottom of the screen for cosmetic reasons). We still have negative voltable building up, but it’s pretty negligible now. I wonder if that -400mV is linked to the diode’s forward voltage.
Althought the scale isn’t the same, the small ripples seem to have disappeared. This might be due to the Schottky diode capacitance (14pF), which, while low, could impact the small ripples with higher frequency. I didn’t have time to check that though.
Now, we need to cap the maximum voltage in circuit, so we don’t fry our ADC.
Zener diodeAs seen above, voltage range is pretty high and can climb quickly to unappropriate values for digital purposes. So wee need to tame the voltage created by the piezo. Zeners have this ability, and can limit voltage to a fixed value. Whenever voltage is higher than the Zener’s rating, the Zeners lets current flow thru and as a side effect, help maintain voltage to a fixed value.
We usually have to add a resistor between the Zener and ground, so voltage builds up around it and current is limited thru the Zener. But this is not necessary with piezo, since involved currents are very very low.
After we add a 5.1v Zener in the circuit, the voltage read from a piezo looks like this.
You can smash the piezo as hard as you want, you’ll never exceed the Zener’s rated voltage.
If we just use this shape as is, we’ll have a hard time trying to guess if the piezo has been smashed or not. We have to filter those spikes to get a smoother shape.
Filtering the signal
This signal can be filtered by using a RC cell. Whe just need to know how long we want the shape to last. For my application (drum trigger), I want the signal to fade out in 10ms maximum. Since we know that the voltage drops to 10% of the initial voltage after
, we can find the right resistor knowing the capacitor value, and vice-versa.Let’s say we use a 1MΩ resistor, we’ll have to use a
capacitor.So we end up with this simple little circuit :

And get this nice little shape :

Finaly, a clean, ADC friendly signal
Hope this can help you using those pesky beasts. Be warned that piezo are all differents, and that size matters… So experiment with that before engraving the above stuff in copper.







