{"id":1421,"date":"2024-09-10T06:09:01","date_gmt":"2024-09-10T04:09:01","guid":{"rendered":"https:\/\/labopothier.com\/?p=1421"},"modified":"2024-09-23T11:43:40","modified_gmt":"2024-09-23T09:43:40","slug":"activite-arduino-python-compteur-de-defilement-danneaux-pour-interferometre-de-michelson-applications","status":"publish","type":"post","link":"https:\/\/labopothier.com\/index.php\/2024\/09\/10\/activite-arduino-python-compteur-de-defilement-danneaux-pour-interferometre-de-michelson-applications\/","title":{"rendered":"ACTIVITE ARDUINO\/PYTHON : compteur de d\u00e9filement d&rsquo;anneaux pour interf\u00e9rom\u00e8tre de Michelson, applications"},"content":{"rendered":"\n<p><strong>Objectif de cette activit\u00e9 :<\/strong> Comptage automatique de d\u00e9filements d&rsquo;anneaux pour un interf\u00e9rom\u00e8tre de Michelson avec une carte Arduino et un shield <strong><a rel=\"noreferrer noopener\" href=\"https:\/\/www.gotronic.fr\/art-shield-lcd-2x16-dfr0009-19255.htm\" target=\"_blank\">LCD DFROBOT<\/a><\/strong>. Possibilit\u00e9 de r\u00e9cup\u00e9rer les courbes avec Python.<\/p>\n\n\n\n<p><strong>Applications <\/strong>: mesure de l&rsquo;indice de l&rsquo;air, \u00e9tude de la dilatation d&rsquo;un m\u00e9tal, &#8230;<\/p>\n\n\n\n<p><strong>Pr\u00e9-requis :<\/strong> <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Etre familier avec le langage Arduino et Python (mais pas forc\u00e9ment, on peut utiliser le code sans le comprendre !). <\/li>\n\n\n\n<li>Savoir r\u00e9gler un interf\u00e9rom\u00e8tre en lame d&rsquo;air pour obtenir des anneaux localis\u00e9s \u00e0 l&rsquo;infini (qui seront projet\u00e9s sur un \u00e9cran au niveau du plan focal d&rsquo;une lentille convergente de +20 cm)<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Pr\u00e9sentation du compteur<\/strong><\/h2>\n\n\n\n<div class=\"wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading has-text-align-center\"><strong>Utilisation des boutons du curseur <\/strong><\/h3>\n\n\n\n<p><\/p>\n\n\n\n<p style=\"font-size:21px\"><strong>LEFT<\/strong>&nbsp;: Pour remettre le compteur \u00e0 z\u00e9ro<\/p>\n\n\n\n<p style=\"font-size:21px\"><strong>RIGHT<\/strong>&nbsp;: r\u00e9glage automatique du seuil&nbsp;; chariotter&nbsp; doucement en maintenant ce bouton appuy\u00e9<\/p>\n\n\n\n<p style=\"font-size:21px\"><strong>UP\/DOWN<\/strong>&nbsp;: r\u00e9glage manuel du seuil \u00e0 z\u00e9ro<\/p>\n\n\n\n<p style=\"font-size:21px\"><\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"730\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/compteur-Arduino-1024x730.jpg\" alt=\"\" class=\"wp-image-1014 size-full\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/compteur-Arduino-1024x730.jpg 1024w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/compteur-Arduino-300x214.jpg 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/compteur-Arduino-768x548.jpg 768w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/compteur-Arduino-1536x1095.jpg 1536w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/compteur-Arduino-rotated.jpg 1848w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong> Principe <\/strong><\/h2>\n\n\n\n<p>Un photod\u00e9tecteur (\u00ab&nbsp;cible&nbsp;\u00bb <strong><a href=\"http:\/\/www.didalab-didactique.fr\/site\/materiel\/FR-categorie-158-produit-1451.html\" target=\"_blank\" rel=\"noreferrer noopener\">DIDALAB <\/a><\/strong>par exemple) est connect\u00e9 \u00e0 la premi\u00e8re entr\u00e9e analogique (entr\u00e9e A1 car AO est d\u00e9j\u00e0 utilis\u00e9e pour r\u00e9cup\u00e9rer les valeurs envoy\u00e9es par les boutons du curseur du shield).<\/p>\n\n\n\n<p>Le r\u00e9glage du seuil de d\u00e9tection d\u00e9pend du photod\u00e9tecteur et de la luminosit\u00e9. Id\u00e9alement, il faudrait qu\u2019il corresponde \u00e0 la valeur moyenne de la tension mesur\u00e9e lors de l\u2019alternance des franges ou anneaux.<\/p>\n\n\n\n<p>Pour le r\u00e9gler efficacement, Il suffit de faire d\u00e9filer les anneaux en maintenant le bouton <strong>RIGHT <\/strong>enfonc\u00e9, ou le r\u00e9gler manuellement (boutons <strong>UP\/DOWN<\/strong> en faisant une acquisition avec la carte Sysam pour visualiser le signal.<\/p>\n\n\n\n<p>Il est aussi possible de lancer le script Python <strong><a href=\"https:\/\/github.com\/jonasforlot\/python-arduino\/blob\/main\/compteur_Michelson\/Michelson.py\" target=\"_blank\" rel=\"noreferrer noopener\">Michelson.py<\/a><\/strong> (avec un IDLE comme Pyzo par exemple) pour une acquisition en temps r\u00e9el.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Codes Arduino et Python utilis\u00e9s<\/strong><\/h2>\n\n\n\n<pre title=\"Code Arduino pour compteur de d\u00e9filement d'anneaux avec interf\u00e9rom\u00e8tre de Michelson\" class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">\/* \n * Code pour compteur de d\u00e9filement d'anneaux avevl'interf\u00e9rom\u00e8tre de Michelson.\n * Un photod\u00e9tecteur (\u00ab cible \u00bb DIDALAB par exemple) est connect\u00e9 \u00e0 la premi\u00e8re entr\u00e9e analogique \n * (entr\u00e9e A1 car AO est d\u00e9j\u00e0 utilis\u00e9e pour r\u00e9cup\u00e9rer les valeurs envoy\u00e9es par les boutons du curseur du shield).\n\n  Le r\u00e9glage du seuil de d\u00e9tection d\u00e9pend du photod\u00e9tecteur et de la luminosit\u00e9. Id\u00e9alement, \n  il faudrait qu\u2019il corresponde \u00e0 la valeur moyenne de la tension mesur\u00e9e lors de l\u2019alternance des franges ou anneaux. \n  Pour le r\u00e9gler efficacement, il suffit de faire d\u00e9filer les anneaux en maintenant le bouton  RIGHT enfonc\u00e9, \n  ou faire une acquisition avec la carte Sysam pour visualiser la tension.\n.\n *\/\n\n#include &lt;EEPROM.h>\n\n#include &lt;LiquidCrystal.h>\nLiquidCrystal lcd(8,9, 4, 5, 6, 7);\nint sensor = A1; \/\/ broche pour d\u00e9tection du capteur\nint etatSensor ; \/\/ \u00e9tat du capteur (haut ou bas)\nint valeur_bouton;\nint seuil  ;\nfloat seuil_tension ;\nint mesure;\nint somme_mesure = 0;\nfloat mesure_tension;\nfloat valeur_moyenne =0;\nint compt_moy = 0;\nbool etat_old= false ; \/\/ \nbool  etat_new = false; \/\/ les \u00e9tats vont changer \u00e0 chaque chaque modiication de la valeu lue par le capteur (haut\/5V ou bas\/0V)\nint compt=0; \/\/ comptage initialis\u00e9 \u00e0 0\nlong temps; \/\/mesure du temps pour l'acquisition\n\nvoid setup() \n{\n  \n  Serial.begin(9600); \/\/ pour le moniteur s\u00e9rie\n  lcd.begin(16,2);\n  int seuil;\n  valeur_bouton  = analogRead(A0);\n  temps = millis();\n}  \n \nvoid loop()\n{\n\nvaleur_bouton  = analogRead(A0);\n\/\/Serial.println(valeur_bouton);\n\n\/\/ gestion des boutons du curseur \n\/\/(remise \u00e0 z\u00e9ro pour LEFT, r\u00e9glage du seuil auto avec RIGHT,\n\/\/r\u00e9glage du seui manuel avec UP\/DOWN)\n\nif (valeur_bouton ==205 or valeur_bouton ==203) {\n  seuil+=1;\n  EEPROM.put(0, seuil);\n  delay(10);\n}\nif (valeur_bouton == 405 or valeur_bouton == 402) {\n  seuil-=1;\n  EEPROM.put(0, seuil);\n  delay(10);\n}\n\n EEPROM.get(0,seuil);\n \nif (valeur_bouton == 619 or valeur_bouton == 622) {\n  lcd.clear();\n  compt=0;\n  somme_mesure = 0;\n  compt_moy = 0;\n  delay(100);\n}\n\ntemps = millis();\nmesure = analogRead(sensor);\nmesure_tension = mesure*5.0\/1023;\nseuil_tension = seuil *5.0\/1023;\n\nif (valeur_bouton == 0) {\n  \n  lcd.clear();\n  lcd.setCursor(0,0);\n  lcd.print(\" Etalonnage  \");\n  lcd.setCursor(0,1);\n  lcd.print(\"Chariotter SVP\");\n \n  compt_moy = compt_moy + 1;\n  somme_mesure = somme_mesure + mesure;\n  valeur_moyenne = somme_mesure\/compt_moy;\n  seuil = valeur_moyenne;\n  EEPROM.put(0, seuil);\n\/\/  Serial.print(compt_moy);\n\/\/Serial.print (\"\\t\");\n\/\/Serial.println(valeur_moyenne);\n  delay(500);\n lcd.clear();\n  \n}\nelse{\n  somme_mesure = 0;\n  compt_moy = 0;\n}\n\nlcd.setCursor(0,0);\nlcd.print(\"Comptage  |seuil\");\nlcd.setCursor(0,1);\nlcd.print(compt\/2);\nlcd.setCursor(10,1);\nlcd.print(\"|\");\nlcd.setCursor(11,1);\nlcd.print(seuil_tension);\nlcd.setCursor(15,1);\nlcd.print(\"V\");\n\n\n\nif (mesure_tension> seuil_tension){\n  etat_new = true; \n}\nelse {\n  etat_new =false;\n}\nif (etat_old != etat_new) {\n  etat_old = etat_new;\n  compt = compt + 1;\n\/\/  Serial.print(\"  comptage \");\n\/\/  Serial.println(compt);\n\/\/lcd.clear();\n\n\n  }\n\/\/  \nSerial.print(temps);\nSerial.print (\"\\t\");\nSerial.println(mesure_tension);\n\n\/\/Serial.println(valeur_bouton);\n\n delay(20);\n}\n<\/code><\/pre>\n\n\n\n<p>Voici le script Python qu&rsquo;on peut utiliser une fois le code Arduino ci-dessus t\u00e9l\u00e9vers\u00e9. <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Attention : le moniteur s\u00e9rie doit \u00eatre ferm\u00e9 pour que ce script fonctionne !<\/strong><\/p>\n<\/blockquote>\n\n\n\n<pre title=\"Code Python (optionnel) qu'on peut utiliser une fois le code Arduino ci dessus t\u00e9l\u00e9vers\u00e9\" class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">\n #importation des modules\n import serial\n import serial.tools.list_ports # pour la communication avec le port s\u00e9rie\n import matplotlib.pyplot as plt  # pour le trac\u00e9 de graphe\n from matplotlib import animation # pour la figure anim\u00e9e\n import time # gestion du temps\n \n\n #initialisation des listes\n \n\n liste_temps=[] # liste pour stocker les valeurs de temps en partant de t=0\n liste_tension = [] # liste pour stocker les valeurs de distance\n \n\n t_acquisition = 1000\n tensionmax= 5 # en V\n \n\n\n #pour le graphe en temps r\u00e9el\n def animate(i):\n     line1 = Data.readline()\n     line1 = Data.readline()\n     print (line1)\n     # on retire les caract\u00e8res d'espacement en d\u00e9but et fin de cha\u00eene\n     listeDonnees = line1.strip()\n     # on s\u00e9pare les informations re\u00e7ues s\u00e9par\u00e9es par les espaces et on stocke ces informations dans une liste pour chacune de lignes\n     listeDonnees = line1.split()\n     print (listeDonnees)\n \n\n\n     if len(listeDonnees) == 2 : # parfois des lignes de donn\u00e9es vides peuvent \u00eatre envoy\u00e9es, il faut les \"\u00e9carter\"\n         try :\n             tension = float(listeDonnees[1].decode()) # apr\u00e8s consulation des donn\u00e9es, nous choisissons le 4\u00e8me \u00e9l\u00e9ment de listeDonnees\n             temps = (float(listeDonnees[0].decode()))\/1000.0 # apr\u00e8s consulation des donn\u00e9es, nous choisissons le 2\u00e8me \u00e9l\u00e9ment de listeDonnees\n \n\n \n\n             while temps &lt;= t_acquisition:\n \n\n                 liste_tension.append(tension)\n                 print(\"tension = %f\"%(tension)) # affichage de la valeur de la distance\n                 liste_temps.append(temps)\n                 print(\"temps mesur\u00e9 = %f\"%(temps), \" s\") # affichage de la valeur du temps absolu\n                 line.set_data(liste_temps,liste_tension)\n                 return line,\n \n\n         except:\n             pass\n \n\n\n # Fonction pour la r\u00e9cup\u00e9ration des donn\u00e9es s\u00e9rie venant de la carte Arduino\n def recup_port_Arduino() :\n     ports = list(serial.tools.list_ports.comports())\n     for p in ports:\n         if 'Arduino' in p.description :\n             mData = serial.Serial(p.device,9600)\n     print(mData.is_open) # Affiche et v\u00e9rifie que le port est ouvert\n     print(mData.name) # Affiche le nom du port\n     return mData\n \n\n \n def moyenne(liste):\n     somme=0\n     for i in range (len (liste)) :\n         somme += liste[i]\n     return somme\/(len(liste))\n \n\n def comptage (liste):\n     moy = moyenne (liste)\n     etat_old = False\n     etat_new = False\n     compt = 0\n     for i in range (len(liste)):\n         if (liste[i]&gt; moy) :\n             etat_new = True\n         else :\n             etat_new = False\n \n\n         if etat_old != etat_new :\n             etat_old = etat_new\n             compt = compt + 1\n     return compt\/2\n \n\n\n Data =recup_port_Arduino() #r\u00e9cup\u00e9ration des donn\u00e9es\n \n # Cr\u00e9ation figure\n fig=plt.figure()\n line, = plt.plot([],[])\n plt.xlim(0, t_acquisition)\n plt.ylim(0,tensionmax)\n plt.xlabel('temps en s')\n plt.ylabel('tension')\n plt.grid()\n \n\n \n #Animation\n ani = animation.FuncAnimation(fig, animate, frames=20000,  interval=20,repeat=False)\n \n\n plt.show()\n\n\n plt.close(fig)\n Data.close() # pour arr\u00eater la lecture des donn\u00e9es s\u00e9rie\n \n\n\n\n #comptage en parcourant les listes\n compteur = int(comptage(liste_tension))\n \n texte = \"Compteur  : \" +str(compteur)\n plt.title(texte) # titre du graphique\n plt.plot(liste_temps,liste_tension, color ='r')\n plt.xlabel('temps en s')\n plt.ylabel('tension')\n plt.xlim (min(liste_temps),max(liste_temps))  #limtes pour les axes avec les valeurs extr\u00eames de I et de U\n plt.ylim(min(liste_tension),max(liste_tension))\n \n\n plt.show()  #afficher le graphique (ne rien mettre dans la parenth\u00e8se)\n \n\n #Ecriture dans un fichier txt\n lines=['t\\ttension\\n'] #premi\u00e8re ligne du fichier txt\n for i in range (len (liste_tension)):\n     line = str(liste_temps[i]) +'\\t'+ str(liste_tension[i])+'\\n'\n     lines.append(line)\n \n\n fichier = open('U:\\Documents\\essais Python\\Am\u00e9liorations\\Donn\u00e9es s\u00e9rie Michelson\\data.txt', 'w')\n fichier.writelines(lines) #cr\u00e9ation d'un nouveau fichier texte\n <\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Astuce : parfois un message d&rsquo;erreur appara\u00eet (probl\u00e8me de communication avec la carte, donn\u00e9es re\u00e7ues incompl\u00e8tes &#8230;), comment r\u00e9soudre ce probl\u00e8me ?<\/strong><\/p>\n<cite>La plupart du temps, il suffit de red\u00e9marrer le shell (CTRL+K) et relancer ensuite le programme.<\/cite><\/blockquote>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Applications<\/strong><\/h1>\n\n\n\n<h2 class=\"wp-block-heading\"><strong><u>Mesure de l\u2019indice de l\u2019air par interf\u00e9rom\u00e9trie<\/u><\/strong><\/h2>\n\n\n\n<p><strong><u>Mat\u00e9riel<\/u><\/strong><strong>&nbsp;:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Interf\u00e9rom\u00e8tre de Michelson<\/li>\n\n\n\n<li>Laser<\/li>\n\n\n\n<li>Elargisseur de faisceau (lentille&nbsp; +5mm)<\/li>\n\n\n\n<li>1 lentille + 20 cm<\/li>\n\n\n\n<li>1 \u00e9cran<\/li>\n\n\n\n<li>Enceinte \u00e0 d\u00e9pression de longueur 40 mm <a href=\"https:\/\/www.nova-physics.com\/product-page\/kit-mesure-de-l-indice-de-l-air-avec-enceinte-%C3%A0-vide-40mm-et-pompe\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>NOVA<\/strong> <\/a>avec syst\u00e8me de pompe \u00e0 vide (\u00e0 main)<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><strong><u>Protocole<\/u><\/strong><\/p>\n\n\n\n<div class=\"wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<ul class=\"wp-block-list\">\n<li>Ins\u00e9rer la cuve \u00e0 vide sur pied dans l\u2019un des bras de l\u2019interf\u00e9rom\u00e8tre.<\/li>\n\n\n\n<li>Avec un laser et \u00e9largisseur de faisceau, r\u00e9gler l\u2019interf\u00e9rom\u00e8tre en lame d\u2019air (anneaux)<\/li>\n\n\n\n<li>Positionner le d\u00e9tecteur en sortie de Michelson au niveau du plan focal image d\u2019une lentille de focale +20 cm (\u00ab&nbsp;cible&nbsp;\u00bb avec r\u00e9glage de gain <strong>x20<\/strong>).<\/li>\n\n\n\n<li>Relier ce d\u00e9tecteur \u00e0 l\u2019entr\u00e9e analogique EA1 du compteur Arduino<\/li>\n<\/ul>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1008\" height=\"756\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/indice-air-montage.png\" alt=\"\" class=\"wp-image-1029 size-full\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/indice-air-montage.png 1008w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/indice-air-montage-300x225.png 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/indice-air-montage-768x576.png 768w\" sizes=\"auto, (max-width: 1008px) 100vw, 1008px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<ul class=\"wp-block-list\">\n<li>Faire le vide avec la pompe \u00e0 main. <\/li>\n\n\n\n<li>Maintenir la touche <strong>RIGHT <\/strong>du compteur pendant cette op\u00e9ration (r\u00e9glage automatique du seuil)&nbsp;<\/li>\n\n\n\n<li>Mettre le compteur \u00e0 z\u00e9ro (touche<strong> LEFT<\/strong>)<\/li>\n\n\n\n<li>Lancer l\u2019acquisition (pendant 1 min environ) avec le script Python <strong>Michelson.py ,<\/strong> puis faire rentrer doucement &nbsp;l\u2019air \u00e0 l\u2019aide de la pince en plastique.<\/li>\n<\/ul>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1011\" height=\"756\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/indice-air-pince.png\" alt=\"\" class=\"wp-image-1028 size-full\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/indice-air-pince.png 1011w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/indice-air-pince-300x224.png 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/indice-air-pince-768x574.png 768w\" sizes=\"auto, (max-width: 1011px) 100vw, 1011px\" \/><\/figure><\/div>\n\n\n\n<p><strong><u>Exploitation<\/u><\/strong><\/p>\n\n\n\n<p>En supposant que le vide ait \u00e9t\u00e9 enti\u00e8rement&nbsp; r\u00e9alis\u00e9,&nbsp;&nbsp; l\u2019indice&nbsp; n de l\u2019air est donn\u00e9 par la&nbsp; formule&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter is-style-stripes\"><table><tbody><tr><td><strong>&nbsp;&nbsp;n &nbsp;= &nbsp;1&nbsp;&nbsp; +&nbsp;&nbsp; N\u03bb<\/strong>\/<strong>2<\/strong>L<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Avec <br>N nombre d\u2019anneaux qui d\u00e9filent,<br>longueur d\u2019onde du laser \u03bb = &nbsp;632,8 e<sup>-9<\/sup> m,<br>longueurde la cuve L = 40 e<sup>-3 <\/sup>m<\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"590\" height=\"473\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/indice-air-courbe-2.png\" alt=\"\" class=\"wp-image-1043\" style=\"width:477px;height:382px\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/indice-air-courbe-2.png 590w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/indice-air-courbe-2-300x241.png 300w\" sizes=\"auto, (max-width: 590px) 100vw, 590px\" \/><figcaption class=\"wp-element-caption\">Graphe obtenu avec le script Python<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Etude de dilation d&rsquo;un m\u00e9tal<\/strong><\/h2>\n\n\n\n<p><strong><u>Mat\u00e9riel<\/u><\/strong><strong>&nbsp;:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Interf\u00e9rom\u00e8tre de Michelson<\/li>\n\n\n\n<li>Laser<\/li>\n\n\n\n<li>Elargisseur de faisceau (lentille&nbsp; +5mm)<\/li>\n\n\n\n<li>1 lentille + 20 cm<\/li>\n\n\n\n<li>Bloc m\u00e9tallique plac\u00e9 de r\u00e9f\u00e9rence<\/li>\n\n\n\n<li>Bloc m\u00e9tallique plac\u00e9 pr\u00e9alablement au cong\u00e9lateur<\/li>\n\n\n\n<li>Capteur \u00ab&nbsp;cible&nbsp;\u00bb Didalab (photod\u00e9tecteur)<\/li>\n\n\n\n<li>Compteur Arduino<\/li>\n\n\n\n<li>Carte Sysam<\/li>\n<\/ul>\n\n\n\n<p><strong><u>Protocole<\/u><\/strong><\/p>\n\n\n\n<div class=\"wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<ul class=\"wp-block-list\">\n<li>Intercaler le bloc m\u00e9tallique de r\u00e9f\u00e9rence (temp\u00e9rature ambiante)<\/li>\n\n\n\n<li>Avec un laser et \u00e9largisseur de faisceau, r\u00e9gler l\u2019interf\u00e9rom\u00e8tre en lame d\u2019air (anneaux)<\/li>\n\n\n\n<li>Positionner le d\u00e9tecteur en sortie de Michelson au niveau du plan focal image d\u2019une lentille de focale +20 cm (\u00ab&nbsp;cible&nbsp;\u00bb avec r\u00e9glage de gain <strong>x20<\/strong>).<\/li>\n\n\n\n<li>Relier ce d\u00e9tecteur \u00e0 l\u2019entr\u00e9e analogique EA1 du compteur Arduino<\/li>\n<\/ul>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1007\" height=\"755\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/metal-bras.png\" alt=\"\" class=\"wp-image-1035 size-full\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/metal-bras.png 1007w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/metal-bras-300x225.png 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/metal-bras-768x576.png 768w\" sizes=\"auto, (max-width: 1007px) 100vw, 1007px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-media-text alignwide has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<ul class=\"wp-block-list\">\n<li>Pour r\u00e9gler le seuil, faire d\u00e9filer les anneaux doucement en maintenant la touche <strong>RIGHT<\/strong> enfonc\u00e9e.<\/li>\n\n\n\n<li>Mettre le compteur \u00e0 z\u00e9ro (touche<strong> LEFT<\/strong>)<\/li>\n\n\n\n<li> Ins\u00e9rer le bloc m\u00e9tallique froid (qui \u00e9tait stock\u00e9 dans le cong\u00e9lateur)<\/li>\n\n\n\n<li>Lancer l\u2019acquisition (pendant 1 min environ) avec le script Python <strong>Michelson.py<\/strong><\/li>\n<\/ul>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1008\" height=\"756\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/metalmontage.png\" alt=\"\" class=\"wp-image-1036 size-full\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/metalmontage.png 1008w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/metalmontage-300x225.png 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2022\/01\/metalmontage-768x576.png 768w\" sizes=\"auto, (max-width: 1008px) 100vw, 1008px\" \/><\/figure><\/div>\n\n\n\n<p><strong><u>Exploitation<\/u><\/strong><\/p>\n\n\n\n<p>Le coefficient de dilatation isobare est donn\u00e9 par la relation :<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter is-style-stripes\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong><br><strong>\u03b1 &nbsp;= &nbsp;&nbsp;<u>&nbsp;3N \u03bb &nbsp;&nbsp;&nbsp;<\/u><\/strong><br><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2l\u2206T<\/strong><\/strong><\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\"><br>avec &nbsp;<strong>N<\/strong> nombre d\u2019anneaux qui d\u00e9filent,<br>longueur d\u2019onde du laser<strong> \u03bb<\/strong> = &nbsp;632,8 e<sup>-9<\/sup> m,<br><strong>l<\/strong> longueur du bloc<br><strong>\u2206T <\/strong>variation de temp\u00e9rature du bloc<\/figcaption><\/figure>\n\n\n\n<p>Lien Github avec les scripts :<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/jonasforlot\/python-arduino\/tree\/main\/Capteur%20CO2\">https:\/\/github.com\/jonasforlot\/python-arduino\/tree\/main\/compteur_Michelson<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Objectif de cette activit\u00e9 : Comptage automatique de d\u00e9filements d&rsquo;anneaux pour un interf\u00e9rom\u00e8tre de Michelson avec une carte Arduino et un shield LCD DFROBOT. Possibilit\u00e9 de r\u00e9cup\u00e9rer les courbes avec Python. Applications : mesure de l&rsquo;indice de l&rsquo;air, \u00e9tude de la dilatation d&rsquo;un m\u00e9tal, &#8230; Pr\u00e9-requis : Pr\u00e9sentation du compteur Utilisation des boutons du curseur [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1554,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[7,11],"tags":[],"class_list":["post-1421","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microcontroleurs-et-python","category-recuperer-les-donnees-dune-carte-arduino-avec-python"],"_links":{"self":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/1421","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/comments?post=1421"}],"version-history":[{"count":4,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/1421\/revisions"}],"predecessor-version":[{"id":1562,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/1421\/revisions\/1562"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/media\/1554"}],"wp:attachment":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/media?parent=1421"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/categories?post=1421"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/tags?post=1421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}