Bonjour,
Je commence à programmer, j'ai réalisé un code pour mesurer la température avec un capteur tmp36.
Afin d'avoir une bonne précision je vais utiliser une ref de tension de 1,024V sur Aref.
Ma question étant, que se passe t'il si la tension mesurée est > à Aref ?
Le convertisseur sera à sa valeur maxi de 1023 mais y a-t-il un risque physique pour le circuit ?
Cordialement
Bonsoir
Vous pouvez avoir AREF à ce que vous voulez entre 1.2 et 5V mais ne dépassez pas Vcc + 0,5V en entrée sur les pins analogiques sinon vous risquez d’endommager la pin / l’arduino
Si votre réf interne est utilisée à 1.1, toute tension admissible supérieure sera vue au Max donc 1023
Attention si vous prenez une référence externe, la doc dit
Notes and Warnings
After changing the analog reference, the first few readings from analogRead() may not be accurate.
Don’t use anything less than 0V or more than 5V for external reference voltage on the AREF pin!
If you’re using an external reference on the AREF pin, you must set the analog reference to EXTERNAL before calling analogRead(). Otherwise, you will short together the active reference voltage (internally generated) and the AREF pin, possibly damaging the microcontroller on your Arduino board.
Afin d'avoir une bonne précision je vais utiliser une ref de tension de 1,024V sur Aref.
1,024V = Interdit
La tension appliquée sur Aref doit être comprise entre celle de la référence interne et Vcc.
Selon les lots de fabrication la tension de référence interne peut être comprise entre 1V et 1,2V soit 1,1V ± 10 %.
Il est possible de mesurer cette tension de référence. Quand la référence interne est sélectionnée cette tension est présente sur Aref, il suffit de la mesurer avec un voltmètre.
C'est pour cette raison que quand la référence interne est sélectionnée il ne faut pas appliquer une tension extérieure sur Aref.
Le faire reviendra à détruire le circuit de référence interne qui sert dans beaucoup d'endroits dans le micro.
Effectivement je n'ai pas précisé, j'utilise la ref externe.
En regardant la doc Arduino qui dit Aref entre 0 et 5V pour External et le datasheet de l'Atmega qui dit entre 1 et AVcc.
"VREF Reference Voltage 1.0 - AVCC"
seul la ref interne parle de 1V à 1,2V (valeur standard 1,1V +/- 10%)
Mais donc 1,024V +/- 0,1% théoriquement c'est possible ?
Chris7261:
Mais donc 1,024V +/- 0,1% théoriquement c'est possible ?
Bonjour,
Oui, dans un autre post 68tjs a cité un extrait de datasheet qui dit que ARef doit être supérieure à 1V.
Bonjour
le fil de discussion 'parallèle' est içi :
https://forum.arduino.cc/index.php?topic=639501.0
Chris7261:
En regardant la doc Arduino qui dit Aref entre 0 et 5V pour External et le datasheet de l'Atmega qui dit entre 1 et AVcc."VREF Reference Voltage 1.0 - AVCC"
seul la ref interne parle de 1V à 1,2V (valeur standard 1,1V +/- 10%)Mais donc 1,024V +/- 0,1% théoriquement c'est possible ?
La doc arduino est "indicative" parce qu'elle est souvent "approximative", quand elle n'est pas "fautive" ("fausse" mais c'est pour la rime ).
La doc du concepteur et fabricant du microcontroleur est "Impérative".
Bien que la doc "concepteur" indique pour aref V min >= 1V, vu que la tension de "bandgap" peut être comprise entre 1V et 1,2V, intuitivement je ne descendrai pas en dessous de la valeur réelle de la tension de "bandgap".
AMHA, vu que l'on ne connaîtra jamais les schémas internes du microcontrôleur, c'est jouer avec le feu que de flirter avec la limite basse de Varef. Notament à cause du risque de d'inverser des polarisations et de provoquer la circulation de courants possiblement dangeureux.
Bien évidement rien n'emppêche de tenter, une carte nano ne coûte que 3 € mais il faudra s'en souvenir en cas de fonctionnement anormal.
N'oublions pas que l'origine de la difficulté de la mesure est que le signal n'était pas amplifié.
L'amplification n'agira pas seulement sur l'amplitude du signal elle permettra l'adaptation d'impédance pour la charge du micro. La puissance transmise est maximale quand l'impédance de la charge est égale à celle de la source.
Et on trouve des amplificateurs avec un gain à x20 ou x200 à base de LM386 pour pas grand chose (environ 50 centimes pièce par 2) en Asie. ça pourrait peut être simplifier l’affaire ?
Je ne sais pas si les LM386 sont très bons pour amplifier des tensions continues ou très basse frequence..
Je serais tenté, au vu des tolerances de AREF (10%), de contourner le problème en utilisant un convertisseur analogique numérique externe ADS1115 16-Bit ADC - 4 Channel with Programmable Gain Amplifier [STEMMA QT / Qwiic] : ID 1085 : $14.95 : Adafruit Industries, Unique & fun DIY electronics and kits
Les deux inconvenients que je vois à cette approche sont les suivants:
a) c'est beaucoup plus cher
b) on contourne le problème
Pour moi, du fait qu'une bonne mesure n'a pas de prix et qu'un problème partiel peut être contourné, tant que la fonction est garantie, ces deux inconvénients sont largement compensés par :
a) on a un circuit tout fait, avec l'anti parasitage (ferrites) contrastant avec le mauvais traitement infligé par arduino à la partie analogique...
b) on a 6 bits en plus.
c) on garantit une parfaite portabilité (sur RPi, qui n'a pas de CAN; sur ESPxx, qui ont UN seul CAN -de qualité controversée, de plus-) d'un processeur à l'autre.
Bonjour
LM386 : à éviter !!
doc içi : http://www.ti.com/lit/ds/symlink/lm386.pdf
Ce n'est pas un AOP mais un médiocre ampli BF à raccorder sur un HP de 8 Ohm (P=125 mW)
Il est très instable (oscillations) dès qu'on l'utilise avec une amplification autre que l'amplification de 20
Annecdote : Il ya une quizaine d'année j'ai tenté de l'utiliser en ampli BF derrière un circuit de synthése vocale.....sans soins particuliers sur le câblage il captait 'fort' un emetteur radio Ondes Moyennes France Bleue situé à 5km
N'oublions pas qu'il s'agit de mesurer la sortie d'un capteur TMP36 (tension continue).
Ce capteur produira 250mV 750mV pour 25°.
J'aurais quelques remarques :
la précision est faible : +/- 2°
la plage de mesure est de -40°C à +125°C
Un DS18B20 aurait une précision supérieure :
±0.5°C de -10°C à +85°C
2°C de -55°C à 125°C
Boîtier identique TO92.
Il est numérique. Il est sensiblement au même ordre de prix qu'un TMP36 et n'aura pas besoin de composants additionnels.
Boîtier identique TO92.
Pour un supplément de prix, on peut même avoir un boîtier étanche :
Un autre avantage du DS18B20: il a sa propre adresse, et on peut donc mettre plusieurs DS18B20 sur le même fil; GitHub - milesburton/Arduino-Temperature-Control-Library: Arduino Temperature Library gère ces multiples thermomètres (voir l'exemple "multiple"....)
Le seul petit problème, c'est qu'il necessite, pour le circuit en boîtier TO92, une resistance de tirage..
Cette discussion est très intéressante, pour moi le but était de modifier un programme existant avec des choses que je comprends.
Je m'explique, j'ai bien pensé au capteur DS18B20 ou autre mais pour l'instant je n'ai pas compris comment récupérer les digits qui m'intéressent ainsi que le signe "-" alors qu'en passant par un capteur tmp36 ou lm35 j'arrive à faire un programme qui fonctionne (en théorie ! car je sais bien qu'il y a des parasites au vue des faibles valeurs de tension, la conception du UNO etc...) mais en simulant j'arrive au résultat attendu.
Je retiens qu'il vaut mieux rester au dessus de la valeur de ref interne avant de fixer une valeur de ref externe ou simplement mesurer la valeur de ref interne et se baser la de dessus.
En tout cas je vous remercie.
J'abandonne pas l'idée d'utiliser un DS18B20 ou S20, si quelqu'un veut m'apporter son aide ca serait cool.
Sachant que j'aimerais pourvoir afficher la température Dizaine Unité Décimale et un signe "-" avec des tubes nixie.
Fait attention au moins avec le LM35 (probablement que le TMP36 est pareil).
Le modèle que l'on trouve couramment, le LM35D n'est garanti qu'entre 0°C et +70 °C.
Il existe d'autres modèles comme le LM35C ou LM35CA garantis entre -40 °C et +110 °C, il existe même un modèle aux normes militaires (-55°C +150°C), voir la datasheet.
Et ce n'est pas tout pour mesurer des températures négatives il faut faire un montage spécial qui est indiqué dans la datasheet. Avec le montage classique la sortie est bloquée à 0V et ne peut pas aller en dessous.
Si tu ne veux pas comprendre le fonctionnement un peu plus complexe du DS18B20 mais qui a l'avantage de communiquer avec des signaux numériques bien plus confortables à manipuler que les signaux analogiques je te conseille le LM335.
Le LM335 est le jumeau du LM35 à une grosse différence près : il n'est pas "gradué" en degrès Celsius mais en degrés absolus (les kelvins).
On passe aisément de l'un à l'autre par la relation 0°C = 273,15 K (le symbole officiel des kelvins est K)
Ce qui fait que 20°C donneront avec le LM335 : 10mV*(273.15+20) = 2,932 V.
Avec ce produit tu pourra mesurer des températures négatives : pour -40°C le LM335 donnera 2,332 V.
Jusqu'à + 56 °C tu pourra utiliser pour Aref la tension 3,3V délivrée par le régulateur de la carte.
au dela il faudra utiliser la référence à AVcc qui dans les cartes arduino est relié à Vcc.
Ce produit peut même être calibré en ajoutant un potentiomètre comme indiqué dans la datasheet.
Je n'ai jamais compris la popularité du LM35 quand on voit les avantages du LM335.
J'avais bien relevé cette caractéristique de plage de mesure, c'est pour cela que je suis parti sur un tmp36 qui à l'avantage d'une plage de mesure -40 à +125°C pour une valeur de 0,1V pour -40°C puis 10mV/1°C.
Non ce n'est pas que ne veux pas comprendre le fonctionnement du DS18B20, c'est que je ne comprends pas certaines choses.
Effectivement je préfèrerais utiliser un DS18B20 à condition de savoir comment l'exploiter.
Je peux mettre quelques bouts de code que j'utilise actuellement pour voir comment le modifier afin d'exploiter un DS18B20, dans ce cas je ferai un nouveau sujet.
Exemple : Simple.pde