Si l’on mesure une tension, il faut que celle ci soit inférieure aux tensions admissibles par le composant qui les mesure. Généralement il s’agit de la tension d’alimentation du composant : un composant alimenté en 5V mesurera des tensions jusqu’à 5V par exemple. Si l’on dépasse la valeur limite, on risque de détériorer le composant qui mesure la tension. Mais que faire dans ce cas si l’on souhaite mesurer une tension plus élevée? Par exemple, si avec votre Arduino, vous souhaitez mesurer la tension d’une batterie de voiture? Il est possible dans ce contexte d’utiliser un pont diviseur de tension. Nous verrons dans cet article le principe, comment calculer les bonnes valeurs pour votre pont diviseur et également comment le réaliser et s’en servir.

Principe général du pont diviseur de tension

Le principe général est simple, et repose sur la loi d’Ohm : U=R*I. La tension aux bornes d’un dipôle  est égale au produit de la résistance de ce dipôle et du courant le traversant. Si nous plaçons deux résistances en série, le courant qui circule sera le même pour chaque résistance. On le calcule avec U=R*I, sachant ici que R=R1+R2 ou R1 et R2 sont les valeurs de nos résistances. Donc I=U/(R1+R2).

Sachant cela, nous pouvons calculer la tension aux bornes de R1 et R2 : U1=R1*I et U2=R2*I, tout en sachant que U1+U2=U.

Exemple pratique

Nous avons posé les bases théoriques de notre pont diviseur de tension, et voyons maintenant un petit exemple pratique. Imaginons que nous souhaitons mesurer une tension maximale de 5V avec un microcontrôleur 3.3V. Si nous mettons deux résistances de 2200Ohms en série entre le + et le – de cette source de courant, la tension maximale autour des résistances en série restera de 5V. Le courant qui circule quand à lui sera de I=U/(R1+R2), soit I=5/(2200+2200), soit 5/4400=0.0011A, ou 1.1mA. Nous sommes au maximum a 5V, donc cela fera environ 5 milliwatts (0.0011*5, on arrondit à 5mW).

Plus la tension sera basse, plus le courant le sera, puisque la résistance reste constante. De ce fait, nous avons ici une valeur limite (maximale) de 1.1mA.

En utilisant la loi de Ohm, on pourra calculer  la tension aux bornes de R1 est égale à U=R1*I=2200*0.0011=2.42. Si nous prenons toutefois la valeur exacte, cela donne 2200*5/4400=5/2=2.5V.

Vu que R2 à la même résistance, on obtiendra la même chose. Entre les deux résistances et le + de la source de courant, nous avons de ce fait une tension égale à  la moitié de la tension d’alimentation. De ce fait, si la tension d’alimentation montait à 6V, on mesurerait ici 3V. Par ce biais, nous pouvons mesurer une tension plus élevée que ce que l’on souhaite.  On pourra également faire varier R1 et R2 : si R1 vaut la moitié de R2, alors entre le + et la jonction de nos résistances, nous aurons 1/3 de la tension d’entrée. On pourra ainsi ajuster le rapport en fonction de la tension à mesurer et des capacités du microcontrôleur.

Calcul du rapport du pont diviseur.

Reprenons toujours notre exemple, avec une tension U aux bornes de deux résistances en série, R1 et R2. On aura le montage suivant :  le + de la source de courant vers R1, R1 vers R2, et R2 vers la masse.

Le rapport du pont diviseur entre R1 et R2 sera égal à R1/(R1+R2). Ainsi si je souhaite avoir un pont diviseur de 1/3, je vais devoir faire en sorte que R2 vaille le double de R1. Cela nous donne ainsi R1(R1+2*R1)=1/3. Cela est indépendant de la tension aux bornes, ce rapport est constant.

Choix des valeurs des résistances

Nous avons déterminé comment calculer le rapport du pont diviseur de tension. Ainsi, si je souhaite un rapport de 1/3 il me faudra une résistance de X ohms, et une autre de 2*X ohms. Je peux donc prendre une résistance de 100 Ohms, et une autre de 200. Mais je peux aussi prendre une résistance de 1000 et une autre de 2000, ou un couple de 100K et 200K. Comment choisir entre ces valeurs? Mathématiquement, elles donnent le même résultat sur la mesure de la tension!

puissance dissipée

Tout d’abord, nous devons nous assurer que notre résistance peut supporter le courant qui circulera. Pour cela, il faut utiliser la loi d’ohm, encore une fois. Sachant U, R1 et R2, je peux calculer I, à savoir I=U/(R1+R2). Il faudra s’assurer que la puissance électrique qui traverse les résistances est inférieure à leur spécification. Les résistances courantes sont des un quart de watt, voire un sixième de watt. Pour calculer la puissance, là encore la formule est simple :

P=U*I. Nous avons calculé I, et nous connaissons la valeur maximale de U, donc P=U*U/(R1+R2).  Il faut maintenant remplacer U par la tension aux bornes de R1 et R2, à savoir U*N, ou N est le rapport de notre pont diviseur (R1/(R1+R2)). Pour la seconde résistance, R2, N sera égal à R2/(R1+R2). On obtient ainsi une puissance en watts, qui ne doit pas dépasser les spécifications (0.25W par exemple).

Cela nous permet de déterminer la valeur minimale des résistances. Toutefois, nous sommes loin d’un système optimisé, puisque avec cette valeur, nous avons la plus grande consommation électrique possible sans détériorer les résistances.

Energie gaspillée

Comment dans ce cas minimiser la perte d’énergie? La solution est simple, et nous est apportée une fois de plus par la loi d’ohm. Sachant que U=R*I, et que P=U*I, on se rend compte que plus R est élevé, plus I est faible. Et plus I est faible, plus P est faible pour une tension donnée. De ce fait, nous allons chercher à maximiser la résistance totale de notre pont diviseur. Ainsi, si nous reprenons notre exemple en 5V. Avec deux résistances de 1.5 ohms en série, nous obtenons un courant de I=5/(1.5+1.5)=1.6A. La puissance serait alors de 1.6*5/2=4.16W par résistance. Nous sommes bien entendu largement au dessus des capacités d’une résistance standard, mais cela montre qu’ici nous gaspillerions plus de 8 watts pour ce pont diviseur, sachant que par comparaison un Arduino consomme environ 0.25W, et un raspberry pi entre 0.5 et 1.5W.

Dans un exemple un peu plus réaliste, avec deux résistances de 47ohms, on obtient un courant de 5/(47+47)=0.05A environ, et donc une puissance d’environ 0.26W, avec 0.13W par résistance. Nous sommes cette fois ci dans les normes pour une résistance de 1/4W, puisque chacune n’encaisse en fait que 0.13W, mais on se rend compte qu’on consomme autant que tout le reste du Arduino, simplement pour mesurer une tension!

Nous allons donc logiquement chercher à augmenter au maximum la résistance, afin de réduire d’autant le courant utilisé.

Si l’on passe à deux résistances de 2.2KOhms, on obtient un courant de 5/(2200+2200)=0.0011A, et donc une puissance consommée de 0.0056w, soit environ 6 milliwatts. Nous sommes ici dans un contexte bien plus efficace.

En théorie, nous pourrons aller encore plus loin, par exemple avec deux résistances de 1 méga-ohm, qui nous donnera un courant de 2.5 micro ampères , et une puissance de 12.5 micro watts.

Seulement, il y aura une limite, et il n’est en pratique pas possible de prendre des résistances démesurément grandes à cause de ce que l’on appelle l’impédance d’entrée du composant qui lit la tension.

Impédance/résistance d’entrée et valeur maximale des résistances

Les composants que nous utilisons pour lire des valeurs analogiques sont sensibles à la résistance du circuit dont la tension doit être lue. On appelle cette caractéristique la résistance ou l’impédance d’entrée, selon que l’on soit en courant continu ou alternatif. Je ne prétendrai pas fournir une explication détaillée sur ce sujet que je ne maîtrise pas, mais selon ce que j’ai pu trouver, il est important que la résistance d’entrée reste petite par rapport à la résistance du circuit qui lit la valeur.

Pour un Arduino, la résistance du circuit ADC est de 100 Méga ohms,  et donc nous essaierons d’avoir une résistance d’entrée inférieure à 1 Méga ohm, négligeable devant celle du ADC. Pour plus d’informations, je vous invite à consulter cette discussion qui m’a aiguillée vers ces valeurs pour un Arduino.

Pour un MCP3008, que nous utiliserons avec le Raspberry pi, la résistance d’entrée maximale tolérée variera entre 1 et 10 Kilo ohms, comme on peut le voir sur ce graphique tiré de la documentation  :

MCP3008 input resistance

MCP3008 résistance d’entée

Il faudrait pouvoir faire varier la fréquence de la puce à la baisse pour supporter une résistance plus élevée. Pour plus d’informations sur ce sujet, je vous invite à consulter cette discussion en anglais sur l’utilisation d’un MCP3008 pour lire une tension de batterie.

 

En résumé :

  1. Assurez vous d’être en dessous de 1 Méga ohm pour un Arduino;
  2. Essayez de rester en dessous de 10 Kilo ohms pour un MCP3008.

Réalisation

La réalisation est simple, puisqu’il suffit de connecter en série les deux résistances, entre le + et le – de la source de courant dont on veut mesurer la tension. Entre R1 et R2, on fera partir un câble qui se rendra vers l’entrée analogique avec laquelle on veut lire la tension.  Pour un Arduino, il s’agira de l’une des entrées analogiques (A0, A1, etc.), et pour un Raspberry pi, il faudra un convertisseur analogique-numérique tel que le MCP3008. Dans ce cas, le câble en question se rendra vers l’une des entrées du MCP3008.

En pratique voici un schéma d’exemple :

pont diviseur de tension 9V

pont diviseur de tension 9V

 

La programmation est simple, puisque sur un arduino, il suffira de faire un AnalogRead() pour récupérer la valeur, et on calculera la tension lue par la formule suivante : Ul=val1/1024*Vcc ou Ul est la tension lue, val1 la valeur retournée par AnalogRead(), et Vcc la tension d’alimentation du circuit. Ul n’est toutefois pas la tension aux bornes du mobile, puisqu’il faudra encore multiplier l’ensemble par l’inverse du rapport du pont diviseur : si c’était 1/2 on multiplie par 2, par exemple.

Avec un Raspberry pi, on reprend le même principe, en suivant les exemples du tutoriel sur le MCP3008. Je vous propose d’en voir plus sur le sujet avec un cas concret dans le tutoriel sur la mesure de la tension de la batterie alimentant un Raspberry pi mobile.

 

 

Réseaux sociaux