Arduino calcul de l’enveloppe d’un signal
Calculez rapidement la constante de temps RC, la capacité recommandée, l’ondulation attendue et l’impact sur la lecture ADC d’un Arduino pour un détecteur d’enveloppe analogique. L’outil ci-dessous convient aux signaux audio, capteurs vibratoires, détection AM et mesure de niveau.
Calculateur interactif
Résultats
Guide expert: comment réaliser le calcul de l’enveloppe d’un signal avec Arduino
Le calcul de l’enveloppe d’un signal avec Arduino est une étape clé dès que l’on cherche à mesurer une amplitude variable plutôt que la forme instantanée d’une onde. En pratique, on retrouve cette problématique dans l’audio, la détection AM, la surveillance de vibrations, l’analyse de capteurs piézoélectriques, les systèmes de détection de choc et de nombreuses interfaces analogiques simplifiées. L’idée générale consiste à transformer un signal alternatif ou oscillant en une grandeur plus lente, plus stable et plus facile à numériser par l’ADC de la carte. Le détecteur d’enveloppe analogique le plus classique utilise une diode, une résistance et un condensateur. Le microcontrôleur lit ensuite la tension lissée.
Dans une approche Arduino, il est important de distinguer deux choses: la physique analogique du détecteur et les contraintes numériques du convertisseur analogique-numérique. Le calculateur ci-dessus a été conçu pour relier ces deux mondes. Il estime la tension disponible après la diode, la constante de temps nécessaire pour atteindre l’ondulation voulue, la capacité à utiliser avec votre résistance, ainsi que la conversion en pas ADC. Vous obtenez donc une première base de dimensionnement avant même de souder votre prototype.
Qu’est-ce que l’enveloppe d’un signal?
L’enveloppe représente la variation lente de l’amplitude d’un signal rapide. Prenons un sinus à 1 kHz dont l’amplitude est modulée par une variation plus lente. Si vous regardez l’onde brute à l’oscilloscope, vous verrez des oscillations rapides. Si vous reliez toutes les crêtes supérieures ou si vous utilisez un circuit de redressement suivi d’un filtrage RC, vous obtenez une courbe lente: c’est l’enveloppe. Dans beaucoup d’applications embarquées, l’enveloppe est plus utile que la forme instantanée parce qu’elle correspond souvent à l’information recherchée: niveau sonore, intensité vibratoire, présence d’une modulation ou énergie d’un événement transitoire.
Avec un Arduino classique, notamment un Uno à 10 bits, il est souvent plus simple de lire une enveloppe déjà lissée que d’échantillonner un signal haute fréquence brut puis de le traiter entièrement en logiciel. Cela réduit la charge CPU, améliore la lisibilité des mesures et diminue les contraintes de fréquence d’échantillonnage. En revanche, cette stratégie impose un calcul correct du détecteur d’enveloppe, en particulier le choix de la résistance, du condensateur et du type de diode.
Principe du détecteur d’enveloppe RC
Le montage de base est très connu. La diode charge rapidement le condensateur lors des crêtes du signal rectifié. Entre deux crêtes, le condensateur se décharge dans la résistance. Si la constante de temps RC est bien choisie, la tension aux bornes du condensateur suit la tendance générale du signal tout en éliminant la majorité des oscillations rapides. En première approximation, l’ondulation relative peut être estimée par une relation de type:
Ondulation relative ≈ 1 / (frectifiée × R × C)
Cette relation simplifiée est très utile pour un pré-dimensionnement. Ici, frectifiée vaut la fréquence du signal en simple alternance, et environ deux fois cette fréquence en double alternance. Le calculateur utilise cette logique pour déterminer une constante de temps cible à partir d’une ondulation admissible. Ensuite, si vous fournissez une valeur de résistance, il en déduit la capacité recommandée.
Pourquoi la chute de diode compte beaucoup
Dans de nombreux montages amateurs, la chute de tension de la diode est sous-estimée. Pourtant, si votre signal n’atteint que 300 mV de crête et que vous utilisez une diode silicium classique avec environ 600 à 700 mV de chute, presque rien ne passera. Une diode Schottky, souvent autour de 150 à 300 mV selon le courant et la température, est bien plus adaptée aux faibles amplitudes. Autre solution: utiliser un redresseur actif à amplificateur opérationnel, qui compense la chute de diode et améliore la linéarité sur les petits signaux. Avec un Arduino, cette question est critique parce que l’ADC ne peut numériser que ce qu’il reçoit réellement après l’étage analogique.
Le rôle de l’ADC Arduino dans la qualité de la mesure
La seconde partie du problème est numérique. Un ADC à 10 bits sur 5 V offre 1024 niveaux, soit un pas de quantification d’environ 4,89 mV. Si l’enveloppe utile ne varie que de quelques millivolts, le résultat sera bruité ou grossier. À l’inverse, une carte 12 bits sur 3,3 V améliore nettement la finesse de mesure. Il faut aussi veiller à ne pas saturer l’entrée analogique. Si l’enveloppe maximale dépasse la tension de référence, la mesure est tronquée. Le calculateur ci-dessus affiche donc également le nombre de pas ADC pour la crête et pour le creux estimé.
| Carte / famille Arduino | Résolution ADC native | Tension logique courante | Cadence ADC typique | Usage pertinent pour enveloppe |
|---|---|---|---|---|
| Arduino Uno / Nano ATmega328P | 10 bits | 5 V | Environ 9,6 kS/s avec réglages ADC classiques | Très adapté si l’enveloppe est déjà lissée et lente |
| Arduino Mega 2560 | 10 bits | 5 V | Ordre de grandeur similaire à l’ATmega328P | Bon pour multiplexage de plusieurs voies d’enveloppe |
| SAMD21, par exemple Arduino Zero | 12 bits | 3,3 V | Jusqu’à quelques centaines de kS/s selon configuration | Meilleure finesse pour signaux faibles et traitement hybride |
| Arduino Due | 12 bits | 3,3 V | Jusqu’à 1 MS/s en conditions favorables | Utile si vous hésitez entre enveloppe analogique et acquisition plus directe |
Ces chiffres rappellent un point essentiel: plus l’enveloppe est préparée analogiquement, moins l’Arduino a besoin d’être rapide. Sur un Uno, on obtient de très bons résultats dès que la variation utile de l’enveloppe se situe dans une bande lente, par exemple quelques hertz à quelques dizaines de hertz. Pour un suivi d’attaque très rapide ou des signaux très dynamiques, des cartes 12 bits ou des ADC externes deviennent plus intéressants.
Comment choisir RC en pratique
Le choix de RC dépend de la différence entre deux vitesses: la vitesse du signal porteur et la vitesse des variations d’amplitude que vous voulez conserver. Si votre signal est à 1 kHz mais que son amplitude ne change réellement qu’à l’échelle de 10 Hz ou 20 Hz, vous pouvez appliquer un lissage assez fort. En revanche, si vous essayez de détecter des transitoires brefs, il faut réduire la constante de temps pour ne pas écraser les attaques.
- Déterminez la fréquence dominante du signal à mesurer.
- Choisissez le type de rectification: simple alternance ou double alternance.
- Fixez une ondulation maximale acceptable, par exemple 3 %, 5 % ou 10 %.
- Calculez la constante de temps cible à partir de cette ondulation.
- Choisissez une résistance réaliste, souvent entre 10 kΩ et 470 kΩ selon le bruit et la charge.
- Déduisez la capacité nécessaire, puis sélectionnez la valeur normalisée la plus proche.
- Vérifiez à l’oscilloscope la réponse aux crêtes et aux décroissances réelles.
Une résistance trop faible décharge rapidement le condensateur, augmente l’ondulation et peut charger inutilement l’étage précédent. Une résistance trop élevée rend le montage plus sensible aux fuites, au bruit et à l’impédance d’entrée de l’ADC si vous ne tamponnez pas le signal. De même, un condensateur trop petit laisse passer une forte ondulation, tandis qu’un condensateur trop grand peut donner une mesure visuellement propre mais trop lente pour votre application.
| Fréquence rectifiée | Résistance | Capacité | Constante RC | Ondulation théorique approximative |
|---|---|---|---|---|
| 1 kHz | 100 kΩ | 1 µF | 0,1 s | Environ 1 % |
| 1 kHz | 100 kΩ | 220 nF | 22 ms | Environ 4,5 % |
| 2 kHz | 100 kΩ | 100 nF | 10 ms | Environ 5 % |
| 2 kHz | 47 kΩ | 100 nF | 4,7 ms | Environ 10,6 % |
Ces valeurs montrent l’effet immédiat de RC sur l’ondulation. Elles sont très utiles pour estimer un premier prototype, mais gardez en tête que le comportement réel dépend aussi de la forme du signal, de la diode, de la source et de la charge suivante.
Traitement logiciel complémentaire sur Arduino
Une fois l’enveloppe convertie en tension analogique, l’Arduino peut encore l’améliorer. Les techniques les plus courantes sont la moyenne glissante, le filtrage exponentiel, la détection de seuil avec hystérésis et l’étalonnage en unités physiques. Si vous lisez par exemple une enveloppe audio, vous pouvez transformer les échantillons ADC en indicateur de niveau, déclencher une alarme au-dessus d’un seuil ou calculer une pseudo-valeur RMS approximative. La combinaison d’un pré-filtrage analogique et d’un léger filtrage logiciel est souvent la méthode la plus robuste dans un environnement réel.
Erreurs fréquentes à éviter
- Utiliser une diode inadaptée pour des signaux trop faibles.
- Relier directement un détecteur d’enveloppe à un ADC sans tenir compte de l’impédance de source.
- Choisir un condensateur énorme, obtenir une belle courbe, mais perdre totalement les transitoires utiles.
- Oublier la tension de référence de l’ADC et saturer la lecture.
- Mesurer un signal centré autour de zéro sans protection ou adaptation préalable.
- Confondre enveloppe, valeur moyenne et valeur RMS, qui sont trois notions différentes.
Quand préférer un calcul d’enveloppe purement logiciel
Si votre carte dispose d’une cadence d’échantillonnage suffisante et que vous souhaitez une grande flexibilité, vous pouvez acquérir le signal brut puis calculer l’enveloppe en logiciel via valeur absolue, filtrage passe-bas, transformée de Hilbert approchée ou extraction de pics. Cette approche donne plus de contrôle, mais elle est plus coûteuse en ressources et plus exigeante sur le matériel. Sur des cartes Arduino d’entrée de gamme, la solution analogique RC reste extrêmement pertinente pour des applications industrielles simples, des interfaces pédagogiques et des prototypes à faible coût.
Validation expérimentale recommandée
Le meilleur calcul ne remplace jamais une vérification instrumentale. Mesurez le signal d’entrée, la tension après la diode et la tension sur le condensateur. Vérifiez la montée de l’enveloppe, sa décroissance et l’ondulation résiduelle. Comparez ensuite les valeurs observées avec les résultats du calculateur. Si l’écart est important, examinez la source du signal, la résistance interne du générateur, les fuites du condensateur, les tolérances des composants et l’effet de l’entrée ADC. Un simple buffer op-amp entre l’enveloppe et l’Arduino peut parfois transformer un montage moyen en montage excellent.
Sources de référence fiables pour approfondir
Pour aller plus loin sur la théorie des signaux, l’échantillonnage et la qualité de mesure, consultez des ressources académiques et institutionnelles. Voici trois points de départ utiles:
- MIT OpenCourseWare – Signals and Systems
- NIST – Time and Frequency Division
- UC Berkeley EECS – Signal Processing course materials
Conclusion
Le calcul de l’enveloppe d’un signal avec Arduino n’est pas seulement une question de formule. C’est un exercice de compromis entre dynamique, ondulation, vitesse de réponse, chute de diode, impédance et résolution ADC. Une bonne conception commence par un objectif clair: voulez-vous détecter des pics très rapides, mesurer un niveau moyen stable, ou suivre une modulation lente avec un minimum de bruit? Une fois cet objectif posé, le couple résistance-condensateur peut être dimensionné rationnellement. Le calculateur présenté ici vous donne une estimation exploitable immédiatement, puis la courbe générée vous aide à visualiser le comportement du détecteur. C’est une excellente base pour concevoir un montage fiable, optimiser la lecture Arduino et gagner du temps en prototypage.