Commetout pont, le Pont Couvert cherche à relier les gens de la communauté. En tant que blogue, il cherche à le faire d'abord en permettant d’échanger publiquement sur des sujets qui nous concernent tous, notamment au niveau politique, et en faisant partager une information qui ne serait sans doute pas communiquée autrement, ou du moins pas d'une
Afin d'avancer sur les chemins des objets connectés, dans cet article nous allons étudier comment suivre le niveau de charge d'une pile ou d'une batterie avec un microcontrôleur tels que l'ESP8266 ou un Arduino. Et par extension, nous allons regarder comment utiliser le convertisseur analogique-numérique et s'il est possible que ce dernier puisse suivre le niveau de charge de sa propre alimentation électrique afin de nous alerter en cas d'approche d'une panne sèche. 💪 Dans les mondes de la domotique, de l'IoT Internet of Things et des objets connectés, il est fréquent d'avoir besoin de capteurs autonomes, alimentés électriquement sur piles ou accus. Dans le commerce on trouve assez facilement des capteurs de ce genre qui présentent un niveau d'autonomie tout à fait acceptable. Pour ma part j'ai déjà utilisé avec satisfaction des capteurs de température, d'humidité ou d'ouverture de portes comme ceux ci-dessous Exemple de capteurs RF433 du commerce fiable et abordables. si les images et les liens ci-dessus ne s'affichent pas sur votre écran, vous devez désactiver votre bloqueur de publicité sur ce blog. Ne vous faites pas de soucis, vous n'aurez aucun pop-up. Mise à part le capteur de température premier prix qui nécessite de changer les deux piles LR06 environ une fois par an, les autres ont tenu la charge plus de deux ans. Ces capteurs s’appuient tous sur la fréquence 433Mhz, peu énergivore, pour transmettre les données. Ceci sous entend que coté serveur domotique nous disposions d'un équipement capable de capter les messages dans cette bande de fréquence. Typiquement il faudra un boitier RFXCom RFXtrx433XL connecté à une box domotique un Raspberry Pi avec un serveur Domoticz par exemple, comme décrit dans l'article ICI. Ces capteurs, sur cette bande de fréquence sont pratiques, fiables, permettent une bonne durée de vie des piles et s'appuient sur des protocoles de communication standardisés qui les rendent compatibles avec la quasi totalité des systèmes domotiques. Pour ceux d'entre vous qui souhaitent intégrer rapidement, facilement, sans se poser de questions et de manière fiable quelque capteurs à leur solution domotique, alors dirigez vous les yeux fermés vers ces derniers. Par contre, si comme moi, vous avez envie de créer vos propres objets connectés, qui offrent des services plus élaborés, plus personnalisés, plus adaptés à vos besoins spécifiques ou à votre écosystème. Si vous avez envie d'utiliser d'autres fréquences que le 433Mhz, comme le wifi ou le ZWAVE et que vous trouvez que les capteurs du commerce, sur ces longueurs d'ondes sont trop rares ou trop chers. Et surtout, si vous aimez comprendre, apprendre et réaliser les choses par vous même, alors vous aurez à un moment donné besoin de réaliser vos propres objets sur batterie et par conséquent vous aurez besoin de savoir comment en suivre le niveau de charge. Si vous êtes dans ce cas, alors, en lisant cet article, vous êtes exactement là où vous devez être, à faire ce que vous devez faire! 😁 Théorie de la charge Lorsque je parle de suivre la charge d'une pile ou d'un accu et que je réfléchis ensuite c'est souvent dans cet ordre que je procède, je me dis qu'en fait, je ne sais pas vraiment de quoi je parle et c'est souvent la conclusion à laquelle j'aboutis. Je m'explique .... Qu'est-ce que la charge d'un accu ? Est-ce qu'on la mesure en Volt, en Ampères, en Watt ? Est-ce qu'on considère que l'accu est vide lorsque ces mesures sont à zéro ou alors on considère qu'il est vide quand il ne fourni plus assez d'électricité pour alimenter le circuit sur lequel il est raccordé ? Nous allons essayer de trouver des réponses à toutes ces questions et ensuite nous pourrons regarder s'il est possible de suivre cette charge avec un microcontrôleur. Caractéristiques d'un accu Dans cet article je vais essentiellement utiliser le mot "accu" parce que c'est un mot qui me plait! Mais parfois j'utiliserai le terme de "pile", "batterie" ou "générateur". N'étant pas un expert, tous ces termes désignent pour moi des dispositifs équivalents dans le contexte de cet article. Je ne m'occupe que d'une seule fonction qu'ils soient capables d'alimenter électriquement un circuit sans être raccordés au réseau. Si toutefois vous jugez que ce qui va être développé nécessite un vocabulaire plus précis et que vous êtes un expert, n'hésitez pas à m'en faire part et j'en tiendrai compte. Dans ce paragraphe nous allons essayer d'identifier quelles sont les valeurs caractéristiques qu'il faut connaitre lorsque l'on souhaite étudier le comportement des accus. Et comme dans ce blog nous sommes réunis pour cultiver nos connaissances, pour certaines, nous allons essayer de creuser un peu afin d'en comprendre vraiment la signification. Lorsque l'on souhaite caractériser le potentiel d'un accu, voici les grandeurs qu'il va nous falloir connaitre La tension électrique. Exprimée en Volts V. On l’appelle aussi potentiel car c’est elle qui juge la capacité d’un accu à forcer le déplacement d’électrons de la borne négative vers la borne positive. L'intensité. Exprimée en Ampères A, ce qui explique qu'on trouve parfois le nom "ampérage" pour l'évoquer. C’est une valeur qui caractérise la quantité d'électricité soit le nombre et la rapidité des électrons qui débite en un temps donné. La puissance. Exprimée en Watt W. Cette mesure représente la quantité d'énergie qui peut être délivrée en une seconde. C'est en quelque sorte la mesure de la capacité à fournir un travail. Cette puissance peut se calculer avec une des formules les plus connues dans le monde de l'électricité qui est la loi d'Ohm P = Puissance égale Tension multipliée par Intensité. La capacité d'alimentation électrique. Exprimée en Ah Ampère heure. Désigne la capacité d'un accu à fournir une intensité de courant durant une unité de temps. Par exemple un accu d'une capacité de 5Ah pourra en théorie délivrer un courant de 5A durant une heure, ou un courant de 0,5A durant dix heures. L'unité de mesure Ah peut se décliner en mAh milliampères-heures. Cette capacité veut tout simplement renseigner sur l’électricité que peut fournir l’accu depuis sa charge complète jusqu’à son épuisement complet. En électricité / électronique on parle souvent de la capacité des condensateurs qui s'exprime en Farad F. Le Farad se définit comme étant la charge exprimée en coulomb C, accumulée par le condensateur sous une tension de 1 volt. Par exemple, un condensateur ayant une capacité de 2 Farad qui est soumis à une tension de 5 Volt, aura une charge de 2*5 = 10 Coulombs. Par définition, le coulomb représente également une capacité d'alimentation donné par la formule 1 mAh = 3,6C Cette relation permet donc de faire le lien entre la capacité électrique exprimée en Ah et la capacité d'un condensateur exprimée en Farad. Pour reprendre notre exemple je vous laisse faire le calcul, le résultat sera de 2,77 mAh. Donc, lorsque nous parlons de capacité, même s'il ne faut pas confondre celle d'alimentation électrique d'une pile en Ah et la mesure d'un condensateur en F, nous voyons qu'il y a un lien entre les deux et qu'au final nous parlons bien de la capacité d'un composant à délivrer une quantité de courant. L'énergie. Exprimée en Wh. Il s'agit de la puissance délivrée durant un temps donné. L'énergie est égale à la puissance multipliée par le temps. Il est bon de savoir que si la puissance est en watt et le temps en secondes, nous obtiendrons une puissance en Joules J. Un joule est équivalent à un Il faut donc 3 600 000 J pour faire 3 600 000 soit 1 Quelques nuances concernant la tension Dans la réalité nous pouvons caractériser plusieurs formes de tension Tension nominale U Unité le volt, V tension moyenne d'une batterie observée sur la plus grande partie de sa courbe de décharge. Tension à vide tension mesurée aux bornes d'une batterie non connectée à une charge*. Tension en charge tension mesurée aux bornes d'une batterie connectée à sa charge*. C'est-à-dire délivrant un courant. *Dans le jargon des électroniciens/électriciens la charge désigne un composant connecté à la batterie récepteur, moteur, résistance… Caractérisation de la charge d'un accu Maintenant que nous connaissons quelques définitions et que nous avons acquis un vocabulaire suffisant pour nous permettre de comprendre et d'exprimer les différentes caractéristiques d'une batterie, nous allons essayer de définir ce qui nous intéresse qu'est-ce que le niveau de charge et comment le mesurer? En général, lorsque l'on souhaite suivre le niveau d'une batterie, il y a deux caractéristiques qui vont intéresser l'utilisateur que nous sommes La tension car cette dernière diminue au fur et à mesure que la batterie est sollicitée et en dessous d'un certain seuil les composants du circuit qu'elle alimente ne vont plus fonctionner. Chacun d'entre nous sait que tout appareil électronique nécessite une tension déterminée pour fonctionner. Par exemple un Raspberry Pi est prévu pour fonctionner avec une prise USB sous 5V. Si je l'alimente en 3,3V il risque de ne pas fonctionner. Et si je l'alimente en 48V il risque d'exploser! Toutefois, en général, les composants électroniques ont des marges de tolérance. Bien qu'il soit donné pour 3,3V, un ESP8266 va fonctionner avec une tension comprise entre 3V et 3,6V. Au delà cela peut fonctionner mais cela sera à vos risques et périls. La capacité, que j'ai évoqué plus haut sous le nom de "capacité d'alimentation électrique" et qui en simplifiant désigne la quantité de courant contenue dans la batterie. Plus la batterie aura été utilisée, moins elle contiendra de courant quelle logique! Ces deux caractéristiques sont celles qui nous intéressent car utiliser une batterie cela signifie deux choses Mettre un circuit/un appareil/un composant sous tension. C'est cette tension qui, en s'opposant à la résistance du circuit, va engendrer le déplacement des électrons et faire fonctionner ce dernier. Fournir à nos équipements une énergie suffisante sur une période déterminée. Et cette énergie est apportée par la capacité de l'accu à fournir ce courant. Nous allons donc étudier s'il est possible de déterminer et suivre l'évolution de ces deux caractéristiques. Comment déterminer la capacité d'une batterie ? Bon je n'irais pas par 4 chemins a l'heure actuelle de mes recherches je n'ai pas trouvé de méthode simple et fiable qui permette de déterminer la capacité d'un accu. J'ai pu déterminer un certain nombre de possibilités pour arriver à obtenir cette valeur mais elles sont toutes complexes et dépassent le niveau de mes compétences et de cet article qui doit rester dans un cadre où chacun puisse comprendre et mettre en oeuvre les sujets que nous abordons. Pour ceux d'entre vous qui auront envie d'aller plus loin, je vais toutefois lister et dire quelques mots sur les pistes que j'ai pu obtenir. Piste 1 utilisation d'un circuit spécialisé. Apparemment il existe des circuits intégrés spécialisés dans la surveillance des accu et qui sont capables de communiquer à un micro contrôleur la tension, la température, l'intensité et implémentent un compteur de coulomb. Le compteur de coulomb est ce qui va permettre de calculer la quantité de courant consommée et d'en déduire la quantité de courant restante. Parmi ces circuits qui permettent d'indiquer l'état de charge d'un accu SoC en Anglais, on trouve le STC3100. Montage utilisant un STC3100 Le STC3100 Piste 1 bis utilisation du circuit MAX17043 / MAX17044 MAXIM MAX17043 / MAX17044 Li + sont des dispositifs qui déterminent l'état d'une batterie lithium-Ion. Le MAX17043 est configuré pour fonctionner avec une seule pile au lithium et le MAX17044 est configuré pour deux cellules. Ils permettent des mesures de la tension de la batterie et déterminent son état de charge SoC par rapport à sa capacité maximale. Ils sont également en mesure d'émettre un signal d'alerte lorsqu'un seuil critique est atteint. Ce sont des dispositifs utiles dans des situations ou il est impératif de confirmer que les besoins en énergie seront satisfaits. Ce circuit me semble particulièrement intéressant grâce à son prix compétitif moins de 5€ sur Amazon ICI et parce que les données de capacité estimée sont accessibles via une interface I2C. Vous trouverez un tuto en Anglais sur son utilisation ICI. Quand à moi je ferais peut être un tuto sur son utilisation quand je pourrai en commander. MAX17043 module de détection de charge d'un accu Li-ion Piste 2 la méthode OCV Open Circuit Voltage ou Tension en circuit ouvert Cette méthode repose sur le constat que toute batterie diminue en tension au fur et à mesure qu'elle se décharge. On pourrait en conclure que la capacité de la batterie est une fonction de sa tension. Mais ce serait trop simple! Dans la réalité, la courbe de la tension en fonction de la charge de la batterie dépend de nombreux facteurs. Parmi ceux ci il y a la température mais surtout le type de batterie. La batterie au plomb présente une courbe quasiment linéaire et sur ce type de modèle on peut presque en déduire sa capacité restante en fonction de la tension mesurées à ses bornes. Mais les accu que nous utilisons pour nos circuits électroniques sont essentiellement de type NiMH ou Li-ion. Et ce type de batterie présente une chute brutale de la tension arrivée à un certain seuil de décharge. Le schéma ci-dessous est un exemple du type de courbe que l'on va pouvoir rencontrer courbe de la tension en fonction de la décharge sur un Cette courbe nous montre plusieurs choses J'ai identifié des seuils mini et max pour la tension et la charge car pour bien utiliser un accu de type Li-ion il ne faut jamais aller au maximum de sa charge quand on le recharge, ni le vider à 100% de sa capacité. Sinon il est fort probable de l'altérer voir de le détruire. Dans la vraie vie on indique qu'il vaut mieux ne pas dépasser 4,2V en charge en 3V en décharge je travaille avec des accu 18650 à 3,7V comme ICI. En général vous trouvez sur le site marchand les tensions Vmin et Vmax dans la fiche descriptive de l'accu que vous souhaitez acheter. Cmax correspond à la capacité de l'accu lorsque ce dernier est chargé à sa tension max Vmax. Cmini est la capacité de l'accu lorsque la tension est à Vmin. Cmax et Cmini définissent un intervalle d'utilisation dans lequel il convient de rester. On parle de profondeur de charge et de décharge. Approximativement cela correspond à environ [85%-15%]. Ceci signifie que la quantité de courant utilisable dans un accu est de 70% de sa capacité en considérant que la capacité indiquée par le fabriquant soir vraie ... ce qui n'est pas toujours gagné!. Pour finir, nous observons sur ce schéma que l'écart entre Vmax et Vmin noté ΔV comme delta V, peut se révéler assez petit. Et que la valeur de la tension va varier faiblement durant la quasi totalité du temps d'utilisation de l'accu. En résumé, il est possible d'utiliser la méthode OCV pour déduire la quantité de courant disponible dans l'accu. Mais cette méthode nécessite la connaissance de la courbe de décharge de l'accu et de plus se révèle délicate car Il va falloir des mesures précises de la tension. Toutes les tensions mesurées vont varier faiblement dans un intervalle relativement petit. Quand la tension va commencer à chutter brusquement il faudra intervenir rapidement pour ne pas que cette dernière atteigne un seuil qui endommagerait l'accu. Piste 3 la manière empirique. Comme son nom l'indique, cette méthode consiste à faire des expérimentations, prendre des mesures et ensuite se servir de ces dernières afin de générer un suivi. Par exemple, après avoir chargé vos accu au maximum avec un chargeur qui le protège des dépassements de seuil comme CE petit bijou que je me suis offert, vous les placez sur votre circuit cible et vous chronométrez combien de temps il va fonctionner. Vous pouvez ensuite avec une regle de 3 déduire la charge de l'accu en fonction du temps. Si votre circuit à fonctionné 4h, vous pouvez considérer qu'au bout de 2h l'accu dispose de 50% de charge. Ceci n'est qu'un exemple. Il y a plusieurs méthodes pour construire une table d'évolution de la charge de manière empirique. Et si vous avez un chargeur comme le miens, vous pouvez à intervalle régulier replacer les accus un court instant dessus afin de contrôler leur niveau. Pour réaliser des mesures supplémentaires sur votre circuit, vous pouvez également utiliser un circuit qui s'appelle INA219. Ce dernier permet de mesurer simplement la puissance consommée par un appareil mais aussi on peut l'utiliser pour mesurer la puissance délivrée par un panneau solaire ou une batterie. L’INA 219 permet de mesurer un courant continu jusqu’à 26V / Il est équipé d’un bus I2C ce qui permet de récupérer très facilement les mesures à l’aide d’un Arduino, ESP8266 ou d’un Raspberry Pi. Attention car certains modèles présentent des soucis de communication voir ICI. Vous pouvez le trouver ICI. Comment déterminer la tension d'une batterie ? La tension d'un accu peut se caractériser par deux niveau Vmax = Niveau de tension à son maximum lorsque l'accu est chargé au maximum. Vmin = Niveau de tension minimum en dessous duquel il ne faut pas descendre sous peine de dégrader l'accu. Lorsque que l'accu sera utilisé, la tension à ses bornes va diminuer de Vmax jusqu'à Vmin. Mais comme nous l'avons vu à l'occasion dans le chapitre précédent, l'évolution de cette tension ne sera linéaire. Certaines batteries, comme celles au plomb, on une courbe de la tension par rapport à leur niveau de décharge presque linéaire. Par contre les accu que nous utiliserons le plus souvent en électronique Ni-Mh ou Li-Ion présentent une diminution de la tension relativement lente jusqu'à un seuil et une chute brutale au delà de ce seuil. Li-ion en orange et Plomb en vert Ce comportement de la tension dans les accu va nous empêcher de déduire de manière simple le niveau de charge de ce dernier par rapport à sa tension. Pour cela, il nous faudrait connaitre la courbe de décharge et savoir se positionner dessus. Ce qui sera tout à fait possible. Par contre, de manière simple et directe, le suivi de la tension va nous permettre de détecter que l'on approche ou que l'on atteint le seuil Vmin. Et l'approche de ce seuil va nous informer qu'il est temps de recharger notre accu. En fonction des cas, il faudra réagir plus ou moins rapidement En quelques minutes pour un objet fortement consommateur afin d'éviter que la batterie ne soit totalement vidée. En quelques jours pour un objet connecté qui consomme peu. Nous pourrons nous même fixer Vmin pour que l'alerte nous remonte aux environ de 70% de décharge afin de nous laisser plus de temps pour intervenir et recharger ou changer la batterie. Contrairement au niveau de charge, nous allons voir qu'il est très facile de mesurer le niveau de tension aux bornes d'un accu ou aux bornes d'un circuit électrique. Utilisation d'un microcontrôleur pour suivre une tension Pour ceux qui se seraient endormis jusqu'ici, c'est le moment de se réveiller car nous allons passer aux choses sérieuses. Je rappel que notre objectif dans cet article est d'étudier comment nous pouvons suivre l'évolution de la charge de la batterie d'un objet connecté que nous aurions construit nous même avec un microcontrôleur. L'objectif étant bien entendu d'être prévenu avant la panne sèche pour changer la batterie, mais aussi de nous permettre d'optimiser la consommation de nos montages, d'estimer combien d'accu nous aurons besoin et au final peut être même de revoir la faisabilité de notre projet. Et toujours pour rappel à ceux qui s'étaient endormis, nous avons vu dans le chapitre précédent qu'à notre niveau, le moyen le plus simple pour réaliser ces fonctions, serait de se baser sur des mesures de la tension. Et devinez quoi ? Hé bien mesurer une tension, en général, nos chers microcontrôleurs vont savoir le faire trop de bonheur! Et nous allons voir comment. Le convertisseur ADC Certains microcontrôleurs contiennent des Convertisseur Analogique-Numérique CAN en français ou plus souvent appelés ADC pour Analog to Digital Converter dans la langue de Shakespeare. Comme son nom l'indique, l'ADC* est utilisé pour convertir un signal analogique en une représentation numérique. Où autrement dit pour simplifier convertir une tension en un nombre. Et d'emblée, en disant cela, nous comprenons que c'est grâce à ce circuit électronique embarqué dans nos microcontrôleurs que nous allons pouvoir "mesurer" une tension. *Pour comprendre le fonctionnement d'un ADC je vous invite à lire l'excellent article du blog d'Eskimon ICI. Quels microcontrôleurs contiennent un ADC ? Comme notre objectif est de mesurer une tension et que c'est le circuit ADC qui va nous le permettre, nous allons nous intéresser exclusivement aux μC qui en disposent. Je ne vais pas essayer ici de faire une liste exhaustive, mais d'emblée, je peux vous dire que c'est le cas des μC que nous rencontreront le plus dans le monde de la domotique et des objets connectés tels que les ATtiny 25/45/85, les Arduino, les NodeMCU, les Wemos et les ESP8266EX* en disposent. *Pour les ESP8266 il faudra être prudent et bien comprendre de quoi on parle. Je reviendrais sur le sujet un peu plus tard dans cet article. Comment faire pour savoir si un μC contient un ADC ? Si vous utilisez un autre modèle que ceux que je viens d'énumérer, vous devrez regarder le plan de brochage faire une recherche avec le mot clé anglais "pinout" sur votre moteur de recherche préféré. Le plan de brochage montre de manière schématique toutes les broches du microcontrôleur et leur fonction. Par exemple en faisant une recherche sur "arduino nano pinout" je trouve des images qui ressemblent à ça Arduino nano pinout Si le microcontrôleur dispose d'un ADC, vous allez retrouver dans le plan de brochage un ou plusieurs des éléments suivants Un code de couleur comme dans le petit cadre à droite dans l'image ci-dessus qui fait apparaître un type de broche analogique Analog Pin. Sur la partie de gauche toutes les broches qui porteront cette couleur porteront une fonction "ADC". Des broches qui sont identifiées comme "Analog Pin" et qui vont porter un nommage de type A0, A1, A2, ... Des broches qui portent des fonctions nommées "ADC". Comme ici avec les broches vertes ADC0, ADC1, ... Une broche qui porte le nom de TOUT est une broche analogique comme on peut le voir ci-dessous Schéma des broches du ESP8266EX Si vous retrouvez cela dans la description du brochage, c'est que vous pourrez accéder à un convertisseur ADC. Par contre, certains circuits intègrent un microcontrôleur disposant d'une broche analogique mais cette dernière n'est pas toujours soudées et utilisable pour exemple voyez le cas particulier des ESP8266 dans l'encart ci-dessous. Autre exemple, en faisant la recherche sur les fonctions des broches d'un Raspberry PI, on trouve Raspberry PI pinout Ici on ne retrouve aucun des termes énoncés précédemment. Pas de ADC, pas de A0, pas de Analog PIN, ... On va en déduire que le raspberry n'a pas d'ADC. Et effectivement, pour procéder à des lectures de signaux analogiques avec le RPI, il faudra lui adjoindre un petit circuit externe comme ICI ou encore ICI. Ou alors réaliser à montage à base d'un ADC externe comme le MCP3004. Cas particulier des ESP8266 Nous avons vu que l'ESP8266, en tant que microcontrôleur, dispose d'un ADC. Toutefois il ne faut pas confondre l'ESP8266 en tant que μC et la plaque sur laquel il est livré. On ne se procure jamais la puce seule mais toujours sur une plaque telle qu'ESP01, ESP12E, NodeMCU ESP12E, sur lesquelles les broches sont soudés afin de les rendre accéccibles à l'utilisateur. Bien que la puce 8266 dispose d'un ADC, la broche correspondante n'est pas toujours accessible selon le modèle de carte que l'on se procure. Par exemple, sur le NodeMCU ESP12E ci-dessous à gauche, nous voyons tout à fait qu'il est possible d'utiliser une broche ADC nommée A0. Par contre, dans le plan de brochage de l'esp01s à droite, nous voyons que l'utilisateur n'a pas accès à une broche ADC. Et cela même si ces deux circuits embarquent une puce ESP8266. Valeurs retournée par l'ADC en lecture d'une broche analogique Bon là nous commençons à rentrer dans une partie de cet article dans laquelle je vais avoir du mal à généraliser car chaque microcontrôleur va avoir ses spécificités. Il va donc falloir que je m’appuie sur des exemples et je vais choisir l'ESP8266 et en particulier les NodeMCU ESP12E Lolin v3 et les ESP01s. Pourquoi ce choix ? Tout simplement parce que j'en ai un sous la main et que je les aime 💗! Comme nous l'avons évoqué, le circuit ADC permet de convertir un niveau de tension analogique en une représentation numérique. Donc en un nombre. Ce nombre sera accessible au μC dans nos programmes avec une variable. Mais l'ADC ne va pas pouvoir convertir n'importe quelle tension. Comme tout composant il fonctionnera pour un intervalle défini entre une tension minimale presque toujours 0V et une tension maximale. En général et c'est le cas sur le 8266 l'ADC va être capable de lire un niveau de tension allant de 0V à 1V. Et la valeur numérique qui sera retournée va être proportionnelle mais dans un intervalle échantillonné par rapport au nombre de bits de précision de l'ADC. Par exemple, avec 8 bits, nous pouvons modéliser 256 valeurs. Avec 10 bits, nous pouvons avoir 1024 valeurs. Ceci signifie qu'un ADC ayant 10 bits de précision, va pouvoir retourner 1024 valeur pour identifier une tension dans l'intervalle de mesure [0V - 1V] par exemple. La précision dans ce cas sera dans cet exemple de 1 / 1024 Volts soit en arrondissant un peu 1mV. Soyons précis sur l'intervalle d’échantillonnage du convertisseur ADC! On trouve souvent sur internet des articles qui disent que puisque l'ADC fonctionne avec une précision de 10 bits, la valeur retournée sera dans l'intervalle [0 - 1023] ce qui représente effectivement 1024 valeurs possibles. Hors dans la réalité j'ai constaté que la fonction qui va lire la broche analogique, la fonction analogRead, retourne des valeurs jusqu'à 1024 inclus donc 1025 valeurs. Je n'ai pas trouvé de textes sérieux qui expliquent précisément ce fonctionnement. Mais après avoir réalisé de nombreux essais j'ai déduis que l'ADC va mesurer les tensions sur l'intervalle [0 - Vmax] et renvoi des valeurs sur [0 - 1023]. Mais lorsque la tension dépasse la tension maximale de 1/1024 * Vmax volts, la fonction analogRead va retourner 1024 au programme. Ce nombre 1024 ne sera pas exploitable pour réaliser une conversion en Volt mais il indique au programme que la tension maximale est dépassée. Conversion en tension de la valeur retournée par l'ADC L'ESP8266 est doté d'un convertisseur analogique-numérique 10 bits intégré avec un seul canal ADC, c'est-à-dire qu'il n'a qu'une seule broche d'entrée ADC, appelée "TOUT" dans les schémas, pour lire la tension analogique externe. Il va lire une tension située entre 0V et 1V et retourner un nombre proportionnel dans l'intervalle [0 - 1023]. La valeur maximale de 1V est appelée la tension maximale de référence théorique de l'ADC. En générale cette valeur est indiquée dans les documentations techniques. Et la valeur que l'on trouve est souvent une valeur théorique que nous serons appelé à corriger dans la réalité pour avoir des mesures précises. Nous détaillerons cela plus loin, mais en attendant, lorsque nous obtenons la valeur retournée par le fonction analogRead, pour en déduire la tension il faudra simplement programmer une règle de trois N étant le nombre décimal retourné par la fonction analogRead. Vx étant la tension que nous essayons de mesurer sur la broche TOUT. Si N = Nmax => Vx = Vmax la tension maximale de référence. Donc ici 1V. Pour N = x => la tension est Vx qu'il faut calculer Nous obtenons donc la formule magique Vx = Vmax * x / Nmax Dans le cas de l'ESP80266, Vmax = 1 et Nmax = 1023. Cette formule devient donc Vx = 1 * x / 1023 x étant la valeur retournée par la fonction analogRead A0 . Cas particulier des NodeMCU et autres Wemos D1 mini C'est le pont pont J'aborde ici un point spécifique concernant des cartes telles que le NodeMCU. On confond souvent le microcontrôleur et la carte sur laquelle il est fourni. Un NodeMCU embarque une puce ESP8266 mais également d'autres composantes comme par exemple un régulateur de tension, une puce de communication UART, des LED, un port USB,..... On confond aussi parfois NodeMCU et le module tel que l'ESP12E. Ce qu'il faut comprendre c'est que le NodeMCU comme le Wemos est une carte qui embarque un module de type ESP12E ou autre ESP qui lui même embarque un microcontrôleur ESP8266. J'ai trouvé l'image ci-dessous qui illustre cela. Composition d'un NodeMCU Par soucis de simplification, on utilise souvent moi le premier le terme de microcontrôleur pour désigner parfois la carte complète NodeMCU ou le module ESP. Et cela n'a pas vraiment d'importance. Mais ici j'ai souhaité préciser cela car c'est important pour bien comprendre quelle tension nous allons pouvoir mesurer. Bien souvent on va lire que l'ESP8266 intègre un circuit ADC qui interprète des tensions entre 0 et 3,3V. Dans d'autres cas on va trouver dans les forums des utilisateurs perdus qui détectent une saturation de l'ADC autours de 1V et ne comprennent pas pourquoi. Et moi je vous parle ci-dessus d'une fenêtre de mesure entre 0 et 1V. En réalité l'ESP8266 mesure des tensions dans la fenêtre [0V - 1V]. Les cartes et les modules fonctionnent en général en 3,3V. Donc avoir un ADC qui ne peut mesurer que du 1V maximum rend l'utilisation plus complexe. Afin de simplifier l'usage, certaines cartes, comme le NodeMCU ajoutent entre l'entrée du microcontrôleur et la broche A0, un pont diviseur de tension. Ce dernier, en divisant la tension appliquée à l'ADC par un nombre donné, va permettre de mesurer des tension plus importantes. Impact sur les mesures Un pont diviseur de tension est un circuit linéaire passif produisant une tension de sortie qui est une fraction donc proportionnelle de sa tension d'entrée. Je vous laisse chercher sur internet pour en savoir plus sur le fonctionnement exact par exemple ICI. Le schéma ci-dessous présente le pont qui est placé derrière la broche A0 et devant l'entrée TOUT de l'ESP8266 dans un NodeMCU ESP12E. Pont ADC NodeMCU Le fonctionnement est simplissime La tension appliqué en A0 est divisée par un coefficient dépendant de la valeur des deux résistances R1 et R2. Ainsi la broche TOUT de l'ESP8266 reçoit une tension moindre. Et comme nous l'avons vu, la tension sur TOUT ne doit pas dépasser 1V. La formule permettant de lier toutes ces mesures est la suivante Vtout = Va0 * R2 / R1 + R2 Dans notre cas nous connaissons R1 220, R2 100. Nous connaissons aussi la formule de Vtout car il s'agit du Vx que nous avons calculé dans le paragraphe précédent à partir de la valeur retournée par analogRead. Ce que nous souhaitons c'est connaitre Va0, la tension appliquée sur la broche analogique. Les mathématiques viennent une nouvelle fois à notre secours Va0 = Vtout * R1 + R2 / R2 En appliquant avec les valeurs des résistances du pont du NodeMCU nous obtenons Va0 = Vtout * 3,2 Vtout étant notre Vx dans la formule précédente. x étant le nombre retourné au programme par l'ADC via analogRead, nous pouvons donc, dans le cas d'un NodeMCU ou Wemos déduire la tension appliquée à la broche A0 par le calcul suivant Va0 = 3,2 * x / 1023 ou en arrondissant Va0 = 0,003128 * N Nous voyons donc que vous déterminer la tension appliquée à la broche analogique, il faut simplement multiplier la valeur numérique retournée par l'ADC par un coefficient que j’appellerais Coef. Ce coefficient que nous venons de calculer est théorique. Et nous savons qu'en électronique il y a souvent pas mal de différences entre la théorie et la mesure réelle. Les résistances du pont ont des précisions qui ne sont pas exactes, l'ADC peut renvoyer des valeurs légèrement différentes en fonction du modèle de microcontrôleur, du montage que vous avez réalisé ou de la tension d'alimentation. Si vous souhaitez mesurer une tension à 5% d'erreur près, la valeur théorique pourrait être suffisante. Et nous allons voir plus tard dans cet article dans quel mesure ce sera la cas. Si vous voulez plus de précision, il faudra que vous calculiez le coefficient correspondant à votre contexte. Nous verrons également comment le réaliser. Tension maximale sur la broche analogique du NodeMU Toutes ces belles formules vont nous permettre de lire une tension en utilisant la broche analogique de notre cher microcontrôleur. Mais nous nous doutons bien que nous allons être soumis à des limites. Si vous pensez pouvoir suivre la décharge d'une batterie de 12V en connectant cette dernière directement sur la broche analogique alors vous risquez d'être déçu. Il faut se demander quelle est cette tension maximale supportée par la broche allons devoir faire la différence entre deux maximum La tension maximale qui pourra être mesurée par l'ADC. C'est à dire la tension pour laquelle la fonction analogRead va retourne 1023. Nous allons appeler cette dernière Vmax comme tension max. La tension maximale qui sera supportée sur la broche. C'est à dire la tension au dessus de laquelle on va endommager les composants. Nous allons appeler cette tension Vcrit comme tension critique. Entre Vmax et Vcrit nous allons pouvoir "supporter" des valeurs de tension qui ne seront pas mesurables car la fonction analogRead retournera toujours calculer la valeur théorique de Vmax sur un NodeMCU, nous allons demander aux maths de nous aider. Nous avons vu que l'ESP8266 ne supporte pas une tension de plus d'1V sur sa broche TOUT. Et nous avons vu que Va0 = Vtout * 3,2. Si Vtout ne doit pas être supérieure à 1V nous déduisons que Va0 ne doit pas être supérieure à 3,2V. CQFD! Bien sur ceci est encore une valeur théorique. Dans la pratique, il faudra calculer cette Vcrit est plus compliqué. Nous nous doutons bien que nous ne pouvons pas augmenter la tension de chaque NodeMCU jusqu'à trouver celle qui le fait griller! De plus, le nodeMCU contient des dispositifs qui protègent les composants en redirigeant du courant vers la masse en cas de surtension. J'ai par exemple par erreur connecté la broche A0 à une tension de 5,5V. J'ai constaté une chute brutale des mesures qui m'indiquait qu'en continuant encore quelques secondes j'allais faire griller ces protections. Pour déterminer Vcrit il faut se baser sur les valeurs données par les constructeurs de l'ESP8266. Partout on trouve que les broche analogiques ne doivent pas dépasser une tension de 3,6V. Nous allons donc prendre en compte cette valeur établir Vcrit = 3,6V. Mesures des tensions réelles Maintenant que nous avons toutes les connaissances théoriques nécessaires, nous allons pouvoir commencer à réaliser nos premiers montages et nos premières mesures. Nous verrons comment calculer les différents coefficients pour calibrer le microcontrôleur et ainsi obtenir des mesures avec un taux d'erreur acceptable. Les informations de ce chapitre sont à priori reproductibles pour tout microcontrôleur disposant d'une broche analogique en adaptant les niveaux de tension aux caractéristiques propres à chaque modèle. Ici j'ai réalisé l'ensemble des montages avec un NodeMCU. Nous allons étudier les deux modes de fonctionnement de l'ADC qui mesurent la tension sur la broche analogique pour le premier et la tension de l'alimentation interne pour le second. Mesure d'une tension externe Dans ce paragraphe nous allons voir de manière concrète comment mesurer la tension d'un accu qui alimente notre microcontrôleur. Nous allons voir quelles sont les niveaux de précision que nous pouvons obtenir en appliquant les formules théoriques, nous verrons comment faire pour améliorer cette précision et nous étudierons s'il y a des différence entre plusieurs microcontrôleurs de même modèle, entre plusieurs tensions d'alimentation et entre plusieurs mode d'alimentation. Tout un programme ... allez on se relève les manches et on met les mains dans le cambouis! Pré requis Pour lire la tension d'alimentation externe il faut utiliser la fonction logicielle "AnalogRead broche " et remplir ces conditions La broche analogique associée à la mesure A0 par exemple doit être connectée forcément!. Dans le cas d'un module ESP8266 qui intègre une connectivité wifi, l'ADC ne peut être utilisé de manière fiable pendant une transmission. Il faudra donc s'assurer que les mesures soient prises en dehors de toute transmission. L'ESP doit reconfigurer l'ADC au démarrage pour qu'il fonctionne en mode lecture externe. Cela se fait en ajoutant la ligne suivante n'importe où mais plutôt tout en haut de votre programme et en dehors de toute fonction ADC_MODE ADC_TOUT; Cette instruction sera appliquée à la compilation, donc vous ne pouvez pas la placer dans une fonction ou dans un "if" conditionnel. Par défaut l'ADC est configuré pour lire la tension sur la broche TOUT mode ADC_TOUT. Donc si vous n'ajoutez pas cette ligne de code cela fonctionnera tout de même. Dans ce mode la fonction getVCC ne fonctionnera pas. Mode opératoire Nous allons réaliser deux montages ayant chacun pour but de nous permettre de mesurer et faire varier la tension appliquée sur la broche A0 du NodeMCU avec un potentiomètre. Nous allons réaliser également un programme qui va, en boucle et toutes les 5 secondes, appeler la fonction analogRead et afficher la valeur N retournée. Nous avons vu dans la partie théorique qu'il faut appliquer la formule Va0 = Coef * N pour déduire la tension. Ici, ce que nous allons chercher à déterminer c'est si ce "Coef" théorique est identique à la réalité. Pour faire cette comparaison, nous allons mesurer la tension réelle en A0 car nous allons placer un multimètre précis entre A0 et GND. Nous pourrons donc calculer le Coef réel avec Coef = Va0 réelle / N. Pour chaque mesure nous comparerons ce Coef réel au Coef théorique. Pour rappel, pour un NodeMCU avec un pond diviseur de tension nous avions un Coef théorique de Coef_theorique = 3,2 / 1023 environ 3,128mV. Pour savoir si votre microcontrôleur contient un pont diviseur de tension devant l'ADC, il faudra débuter les mesures avec le potentiomètre laissant passer une tension légèrement en dessous de 1V 0,95V par exemple. Si l’affichage du programme retourne un nombre proche de 1024 c'est que nous sommes quasiment déjà au maximum et donc qu'il n'y a pas de pont. Par contre si l'ADC retourne une valeur proche de 300, c'est qu'il y a un pont tel que nous l'avons vu sur le NodeMCU. Si la valeur est différente c'est qu'il y a un pont mais les valeurs des résistances qui le constituent ne sont pas identiques à celles du NodeMCU. Comme source d'énergie je vais utiliser un accu 18650 dans un boitier. Tout ce petit montage sera réalisé avec des breadboard, des câbles dupond et des connecteurs. Pour connecter le NodeMCU au PC afin d'afficher les informations sur le moniteur série de l'IDE Arduino ou tout autre moniteur série de votre choix comme Putty, je vais utiliser dans un premier temps un adaptateur FTDI et dans un second un raccordement direct en USB. Passer par l'adaptateur FTDI permet au NodeMCU d'être alimenté sur accu et de ne pas prendre son alimentation sur le câble USB. Comme prérequis je considère que vous avez l'IDE Arduino d'installé et configuré pour l'ESP, que vous savez téléverser un programme et utiliser le moniteur série. Si ce n'est pas le cas, vous trouverez toutes les informations sur l'installation dans mon article ICI, sur la programmation de l'ESP ICI et toutes les informations sur la communication en série entre l'ESP et le PC dans mon article ICI. Si vous souhaitez utiliser Putty comme moniteur série vous trouverez des informations importantes ICI dans le paragraphe qui s'intitule "Tester que l'ESP fonctionne ". Liste du matériel Philosophie commerciale Je ne suis pas actionnaire d'Amazon ou autres eBay. Les liens que je vous donne pointent sur du matériel compatible avec mes montages, que je recommande et que j'ai souvent acheté moi même. Je ne choisi du matériel de bon rapport qualité/prix/service livraison, SAV,... Si vous faites un achat en passant par un de mes liens, la minuscule commission qui me sera versée ne manquera pas dans les bénéfices énormes des sites marchand et m'aidera à investir et rédiger de nouveaux articles. Et si aucun matériel ne vous intéresse, vous pouvez mettre ce lien dans vos favoris et l'utiliser quand vous aurez besoin de quelque chose sur Amazon. Un GRAND merci à tous ceux qui ont joué le jeu. Pour ceux qui le désirent voici des liens pour vous procurer le matériel Les connecteurs pratiques pour faire des montages rapides avec des câbles de diamètre différentes. Ils fonctionnent avec un pince à ressort. ICI. Les NodeMCU v3 ESP12E. Cette carte ne se présente plus. J'en ai plusieurs et je les adore. Vous pouvez les trouver moins chers ICI mais ICI ils arriveront plus rapidement chez vous et compatibles avec le driver PC CH340. Le potentiomètre que j'ai utilisé proviens d'un kit de composants de chez Elegoo comme ICI. Il dispose d'une résistance de 10k. N'importe lequel fera l'affaire mais privilégiez les modèles prévus pour être placés sur breadboard comme ICI. Le multimètre que j'adore et qui ne cesse de m'étonner par toutes ses fonctions et sa précision! Le même modèle est estampillé sous plusieurs marques. Moi j'ai un METERK qui a été remplacé par JANISSA ICI. Franchement il est top et si vous bricolez un peu l'électricité ou l'électronique vous ne serez pas déçu de mettre une trentaine d'euros dans un tel appareil. Si vous voulez voir le test, n'hésitez pas à lire mon article qui lui est dédié ICI. Les câbles Dupont mâle-mâle comme ICI. Les batteries 16850 se trouvent un peu partout. Je n'y connais pas grand chose alors j'ai pris des 2500mAh comme ICI. Et pour les recharger je me suis fait plaisir avec un chargeur vraiment top ICI. L'adaptateur FTDI. Il y en a plusieurs versions. La mienne est ICI. Mais il en existe une plus pratique qui évite d'avoir à souder deux fils ICI. Voici tout ce matériel en image si vous ne les voyez pas c'est surement votre AdBlock qui bloque! Vous pouvez le désactiver sur mon blog car je n'envois aucune pub ou aucun popup Premier montage réalisé Ce premier montage alimente un circuit avec un accu 18650. L'ESP est raccordé au PC uniquement pour le téléversement du programme et afficher les données sur le moniteur série. Pour que ce soit plus clair, je vous ais fait un petit schéma Voici les points particuliers numérotés sur le schéma Le voltmètre est relié à la ligne - et à la sortie centrale du potentiomètre. Lorsque le potentiomètre sera utilisé c'est cette tension qui va varier. Le potentiomètre étant raccordé au + et au - de l'accu, la tension pourra varier de 0 jusqu'à la tension de l'accu. La sortie régulé du potentiomètre est également connectée à la broche A0 du NodeMCU. C'est cette tension qui sera mesurée par le microcontrôleur. Elle sera également affichée sur le voltmètre. La boche D3 du NodeMCU est raccordée GPIO0 du FTDI. Ceci permet de passer le NodeMCU en mode flash au démarrage. Toutefois si vous décidez de téléverser le programme en USB vous n'aurez pas besoin de cette connexion. Les cables orange et vert représentent respectivement les lignes TX et RX de la liaison série. Notez bien Bien que je ne l'ai pas indiqué sur le schéma, j'ai placé un condensateur 1mF sur la ligne d'alimentation entre le + et le - de la breadboard. Ce dernier m'a permis de stabiliser plus facilement les tensions. Les GND sont raccordé entre eux des GND. Ceci est important pour le bon fonctionnement du montage. Le NodeMCU est alimenté sur la broche VIN depuis l'accu. Deuxième montage réalisé Le second montage a pour but de faire des mesures d'une tension sur A0 mais avec le NodeMCU alimenté en USB. Il est quasiment identique au précédent sauf pour la connexion vers le PC. L'idée est de regarder s'il y a des différences de comportement de l'ADC en fonction de la ligne d'alimentation du que ce soit plus clair, je vous ais fait un petit schéma Le matériel utilisé est le même mais la liaison série se fait directement sur l'USB et on n'utilise plus de traducteur FTDI. Programmation L'objectif de cet article n'étant pas de faire un cours de programmation, je ne vais pas commenter outre mesure le code que j'ai écrit. Le but de ce programme n'est que de lire le nombre retourné par l'ADC. Pour réaliser cela nous allons utiliser la fonction analogRead Ax . Ax étant l'identifiant de la broche analogique que nous souhaitons interroger. Dans notre cas, le NodeMCU n'ayant que la broche A0, Ax sera donc égale à A0. Vous trouverez facilement sur internet comme ICI des informations sur cette fonction. Par contre n'oubliez pas que la tension maximale qu'elle mesure dépend du microcontrôleur utilisé en Arduino fonctionnera en 5V alors qu'un NodeMCU en 3,3V. J'ai réalise un petit programme dont l'objectif est de lire la valeur retournée par l'ADC et de l'envoyer pour affichage sur le moniteur série du PC. Etant un ancien développeur, j'ai gardé quelques habitudes d'écriture de code pourquoi faire simple quand on peut faire plus compliqué! Mais je vous livre mon programme tel quel afin que ceux qui le souhaitent puissent y apprendre des petites astuces. /******************************************************************** * Test_ADC * ========= * Ce programme est destiné à tout microcontroleur disposant d'un convertisseur ADC * ainsi que d'une broche de lecture analogique en A0. Il permet de lire en boucle * la valeur en A0 et de l'afficher sur la liaison série. * * Versions * ========== * 29/06/2019 - v1 Création * * c acampeaux *********************************************************************/ /*==================================================================== * CONSTANTES & VARIABLES * ==================================================================*/ String stNomProgramme = "Test_ADC"; String stVersion = "v1"; /* Vitesse de transmission de la liaison série permet de lire les premiers caractères envoyés par l'ESP lorsqu'il démarre. */ long int liBauds = 74880; /* Variable pour compter le nombre de lecture d'A0 réalisé */ int iNombre = 0; /*==================================================================== * Fonction setup * Initialisation de la liaison série * ==================================================================*/ void setup { liBauds ; delay 100 ; String"\nInitialisation liaison serie a " + liBauds + " Bauds OK" ; stNomProgramme + " version " + stVersion ; } /*==================================================================== * Fonction loop * Lecture de la broche analogique A0 et affichage du résultat. * Attente de 5 secondes entre chaque lecture. ====================================================================*/ void loop { /* Lecture de la broche A0 */ int iA0 = analogRead A0 ; String"Mesure num " + iNombre++ + " Valeur AnalogRead A0 " + iA0 ; delay 5000 ; } Série de mesures numéro 1 Cette série de mesure utilise le montage 1 décrit ci-dessus. J'ai réalisé des mesures à intervalle régulier à deux reprises. La première 1 avec un accu chargé à 3,75V et la seconde 2 avec un accu chargé à Pour chaque niveau de tension fixé au potentiomètre Va0 j'ai relevé le nombre Nb donné par analogRead. J'ai augmenté progressivement la tension jusqu'à trouver la valeur réelle pour 1023 Vmax_reel et la première valeur où l'on obtient 1024. Toutes ces données ont été entrées dans un fichier excel. J'ai tout de suite constaté que pour une même tensions appliqué à A0, la valeur retournée par l'ADC est identique dans le cas ou le NodeMCU est alimenté en 3,75 ou 3,98V. J'ai ensuite ajouté une colonne pour calculer le coefficient réel Cr avec tout en bas la valeur moyenne. J'ai ajouté une colonne qui compare la valeur réelle à la valeur que nous aurions du obtenir avec un calcul théorique. Pour chaque ligne nous avons donc un taux d'erreur. Nous constatons que dans les petites tensions en deçà de 0,5V ce taux d'erreur est très important supérieur à 12% ici. Par contre le taux d'erreur se stabilise après 0,5V à un niveau entre 6% et 7%. En moyenne l'erreur est de 7,04%. J'ai ensuite ajouté une nouvelle colonne qui calcul l'erreur que j'aurai eu si au lieu de prendre le coefficient théorique j'avais pris un coefficient obtenu en utilisant la tension Vmax_reel. On constate une diminution immédiate du niveau d'erreur. On obtient même des niveau inférieur à 1%. Ce qui est très satisfaisant. Avec un niveau moyen d'erreur pour toute la série de 0,84%. La dernière colonne que j'ai ajouté est en utilisant le coefficient réel moyen que j'avais calculé en bas de la colonne Cr. On constate également un effet immédiat sur le taux d'erreur qui baisse à moins de 1% avec un niveau moyen à 0,83%. Tableau des mesures Série 1 Conclusions de la série numéro 1 La tension appliquée à la borne VIN du NodeMCU n'a pas d'incidence sur la mesure prise par l'ADC. Le niveau d'imprécision est très important pour les tensions les plus faibles en dessous de 0,5V. Entre 0,5V la tension maximale mesurable le niveau d'erreur est d'environ 6%. De plus, on constate qu'au delà de 0,5V le niveau d'erreur est à peu près constant. Donc on pourra le corriger en appliquant une correction constante. On constate que pour avoir un bon niveau de précision il faut appliquer un coefficient moyen réel ou alors en calculant le coefficient sur la base de la tension max réelle. Cette seconde méthode me semble préférable car elle ne nécessite qu'un peu de mesures. Série de mesures numéro 2 Cette série de mesure utilise le montage 1 décrit ci-dessus. L'objectif de cette seconde série de mesure était de voir si en prenant un autre NodeMCU nous allions avoir des résultats différents. J'ai réalisé les mêmes mesures que précédemment mais en en prenant un peu moins et sans faire une autre série avec une autre tension. On retrouvera les mêmes colonne que dans la série précédente. Les valeurs changent c'est évident mais on peut arriver à des conclusions identiques Le niveau d'erreur est très important en dessous de 0,5V. En appliquant un coefficient calculé sur la base de la tension maximale réelle ou sur la moyenne des coefficients on arrive à faire revenir le niveau de précision sur un niveau acceptable. Ici moins de 3% d'erreur. En plus quand on est au dessus de 0,5V le niveau d'erreur corrigé retombe en dessous de 1%. Ce qui est acceptable. Tableau des mesures Série 2 Conclusions de la série numéro 2 On constate que même avec deux NodeMCU identiques on peut avoir des mesures différentes. On retrouve un taux d'erreur d'environ 6% à 7% pour les valeurs au dela de 0,5V. Série de mesures numéro 3 Cette série de mesure utilise le montage 2 décrit ci-dessus. L'objectif était comme précédemment de calculer le niveau d'erreur et la tension maximale mais en alimentant le NodeMCU différemment que sur la broche VIN. J'ai choisi d'alimenter par USB et j'ai obtenu la série de mesure suivante. Tableau des mesures Série 3 Conclusions de la série numéro 3 On constate cette fois que la source d'alimentation a un impact sur les mesures. Mais on retrouve les mêmes caractéristiques que dans toutes les séries précédentes, sauf pour le niveau d'erreur en dessous de 0,5% qui cette fois est même un peu mieux qu'au delà. En calculant le coefficient à partir de la tension maximum mesurable réelle, on arrive bien à diminuer le taux d'erreur pour le passer de 5,06% en moyenne à moins de 1%. Conclusions sur les mesures de tensions externes De manière théorique nous avions établi que pour mesurer une tension V sur la broche analogique il fallait appliquer la formule suivante V = analogRead A0 * 3,2 / 1023 Toutes ces séries de mesures nous ont permis de constater que la formule théorique présente un niveau d'erreur moyen allant de 5% à 9% . Avec des pics d'erreurs parfois supérieurs à 20% pour des niveaux de tension en dessous de 0,5V. Nous avons constaté que l'ADC remonte des résultats légèrement différents en fonction du microcontrôleur et de la manière choisie pour l'alimenter. Par contre, lorsqu'il est alimenté sur VIN, le régulateur de tension semble faire son travail et l'ADC retourne les mêmes résultats pour une ten,sion données sur A0 quelques soient les variations de tension de l'accu sur VIN. Nous avons réussi à montrer qu'en se basant sur la valeur réelle de la tension maximale mesurable par l'ADC V_reelle_max, nous pouvions corriger la formule théorique et atteindre un niveau de précision de l'ordre de 1%. La formule de calcul de la tension à implanter dans nos programmes sera donc V = analogRead A0 * V_reelle_max / 1023 Pour obtenir V_reelle_max il faudra placer le microcontrôleur tel qu'il sera utilisé dans votre montage définitif même composants, même alimentation et mesurer la tension nécessaire pour que la fonction analogRead A0 retourne 1023. Nous avons aussi remarqué qu'en moyenne, dans tous les cas, les niveau d’imprécision sur les tensions supérieures à 0,5V était entre 6% et 7%. La tension réelle étant quasiment toujours supérieure à la tension théorique, si vous ne pouvez calculer V_reelle_max, vous pouvez appliquer un coefficient correcteur de 6% pour avoir une valeur plus juste. Une formule approximative sera donc V = analogRead A0 * 3,2 * 1,07 / 1023 ou V = analogRead A0 * 0,003347 Mesure de la tension interne Jusqu'ici nous avons vu que le convertisseur analogique-numérique l'ADC que l'on appelle CAN en Français, nous permettait de lire une tension externe sur la broche analogique du μC. Mais l'ADC peut aussi fonctionner dans un mode où il va lire la tension interne, sans connecter quoi que ce soit à une broche analogique! Et ça c'est fort! Il faut toutefois être vigilant et savoir ce que l'on mesure. En mesurant la tension externe de l'accu connecté à la borne A0, nous avons mesuré la tension de charge de la batterie. En mesurant la tension interne, nous allons mesurer une tension interne au microcontrôleur qui est prise après avoir subie une chute de tension due à des composants tels que des résistances internes ou au régulateur de tension!. Cette tension n'est donc pas la tension de la pile, de l'accu ou de l'alimentation aux bornes VIN/VCC. Toutefois, comme ce que nous cherchons à superviser c'est le niveau de charge de l'accu qui alimente notre montage, nous allons voir qu'il est possible d'établir un rapport entre cette tension interne et la tension réelle de la batterie. Nous allons étudier comment réussir à déterminer ce rapport. Mode opératoire Afin de déterminer le rapport entre tension d'alimentation et tension interne, nous allons réaliser une série de mesure dans des contextes différents et ensuite essayer de déduire des résultats de ces expérimentations. Pour lire la tension d'alimentation interne il faut utiliser la fonction logicielle " et remplir ces conditions La broche physique vers l'ADC A0 ou TOUT doit être non connectée on dit flottante. TRÈS important ça! Dans le cas d'un module ESP8266 qui intègre une connectivité wifi, l'ADC ne peut être utilisé de manière fiable pendant une transmission. L'ESP doit reconfigurer l'ADC au démarrage pour qu'il fonctionne en mode lecture interne. Cela se fait en ajoutant la ligne suivante n'importe où dans votre programme mais plutôt tout en haut de votre programme et en dehors de toute fonction ADC_MODE ADC_VCC; De plus il faut savoir que cette instruction sera appliquée à la compilation, donc vous ne pouvez pas non plus l'encadrer par un "if" conditionnel. Par défaut l'ADC est configuré pour lire la tension sur la broche TOUT mode ADC_TOUT avec la fonction analogRead. Dans ce mode la fonction getVCC ne fonctionnera pas. La fonction getVcc retourne un entier qui correspond à la tension mesurée en mV. Il faudra donc diviser par 1000 pour avoir la tension équivalente en V. Mais rappelez vous bien que la tension obtenue n'est pas la tension de l'accu, ni celle de VIN ou VCC. Il s'agit seulement d'une tension interne au microcontrôleur et qui va dépendre de la manière dont ce dernier est construit. Astuce si les chiffres que vous récupérez en utilisant la fonction getVcc sont trop variables, il peut s'agir soit d'un problème de connexion de câbles. Dans ce cas vérifiez que tous vos câbles et connexions sont réalisées avec soins. Soit d'un problème de stabilité de votre alimentation. Dans ce cas il faudra la réguler en utilisant un condensateur 1000uF ou même plus à raccorder entre VCC et GND. Cas des microcontrôleurs avec pont diviseur de tension devant l'ADC Comme nous l'avions vu précédemment, certains microcontrôleurs tels que les Wemos mini et les NodeMCU ESP12E intègrent entre la broche A0 et TOUT un pont diviseur de tension. Hors nous venons de dire que pour utiliser la fonction getVCC il faut que la broche A0 soit flottante. La figure à droite montre que cela ne sera pas possible s'il y a un pont car une connexion d'A0 vers GND sera toujours présente. La fonction getVCC sera donc théoriquement inexploitable sur ce type de microcontrôleurs. Dans la suite de ce chapitre tous les tests seront réalisés sur la base d'une carte ESP-01s qui ne dispose pas de pont régulateur de tension. Sur cette carte la broche A0 est libre car non soudée et non accessible à l'utilisateur. Liste du matériel Philosophie commerciale Je ne suis actionnaire d'aucun site marchand tels qu'Amazon ou eBay. Les liens que je vous donne pointent sur du matériel compatible avec mes montages, que je recommande et que j'ai souvent acheté moi même. Je du matériel de bon rapport qualité/prix/service livraison, SAV,... Si vous faites un achat en passant par un de mes liens, la petite commission qui me sera versée ne manquera pas dans les gros bénéfices des sites marchand et m'aidera à investir pour rédiger de nouveaux articles. Et si aucun matériel ne vous intéresse, vous pouvez mettre ce lien dans vos favoris et l'utiliser quand vous aurez besoin de quelque chose sur Amazon. Un GRAND merci à tous ceux qui ont joué le jeu. Pour ceux qui le désirent voici des liens pour vous procurer le matériel Les connecteurs pratiques pour faire des montages rapides avec des câbles de diamètre différentes. Ils fonctionnent avec une pince à ressort. ICI. Les ESP01s qui sont les cartes microcontrôleurs à base de 8266. N'hésitez pas à en prendre un lot car il arrive que par erreur on en grille quelques uns. On peut les trouver pas très chers ICI. Mais si vous êtes pressé de recevoir vous trouverez un lot de 5 ICI. La diode 1N4007 que j'ai utilisé est là uniquement pour la chute de tension qu'elle présente. Je vous conseille de prendre un coffret comme ICI pour avoir différents modèles. Le multimètre que j'adore et qui ne cesse de m'étonner par toutes ses fonctions et sa précision! On trouve le même modèle estampillé sous plusieurs marques. Moi j'ai un METERK qui a été remplacé par JANISSA ICI. Franchement il est top et si vous bricolez un peu l'électricité ou l'électronique vous ne serez pas déçu de mettre une trentaine d'euros dans un tel appareil. Si vous voulez voir le test, n'hésitez pas à lire mon article qui lui est dédié ICI. Les câbles Dupont mâle-mâle comme ICI. Les batteries 16850 se trouvent un peu partout. Je n'y connais pas grand chose alors j'ai pris des modèles de base comme ICI. Et pour les recharger je me suis fait plaisir avec un chargeur universel vraiment top ICI. L'adaptateur FTDI. Il y en a plusieurs versions. La mienne est ICI. Mais il en existe une plus pratique qui évite d'avoir à souder deux fils ICI. Voici tout ce matériel en image si vous ne les voyez pas c'est surement votre AdBlock qui bloque! Vous pouvez le désactiver sur mon blog car je n'envois aucune pub ou aucun popup Montage Pour prendre des mesures j'ai réalisé le montage tel que ci-dessous. Montage pour mesures sur ESP01s Si vous souhaitez plus d'informations concernant la câblage et la programmation de l'ESP01s je vous invite à lire avec attention mon article qui parle de ce microcontrôleur et c'est ICI. J'ai placé une diode 1N4007 ici car elle présente une chute de tension de 0,8V. Bien que l'ESP01s et le 8266 semblent supporter des tensions d'alimentation de 4,2V pas sur les broches digitales qui elles sont limitées à 3,6V sans problèmes, j'ai préféré ici lui fournir un courant plus proche des spécifications officielles. L'ESP01s est réputé pour fonctionner jusqu'à une tension basse de 2,5V. La diode permet donc une baisse de tension de l'accu 18650 jusqu'à environ 3,4V 4,2 - 0,8. Elle va me permettre également de faire des séries de mesures avec des tensions différentes car faire varier la tension d'alimentation avec un potentiomètre et/ou un transistor ne fonctionne pas. Le condensateur 1mF permet de stabiliser la tension de l'alimentation. Ce dernier est important sinon les mesures que nous allons relever seront tellement variables qu'elles deviennent inexploitables. Rapport entre tension mesurée et tension lue avec getVcc Nous allons regarder si nous pouvons faire un lien entre la tension mesurée sur la broche VIN et la tension retournée par le fonction getVcc. Pour cela j'ai réalisé une série de mesures durant tout le cycle de décharge de l'accu, en notant le résultat de la fonction getVcc ainsi que la mesure au voltmètre de la tension de la broche VIN. Ensuite, pour chaque mesure, j'ai calculé la différence des deux VIN - getVcc et le ratio VIN/getVcc. Et pour finir, j'ai réalisé ces mesures avec deux types de microcontrôleurs Avec un ESP01s dont la broche A0 est libre. Avec un NodeMCU ESP12e, dont la broche A0 est raccordée à un pont diviseur de tension. Ce qui signifie qu'elle n'est pas "libre" et donc que les résultats de la fonction getVcc seront faussés. Mais malgré tout, il se peut qu'une proportionnalité soit conservée et dans ce cas, en trouvant le bon coefficient, nous puissions retrouver la bonne valeur de VIN. L'ESP est alimenté par un accu 18650 chargé avec une tension à vide de 4,08V dans un premier temps j'ai enlevé la diode 1N4007. Une fois en charge la tension aux bornes de VIN est d'environ 3,94V nous verrons plus bas dans cet article pourquoi il y a cette différence entre tension à vide et tension de charge. Afin de stabiliser un peu la tension, j'ai placé un condensateur 1000µF entre les bornes VIN et GND. Tableau de mesures avec l'ESP01 Différence et ratio entre tension lue sur VIN et retournée par getVcc sur ESP01s En dessous de 1,93V sur la broche VIN, l'ESP a commencé à devenir instable. Ce qui est déjà remarquable car comme nous l'avons déjà évoqué, l'ESP8266 n'est reconnu pour fonctionner que jusqu'à une tension minimale de 2,5V. Nous pouvons constater que la différence de tension entre les deux mesures n'est pas stable. Par contre le ratio lui, reste plutôt constant. En faisant une moyenne des valeurs arrondies on obtient une valeur de 1,07. Ce qui signifie qu'en multipliant la valeur lue par getVcc par 1,07, nous pourrons avoir une bonne estimation de la tension VIN. Tableau de mesures avec le NodeMCU Différence et ratio entre tension sur VIN et retournée par getVcc sur NodeMCU Cette fois c'est en dessous de 2,65V sur la broche VIN, que l'ESP a commencé à devenir instable. La différence de tension entre les deux mesures VIN - getVcc n'est pas linéaire. Par contre le ratio lui, reste plutôt constant. En faisant une moyenne des valeurs arrondies on obtient une valeur de 1,42. Ce qui signifie qu'en multipliant la valeur lue par getVcc par 1,42, nous pourrons avoir une bonne estimation de la tension VIN. Toutefois il faudra prendre des précautions car étant donné la présence du pont diviseur de tension, je ne sais pas si ce ration sera généralisable. De plus, selon les mesures, il existe des différences importantes sur ce ratio. Il est de 1,51 pour 2,65V sur VIN et de 1,37 pour 3,585V. Ce qui signifie que même en appliquant un coefficient moyen de 1,42, nous aurons encore une imprécision de 5%. Programme utilisant getVcc Pour finir ce chapitre sur la mesure de la tension interne, voici un exemple de code tout simple qui réalise une lecture de la tension interne avec la fonction getVcc. Toutefois, vous remarquerez que si votre alimentation n'est pas parfaitement stabilisée, la fonction getVcc va présenter des sauts qui peuvent vite rendre toute utilisation difficile. Afin de lisser les lectures de la tension interne, j'ai réalisé un programme qui réalise plusieurs lectures et déduis une moyenne ainsi qu'une valeur médiane. Vous trouverez ce programme amélioré à la fin de l'article. /******************************************************************** * Test_ADC_getVCC * ================= * Ce programme est destiné à tout microcontroleur disposant d'un convertisseur ADC. * Il interroge l'ADC avec la fonction getVCC qui retourne la tension d'alimentation VCC * * Versions * ========== * 02/07/2019 - v1 Création * * c acampeaux *********************************************************************/ /*==================================================================== * Place de convertisseur ADC dans un mode de lecture interne * plutot que lecture d'une broche analogique. * ==================================================================*/ ADC_MODEADC_VCC; /*==================================================================== * CONSTANTES & VARIABLES * ==================================================================*/ String stNomProgramme = "Test_ADC_getVCC"; String stVersion = "v1"; /* Vitesse de transmission de la liaison série permet de lire les premiers caractères envoyés par l'ESP lorsqu'il démarre. */ long int liBauds = 74880; /* Variable pour compter le nombre d'affichage réalisé */ int iNombre = 0; /*==================================================================== * Fonction setup * Initialisation de la liaison série * ==================================================================*/ void setup { liBauds ; delay 100 ; String"\nInitialisation liaison serie a " + liBauds + " Bauds OK" ; stNomProgramme + " version " + stVersion ; } /*==================================================================== * Fonction loop * Appel de la fonction getVCC et affichage du résultat. * Attente de 5 secondes entre chaque lecture. ====================================================================*/ void loop { /* Lecture de la broche A0 */ int iVcc = String"Mesure num " + iNombre++ + " Valeur getVCC " + iVcc ; delay 5000 ; } Conclusions Nous avons vu dans ce chapitre comment lire la tension interne au microcontrôleur en utilisant la fonction getVcc. Nous avons vu que pour en déduire ma tension d'alimentation réelle aux bornes VIN, il fallait calibrer le composant afin d’obtenir un coefficient. Nous aurons donc la formuleTension_VIN = getVCC * Coef Sur les modèles ayant la broche A0 libre, comme les ESP01/ESP01s, ce coefficient est d'environ 7% Coef = Il est de 1,42 sur les NodeMCU. Toutefois, sur ces derniers, nous avons mesurer certains sauts dans ce coefficients qui génèrent pour certaines tensions des imprécisions de l'ordre de 5%. Ce niveau d’imprécision peut se révéler pénalisant pour une mesure fine de la tension. J'ai mesuré ce coeficient sur plusieurs modèles de microcontrôleurs à base d'ESP8266. Vous pouvez les utiliser tels quels mais n'hésitez pas à vérifier leur niveau de précision dans votre propre montage. Si vous obtenez une erreur de plus de 2% je vous conseille de refaire votre propre étalonnage en suivant la méthodologie que j'ai utilisé. Questions et réponses et trucs et astuces Ce dernier paragraphe va être l'occasion d'évoquer quelques petites choses diverses et variées dont un beau programme et une FAQ que je compléterai au fil du temps. Tension à vide et tension de charge Lorsqu'un microcontrôleur est alimenté par une pile, on pense souvent que sa tension de fonctionnement est celle que l'on a mesuré sur la pile à vide. J'ai fait cette erreur et j'ai du me creuser la tête pour comprendre. Je m'explique. J'ai pris un accu 18650 chargé et avant de l'utiliser j'ai mesuré la tension avec mon magnifique multimètre PM18C. J'ai mesuré une tension de 4,03V. Ensuite je réalise un montage tout simple j'alimente un NodeMCU ESP12E avec l'accu et je place le multimètre aux bornes VIN et GND. Et là à mon grand étonnement je ne retrouve pas les 4,03V mais je lis 3,96V. Je débranche et je retrouve une tension aux bornes de la pile lorsqu'elle n'est pas utilisée de 4,03V. A quoi est due cette différence ? En réalité toute pile ou accu contient un effet de résistance interne. Un peu comme s'il y avait une petite résistance dans l'accu entre les bornes qui induit une chute de tension. De plus, tout câble et toute connexion entre câbles peut présenter plus ou moins de résistance qui également produit une chute de tension. Nous pouvons donc dire que la tension délivrée par la pile quand elle est alimente un circuit est de V = Vp - Vr. Avec V = tension délivrée réellement Vp = tension de la pile hors montage. Vr = Tension de résistance du montage qui en réalité est la somme de la chute de tension due à la résistance interne de l'accu et la perte de tension du aux câblage. Pourquoi la chute de tension a lieu uniquement lorsque la pile est sollicitée ? Comme nous l'avons vu au début de cet article U = RI. Donc pour calculer Vr nous pouvons écrire Vr = R*I. Avec R = la résistance interne avec la résistance des câbles. I = le courant qui traverse le circuit. Nous voyons tout de suite que si I = 0 alors Vr = 0 => il n'y a pas de chute de résistance et donc la tension qui alimente le circuit est la tension aux bornes de la pile à vide. Mais si le microcontrôleur fonctionne, I ≠ 0 et dans ce cas Vr ≠ 0. Combien représente cette chute de tension ? La résistance interne d'un accu ou d'une pile dépend beaucoup du modèle. Dans mon cas, après avoir mesuré un courant de 68mA qui passait dans le circuit, j'ai pu calculer combien elle représente avec la formule R = V - Vp / I. Ce qui me donne environ 1,03 ce qui représente une perte de 0,07V. Dans un premier temps j'avais des mesures qui faisaient apparaître 10. Ce qui n'est pas "normal" pour un accu 18650. J'ai constaté que l'anomalie venait de connexions qui étaient mal réalisées. En rebranchant tout proprement j'ai pu arriver à ce résultat. Qu'est-ce que cela implique pour nos mesures ? Cette chute de tension est à connaitre lorsque l'on souhaite suivre la décharge d'un accu. Si nous partons d'une tension de pile mesurée hors montage, les premières mesures en fonctionnement vont faire apparaître une différence qui en réalité ne sera pas une anomalie mais bien un phénomène normal. Programme améliorer pour l'utilisation de getVcc Etant un ancien développeur j'aime bien écrire des programmes qui soient à la fois beaux à voir et en même temps qui ajoutent plein de fonctionnalités parfois inutiles. Mais dans le cas du programme ci-dessous, nous allons améliorer grandement l'utilisation de la fonction getVCC et cela va être très utile. La fonction getVCC présente parfois des sauts dans les valeurs qu'elle retourne. Par exemple sur 5 lectures successives nous pouvons lire 2500, 2502, 2700, 2500 et 2498. On voit tout de suite que la valeur 2700 est disproportionnée par rapport aux autres valeurs. Et si l'on fait une moyenne cette dernière va même modifier à elle seule cette moyenne de manière à fausser la mesure. Ainsi, si par exemple vous souhaitez déclencher une alerte sur la passage d'un seuil, ce saut de mesure peut déclencher l'alerte alors qu'il n'aurait pas lieu. Le programme ci-dessous donne un exemple de comment lisser les mesures prises pour avoir quelque chose d'acceptable. Il consiste à prendre plusieurs mesures et d'en calculer la moyenne en ayant exclus les deux extrêmes ainsi qu'extraire une valeur médiane. Dans mon expérience j'ai constaté que la médiane est en générale la valeur la plus proche de la réalité. /******************************************************************** * Test_ADC_getVCC-v3 * ================== * Ce programme est destiné à tout microcontroleur disposant d'un convertisseur ADC. * Il interroge l'ADC avec la fonction getVCC qui retourne la tension d'alimentation interne * * Versions * ========== * 02/07/2019 - v1 Création * 13/07/2019 - V2 Calcul d'une moyenne de plusieurs mesures pour chaque cycle. * 14/07/2019 - v3 Renomage et refonte du programme pour utiliser un tableau * afin de stocker, classer les valeurs de la tension et ne prendre que les valeurs * medianes. * * c acampeaux *********************************************************************/ /*==================================================================== * Place le convertisseur ADC dans un mode de lecture interne * plutot que lecture d'une broche analogique. * ==================================================================*/ ADC_MODEADC_VCC; /*==================================================================== * CONSTANTES & VARIABLES * ==================================================================*/ String stNomProgramme = "Test_ADC_getVCC"; String stVersion = "v2"; /* Constantes & variables pour le tableau de valeurs doit être supérieur à 3 */ define NB_VAL 11 int tiMesures[ NB_VAL ]; /* Constantes pour définir les temps d'attente entre deux mesures et deux cybles en ms */ define MESURE_DELAIS 50 define CYCLE_DELAIS 4000 int iNombreCycle = 0; /* Vitesse de transmission de la liaison série permet de lire les premiers caractères envoyés par l'ESP lorsqu'il démarre. */ long int liBauds = 74880; /*==================================================================== * Fonction setup * Initialisation de la liaison série * ==================================================================*/ void setup { liBauds ; delay 100 ; String"\nInitialisation liaison serie a " + liBauds + " Bauds OK" ; stNomProgramme + " version " + stVersion ; } /*==================================================================== * Fonction loop * Appel de la fonction getVCC pour NB_VAL lectures * Classe le tableau * Supprime les extreme * Calcul la moyenne. Affiche la moyenne et la mediane. * Attente entre chaque cycle. ====================================================================*/ void loop { /* realise le nb de mesures demandees avec delais entre chaque */ for int iCompteur = 0; iCompteur tiMesures[ j ]{ int iMem = tiMesures[ i ]; tiMesures[ i ] = tiMesures[ j ]; tiMesures[ j ] = iMem; } } /* recherche la médiane */ int iMediane = tiMesures[ int NB_VAL / + - 1 ]; /* calcul la moyenne sans les deux extremes */ float fMoyenne = for int i = 1; i < NB_VAL - 1; i++{ fMoyenne += tiMesures[ i ]; } fMoyenne = fMoyenne / NB_VAL - 2; /* Affichage et attente nouveau cycle */ String "Valeurs exclues " + tiMesures[ 0 ] + " " + tiMesures[ NB_VAL - 1 ] ; String"Mesure num " + iNombreCycle++ ; String" Valeur Mediane " + iMediane + " Valeur Moyenne " + intfMoyenne ; delay CYCLE_DELAIS ; } FAQ ou le petit jeu des questions Q et réponses R Q Est-ce que la connexion du microcontrôleur en USB au pont UART liaison série consomme de l'énergie ? R Oui. Un accu qui alimente le microcontrôleur se déchargera plus rapidement si ce dernier est connecté en liaison série. Q Quelle est la tension maximum applicable à VIN sur un ESP01? R L'ESP01 et ESP01s ne disposent pas de régulateurs de tension. Il est prévu pour fonctionner avec une tension entre [3V et 3,6V]. Mais il existe des marges de tolérance qui sont assez importantes. En ce qui me concerne, j'alimente avec des accu 4,2V et cela fonctionne parfaitement. Je déconseille d'aller au delà en 5V par exemple. Q Quelle est la tension maximum applicable à VIN sur un NodeMCU ? R Le NodeMCU ESP12e dispose d'un régulateur de tension NCP1117 sur la broche VIN capable de supporter jusqu'à 20V. Toutefois étant donné la quantité de chaleur qui serait à dissiper avec un tel niveau de tension, la puce va rapidement chauffer et brûler. Ce régulateur génère une chute de tension de 1,2V. Donc pour la stabilité du microcontrôleur évitez d'alimenter le NodeMCU en seulement 3,3V sur l'entrée VIN. Q Est-ce que les broches I/O des ESP8266 sont tolérantes à des tensions supérieures à 3,3V ? R Cette question anime de nombreux débats dans les forums. Un des plus actifs que j'ai trouvé est ICI. La réponse n'est pas encore tranchée de manière définitive. Le PDG d'Espressif, le constructeur de l'ESP, indique sur Facebook que "Je peux répondre officiellement ici il est 5V tolérant à l'IO si la tension d'alimentation est à 3,3 V". Malgré tout de nombreux utilisateurs ont montré des problèmes et des destructions de puces à cette tension. Pour ma part je dirais qu'il est préférable de se cantonner à la tension indiquée dans les spécifications techniques et qui vont de 1,8V à 3,6V pour un état "High" de la broche digitale. Les broches analogiques sont données pour une tolérance allant jusqu'à 3,6V. Q Est-ce que la consommation de courant augmente avec la tension? R Oui. Et cela peut devenir problématique en mode sommeil car cette augmentation est exponentielle à partir de 3,8V. Dans un ESP01, lorsque la tension approche 4,5V, le courant de veille augmente à environ 2,5 mA, soit environ 100 fois moins plus qu'a 3,3V où il est à 30µA. Soutenez la blogoculture ... Le plus simplement du monde, si vous avez un achat à faire sur Amazon, accédez au site à partir de ce lien que vous pouvez ajouter dans vos favoris Soutenez la blogoculture ... Le plus simplement du monde, si vous avez un achat à faire sur Amazon, accédez au site à partir de ce lien que vous pouvez ajouter dans vos favoris Vous appréciez les articles frais et vitaminés de ce blog et vous voulez faire un geste pour encourager ce partage, saluer le travail, ou parce que vous y avez trouvé des choses utiles et que vous êtes sympa ? ... c'est possible et vous avez le choix ! Si vous avez un compte Paypal et quelques euros à offrir sans vous mettre sur la paille, subventionnez la culture domotique à l'ancienne ! Economisez du blé avec Amazon Prime ! Offre d'essais 1 mois gratuit et renouvelable. Soyez chou et aidez les petits producteurs de blog à se faire connaitre auprès de vos amis facebook !
Cellesdu pont ne manquent pas de charge. Posté par Arnaud le 03/09/2016 à 21:41:14. Celles du pont ne manquent pas de charge. Posté par camille le le 03/09/2016 à 21:42:05 . Piles Ajouter une réponse. Votre message :: Votre prénom: Votre email:: A voir aussi : Lorraine et Brandon sont jumeaux. On la trouve dans la pensée du philosophe et du poète, J'ai Quand poser… ou ne pas poser un implant dentaire? Bien qu’on utilise le terme implant » pour décrire un implant dentaire et un implant d’ancrage temporaire mini-vis d’ancrage, ce sont des choses complètements différentes. Un implant dentaire est une forme de prothèse dentaire fixe qui vise à remplacer une ou plusieurs dents couronnes, ponts bridges ou supporter une prothèse amovible. Un tel implant est plus volumineux et doit rester en bouche de façon permanente » ou le plus longtemps possible a vie ». Cet implant doit idéalement être ostéo-intégré ce qui signifie qu’il y a une connexion structurelle et fonctionnelle directe entre l’os alvéolaire dans lequel il est inséré et la surface de l’implant dentaire ostéointégration. En d’autres mots, on vise à ce que l’implant soit collé » à l’os et s’y intègre. Un implant d’ancrage temporaire est une mini-vis utilisée de façon temporaire en orthodontie pour procurer de l’ancrage permettant de faire des déplacements dentaires qu’il serait autrement plus difficile ou même impossible à réaliser. Un tel implant ne demeure en bouche que pendant la durée où il est utile et est retiré par la suite. Ces implants d’ancrage sont plus petits et ne doivent pas s’ostéointégrer à l’os alvéolaire si on veut les enlever à la fin du traitement. Le fait qu’ils puissent être enlevés permet aussi de les retirer et les replacer ailleurs dans la bouche si leur position ne permet pas de déplacer les dents comme voulu l’implant d’ancrage peut empêcher le mouvement d’une racine par exemple. Bien qu’ils aient été conçus pour l’orthodontie spécifiquement plusieurs applications connexes ont été développées. Ainsi, il est possible de s’en servir pour y ajouter une dent prothétique temporaire dans certaines situations voir la section sur les mini-vis d’ancrage pour des exemples. Certains praticiens ont aussi commencé à utiliser ces implants pour supporter des prothèses amovibles partielles ou complètes mais cette application clinique est très controversée. Bref, la différence principale entre ces deux types d’implants est que l’implant dentaire est permanent et l’implant d’ancrage est temporaire. À noter que les coûts reliés leur pose sont aussi très différents, un implant dentaire coutant plus de 10 fois celui d’un implant d’ancrage selon les applications. Période idéale pour la pose d’un implant dentaire La règle générale pour la pose d’implants dentaires est d’attendre que la croissance des mâchoires soit terminée, particulièrement la croissance verticale. Vu que l’implant s’ostéo-itègre à l’os il ne bougera pas. Il est impossible de le déplacer en orthodontie et s’il reste de la croissance, les autres dents se déplaceront avec l’os qui croit mais pas l’implant qui lui et sa couronne restera immuable et dans la même position. Dépendamment de la quantité de croissance restante, cela peut causer un problème esthétique en changeant le niveau vertical des dents, particulièrement dans la région antérieure. L’implant peut être très solide et fonctionnel mais l’esthétique pas terrible ou même problématique comme illustré dans l’exemple ci-dessous. Il n’y a pas d’âge moyen pour envisager la pose d’implants dentaires car la fin de la croissance présente beaucoup de variations individuelles. Les filles terminent habituellement leur croissance avant les garçons mais il existe toujours des exceptions. Une fille pourrait avoir un implant à 16-17 ans si elle est précoce » ou rapide dans son développement tandis qu’un garçon pourrait ne pas être prêt à 21-22 ans s’il a une croissance tardive. De façon générale, il faut habituellement attendre au moins la fin de l’adolescence. La meilleure façon de vérifier que la croissance est terminée est de prendre des radiographies céphalométriques à une année d’intervalle et de les comparer. S’il n’y a aucun changement, la croissance est à toutes fins pratiques terminée. L’évaluation d’une radiographie des os du poignet peut aussi permettre d’évaluer l’âge squelettique et la croissance résiduelle des adolescents. Pour illustrer l’effet néfaste que peut avoir un implant posé trop tôt l’exemple suivant est celui d’un garçon de 12 ans qui a perdu son incisive centrale supérieure droite lors d’un traumatisme accident. Un implant dentaire fut alors posé. Le plan initial était qu’il soit retiré après quelques années mais le patient a déménagé et le suivi prévu par le dentiste n’a pas été fait. Au départ, toutes les dents antérieures étaient au même niveau et il y avait du surplomb entre les incisives supérieures et inférieures overbite. Avec les années et la croissance verticale, l’implant est demeuré au même niveau mais les autres dents ont commencé à descendre. Il s’en suivit l’apparition d’une béance antérieure et la musculature a poussé » ou déplacé les dents vers l’intérieur causant une occlusion croisée. Implant dentaire posé chez un adolescent et contribuant au développement d’une malocclusion avec la croissance résiduelle. Photos prises par le dentiste généraliste à l’âge de 12 ans A Après la perte de l’incisive centrale supérieur droite *. On peut voir que les incisives sont relativement bien positionnées et surplombent même légèrement les incisives inférieures, ce qui est normal. B Après la pose de l’implant dentaire flèche et de la couronne supportée par cet implant *. Le patient venait tout juste d’avoir 12 ans. Cette couronne est la même que celle dans les photos ci-dessous. A, B, C À l’age de 17 ans, 5 ans après qu’un implant dentaire * ait été posé pour remplacer une incisive centrale, un importante béance antérieure et constriction maxillaire se sont développées. Initialement, toutes les dents antérieures étaient en contact. D Radiographie montrant le niveau de l’implant * par rapport aux autres dents. Un tel implant ne peut être déplacé en orthodontie et il devra être retiré et remplacé ultérieurement une fois les corrections orthodontiques terminées. Concernant l’esthétique d’une canine en position canine ou qui remplace une latérale, il est certain que l’idéal, tant du point de vue fonctionnel qu’esthétique est d’avoir une canine dans sa position normale. Cependant, certaines caractéristiques d’un cas ou d’une malocclusion peuvent faire qu’il est logique, pratique et moins couteux de substituer une ou des latérales manquantes par des canines. Pour en savoir plus sur ce cas et les implants dentaires. tag implantMaisles cyclistes ne pourront emprunter le pont lui-même. "Cela n'a pas de sens, explique Vincent Sabatier, adjoint en charge du pôle
Les polémiques vont bon train sur les responsabilités dans l'écroulement du pont Morandi à Gênes, le symbole du "miracle économique" italien des années 1960. Avec une authentique fuite en avant du gouvernement populiste italien, aussi bien du côté du Mouvement 5 Etoiles M5S que de la Ligue. Le premier se concentre sur la menace de faire révoquer les concessions faites par l'Etat italien à des sociétés privées pour la gestion des autoroutes, ponts, viaducs et échangeurs qui constellent la péninsule et furent longtemps le symbole d'un "miracle" que le reste de l'Europe enviait à l'Italie. La seconde pointe de son côté Bruxelles et sa politique d'austérité, accusée d'empêcher les suite après la publicité Viaduc écroulé à Gênes la fuite en avant du Mouvement 5 Etoiles et de la Ligue "Cette fois, Matteo Salvini ne peut pas accuser les migrants. Alors il s'en prend à l'Europe", plaisantait un dessinateur humoristique ce vendredi matin. Le gouvernement populiste a-t-il raison de se défausser sur les acteurs privés et Bruxelles ? L'analyse de Marcello Clarich, professeur de droit administratif à l'université La Sapienza, à Rome. L'Etat italien, qui est propriétaire des autoroutes, a décidé à partir de 1999, d'en privatiser la gestion. Il menace aujourd'hui, par la voix du vice-président Luigi Di Maio de révoquer la concession qui fut faite à la société Autostrade per l'Italia, propriété de la famille Benetton. Est-ce possible ? Disons d'emblée que toute révocation implique une procédure longue et complexe qui ne se résout pas en quelques déclarations à la télévision. Et que si elle est possible, ce n'est pas pour demain. Parce qu'elle serait consécutive à une vérification attentive réalisée par les experts, ingénieurs et spécialistes en sécurité de l'Etat italien, soumise ensuite à l'examen contradictoire des experts de la société Autostrade per l' suite après la publicité Ce n'est qu'au terme de ce double contrôle qu'une révocation deviendrait possible, lorsqu'il aura été établi s'il s'est agi d'un défaut structurel auquel cas, c'est l'Etat qui est responsable, puisqu'il est propriétaire ou d'un défaut de manutention et alors ce sont les gestionnaires qui portent la responsabilité du désastre. On pourrait même arriver à la conclusion qu'ils sont tous les deux responsables, l'un par manque de manutention, l'autre par manque de contrôle sur la manutention car le ministère des Transports est chargé de vérifier que tout procède selon les règles. N'oublions pas non plus qu'une révocation, c'est extrêmement coûteux. Dans le cas de Autostrade per l'Italia, on estime qu'elle pourrait atteindre 18 à 20 milliards d'euros. Ma conclusion est que l'exécutif au pouvoir n'a aucun intérêt à aller dans ce sens, et que le scénario imaginé par le M5S n'est pas réaliste. Que conviendrait-il de faire en priorité après cette catastrophe ? Il faudrait que le ministère se lance dans une vérification approfondie de l'ensemble des concessions faites à des sociétés privées depuis près de vingt ans il n'y a pas que Autostrade per l'Italia sur le marché. Avec une armée de techniciens, ingénieurs, experts en sécurité et avec le concours des sociétés qui ont obtenu ces concessions. Cela requiert du temps, des investissements, et un vrai engagement. Loin des formules à l' suite après la publicité L'impression qu'ont de nombreux observateurs est que les réactions gouvernementales, surtout celles du Mouvement 5 Etoiles, laissent entrevoir une phase de désindustrialisation, de rejet de la modernité pour ce pays. Oui, c'est la triste impression que nous avons tous ce gouvernement risque de freiner l'industrialisation et le développement du pays. Car il n'y a pas que Autostrade per l'Italia, mais aussi le site d'Ilva, à Tarente, la plus grande aciérie d'Europe, que le Mouvement 5 Etoiles pourrait préférer fermer, mettant au chômage personnes, au nom de la lutte contre la pollution. Il y a le TAV, train à grande vitesse entre Lyon et Turin, sur lequel il freine, et le gazoduc depuis l'Azerbaïdjan, et enfin la compagnie aérienne Alitalia, que le M5S pourrait vouloir renationaliser avec des coûts stratosphériques… Mais pour le moment, ce ne sont que des paroles en l'air. Attendons de voir les faits avant de juger. Il y a enfin l'autre grand bouc émissaire de l'accident de Gênes, pointé du doigt par Matteo Salvini cette fois il ne s'agit plus des concessions, mais de l'Europe. Bruxelles qui selon lui, en voulant contenir à l'extrême le déficit du budget de l'Etat, a empêché d'investir dans les contrôles des infrastructures… Et de réclamer un "plan Marshall européen" pour faire face à de possibles nouveaux désastres… Ce n'est pas sérieux. Il suffit de lire la réponse du commissaire Günther Oettinger, qui a rappelé qu'en sept ans, l'Union européenne a versé à l'Italie 14,5 milliards d'euros de contributions pour l'aider à moderniser son réseau… Je pense personnellement que pour l'UE, les limitations des budgets nationaux ne s'appliquent pas aux investissements dans les infrastructures. Je me répète tout cela n'est pas suite après la publicité Quelle peut être la crédibilité internationale d'un exécutif de ce genre ? Le bond du "spread", cette différence entre les bons du Trésor italien et ceux du Trésor allemand, nous a déjà donné la réponse au niveau international, les marchés n'ont pas confiance dans l'exécutif. Propos recueillis par Marcelle Padovani
ouiils ont une petite vie de 4 à 5 ans et c'est se qu'il avait il nous reste notre fifille, elle a 3 ans je Par ♪ ♫ Daddy ♫ ♪, le 16.03.2022 coucou mon dédé bravo pour ta bonne réponse du petit jeu ici aussi parait qu'on va avoir du sable du sahara Par ♪ ♫ Daddy ♫ ♪, le 16.03.2022. Voir plus Chargé / Chargée de mission marketing35k € a 40k €/an ...optimisation des investissements et de fidélisation de l'enseigne. Vos missions principales sont les suivantes 1 Garantir la fiabilité et la mise... STAGE - Chargé de Mission en Ingénierie Pédagogique H/F ...notre Direction Stratégie Data & Performance, une stagiaire Chargé de mission en Ingénierie Pédagogique H/F. Sous la responsabilité d’un Chef de... Chargé / Chargée de mission QSE BTP ...référencés en particulier des produits à marque principales missions sont de - rédiger les cahiers des charges techniques des produits... STAGE - Chargé de Missions Marketing H/F ...Direction du Développement des Ventes une stagiaire Chargée de Missions Marketing pour notre service Enseigne HYPER. Dans le cadre du déploiement... Groupement Les MousquetairesAssistant Commercial Promotion H/F ...meilleur prix pour équiper leur habitat dans le respect de l'environnement... ...des plannings publi promo. Vos missions ? - Participer aux Commissions Achats... Groupement Les MousquetairesResponsable Habitat H/F ...est le 1er Opérateur Global de l'Habitat indépendant. Avec un chiffre d... ...des partenaires du territoire. MISSIONS Manager les équipes terrain -... CHARGÉ DE MISSION HABITAT H/F ...et essentiel à l'évolution de l'habitat dans ces quartiers, elle est également... ...l'ANRU recherche un Chargée de mission habitat H/F - Poste accessible... ANRU - Agence Nationale pour la Rénovation UrbaineChargé de Planification Immobilier Tertiaire H/F ...territoire, sont sur tous les fronts ! Mission Participe et suit la mise en... ...de quartiers ; zones d'habitation, de construction de logements.... Groupement Les MousquetairesResponsable Habitat F/H45k €/an ...-Marne située à Alfortville, une Responsable Habitat en CDI Dans le cadre de vos missions, vous garantissez la qualité des prestations de proximité... Alfortville, Val-de-MarneResponsable Habitat H/F ...-Marne située à Alfortville, une Responsable Habitat en CDI Dans le cadre de vos missions, vous garantissez la qualité des prestations de proximité... Alfortville, Val-de-MarneChargée de missions Habitat H/F ...requalification de l’habitat privé en France... ...établissements publics, des missions d’études et de... ...leur terme, il y a des habitants qui vivent dans des... Gestionnaire Habitat H/F ...est le 1er Opérateur Global de l'Habitat indépendant. Avec un chiffre d... ...terrain et le Responsable Habitat. MISSIONS Assurer les actes... Électrotechnicien H/F ...Électrotechnicien H/F . Vos principales missions seront - Réaliser des travaux... ...de gestion automatisé de l'habitation domotique ou un réseau de... Chef de Marche H/F ...leur apportant le meilleur conseil, au meilleur prix pour équiper leur habitat dans le respect de l'environnement. Et les projets ne manquent pas pour... Groupement Les MousquetairesTechnico - Commercial - Secteur Habitat H/F42k € a 52k €/an ...de confort et de sécurité pour l'Habitat. Créée il y a maintenant 7 ans, Mistermenuiserie... ...clients. Vous aurez pour mission de vendre nos gammes de produits,... CHARGE DE MISSION HABITAT LOGEMENT H/F ...est intégrer une administration de mission innovante, dynamique et agile... ...intercommunalité de 7,2 millions d’habitants qui regroupe 131 communes et 11 établissements... de mission Habitat ...Votre mission principale le développement du... ...politique territoriale de l’Habitat pilotée par Est... ...Commune de 30 000 habitants située à proximité de... Romainville, Seine-Saint-DenisCHARGEE DE MISSION FONCIER ET HABITAT - H/F ...travailler pour une population de 86 000 habitants sur un territoire de 2618... ...COMMERCE ET DU TOURISME CHARGEE DE MISSION FONCIER ET HABITAT - H/F Cadre... INGÉNIEUR TECHNICO-COMMERCIAL H/F ... Vous souhaitez élargir vos missions et évoluer dans un environnement... ...INGREDIENTS SALES CHARCUTERIE Vous habitez en région parisienne / Centre... CHARGE DE MISSION HABITAT LOGEMENT H/F15k €/an ...est intégrer une administration de mission innovante, dynamique et agile... ...intercommunalité de 7,2 millions d’habitants qui regroupe 131 communes et 11 établissements...