{"id":832,"date":"2018-11-19T21:18:48","date_gmt":"2018-11-20T02:18:48","guid":{"rendered":"https:\/\/espacerm.com\/webgen\/?page_id=832"},"modified":"2019-03-15T21:55:46","modified_gmt":"2019-03-16T02:55:46","slug":"controleur-multifonctionnel-elabore-autour-du-esp32-devkit-v1-doit-suite2","status":"publish","type":"page","link":"https:\/\/espacerm.com\/webgen\/controleur-multifonctionnel-elabore-autour-du-esp32-devkit-v1-doit-suite2\/","title":{"rendered":"Contr\u00f4leur multifonctionnel \u00e9labor\u00e9 autour du ESP32 DEVKIT V1 DOIT (2 de 4)"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Le programme<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/DSC_2802.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"684\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/DSC_2802-1024x684.jpg\" alt=\"\" class=\"wp-image-1132\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/DSC_2802-1024x684.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/DSC_2802-300x200.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/DSC_2802-768x513.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/DSC_2802.jpg 1618w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p>Nous sommes rendus \u00e0 l&rsquo;\u00e9tape de l&rsquo;implantation du programme.<\/p>\n\n\n\n<p>Avant m\u00eame de fixer le ESP32 DEVKIT V1 DOIT sur la carte vous pouvez transf\u00e9rer le programme sur le module en le reliant \u00e0 l&rsquo;ordinateur par la prise USB du module. Cela valide son bon fonctionnement et il sera pr\u00e9configur\u00e9, compatible \u00e0 l&rsquo;environnement pour lequel vous souhaitez l&rsquo;installer.<\/p>\n\n\n\n<p>Le programme pr\u00e9sent\u00e9 a deux fonctionnalit\u00e9s :<\/p>\n\n\n\n<ul><li>Faire clignoter, aux secondes, la DEL bleue.<\/li><li>&nbsp;Afficher, par l&rsquo;entremise du port s\u00e9rie, les donn\u00e9es sur le voltage d&rsquo;alimentation relier \u00e0 la borne D35 (GPIO35). Ces informations seront accessibles sur le <a href=\"http:\/\/www.mon-club-elec.fr\/pmwiki_reference_arduino\/pmwiki.php?n=Main.DebuterPresentationLogiciel\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"terminal s\u00e9rie de l'IDE ARDUINO (ouverture dans un nouvel onglet)\">terminal s\u00e9rie de l&rsquo;IDE ARDUINO<\/a>. Activation : menu \u00abOutils\u00bb -&gt; \u00abMoniteur s\u00e9rie\u00bb.<\/li><\/ul>\n\n\n\n<p>Sur le sch\u00e9ma d&rsquo;assignation des broches, le GPIO35 correspond \u00e0 l&rsquo;entr\u00e9e du convertisseur Analogique\/Digital #1 canal #7 -&gt; ADC1CH7<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/BON-ESP32-DOIT-DEVKIT-V1-Board-Pinout-36-GPIOs-Copy-1.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"964\" height=\"696\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/BON-ESP32-DOIT-DEVKIT-V1-Board-Pinout-36-GPIOs-Copy-1.jpg\" alt=\"\" class=\"wp-image-169\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/BON-ESP32-DOIT-DEVKIT-V1-Board-Pinout-36-GPIOs-Copy-1.jpg 964w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/BON-ESP32-DOIT-DEVKIT-V1-Board-Pinout-36-GPIOs-Copy-1-300x217.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/BON-ESP32-DOIT-DEVKIT-V1-Board-Pinout-36-GPIOs-Copy-1-768x554.jpg 768w\" sizes=\"(max-width: 964px) 100vw, 964px\" \/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">La DEL bleue<\/h3>\n\n\n\n<p>Sur la plaquette, une DEL bleue est reli\u00e9e sur le circuit de la broche GPIO33. Elle suit son \u00e9tat : HAUT-&gt; allum\u00e9e; BAS-&gt;\u00e9teinte.<\/p>\n\n\n\n<p>La constante de type enti\u00e8re <em>DelBleue&nbsp;<\/em>correspond au num\u00e9ro de GPIO connect\u00e9 avec la DEL.<br><em>&nbsp; &nbsp; &nbsp;const int DelBleue = 33;<\/em><\/p>\n\n\n\n<p>D\u00e9finition du GPIO33 en sortie<br><em>&nbsp; &nbsp; pinMode(DelBleue, OUTPUT);<\/em><\/p>\n\n\n\n<p>Allumer la DEL<br><em>&nbsp; &nbsp; digitalWrite(DelBleue, HIGH);&nbsp;<\/em><\/p>\n\n\n\n<p>\u00c9teindre la DEL<br><em>&nbsp; &nbsp;digitalWrite(DelBleue, LOW);<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La mesure du voltage d&rsquo;entr\u00e9e<\/h3>\n\n\n\n<p>Le module ESP32 DEVKIT V1 poss\u00e8de 16 entr\u00e9es reli\u00e9es \u00e0 des convertisseurs analogique \u00e0 num\u00e9rique (CAN) ou&nbsp;ADC en anglais (Analog to Digital Converter).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"471\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/adc_sampling_01-1024x471.jpg\" alt=\"\" class=\"wp-image-1055\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/adc_sampling_01-1024x471.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/adc_sampling_01-300x138.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/adc_sampling_01-768x353.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/adc_sampling_01.jpg 1252w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption><a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=Z-sDHDI6FFY&amp;t=0s&amp;list=PLrfG_Hi1Epg6bXSIpYItZws7B8rPCz8aW&amp;index=21\" target=\"_blank\">Voir la vid\u00e9o de NTS sur YouTube<\/a><\/figcaption><\/figure>\n\n\n\n<p>Le GPIO35 est attribu\u00e9 pour la mesure du voltage d&rsquo;alimentation d&rsquo;entr\u00e9e. Il correspond \u00e0 la variable&nbsp;ADC1_CHANNEL_7 du pilote adc.h que nous incluons dans le programme.&nbsp;<br><em>&nbsp; &nbsp; #include &lt;driver\/adc.h&gt;<\/em><\/p>\n\n\n\n<p><strong>D\u00e9finition de la r\u00e9solution du convertisseur&nbsp;<\/strong><\/p>\n\n\n\n<p>Avec une r\u00e9solution de 12 bits, le signal analogique est \u00e9valu\u00e9 selon 4096 niveaux possibles (2 exposant 12), de 0 \u00e0 4095. Comparativement, pour <a href=\"https:\/\/www.carnetdumaker.net\/articles\/la-conversion-analogique-numerique-avec-arduino-genuino\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Avec une r\u00e9solution de 12 bits, le signal analogique est \u00e9valu\u00e9 selon 4096 niveaux possibles (2 exposant 12), de 0 \u00e0 4095. Comparativement, pour une r\u00e9solution de 10 bits (comme dans les cartes ARDUINO) le signal est \u00e9valu\u00e9 selon 1024 niveaux, 0 \u00e0 1023. Dans le ESP32 la r\u00e9solution est d\u00e9finie comme la largeur de bits \u00abWIDTH_BIT\u00bb.\n&nbsp; &nbsp;adc1_config_width(ADC_WIDTH_BIT_12); (ouverture dans un nouvel onglet)\">une r\u00e9solution de 10 bits (comme dans les cartes ARDUINO)<\/a> le signal est \u00e9valu\u00e9 selon 1024 niveaux, 0 \u00e0 1023. Dans le ESP32 la r\u00e9solution est d\u00e9finie comme la largeur de bits \u00abWIDTH_BIT\u00bb.<br>&nbsp; &nbsp;<em>adc1_config_width(ADC_WIDTH_BIT_12);<\/em><\/p>\n\n\n\n<p><strong>D\u00e9finition de l&rsquo;att\u00e9nuation<\/strong><\/p>\n\n\n\n<p>Sans att\u00e9nuation, le signal d&rsquo;entr\u00e9e au niveau du GPIO doit se situer entre 0 et 1,1 volt (att\u00e9nuation de 0DB).&nbsp; Si un voltage d&rsquo;entr\u00e9e sup\u00e9rieur est \u00e0 mesurer, un att\u00e9nuateur programmable dans le ESP32 peut \u00eatre activ\u00e9. Les choix possibles sont : 0 dB; 2,5 dB; 6 dB; 11 dB&nbsp;<\/p>\n\n\n\n<p>Lorsque VDD_A est 3,3V (comme dans le ESP32 DEVKIT V1 DOIT) les limites sont:<\/p>\n\n\n\n<ul><li>Att\u00e9nuation: 0dB (ADC_ATTEN_DB_0) tension \u00e0 pleine \u00e9chelle de 1,1 <\/li><li>Att\u00e9nuation: 2,5dB (ADC_ATTEN_DB_2_5) tension \u00e0 pleine \u00e9chelle de 1,5V<\/li><li>Att\u00e9nuation: 6dB (ADC_ATTEN_DB_6) tension \u00e0 pleine \u00e9chelle de 2,2V<\/li><li>Att\u00e9nuation: 11dB (ADC_ATTEN_DB_11) tension \u00e0 pleine \u00e9chelle de 3,9V<\/li><\/ul>\n\n\n\n<p>Remarque :&nbsp;Avec une att\u00e9nuation de 11 dB, la tension maximale est limit\u00e9e par VDD_A et non par la tension \u00e0 pleine \u00e9chelle. Donc 3,3V pour notre application.<\/p>\n\n\n\n<p>Remarque :&nbsp;La tension \u00e0 pleine \u00e9chelle est la tension correspondante \u00e0 une lecture maximale. En fonction de la largeur en bits configur\u00e9e par ADC1, la valeur retourn\u00e9e par l&rsquo;ADC est la suivante: <strong>4095 pour 12 bits<\/strong>, 2047 pour 11 bits, 1023 pour 10 bits, 511 pour 9 bits.<\/p>\n\n\n\n<p>Un autre fait important est que la lin\u00e9arit\u00e9 du convertisseur sur l&rsquo;ensemble de son \u00e9chelle diff\u00e8re selon le choix de l&rsquo;att\u00e9nuation. Vous trouverez <a href=\"https:\/\/www.youtube.com\/watch?v=RlKMJknsNpo&amp;t=349s&amp;index=13&amp;list=PLrfG_Hi1Epg6bXSIpYItZws7B8rPCz8aW\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Un autre fait important est que la lin\u00e9arit\u00e9 du convertisseur sur l'ensemble de son \u00e9chelle diff\u00e8re selon le choix de l'att\u00e9nuation. Vous trouverez ici de bonnes explications sur la pr\u00e9cision des mesures du ESP32. (ouverture dans un nouvel onglet)\">ici<\/a> de bonnes explications sur la pr\u00e9cision des mesures du ESP32.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/linearite_ESP32_00.jpg\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"619\" src=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/linearite_ESP32_00-1024x619.jpg\" alt=\"\" class=\"wp-image-992\" srcset=\"https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/linearite_ESP32_00-1024x619.jpg 1024w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/linearite_ESP32_00-300x181.jpg 300w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/linearite_ESP32_00-768x464.jpg 768w, https:\/\/espacerm.com\/webgen\/wp-content\/uploads\/2018\/11\/linearite_ESP32_00.jpg 1309w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption><a rel=\"noreferrer noopener\" aria-label=\"Tir\u00e9 du vid\u00e9o de G6EJD (ouverture dans un nouvel onglet)\" href=\"https:\/\/www.youtube.com\/watch?v=RlKMJknsNpo&amp;t=349s&amp;index=13&amp;list=PLrfG_Hi1Epg6bXSIpYItZws7B8rPCz8aW\" target=\"_blank\">Voir la vid\u00e9o de G6EJD sur YouTube<\/a><\/figcaption><\/figure>\n\n\n\n<p>Donc, en raison des caract\u00e9ristiques de l&rsquo;ADC, les r\u00e9sultats les plus pr\u00e9cis sont obtenus dans les plages de tension approximatives suivantes:<\/p>\n\n\n\n<ul><li>0dB d&rsquo;att\u00e9nuation (ADC_ATTEN_DB_0) entre 100 et 950mV (0,10 et 0,95 V)<\/li><li>2.5dB d&rsquo;att\u00e9nuation (ADC_ATTEN_DB_2_5) entre 100 et 1250mV (0,10 et 1,25 V)<\/li><li>6dB d&rsquo;att\u00e9nuation (ADC_ATTEN_DB_6) entre 150 et 1750mV (0,15 et 1,75 V)<\/li><li>11dB d&rsquo;att\u00e9nuation (ADC_ATTEN_DB_11) entre 150 et 2450mV (0,15 et 2,5 V)<\/li><li><\/li><\/ul>\n\n\n\n<p>Le montage du d\u00e9clencheur est pr\u00e9vu pour une tension d&rsquo;alimentation entre 3.3 et 12,6 volts. Pour m&rsquo;assurer de&nbsp;travailler dans la plage lin\u00e9aire de la courbe, j&rsquo;ai choisi l&rsquo;att\u00e9nuation de 11 dB.&nbsp; Le voltage maximum que je peux pr\u00e9sent\u00e9 \u00e0 l&rsquo;entr\u00e9e est 2,45 V. Donc, avec le diviseur de tension con\u00e7u (100K ohms &#8211; 22 Kohms), je reste en dessous de 2,45 V ( 2,27V calcul\u00e9 pour 12,6V d&rsquo;alimentation \u00abVb = 12,6*((22\/(100+22))\u00bb). Pour 3V, j&rsquo;aurais 0,6V au GPIO, je reste dans la zone de lin\u00e9arit\u00e9 du convertisseur.<\/p>\n\n\n\n<p><strong>Commande du r\u00e9glage de l&rsquo;att\u00e9nuation<\/strong><br><em>&nbsp; &nbsp;adc1_config_channel_atten(ADC1_CHANNEL_7,ADC_ATTEN_DB_11)<\/em><\/p>\n\n\n\n<p><strong>Lecture de la valeur num\u00e9rique \u00e0 la sortie du convertisseur ADC<\/strong><br><em>&nbsp; &nbsp; adc1_get_raw(ADC1_CHANNEL_7) <\/em>ou<em> analogRead(35) <\/em>est \u00e9quivalent<\/p>\n\n\n\n<p>La lecture du canal 7 est transf\u00e9r\u00e9e dans la variable de type enti\u00e8re \u00abdigitalValueVoltAlimCtrl\u00bb. La donn\u00e9e est un nombre entre 0 et 4095 selon le voltage \u00e0 l&rsquo;entr\u00e9e du convertisseur et de la valeur de l&rsquo;att\u00e9nuation configur\u00e9e.<br>&nbsp; <em>int digitalValueVoltAlimCtrl = analogRead(35);<\/em><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Conversion de la valeur lue&nbsp;en son \u00e9quivalent en voltage&nbsp;<\/h4>\n\n\n\n<p>La valeur entre 0 et 4095 est convertie en son \u00e9quivalent en voltage<\/p>\n\n\n\n<p>Pour ce faire, on applique simplement la r\u00e8gle de trois; on multiplie la valeur lue par la tension pleine \u00e9chelle et on divise par la valeur num\u00e9rique maximum selon la r\u00e9solution. La tension pleine \u00e9chelle est fonction de l&rsquo;att\u00e9nuation. La r\u00e9solution est fonction du&nbsp;\u00abWIDTH_BIT\u00bb. Comme la valeur r\u00e9sultante comporte des d\u00e9cimales, elle sera enregistr\u00e9e dans une variable de type \u00abvirgule-flottante\u00bb. Si la valeur lue est 2047, que l&rsquo;att\u00e9nuation est de 11 dB et que la r\u00e9solution est 12 bits, 4096 niveaux =&gt; 2047*3.9\/4095 =1,95. Le voltage \u00e0 l&rsquo;entr\u00e9e GPIO est 1,95V&nbsp; la moiti\u00e9 de 3,9V.&nbsp;<\/p>\n\n\n\n<p><em>&nbsp; &nbsp; float vpeDvValmx_0DB&nbsp; &nbsp; &nbsp; &nbsp;= 1.1\/4095;<br>&nbsp; &nbsp; float vpeDvValmx_2_5DB&nbsp; &nbsp;= 1.5\/4095;<br>&nbsp; &nbsp; float vpeDvValmx_6DB&nbsp; &nbsp; &nbsp; &nbsp;= 2.2\/4095;<br>&nbsp; &nbsp; float vpeDvValmx_11DB&nbsp; &nbsp; = 3.9\/4095;&nbsp;<\/em><br>&nbsp;<br>&nbsp; &nbsp;<em>float VoltAlimCtrlReduit = digitalValueVoltAlimCtrl *&nbsp; vpeDvValmx_11DB<\/em><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Calcul de pr\u00e9cision<\/h4>\n\n\n\n<p>Si l&rsquo;att\u00e9nuation est 11dB et que la r\u00e9solution est de 12 bits nous avons avantage \u00e0 employer la m\u00e9thode par \u00e9quation polynomiale propos\u00e9e par G6EJD (David Bird) dans son vid\u00e9o. La pr\u00e9cision du calcul sera \u00e0 1% pr\u00e8s.<\/p>\n\n\n\n<p><em>float reading = analogRead(35);<\/em><\/p>\n\n\n\n<p><em>float VoltAlimCtrlReduitTrtPolyn = -0.000000000000016 * pow(reading,4) + 0.000000000118171 * pow(reading,3)- 0.000000301211691 * pow(reading,2)+ 0.001109019271794 * reading + 0.034143524634089;<\/em><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Le voltage d&rsquo;alimentation<\/h4>\n\n\n\n<p>Nous cherchons la valeur du voltage d&rsquo;alimentation qui passe \u00e0 travers le diviseur de tension avant d&rsquo;arriver sur le GPIO. Le voltage lu est une valeur r\u00e9duite du voltage d&rsquo;alimentation. Nous devons multiplier le voltage lu par l&rsquo;inverse du facteur de r\u00e9duction.&nbsp; <\/p>\n\n\n\n<p>Selon les formules pour le <a rel=\"noreferrer noopener\" aria-label=\"Formule pour le diviseur de tension&nbsp;  (ouverture dans un nouvel onglet)\" href=\"https:\/\/espacerm.com\/webgen\/le-diviseur-de-tension-resistif\/\" target=\"_blank\">diviseur de tension<\/a>&nbsp; <br>&nbsp; &nbsp; Vb = Vs * Rb\/(Ra+Rb)<br>&nbsp; &nbsp; Vs = Vb * ((Ra+Rb)\/Rb)<br>&nbsp; &nbsp; Valimentation = Voltage lu * ((100000+22000)\/22000)<\/p>\n\n\n\n<p>&nbsp; <em>&nbsp; VoltMesure = VoltAlimCtrlReduit* 122\/22;<\/em><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Calibration de la lecture en fonction du jeu de r\u00e9sistances du diviseur de tension<\/h4>\n\n\n\n<p>Comme le jeu de r\u00e9sistances n&rsquo;est pas pr\u00e9cis\u00e9ment 100K et 22K, il y a 5% de tol\u00e9rance, il faut multiplier le voltage calcul\u00e9 par un facteur de correction. Je mets \u00e0 1 au d\u00e9part comme facteur de correction. Des mesures prises \u00e0 la source, aux bornes du terminal bleu, avec un voltm\u00e8tre pr\u00e9ciseront le facteur r\u00e9el. Lors de la calibration, j&#8217;emploie une source d&rsquo;alimentation stable ayant une tension autour de 8 volts. Une <a href=\"https:\/\/espacerm.com\/webgen\/attention-aux-piles-lipo\/\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"Comme le jeu de r\u00e9sistances n'est pas pr\u00e9cis\u00e9ment 100K et 22K, il y a 5% de tol\u00e9rance, il faut multiplier le voltage calcul\u00e9 par un facteur de correction. Je mets \u00e0 1 au d\u00e9part comme facteur de correction. Des mesures prises \u00e0 la source, aux bornes du terminal bleu, avec un voltm\u00e8tre pr\u00e9ciseront le facteur r\u00e9el. Lors de la calibration, j'emploie une source d'alimentation stable ayant une tension autour de 8 volts. Une pile Lipo 2S va tr\u00e8s bien pour la calibration. (ouverture dans un nouvel onglet)\">pile Lipo<\/a> 2S va tr\u00e8s bien pour la calibration.<\/p>\n\n\n\n<p><em>&nbsp; &nbsp; &nbsp;float calibrationDiviseurTSN = 1;<br>&nbsp; &nbsp; &nbsp;float calibrationDiviseurTsnTrtPolyn = 1;<\/em><\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;<em>calibrationDiviseurTSN = Voltage r\u00e9el au voltm\u00e8tre\/VoltMesure;<\/em><\/p>\n\n\n\n<p><em>&nbsp; &nbsp; &nbsp;float calibrationDiviseurTSN = 7.99\/8.70;<br>&nbsp; &nbsp; &nbsp;float calibrationDiviseurTsnTrtPolyn = 7.99\/8.07;<\/em><\/p>\n\n\n\n<p><em>&nbsp; &nbsp; &nbsp;VoltMesure = VoltMesure * <\/em>calibrationDiviseurTSN<em>;&nbsp; <br>&nbsp; &nbsp; &nbsp;VoltMesure = VoltMesure *&nbsp;<\/em>calibrationDiviseurTSN<em>TrtPolyn;<\/em><\/p>\n\n\n\n<p>Le deuxi\u00e8me calcul sera plus proche de la valeur r\u00e9elle du voltage.<\/p>\n\n\n\n<p><a href=\"https:\/\/espressif-docs.readthedocs-hosted.com\/projects\/esp-idf\/en\/v2.1.1\/api-reference\/peripherals\/adc.html\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"R\u00e9f\u00e9rence 1 pour la conversion Analog\/Digital (ouverture dans un nouvel onglet)\">R\u00e9f\u00e9rence 1 pour la conversion Analog\/Digital<\/a><\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" aria-label=\"R\u00e9f\u00e9rence 2 pour la conversion Analog\/Digital (ouverture dans un nouvel onglet)\" href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/api-reference\/peripherals\/adc.html\" target=\"_blank\">R\u00e9f\u00e9rence 2 pour la conversion Analog\/Digital<\/a><\/p>\n\n\n\n<p><strong>T\u00e9l\u00e9chargement :<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/rcepmorel\/Declencheur-Appareil_Photo_00\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\" (ouverture dans un nouvel onglet)\">https:\/\/github.com\/rcepmorel\/Declencheur-Appareil_Photo_00<\/a><\/p>\n\n\n\n<p><strong>Declencheur-Appareil_Photo_00.ino<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/*D\u00c9CLENCHEUR D'APPAREIL PHOTO ET DE FLASHS\n* \n* Auteur : Richard Morel\n*     2018-11-09\n* \n* Modification\n*     2018-11-17\n*     - Mesure du voltage d'entr\u00e9e\n*     - Ajout du clignotement de la DEL Bleu\n*       Reli\u00e9 sur la broche D33\n*     \n*\/\n\nconst int DelBleue = 33; \/\/ DEL bleue reli\u00e9e au GPIO33\n\n\/\/ R\u00e9f\u00e9rences pour la conversion Analog\/Digital\n\/\/ https:\/\/espressif-docs.readthedocs-hosted.com\/projects\/esp-idf\/en\/v2.1.1\/api-reference\/peripherals\/adc.html\n\/\/ https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/api-reference\/peripherals\/adc.html\n#include &lt;driver\/adc.h>   \n\/\/ADC1_CHANNEL_7 D35 35\n\n  \/\/ La tension pleine \u00e9chelle par d\u00e9faut du CAD (ADC) est 1,1 V\n  \/\/ Pour lire des tensions plus \u00e9lev\u00e9es (jusqu\u2019\u00e0 la tension maximale de la broche, g\u00e9n\u00e9ralement 3,3 V), \n  \/\/ vous devez r\u00e9gler une att\u00e9nuation du signal> 0 dB pour le canal du CAD quand VDD_A est 3.3V:\n  \/\/ Une att\u00e9nuation de 0 dB (ADC_ATTEN_0db) donne une tension \u00e0 pleine \u00e9chelle de 1,1 V\n  \/\/ Une att\u00e9nuation de 2,5 dB (ADC_ATTEN_2_5db) donne une tension \u00e0 pleine \u00e9chelle de 1,5 V\n  \/\/ Une att\u00e9nuation de 6 dB (ADC_ATTEN_6db) donne une tension \u00e0 pleine \u00e9chelle de 2,2 V\n  \/\/ Une att\u00e9nuation de 11 dB (ADC_ATTEN_11db) donne une tension \u00e0 pleine \u00e9chelle de 3,9 V (voir la remarque ci-dessous)\n  \/\/ La tension \u00e0 pleine \u00e9chelle est la tension correspondant \u00e0 une lecture maximale\n  \/\/ Remarque : \u00e0 11 dB d'att\u00e9nuation, la tension maximale est limit\u00e9e par VDD_A, et non par la tension \u00e0 pleine \u00e9chelle.\n  \/\/ En fonction de la largeur de bit configur\u00e9e par ADC, cette valeur est: 4095 pour 12 bits, 2047 pour 11 bits, 1023 pour 10 bits, 511 pour 9 bits\n  \/\/ \n\n  \/\/En raison des caract\u00e9ristiques du CAD, les r\u00e9sultats les plus pr\u00e9cis sont obtenus dans les plages de tension approximatives suivantes:\n  \/\/ - 0dB    d'att\u00e9nuation (ADC_ATTEN_DB_0) entre 100 and 950mV\n  \/\/ - 2.5dB  d'att\u00e9nuation (ADC_ATTEN_DB_2_5) entre 100 and 1250mV\n  \/\/ - 6dB    d'att\u00e9nuation (ADC_ATTEN_DB_6) entre 150 to 1750mV\n  \/\/ - 11dB   d'att\u00e9nuation (ADC_ATTEN_DB_11) entre 150 to 2450mV\n  \/\/ - Pour une pr\u00e9cision maximale, utilisez les API d\u2019\u00e9talonnage ADC et mesurez les tensions dans les plages recommand\u00e9es.\n \nfloat VoltMesure = 0;\nfloat vpeDvValmx_0DB = 1.1\/4095; \/\/ 12 bits de r\u00e9solution\nfloat vvpeDvValmx_2_5DB = 1.5\/4095;\nfloat vpeDvValmx_6DB = 2.0\/4095;\nfloat vpeDvValmx_11DB = 3.9\/4095;\n\nfloat calibrationDiviseurTSN = 7.99\/8.70;      \/\/ valeur r\u00e9elle diviser par VoltMesure lorsque calibrationDiviseurTSN \u00e9gal \u00e0 1\nfloat calibrationDiviseurTsnTrtPolyn = 7.99\/8.07; \/\/ valeur r\u00e9elle diviser par VoltMesure lorsque calibrationDiviseurTsn \u00e9gal \u00e0 1\n\n\n\/\/ ----------------------------------------------------------------------------- \n\/\/ SETUP   SETUP   SETUP   SETUP   SETUP   SETUP   SETUP   SETUP   SETUP\n\/\/ ----------------------------------------------------------------------------- \nvoid setup() {\n  Serial.begin(9600);\n  \n  pinMode(DelBleue, OUTPUT);\n  \n  \/\/ ***** Configuration pour faire des mesures sur D35 (voltage de la source d'alimentation) ******\n  adc1_config_width(ADC_WIDTH_BIT_12); \/\/ D\u00e9finie la r\u00e9solution (0 \u00e0 4095)\n  \n\n  adc1_config_channel_atten(ADC1_CHANNEL_7,ADC_ATTEN_DB_11); \/\/Le voltage maximum au GPIO est de 3.3V\n\n  Serial.println(\"PR\u00caT\");\n}\n\n\/\/ ----------------------------------------------------------------------------- \n\/\/ LOOP     LOOP     LOOP     LOOP     LOOP     LOOP     LOOP     LOOP     LOOP \n\/\/ ----------------------------------------------------------------------------- \nvoid loop() {\n\n  \/\/ M\u00e9thode de la r\u00e8gle de trois\n  int DigitalValueVoltAlimCtrl = analogRead(35);\n  float VoltAlimCtrlReduit = DigitalValueVoltAlimCtrl * vpeDvValmx_11DB;\n  VoltMesure = VoltAlimCtrlReduit*122\/22; \/\/ Diviseur de tension 100K, 22K\n  VoltMesure = VoltMesure*calibrationDiviseurTSN; \/\/ correction d\u00fb aux valeurs impr\u00e9cises du diviseur de tension\n\n  Serial.print(DigitalValueVoltAlimCtrl);Serial.print(\" DigitalValueVoltAlimCtrl \");Serial.print(VoltAlimCtrlReduit);Serial.print(\" VoltAlimCtrlReduit  \");\n  Serial.print(VoltMesure);Serial.println(\" VoltMesure\"); \n\n  \/\/ M\u00e9thode de G6EJD  (applicable si l'att\u00e9nuation est 11dB et la r\u00e9solution est 12 bits)\n  float reading = analogRead(35);\n  float VoltAlimCtrlReduitTrtPolyn = -0.000000000000016 * pow(reading,4) + 0.000000000118171 * pow(reading,3)- 0.000000301211691 * pow(reading,2)+ 0.001109019271794 * reading + 0.034143524634089;\n  float VoltMesureTrtPolyn = VoltAlimCtrlReduitTrtPolyn*122\/22; \/\/ Diviseur de tension 100K, 22K\n  VoltMesureTrtPolyn = VoltMesureTrtPolyn*calibrationDiviseurTsnTrtPolyn; \/\/ correction d\u00fb aux valeurs impr\u00e9cises du diviseur de tension\n  \n  Serial.print(reading);Serial.print(\" DigitalValueVoltAlimCtrl \");Serial.print(VoltAlimCtrlReduitTrtPolyn);Serial.print(\" VoltAlimCtrlReduit  \");\n  Serial.print(VoltMesureTrtPolyn);Serial.println(\" VoltMesure\"); \n  Serial.println(\" \"); \n\n  digitalWrite(DelBleue, HIGH);   \/\/ Allume le DEL (voltage HAUT)\n  delay(1000);                    \/\/ Attend X millisecondes\n  digitalWrite(DelBleue, LOW);    \/\/ \u00c9teint le DEL (voltage BAS)\n  delay(1000);                    \/\/ Attend X millisecondes\n  \n}\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<table class=\"wp-block-table\"><tbody><tr><td><strong><a href=\"https:\/\/espacerm.com\/webgen\/controleur-multifonctionnel-elabore-autour-du-esp32-devkit-v1-doit\/\">&lt;- Contr\u00f4leur multifonctionnel \u00e9labor\u00e9 autour du ESP32 DEVKIT V1 DOIT (1 de 4)<\/a><\/strong><\/td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/td><td><strong><a href=\"https:\/\/espacerm.com\/webgen\/controleur-multifonctionnel-elabore-autour-du-esp32-devkit-v1-doit-3\/\">Contr\u00f4leur multifonctionnel \u00e9labor\u00e9 autour du ESP32 DEVKIT V1 DOIT (3 de 4)&nbsp;-&gt;<\/a><\/strong><\/td><\/tr><\/tbody><\/table>\n","protected":false},"excerpt":{"rendered":"<p>Le programme Nous sommes rendus \u00e0 l&rsquo;\u00e9tape de l&rsquo;implantation du programme. Avant m\u00eame de fixer le ESP32 DEVKIT V1 DOIT sur la carte vous pouvez transf\u00e9rer le programme sur le module en le reliant \u00e0 l&rsquo;ordinateur par la prise USB du module. Cela valide son bon fonctionnement et il sera pr\u00e9configur\u00e9, compatible \u00e0 l&rsquo;environnement pour [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/pages\/832"}],"collection":[{"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/comments?post=832"}],"version-history":[{"count":233,"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/pages\/832\/revisions"}],"predecessor-version":[{"id":3406,"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/pages\/832\/revisions\/3406"}],"wp:attachment":[{"href":"https:\/\/espacerm.com\/webgen\/wp-json\/wp\/v2\/media?parent=832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}