Dispositif de réponse potentiométrique

Description:

Le principe utilisé est assez simple. Afin de numériser la position du potentiomètre, celui-ci est inséré dans un dipôle RC (R1+R2 et C sur la figure 1). Le temps de charge de la capacité étant une constante (τ=RC), la relation linéaire entre la valeur de la résistance et le temps que met la capacité pour atteindre une tension donnée permet au microcontrôleur d'effectuer un "comptage" temporel. Il est clair que dans notre application, c'est la façon dont varie ce temps de charge en fonction de la position du potentiomètre qui nous intéresse et pas la mesure réelle de ce temps ou la valeur ohmique du potentiomètre.

Figure 1

On peut d'ailleurs vérifier que la relation entre la position du potentiomètre et le temps de charge mesuré est bien linéaire:

Le temps mis par le dipôle pour atteindre 63% de sa charge complète est donné par l'équation:

(1)    τ=RC

Le temps mis par le même dipôle pour atteindre une fraction déterminée de sa charge complète (le pont diviseur R3R4 de la Fig.1 nous permet de la fixer) est lui aussi constant. On peut le traduire par "un certain nombre de fois τ":

t=kτ

Dans notre schéma, nous avons placé le potentiomètre en série avec une résistance afin de rester dans des limites de courant raisonnables. L'équation (1) devient donc:

(2)    t=(R1+R2)*C*k

Lorsque R2=0

(3)    t0=R1*C*k

C*k étant constant,

t0/R1 = t/(R1+R2)

Il y a bien une relation linéaire

t=t0*(1+R2/R1)

qui lie R2 à t, et qui va nous permettre de "situer" la position angulaire du potentiomètre. La figure 2 montre l'évolution de la tension aux bornes de C pour 6 positions équidistantes du potentiomètre (Rp).

Figure 2

 

Le switch S permet de décharger complètement le condensateur. Une tension de référence fixée par le pont diviseur R3-R4 étant appliquée sur l'entrée "+" du comparateur, la tension proche de 0 à son entrée "-" sature la sortie du comparateur. Lorsque S est ouvert, la capacité C se charge au travers de R1+R2. La sortie du comparateur basculera à 0 dès que la tension aux bornes de C aura atteint la valeur de la tension de référence.

 

Le schémas:

 

Pour réaliser cette application, nous avons opté pour le 16f628 de Microchip. Sa tension de référence programmable et l'un de ses deux comparateurs intégrés nous feront économiser quelques composants externes et son port série intégré, quelques lignes de code.

Pour décharger préalablement le condensateur, la broche 18 (RA1) du microcontrôleur est utilisée en sortie digitale et mise à 0. Au démarrage d'une conversion, cette même broche est configurée comme entrée "-" du comparateur 2. L'entrée "+" de ce comparateur est connectée (en interne) à la tension de référence programmable (via les variables Vref et Vrcon), l'état de la sortie du comparateur restera à l'état "haut" tant que la tension de charge du condensateur sera inférieure à la tension de référence.

Le condensateur commence donc sa charge, mais le comptage ne commencera qu'après un délai d'attente défini par la constante K (voir les paramètres utilisateur). C'est ce délai qui permettra de fixer la valeur "0" du potentiomètre et nous évitera des valeurs négatives par la suite. Le comptage peut alors commencer. Une boucle teste à chaque passage, l'état de la sortie du comparateur et incrémente un registre de 16 bits. L'intervalle de temps entre deux passages dans cette boucle peut être modifié par l'ajout de 0 à 3 NOP par la variable PCL.

Lorsque la tension de charge a atteint la valeur de la tension de référence, la sortie du comparateur 2 bascule à l'état "bas". La valeur du compteur peut alors être utilisée pour déterminer la position du potentiomètre.

Afin d'éviter tout oscillation entre deux valeurs (frontière entre deux plages), le programme émule un effet d'hystérésis en comparant chaque valeur obtenue avec la précédente. La différence entre ces deux valeurs nous permettant de déduire le sens de rotation du potentiomètre.

La valeur obtenue sera ensuite divisée par deux, successivement, de façon à l'adapter au nombre de bits fixé par l'utilisateur. Un minimum de 2 bits subdivise la course du potentiomètre en 4 secteurs (0 à 3) et un maximum de 8 bits en 255 valeurs (0 à 254), la valeur 255 étant réservée au bouton poussoir.

Lorsque le bouton-poussoir est pressé. Un flag "keypress" est mis à 1. Lorsque le pc fait une demande de position, le système teste l'état de ce flag. S'il vaut 0, il envoie la valeur "255" et remet le flag à 0. Sinon, il envoie la dernière position mesurée.

Réglage de la tension de référence:

Le réglage de la tension de référence est accessible à l'utilisateur par l'intermédiaire de deux variables: VRange (0 ou 1) qui permet de sélectionner l'une des deux plages de tension et Vr (0 à 15) qui fixe la valeur de la tension dans la plage sélectionnée. (

La valeur de la tension de référence répond aux équations suivantes:

    Si VRange=0:     Vref=(Vr/24*Vdd)

    Si VRange=1:     Vref=(Vdd/4)+(Vdd*Vr/32)

Le tableau ci dessous donne les valeurs théoriques calculée pour Vdd=5V:

Vr

Vref(V) (VRange=0)

Vref(V) (VRange=1)

0

1.25

0.00

1

1.41 0.21

2

1.56

0.42

3

1.72

0.62

4

1.87

0.83

5

2.03

1.04

6

2.18

1.25

7

2.34

1.46

8

2.50

1.66

9

2.67

1.87

10

2.81

2.08

11

2.97

2.29

12

3.12

2.50

13

3.28

2.70

14

3.44

2.92

15

3.59

3.12

L'interface USB:

Pour interfacer ce système de réponse avec un pc, l'interface USB était incontournable. Elle est présente sur tous les équipements, des plus récents aux plus anciens (encore en activité). Le choix du FT232RL de FTDI s'est rapidement imposé à plusieurs titres. D'abord, son émulation de port de communication série simplifie énormément l'intégration du dispositif dans des applications Windows comme Eprime. Son Eprom intégrée permet, sans adjonction de circuit supplémentaire de lui attribuer un nom et un numéro de série. Ceci peut s'avérer indispensable lors de l'énumération (...

Son oscillateur programmable que nous avons défini à 6 MHz et envoyé sur le port CBUS2 (broche 13) est directement utilisé pour cadencer le microcontrôleur. Connecté à la broche 16 (OscIn) de ce dernier, il permet de faire l'économie des composants supplémentaires habituels (quartz et condensateurs en "H").

 

 

Programmation de l'interface USB:

Une interface de programmation Windows, MProg, téléchargeable sur le site de FTDI à l'adresse: http://www.ftdichip.com/Resources/Utilities.htm, nous permet donc de nous inscrire en tant que fabricant (champs "Manufacturer"), d'attribuer un nom au module ("Product Description) d'attribuer un numéro de série (Fixed Serial Number) et de fixer l'oscillateur externe à 6MHz sur le CBUS2 (droplist "C2), ainsi que des paramètres destinés au contrôle de l'alimentation.

 

 

Caractéristiques:

Texte

 

Sous titre

Texte

 

Sous titre

Texte

 

Sous titre

Texte

 

 

Mise à jour : 27/02/2007 - Responsable : Pierre Mahau