{"id":1444,"date":"2024-09-10T06:06:37","date_gmt":"2024-09-10T04:06:37","guid":{"rendered":"https:\/\/labopothier.com\/?p=1444"},"modified":"2024-09-27T14:31:21","modified_gmt":"2024-09-27T12:31:21","slug":"activite-arduino-python-constante-de-temps-dun-circuit-rc","status":"publish","type":"post","link":"https:\/\/labopothier.com\/index.php\/2024\/09\/10\/activite-arduino-python-constante-de-temps-dun-circuit-rc\/","title":{"rendered":"ACTIVITE ARDUINO\/PYTHON Constante de temps d\u2019un circuit RC"},"content":{"rendered":"\n<p><strong>Objectif<\/strong> : Etudier la r\u00e9ponse d&rsquo;un dispositif RC \/ D\u00e9terminer le temps caract\u00e9ristique \u00e0 l&rsquo;aide d&rsquo;un microcontr\u00f4leur et de Python.<\/p>\n\n\n\n<p><strong>Remarque<\/strong> : Cet article s&rsquo;inspire d&rsquo;un TP propos\u00e9 sur le site de l&rsquo;acad\u00e9mie de la Guyane. Le lien se trouve \u00e0 cette adresse : <a href=\"https:\/\/physique-chimie.dis.ac-guyane.fr\/Tle-Spe-PC-Theme-4-TP-Constante-de-temps-d-un-circuit-RC-python-arduino.html\">https:\/\/physique-chimie.dis.ac-guyane.fr\/Tle-Spe-PC-Theme-4-TP-Constante-de-temps-d-un-circuit-RC-python-arduino.html<\/a><\/p>\n\n\n\n<p>Cet article propose un code Python permettant de r\u00e9aliser \u00e0 la fois l&rsquo;acquisition avec la carte Arduino et le traitement statistique des donn\u00e9es . Pour cela, il faut que la biblioth\u00e8que Nanpy soit t\u00e9l\u00e9vers\u00e9e pr\u00e9alablement sur la carte Arduino (voir l&rsquo;article <a rel=\"noreferrer noopener\" href=\"https:\/\/labopothier.com\/index.php\/2020\/04\/04\/programmer-en-python-pour-la-carte-arduino\/\" target=\"_blank\">Programmer-en-python-pour-la-carte-arduino<\/a>)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"346\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2021\/01\/Arduino-RC_bb-1024x346.png\" alt=\"\" class=\"wp-image-549\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2021\/01\/Arduino-RC_bb-1024x346.png 1024w, https:\/\/labopothier.com\/wp-content\/uploads\/2021\/01\/Arduino-RC_bb-300x101.png 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2021\/01\/Arduino-RC_bb-768x259.png 768w, https:\/\/labopothier.com\/wp-content\/uploads\/2021\/01\/Arduino-RC_bb-1536x519.png 1536w, https:\/\/labopothier.com\/wp-content\/uploads\/2021\/01\/Arduino-RC_bb-2048x692.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre title=\"D\u00e9termination d'une capacit\u00e9 avec \u00e9tude statistique \u00e0 l'aide du langage Python (en utilisant Nanpy)\" class=\"wp-block-code\"><code lang=\"python\" class=\"language-python line-numbers\">\"\"\"\"\nD\u00e9termination de la valeur de la capacit\u00e9 d'un condensateur \u00e0 partir de la constante de temps d'un circuit RC, avec \u00e9tude statistique\nCe script a \u00e9t\u00e9 \u00e9crit par Cristophe BELLESSORT (acad\u00e9mie de Normandie)\nMme Marie-Anne DEJOAN (acad\u00e9mie de Guyane) a apport\u00e9 quelques modifications\nLe programme effectue N mesures successives de la capacit\u00e9 d'un condensateur, et propose ensuite une \u00e9tude statistique.\n\nModifi\u00e9 le 05\/01\/2021 par Jonas FORLOT pour acquisition sur carte Arduino avec le langage Python (gr\u00e2ce a la biblioth\u00e8que nanpy)\n\n-------------------------------------------------------------------------------\n \"\"\"\n\n# %%%%%%%%%%%%%%%%%%%%%%% Cette partie permet de charger des librairies utiles au programme %%%%%%%%%%%%%%%%%%%%%%%\n\nfrom nanpy import SerialManager  # Utiliser par l\u2019interpr\u00e9teur python pour communiquer avec la carte Arduino\nfrom nanpy import ArduinoApi     # Utilisation des services arduino.\nimport time\nfrom scipy import *   # Importer la biblioth\u00e8que scipy, module qui concerne le calcul scientifique\nfrom pylab import *   # Importer la biblioth\u00e8que pylab, qui permet d\u2019utiliser de mani\u00e8re ais\u00e9e les biblioth\u00e8ques NumPy\n                      # (calcul scientifique) et matplotlib (repr\u00e9sentation graphique \u00e0 2D)\n\nimport matplotlib.pyplot as plt\nimport sys\n\n# %%%%%%%%%%%%%%%%%%%%%%% Cette partie permet la communication avec la carte Arduino %%%%%%%%%%%%%%%%%%%%%%%\n\n# Configuration de la communication avec la carte Arduino\nconnection = SerialManager(device='COM8') # Windows: Le num\u00e9ro de port est celui utilis\u00e9 par la carte. Il est identifiable avec l'application \"arduino\"\" par le menu [Outils][Port].Arduino\n\n\n\n\ntry:\n    a = ArduinoApi(connection=connection)     # Cr\u00e9ation de l'objet d'exploitation  arduino, toutes les instructions propres au langage arduino seront pr\u00e9c\u00e9d\u00e9es par a.\nexcept:\n    print(\"La librairie nanpy n'a pas \u00e9t\u00e9 t\u00e9l\u00e9vers\u00e9e dans la carte Arduino\")\n    sys.exit();\n\na.pinMode(2,a.OUTPUT) # Broche 2 d\u00e9clar\u00e9e comme sortie\n\n# D\u00e9finition de la broche analogique utilis\u00e9e pour la mesure de tension aux bornes du condensateur.\n\nR = 10000     # Valeur de la r\u00e9sistance R\nN = 100      # Nombre de mesures de C\ncompteur =0   # Initialisation du Compteur de mesures\n# D\u00e9finition et mise \u00e0 z\u00e9ro des dur\u00e9es mesur\u00e9es et intervenant dans le calcul de \"tau\"\ntempsDebut = 0\ntempsFin = 0\n\n\n\ncapa = [] # On cr\u00e9e 1 liste vide pour accueillir les donn\u00e9es (N mesures de C)\n\n\n# %%%%%%%%%%%%%%%%%%%%%%% DEBUT DE LA BOUCLE DU PROGRAMME %%%%%%%%%%%%%%%%%%%%%%%\n\nwhile (compteur &lt; N):\n\n    compteur +=1      # Incr\u00e9mente \"compteur\" de un\n\n    print ('D\u00e9charge ...')           # D\u00e9charge du condensateur\n    while (a.analogRead(0) &gt; 0):     # Broche analogique utilis\u00e9e  pour la mesure de la tension.\n        a.digitalWrite(2, a.LOW)\n\n    print ('Charge ...')             # Charge du condensateur\n    tempsDebut = time.time ()        # M\u00e9morisation du temps au d\u00e9but de l'alimentation du circuit RC\n\n    while (a.analogRead(0) &lt; 647):    # Tant que le niveau lu est inf\u00e9rieur \u00e0 647 i.e. 63.2% de la valeur num\u00e9rique 1023\n        a.digitalWrite(2, a.HIGH)     # On alimente le circuit RC avec une tension de 5V\n\n    # Une fois sorti de la boucle on mesure tempsFin\n    tempsFin = time.time()          # Dur\u00e9e \u00e9coul\u00e9e depuis le d\u00e9but du lancement du programme\n    tau = (tempsFin - tempsDebut)   # Calcul de tau exprim\u00e9 en s\n    C = (tau\/R)*1e6                 # Calcul de C exprim\u00e9 en micro Farad\n    capa.append(C)\n    print(\"n\u00b0 \",compteur, \"   C en uF : \", round(C,4))   #\u2666Affichage de tau avec 3 d\u00e9cimales\n\n    if (compteur == N) :\n        print(\"Fin des \",N,\" mesures\")\n\n#--------------------------- FIN DE LA BOUCLE DU PROGRAMME ---------------------------\n\n## CALCUL DE LA MOYENNE + ECART TYPE + INCERTITUDE TYPE\n\nn=len(capa) # Compte le nombre d'\u00e9l\u00e9ments pr\u00e9sents dans le tableau \u00e0 1 dimension et l'affecte \u00e0 la variable n\nprint('Nombre de mesures :', n)\nprint('Moyenne de C :',mean(capa),' s') # Affiche la moyenne sur l'ensemble des mesures effectu\u00e9es\ns=std(capa, ddof = 1) # Calcul l'\u00e9cart-type \u00e0 n-1 (ou d\u00e9viation standard au sens statistique) et l'affecte \u00e0 la variable s\nprint('Ecart-type non biais\u00e9 pour la s\u00e9rie de mesures de C :', s, 'uF') # Affiche l'\u00e9cart-type non biais\u00e9\nU=s\/sqrt(n) # Calcul de l'incertitude-type\nprint('Incertitude-type sur la mesure de C :', U, 'uF') # Affiche l'incertitude-type\n\n## TRACE DES HISTOGRAMMES\n\nfigure(\"Capacit\u00e9 du condensateur\") # D\u00e9finit le nom de la figure\nhist([capa],range=(min(capa),max(capa)),bins=30,edgecolor = 'blue')  # la fonction bins est associ\u00e9e\n                                                                      # au nombre d'intervalles pour l'axe des abscisses\n\nylabel('Nb de mesures') # D\u00e9finit le nom des ordonn\u00e9es\nlegend([\"Capacit\u00e9 en uF\"]) # D\u00e9finit la l\u00e9gende\nshow() # Affiche l'histogramme\n\n\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"637\" height=\"545\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2021\/01\/rc.png\" alt=\"\" class=\"wp-image-553\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2021\/01\/rc.png 637w, https:\/\/labopothier.com\/wp-content\/uploads\/2021\/01\/rc-300x257.png 300w\" sizes=\"auto, (max-width: 637px) 100vw, 637px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Objectif : Etudier la r\u00e9ponse d&rsquo;un dispositif RC \/ D\u00e9terminer le temps caract\u00e9ristique \u00e0 l&rsquo;aide d&rsquo;un microcontr\u00f4leur et de Python. Remarque : Cet article s&rsquo;inspire d&rsquo;un TP propos\u00e9 sur le site de l&rsquo;acad\u00e9mie de la Guyane. Le lien se trouve \u00e0 cette adresse : https:\/\/physique-chimie.dis.ac-guyane.fr\/Tle-Spe-PC-Theme-4-TP-Constante-de-temps-d-un-circuit-RC-python-arduino.html Cet article propose un code Python permettant de r\u00e9aliser \u00e0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1582,"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":"","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,10],"tags":[],"class_list":["post-1444","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microcontroleurs-et-python","category-programmer-une-carte-arduino-avec-python"],"_links":{"self":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/1444","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=1444"}],"version-history":[{"count":3,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/1444\/revisions"}],"predecessor-version":[{"id":1583,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/1444\/revisions\/1583"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/media\/1582"}],"wp:attachment":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/media?parent=1444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/categories?post=1444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/tags?post=1444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}