oui je sais ... ce sujet a déjà été abordé mais pour d'autres applications.
Dans mon cas, je voudrais simuler les valeurs de résistance d'une sonde de température type PT100 (2 fils) ... donc sur une plage 40-150 ohm. En général, les instruments remplaçant une sonde PT100 ont recours à des résistances fixes et à un commutateur. Je voudrais fabriquer un appareil commandé en logique (il y aura un PIC USB en amont).
Je cherche à générer des résistances stables, pour des courants faibles (maximum 0.1 mA, max 10V). in finé, je voudrais pouvoir programmer une température arbitraire, ou encore programmer une température cible et un délai (mon PIC se chargeant alors de modifier à intervalle régulier, avec le plus petits pas possibles, la résistance simulée pour atteindre l'objectif).
Voici mes pistes actuelles :
(0) Un réseau de résistances en série (décade) commutées. Par exemple 8 résistances (on commence à 0.25 ohms ... hum hum) et on progresse en puissances de 2. On ajoute une résistance talon (40 ohm - epsilon).
Sans parler de sa faisabilité (stabilité des résistances les plus fortes), ce montage pose le problème de la progression non monotone de la résistance pendant la commutation : on aura un artefact si on passe (par exemple) d'une résistance composée de 5 sous résistances à la résistance immédiatement supérieure, atteinte avec un composant unique.
(1a) Plusieurs résistances numériques en parallèle. En utilisant 5 boitiers de type ADN2850 (dual, 50 ohms à 25 kohms en 1024 pas de 25 ohms) en daisy chaining SPI, on peut disposer de 10 résistances variables, lesquelles, mises en parallèle, donnent une résistance équivalente évoluant dans l'intervalle 5 - 2500 ohms (sous réserve qu'on programme correctement les boitiers en tenant compte d'un coefficient de résistance réelle, mesuré en usine et disponible dans un registre).
Dans ce cas, pour une programmation grossière, on peut utiliser la connaissance théorique que l'on a des résistances numériques utilisées (les dix résistances en fonction de la valeur des dix registres). On programmera chaque résistance "au plus près de la résistance souhaitée", ce qui donnera 600 pas fins répartis (de façon sans doute peu uniforme) autour de 60 gros pas (ce qui est une résolution acceptable).
(1b) Une variante consiste à exploiter le caractère dual des ADN2850 et l'erreur relative (faible) de 0.1% entre les deux convertisseurs (bien inférieure à l'erreur typique de la résistance maximum d'un boitier à l'autre : on peut avoir 32 kohms au lieu de 25 avec un registre à 1023). En mettant en oeuvre la moitié de chaque boitier (une des deux voies) dans un circuit de calibration, puis en propageant le résultat obtenu sur le coté "online" des boitiers.
Ainsi, on peut peut-être (avec un comparateur précis) déterminer la combinaison de résistances qui approche le mieux le résultat escompté.
Le comparateur comparerait la sortie d'un DAC 16 bits avec la tension aux bornes du réseau de résistances soumis au 5v extra-terrestre de notre montage.
Dans ce cas, la difficulté consiste à programmer correctement les résistances numériques élémentaires : on n'incrémente pas (cas d'une hausse minimale) un réseau de résistances numériques comme on incrémente une résistance unique (je fais allusion à un shéma communément utilisé ...). Il faut à tout moment connaitre la résistance la plus faible (ou la plus forte). C'est elle qu'il faut incrémenter/décrémenter.
(2) Une autre option envisagée : utiliser un DAC 16 bits (type DAC8811), un ampliop en mode suiveur pour monter à 20mA (si on suppose toujours que le 5 V est parfait) et un opto-coupleur ayant une photo-résistance en sortie (type NSL-32SR2).
Dans ce cas, j'imagine que le pilotage en DC de l'opto-coupleur est une très mauvaise idée. Mais, avant de me lancer en modulation, j'aurais aimé connaitre vos impressions concernant ces options : laquelle vous parait la plus prometteuse en terme de stabilité/précision ?
-----