{"id":6520,"date":"2023-09-14T16:21:26","date_gmt":"2023-09-14T14:21:26","guid":{"rendered":"https:\/\/www.ardpylab.fr\/?page_id=6520"},"modified":"2023-09-15T11:52:42","modified_gmt":"2023-09-15T09:52:42","slug":"des-sketchs-a-ajouter-a-ardpylog-suite-9","status":"publish","type":"page","link":"https:\/\/www.ardpylab.fr\/?page_id=6520","title":{"rendered":"Des sketchs \u00e0 ajouter \u00e0 ArdPyLog (suite)"},"content":{"rendered":"\n<p><strong style=\"color: inherit; font-size: 1.25em;\"><br>10. <a href=\"https:\/\/www.ardpylab.fr\/downloads\/ardpylog\/Moteur_DC_-_L293D.zip\"><span style=\"text-decoration: underline; color: #3366ff;\">Moteur DC &#8211; L293D<\/span><\/a><\/strong><span style=\"color: inherit; font-size: 1.25em; font-weight: 600;\"> (<em>Gestion de la rotation d\u2019un moteur \u00e0 courant continu<\/em><br><em>dans les 2 sens et \u00e0 vitesse variable<\/em>&nbsp;&#8211; Cat\u00e9gorie: <\/span><span style=\"color: #3366ff;\"><strong style=\"font-size: 1.25em;\">Moteurs<\/strong><\/span><span style=\"color: inherit; font-size: 1.25em; font-weight: 600;\">)<br><br><\/span><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"935\" height=\"565\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Moteur_DC_-_L293D.jpg\" alt=\"\" class=\"wp-image-6554\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Moteur_DC_-_L293D.jpg 935w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Moteur_DC_-_L293D-300x181.jpg 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Moteur_DC_-_L293D-768x464.jpg 768w\" sizes=\"auto, (max-width: 935px) 100vw, 935px\" \/><\/figure><\/div>\n\n\n\n<p>\u00a0<\/p>\n<p>L&rsquo;objectif de cette activit\u00e9 est de faire tourner un moteur DC dans les deux sens \u00e0 vitesse de rotation variable.<br \/>Pour cela on utilise un pont en H, le CI L293D, selon le montage suivant :<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-6556\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Moteur_DC_-_L293D_1-300x160.jpg\" alt=\"\" width=\"542\" height=\"289\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Moteur_DC_-_L293D_1-300x160.jpg 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Moteur_DC_-_L293D_1.jpg 760w\" sizes=\"auto, (max-width: 542px) 100vw, 542px\" \/><\/p>\n<p>\u00a0<\/p>\n<p><span style=\"text-decoration: underline;\">Caract\u00e9ristiques techniques du L293D<\/span>:<\/p>\n<p>Le composant L293D est un pont de puissance compos\u00e9 de plusieurs transistors et relais qui permet d\u2019activer la rotation d\u2019un moteur.<br \/>Le L293D est un double pont-H. Il est possible de l\u2019utiliser pour commander deux moteurs distincts dans les deux sens gr\u00e2ce \u00e0 ses 4 canaux.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone  wp-image-6557\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Moteur_DC_-_L293D_2-300x177.jpg\" alt=\"\" width=\"398\" height=\"235\" srcset=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Moteur_DC_-_L293D_2-300x177.jpg 300w, https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2023\/09\/Moteur_DC_-_L293D_2.jpg 574w\" sizes=\"auto, (max-width: 398px) 100vw, 398px\" \/><br \/><br \/><\/p>\n<p style=\"padding-left: 40px;\">\u2022 Courant Max R\u00e9gime continu : 600mA (x2)<br \/>\u2022 Courant de pointe Max &lt; 2ms : 1200mA<br \/>\u2022 VS Max Alim moteur : 36v<br \/>\u2022 VSS Max Alim logique : 7v<br \/>\u2022 Nombre de broches : 16 DIP<br \/>\u2022 Perte de tension : 1.3v<\/p>\n<p>\u00a0<\/p>\n<p>. 1,2EN permet d\u2019envoyer (ou pas) la tension sur les sorties du moteur via 1Y et 2Y et commande l\u2019activation\/d\u00e9sactivation du premier Pont-H. Si 1,2EN = GND, le pont-H est d\u00e9connect\u00e9 et le moteur ne fonctionne pas. Si 1,2EN = VSS, le pont-H est connect\u00e9 aux sorties et le moteur peut alors fonctionner dans un sens ou dans l\u2019autre si les tensions appliqu\u00e9es sur 1A et 2A sont diff\u00e9rentes (cf. tableau ci-dessus).<\/p>\n<p>. 1A et 2A sont les broches de commande du Pont-H 1Y \/ 2Y. Ils sont directement branch\u00e9s \u00e0 l\u2019Arduino pour commander le sens du courant entre 1Y et 2Y.<\/p>\n<p>. 1Y et 2Y sont branch\u00e9s directement sur le moteur.<\/p>\n<p>. GROUND doit \u00eatre raccord\u00e9 \u00e0 la masse de la source d\u2019alimentation de puissance VCC2(moteur) et \u00e0 la masse de la source d\u2019alimentation de l\u2019Arduino.<\/p>\n<p>. VCC2 : Alimentation de puissance des moteurs.<\/p>\n<p>. 3,4EN commande l\u2019activation du second pont-H constitu\u00e9 de 3Y \/ 4Y<\/p>\n<p>. 3A et 4A sont les broches de commande du Pont-H 3Y \/ 4Y. Ils sont directement branch\u00e9s \u00e0 l\u2019Arduino pour commander le sens du courant entre 3Y et 4Y.<\/p>\n<p>. 3Y et 4Y sont branch\u00e9s directement sur le moteur.<\/p>\n<p>\u00a0<\/p>\n<p><span style=\"text-decoration: underline;\">Le programme<\/span><\/p>\n<p>Voici le code de l\u2019activit\u00e9 :<\/p>\n<table style=\"border-collapse: collapse; width: 100%;\">\n<tbody>\n<tr>\n<td style=\"width: 100%; padding-left: 40px;\">\n<p>const int controlPin1 = 2; <br \/>const int controlPin2 = 3; <br \/>const int enablePin = 9; <br \/>const int directionSwitchPin = 4; <br \/>const int onOffSwitchStateSwitchPin = 5; <br \/>const int potPin = A0;<\/p>\n<p><br \/>int onOffSwitchState = 0; <br \/>int previousOnOffSwitchState = 0; <br \/>int directionSwitchState = 0; <br \/>int previousDirectionSwitchState = 0;<\/p>\n<p>int motorEnabled = 0; <br \/>int motorSpeed = 0; <br \/>int motorDirection = 1;<\/p>\n<p>void setup(){<br \/><br \/>pinMode(directionSwitchPin, INPUT);<br \/>pinMode(onOffSwitchStateSwitchPin, INPUT);<br \/>pinMode(controlPin1, OUTPUT);<br \/>pinMode(controlPin2, OUTPUT);<br \/>pinMode(enablePin, OUTPUT);<\/p>\n<p><br \/>digitalWrite(enablePin, LOW);<br \/>}<\/p>\n<p>void loop(){<br \/><br \/>onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin);<br \/>delay(1);<br \/><br \/>directionSwitchState = digitalRead(directionSwitchPin);<br \/><br \/>motorSpeed = analogRead(potPin)\/4; <br \/><br \/>if(onOffSwitchState != previousOnOffSwitchState){<br \/><br \/>if(onOffSwitchState == HIGH){<br \/>motorEnabled = !motorEnabled;<br \/>}<br \/>}<\/p>\n<p>if (directionSwitchState != previousDirectionSwitchState) {<br \/><br \/>if (directionSwitchState == HIGH) {<br \/>motorDirection = !motorDirection;<br \/>}<br \/>} <br \/><br \/>if (motorDirection == 1) {<br \/>digitalWrite(controlPin1, HIGH);<br \/>digitalWrite(controlPin2, LOW);<br \/>} <br \/>else {<br \/>digitalWrite(controlPin1, LOW);<br \/>digitalWrite(controlPin2, HIGH);<br \/>} <br \/><br \/>if (motorEnabled == 1) {<br \/><br \/>analogWrite(enablePin, motorSpeed);<br \/>}<br \/>else { <br \/>analogWrite(enablePin, 0);<br \/>}<br \/><br \/>previousDirectionSwitchState = directionSwitchState;<br \/><br \/>previousOnOffSwitchState = onOffSwitchState;<br \/>}<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u00a0<\/p>\n<p><span style=\"text-decoration: underline;\">D\u00e9roulement du programme<\/span> :<\/p>\n<p>\u2013 1. D\u00e9claration des constantes et variables :<\/p>\n<p style=\"padding-left: 40px;\">. <strong>const int controlPin1 = 2<\/strong> (constante nombre entier correspondant \u00e0 la broche de l\u2019Arduino reli\u00e9e \u00e0 la broche 7 du L293D)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>const int controlPin2 = 3<\/strong> (constante nombre entier correspondant \u00e0 la broche de l\u2019Arduino reli\u00e9e \u00e0 la broche 2 du L293D)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>const int enablePin = 9<\/strong> (constante nombre entier correspondant \u00e0 la broche de l\u2019Arduino reli\u00e9e \u00e0 la broche 1 du L293D pour activer la rotation du moteur)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>const int directionSwitchPin = 4<\/strong> (constante nombre entier correspondant \u00e0 la broche du bouton poussoir pour le sens de rotation du moteur)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>const int onOffSwitchStateSwitchPin = 5<\/strong> (constante nombre entier correspondant \u00e0 la broche du bouton poussoir pour la mise en route du moteur)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>const int potPin = A0<\/strong> (constante nombre entier correspondant \u00e0 la broche du potentiom\u00e8tre pour le r\u00e9glage de la vitesse de rotation)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int onOffSwitchState = 0<\/strong> (variable nombre entier pour stocker la valeur du potentiel de la broche du bouton poussoir pour la mise en route du moteur)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int previousOnOffSwitchState = 0<\/strong> (variable nombre entier pour stocker l\u2019ancienne valeur du potentiel de la broche du bouton poussoir pour la mise en route du moteur)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int directionSwitchState = 0<\/strong> (variable nombre entier pour stocker la valeur du potentiel de la broche du bouton poussoir pour le sens de rotation du moteur)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int previousDirectionSwitchState = 0<\/strong> (variable nombre entier pour stocker l\u2019ancienne valeur du potentiel de la broche du bouton poussoir pour le sens de rotation du moteur)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int motorEnabled = 0<\/strong> (variable nombre entier indiquant si le moteur fonctionne)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int motorSpeed = 0<\/strong> (variable nombre entier pour la vitesse de rotation)<\/p>\n<p style=\"padding-left: 40px;\">. <strong>int motorDirection = 1<\/strong> (variable nombre entier pour le sens de rotation)<\/p>\n<p>\u00a0<\/p>\n<p>\u2013 2. Initialisation des entr\u00e9es et sorties :<\/p>\n<p style=\"padding-left: 40px;\">. <strong>Initialisation de la broche du bouton poussoir pour la mise en route du moteur en entr\u00e9e,<\/strong><\/p>\n<p style=\"padding-left: 40px;\">. <strong>Initialisation de la broche du bouton poussoir pour le sens de rotation du moteur en entr\u00e9e,<\/strong><\/p>\n<p style=\"padding-left: 40px;\">. <strong>Initialisation des broches de contr\u00f4le du moteur (broches \u00ab controlPin1 \u00bb, \u00ab controlPin2 \u00bb et \u00ab enablePin \u00bb) en sortie,<\/strong><\/p>\n<p style=\"padding-left: 40px;\">. <strong>La broche \u00ab enablePin \u00bb pour l\u2019activation de la rotation du moteur est mise \u00e0 un niveau bas.<\/strong><\/p>\n<p>\u00a0<\/p>\n<p>\u2013 3. Fonction principale en boucle :<\/p>\n<p style=\"padding-left: 40px;\">\u2013&gt; <strong>Lecture de la valeur de la broche du bouton poussoir pour la mise route du moteur,<\/strong><\/p>\n<p style=\"padding-left: 40px;\">\u2013&gt; <strong>Lecture de la valeur de la broche du bouton poussoir pour le sens de rotation,<\/strong><\/p>\n<p style=\"padding-left: 40px;\">\u2013&gt; <strong>R\u00e9glage de la vitesse de rotation du moteur apr\u00e8s lecture de la valeur de la broche du potentiom\u00e8tre,<\/strong><\/p>\n<p style=\"padding-left: 40px;\">\u2013&gt; <strong>Mise en rotation du moteur ou arr\u00eat du moteur si changement de la valeur du bouton poussoir correspondant,<\/strong><\/p>\n<p style=\"padding-left: 40px;\">&#8211;&gt; <strong>Changement du sens de rotation si appui sur le bouton poussoir correspondant.<\/strong><\/p>\n<p>\u00a0<\/p>\n\n\n<div  class=\"grids-section grids-is-advanced\" style=\"--_gs-gap-desktop:0px 0px;--_gs-m-desktop:0 0 0 0;--_gs-p-desktop:0 0 0 0;--_gs-bg-desktop:transparent none;--_gs-bg-xp-desktop:0px;--_gs-zi-desktop:auto;--_gs-d-desktop:block;--_gs-mw-desktop:calc(100% - 0 - 0);--_gs-gap-tablet:0px 0px;--_gs-m-tablet:0 0 0 0;--_gs-p-tablet:0 0 0 0;--_gs-bg-tablet:transparent none;--_gs-bg-xp-tablet:0px;--_gs-zi-tablet:auto;--_gs-d-tablet:block;--_gs-mw-tablet:calc(100% - 0 - 0);--_gs-gap-mobile:0px 0px;--_gs-m-mobile:0 0 0 0;--_gs-p-mobile:0 0 0 0;--_gs-bg-mobile:transparent none;--_gs-bg-xp-mobile:0px;--_gs-zi-mobile:auto;--_gs-d-mobile:block;--_gs-mw-mobile:calc(100% - 0 - 0);--_gs-columns:12;--_gs-rows:6\"><div class=\"grids-s-w_i\">\n<div class=\"grids-area\" style=\"--_ga-column:1\/2;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=6525\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/moins.jpg\" alt=\"\" class=\"wp-image-107\" width=\"44\" height=\"24\"\/><\/a><\/figure>\n\n<\/div>\n\n<div class=\"grids-area\" style=\"--_ga-column:12\/13;--_ga-row:1\/2;--_ga-m-desktop:0 0 0 0;--_ga-p-desktop:0 0 0 0;--_ga-bg-desktop:transparent none;--_ga-zi-desktop:auto;--_ga-d-desktop:flex;--_ga-mw-desktop:calc(100% - 0 - 0);--_ga-m-tablet:0 0 0 0;--_ga-p-tablet:0 0 0 0;--_ga-bg-tablet:transparent none;--_ga-zi-tablet:auto;--_ga-d-tablet:flex;--_ga-mw-tablet:calc(100% - 0 - 0);--_ga-m-mobile:0 0 0 0;--_ga-p-mobile:0 0 0 0;--_ga-bg-mobile:transparent none;--_ga-zi-mobile:auto;--_ga-d-mobile:flex;--_ga-mw-mobile:calc(100% - 0 - 0)\">\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.ardpylab.fr\/?page_id=6564\"><img loading=\"lazy\" decoding=\"async\" width=\"50\" height=\"28\" src=\"https:\/\/www.ardpylab.fr\/wp-content\/uploads\/2020\/03\/plus.jpg\" alt=\"\" class=\"wp-image-106\"\/><\/a><\/figure>\n\n<\/div>\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>10. Moteur DC &#8211; L293D (Gestion de la rotation d\u2019un moteur \u00e0 courant continudans les 2 sens et \u00e0 vitesse variable&nbsp;&#8211; Cat\u00e9gorie: Moteurs) \u00a0 L&rsquo;objectif de cette activit\u00e9 est de faire tourner un moteur DC dans les deux sens \u00e0 vitesse de rotation variable.Pour cela on utilise un pont en H, le CI L293D, selon [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6520","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/6520","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6520"}],"version-history":[{"count":6,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/6520\/revisions"}],"predecessor-version":[{"id":6579,"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=\/wp\/v2\/pages\/6520\/revisions\/6579"}],"wp:attachment":[{"href":"https:\/\/www.ardpylab.fr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}