Conversion PWM en analogique [Résolu]

Bonjour à tous !

Je débute en électronique, vous vous en apercevrez vite :smiley:

Je souhaite convertir en analogique une sortie pwm. Apres moult recherches sur le net et le forum Arduino, il est apparu que je devais monter un circuit RC entre la sortie PWM et l'entrée analogique. Ce qui fonctionne parfaitement bien. Ma question est la suivante : pourquoi cela fonctionne ? J'ai trouvé les valeurs à employer de façon empirique ...

PWM -------- R1 ( 3.8 K ) ------------ A0
|
C1 ( 33 µF )
|
Gnd

Quelle(s) formule(s) dois-je employer pour trouver ces valeurs ?

Je vous remercie de l'aide que vous voudrez bien m'apporter et vous souhaite une tres bonne année ( c'est de saison )

ludobabs:
Bonjour à tous !

Je débute en électronique, vous vous en apercevrez vite :smiley:

Je souhaite convertir en analogique une sortie pwm. Apres moult recherches sur le net et le forum Arduino, il est apparu que je devais monter un circuit RC entre la sortie PWM et l'entrée analogique. Ce qui fonctionne parfaitement bien. Ma question est la suivante : pourquoi cela fonctionne ? J'ai trouvé les valeurs à employer de façon empirique ...

PWM -------- R1 ( 3.8 K ) ------------ A0
|
C1 ( 33 µF )
|
Gnd

Je vous remercie de l'aide que vous voudrez bien m'apporter et vous souhaite une tres bonne année ( c'est de saison )

bonjour
c'est un integrateur
pour faire simple le condensateur est chargé pendant l'etat haut du pwm et dechargé au travers de la resistance
une tension moyenne apparait donc selon le taux de pwm

Bonjour,

c'est tres gentil de m'aider. Quelle est la formule à appliquer pour trouver les bonnes valeurs. j'ai fait des dizaines de tests avant de trouver celles que je vous indique ... et pour etre franc je n'aime pas trop la façon "empirique" de mon montage :drooling_face:

Fréquence du pwm : 490 hz la seule chose dont je sois "sûr" lol

Le montage intégrateur : Circuit RC — Wikipédia

Bonjour

Quelle est la formule à appliquer pour trouver les bonnes valeurs

'La' formule n'existe pas, le choix des composants R et C dépend de deux contraintes (deux inégalités à respecter):
-1) le produit RC doit etre beaucoup plus grand que la période du PWM (voir le lien sur le le 'montage intégrateur' ou rechercher 'filtre passe-bas')
-2) R doit etre inférieur à 10 kOhm (doc technique du Mega328, page 259) pour que le convertisseur Analogique Numérique donne un résultat acceptable.

Le couple 3,8 k et 33 µF remplit ces deux conditions avec un produit R.C 60 fois plus grand que la période du PWM

Bonjour,

Tu travaille en PWM "arduino" ou en PWM bas niveau ?
Si tu travaille en PWM bas niveau utilise le mode "Fast PWM" et un circuit 10K + 10nF, c'est ce que j'utilise et ça marche plutôt bien :grin:

Bonjour,

Je fais mes tests avec le PWM Arduino et l'instruction analogWrite(pwmPin, 0 - 255). Je verrai le Fast PWM plus tard :fearful:

Voiçi ce que j'ai compris :

freq. PWM Arduino = 490 hZ donc Période = 1/f => P = 2.10-3 sec.

Le produit RC doit être beaucoup plus grand que la période du PWM
R doit être inférieure à 10k

La nouvelle question que je me pose est : Quelles sont les valeurs les plus adaptées à la situation ? Existe-t-il un rapport à respecter entre R et C ?

Je vous remercie

Derrière ce circuit RC il va y avoir une utilisation. Quelle est la valeur de résistance qui va venir en parallèle sur le condensateur ?

Cela conditionnera la valeur de la résistance série du RC. A ce sujet les 10k max c'est si tu veux pouvoir faire une mesure avec une entrée analogique de l'atmega. Si tu n'en a pas l'intention tu peux monter à des valeurs supérieures, mais il va vite y avoir une limite.

Cette résistance série du RC que je vais appeler "Rs" va former un pont diviseur avec la résistance de charge (Rc).
Donc il faut que Rs soit faible devant Rc.
Oui mais "faible" cela veut dire quoi ?
C'est là toute la difficulté puisque cela dépend de l'environnement que tu va mettre autour.
En général on essaye de prendre Rs <= Rc/10.

Autre point :T= RsC est beaucoup plus grand que la période de la PWM, cela a pour conséquence qu'il faudra attendre plusieurs périodes de PWM pour que le RC se stabilise, autant le savoir.

Sinon il y a la solution convertisseur numérique/analogique à raz les pâquerettes avec un registre à décalage et un réseau R/2R qui donne une résolution de 8 bits par registre à décalage et un résultat plus rapide mais qui ne permet pas excursionner jusqu'à Vcc et 16 résistances à cabler.

http://www.ikalogic.com/8-bit-digital-to-analog-converter-dac/
A noter l'amplificateur opérationnel LM358 monté en suiveur pour bénéficier d'une résistance équivalente très faible (nulle en théorie, quelques ohms en pratique) qui peut aussi s'appliquer au réseau RC.

Edit :
A propos de la résistance de la charge j'ai oublié de préciser que si la résistance série du RC n'est pas négligeable devant Rcharge, en plus du pont diviseur qui se forme, cela diminue aussi la constante de temps puisque le calcul montre que les résistances Rs et Rcharge interviennent "comme si" elles étaient en parallèle.
Exemple Rs = 10kohms, si Rcharge = 10 kohms la tension disponible en sortie du filtre sera divisée par 2 et la constante de temps sera elle aussi divisée par 2.
Tous les exemples proposés sur le net sous-entendent que la charge est infinie, c'est recevable si la charge est une entrée de porte CMOS mais ce n'est plus le cas si la charge est un transistor bipolaire câblé en émetteur commun avec l'émetteur directement à la masse (résistance équivalente environ 1kohms).
D'où l'ampli op monté en suiveur de tension que l'on voit fréquement.

Regarde ce lien :
http://www.jlectronique.org/PWM.htm
C'est plutôt bien expliqué et en français.

dans un montage de ce type
Code:
PWM -------- R1 ( 3.8 K ) ------------ A0
|
C1 ( 33 µF )
|
Gnd

les couples (2,7k + 47µF) et (5,7k + 22µF) produiront le même signal en sortie = envoyé sur A0, entrée analogique d'un microcontrolleur Arduino.

la forme du signal ne dépend que du produit R.C, pas du rapport R/C tant que le courant allant dans A0 est infime (négligeable)

Merci à tous de vos éclaircissements ...