{"id":2190,"date":"2026-09-24T23:07:23","date_gmt":"2026-09-24T21:07:23","guid":{"rendered":"https:\/\/labopothier.com\/?p=2190"},"modified":"2026-09-24T23:14:31","modified_gmt":"2026-09-24T21:14:31","slug":"activite-arduino-suiveur-solaire-a-deux-axes-avec-arduino","status":"publish","type":"post","link":"https:\/\/labopothier.com\/index.php\/2026\/09\/24\/activite-arduino-suiveur-solaire-a-deux-axes-avec-arduino\/","title":{"rendered":"ACTIVITE ARDUINO : Suiveur solaire \u00e0 deux axes avec Arduino"},"content":{"rendered":"\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-9-16 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Suiveur solaire \u00e0 2 axes avec ARDUINO\" width=\"422\" height=\"750\" src=\"https:\/\/www.youtube.com\/embed\/A40-Cjz3xII?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Objectif<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;objectif de ce projet est de r\u00e9aliser un <strong>suiveur solaire \u00e0 deux axes<\/strong> \u00e0 l&rsquo;aide d&rsquo;une carte Arduino, de quatre photor\u00e9sistances et de deux servomoteurs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le dispositif fonctionne sur le principe d&rsquo;un <strong>\u00ab tournesol robotis\u00e9 \u00bb<\/strong> : il cherche en permanence la direction de la source lumineuse et oriente automatiquement son support vers celle-ci.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un tel syst\u00e8me peut notamment \u00eatre utilis\u00e9 pour <strong>orienter de fa\u00e7on optimale un panneau photovolta\u00efque vers le Soleil<\/strong> au cours de la journ\u00e9e.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Mat\u00e9riel n\u00e9cessaire<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">1. Une carte Arduino<\/h3>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">Une <a href=\"https:\/\/www.gotronic.fr\/art-carte-r3dip-p-joy-it-47500.htm\">carte Arduino<\/a> disposant d&rsquo;au moins deux entr\u00e9es analogiques est n\u00e9cessaire.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans ce projet :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>A0<\/strong> est utilis\u00e9e pour la mesure <strong>Est-Ouest (EO)<\/strong> ;<\/li>\n\n\n\n<li><strong>A1<\/strong> est utilis\u00e9e pour la mesure <strong>Nord-Sud (NS)<\/strong>.<\/li>\n<\/ul>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"600\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2025\/11\/12420.jpg-1.webp\" alt=\"\" class=\"wp-image-1848 size-full\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2025\/11\/12420.jpg-1.webp 600w, https:\/\/labopothier.com\/wp-content\/uploads\/2025\/11\/12420.jpg-1-300x300.webp 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2025\/11\/12420.jpg-1-150x150.webp 150w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">2. Quatre photor\u00e9sistances<\/h3>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">Quatre <a href=\"https:\/\/www.gotronic.fr\/art-photoresistance-pgm5649d-39770.htm\">photor\u00e9sistances<\/a> permettent de d\u00e9terminer la direction de la source lumineuse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Elles sont dispos\u00e9es selon les quatre directions :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>N<\/strong> : Nord ;<\/li>\n\n\n\n<li><strong>S<\/strong> : Sud ;<\/li>\n\n\n\n<li><strong>E<\/strong> : Est ;<\/li>\n\n\n\n<li><strong>O<\/strong> : Ouest.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Les quatre photor\u00e9sistances sont install\u00e9es dans un <strong>petit support carr\u00e9 imprim\u00e9 en 3D comportant quatre trous<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La disposition des capteurs permet de comparer l&rsquo;\u00e9clairement re\u00e7u dans les diff\u00e9rentes directions.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"600\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/39770.jpg.webp\" alt=\"\" class=\"wp-image-2208 size-full\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/39770.jpg.webp 600w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/39770.jpg-300x300.webp 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/39770.jpg-150x150.webp 150w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">3. Deux servomoteurs<\/h3>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 41%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">Deux <a href=\"https:\/\/www.gotronic.fr\/art-servomoteur-180-df9gms-19377.htm\">servomoteurs<\/a> permettent d&rsquo;orienter le support suivant deux axes :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>un axe <strong>Est-Ouest<\/strong> ;<\/li>\n\n\n\n<li>un axe <strong>Nord-Sud<\/strong>.<\/li>\n<\/ul>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"600\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/19377.jpg-2.webp\" alt=\"\" class=\"wp-image-2212 size-full\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/19377.jpg-2.webp 600w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/19377.jpg-2-300x300.webp 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/19377.jpg-2-150x150.webp 150w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure><\/div>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/12404.jpg.webp\" alt=\"\" class=\"wp-image-2211\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/12404.jpg.webp 500w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/12404.jpg-300x300.webp 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/12404.jpg-150x150.webp 150w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><figcaption class=\"wp-element-caption\">Ils sont mont\u00e9s sur un support <strong>Pan-Tilt \u00e0 deux axes<\/strong>, par exemple le mod\u00e8le DG2B propos\u00e9 par <a href=\"https:\/\/www.gotronic.fr\/art-support-pan-tilt-dg2b-avec-servos-12404.htm?utm_source=chatgpt.com\" target=\"_blank\" rel=\"noopener\">Gotronic<\/a><\/figcaption><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Principe<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00e9terminer la direction de la lumi\u00e8re<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le syst\u00e8me utilise quatre photor\u00e9sistances pour d\u00e9terminer si la source lumineuse est davantage situ\u00e9e vers l&rsquo;Est ou l&rsquo;Ouest, et vers le Nord ou le Sud.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les capteurs sont associ\u00e9s deux par deux afin d&rsquo;obtenir deux informations :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>une information <strong>Est-Ouest (EO)<\/strong> ;<\/li>\n\n\n\n<li>une information <strong>Nord-Sud (NS)<\/strong>.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 25%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">Les photor\u00e9sistances sont aliment\u00e9es selon ce montage en pont pour obtenir les deux tensions de mesure EO et NS.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"277\" height=\"345\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/montage.png\" alt=\"\" class=\"wp-image-2200 size-full\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/montage.png 277w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/montage-241x300.png 241w\" sizes=\"auto, (max-width: 277px) 100vw, 277px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Ces deux informations sont mesur\u00e9es par les entr\u00e9es analogiques de l&rsquo;Arduino :<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Mesure<\/th><th>Entr\u00e9e Arduino<\/th><\/tr><\/thead><tbody><tr><td>Est-Ouest (EO)<\/td><td><strong>A0<\/strong><\/td><\/tr><tr><td>Nord-Sud (NS)<\/td><td><strong>A1<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsque les photor\u00e9sistances associ\u00e9es \u00e0 un axe re\u00e7oivent une quantit\u00e9 de lumi\u00e8re comparable, le montage est proche de l&rsquo;\u00e9quilibre.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La valeur mesur\u00e9e par l&rsquo;Arduino est alors proche de <strong>512<\/strong>, correspondant approximativement \u00e0 <strong>2,5 V<\/strong> pour une r\u00e9f\u00e9rence de 5 V et une conversion analogique sur 10 bits.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si la lumi\u00e8re \u00e9claire davantage l&rsquo;un des deux c\u00f4t\u00e9s, le montage se d\u00e9s\u00e9quilibre et la valeur mesur\u00e9e s&rsquo;\u00e9loigne de 512.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;Arduino peut alors commander le servomoteur correspondant pour corriger l&rsquo;orientation.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Le support des quatre capteurs<\/h1>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><img loading=\"lazy\" decoding=\"async\" width=\"666\" height=\"725\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/IMG_4764-2.jpg\" alt=\"\" class=\"wp-image-2209\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/IMG_4764-2.jpg 666w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/IMG_4764-2-276x300.jpg 276w\" sizes=\"auto, (max-width: 666px) 100vw, 666px\" \/><figcaption class=\"wp-element-caption\"><em>Support imprim\u00e9 en 3D permettant de positionner les quatre photor\u00e9sistances.<\/em><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Le petit support imprim\u00e9 en 3D constitue la partie sensible du dispositif.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les quatre photor\u00e9sistances sont positionn\u00e9es dans les quatre trous du support, suivant les directions <strong>N, S, E et O<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La g\u00e9om\u00e9trie du support permet de cr\u00e9er des diff\u00e9rences d&rsquo;\u00e9clairement entre les capteurs lorsque le dispositif n&rsquo;est pas correctement orient\u00e9 vers la source lumineuse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsque la source lumineuse se trouve dans l&rsquo;axe du dispositif, les quatre capteurs re\u00e7oivent des \u00e9clairements plus proches les uns des autres.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsque le dispositif est d\u00e9sorient\u00e9, une partie des capteurs est davantage \u00e9clair\u00e9e que les autres. Cette diff\u00e9rence permet au programme de d\u00e9terminer dans quelle direction il doit d\u00e9placer le support.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Montage du Pan-Tilt<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Le support Pan-Tilt permet d&rsquo;obtenir les deux degr\u00e9s de libert\u00e9 n\u00e9cessaires au suivi de la source lumineuse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un servomoteur commande l&rsquo;orientation autour d&rsquo;un premier axe et le second servomoteur commande l&rsquo;inclinaison autour du deuxi\u00e8me axe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Avant de fixer d\u00e9finitivement les \u00e9l\u00e9ments m\u00e9caniques, il est important de <strong>positionner les deux servomoteurs \u00e0 90\u00b0<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette \u00e9tape permet de d\u00e9finir une position centrale de r\u00e9f\u00e9rence.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Mise au neutre des servomoteurs<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Avant de monter m\u00e9caniquement les servomoteurs, connecter ceux-ci \u00e0 l&rsquo;Arduino et t\u00e9l\u00e9verser le programme suivant :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">#include &lt;Servo.h&gt;\n\nServo servoEO;\nServo servoNS;\n\nvoid setup() {\n\n  servoEO.attach(9);\n  servoNS.attach(10);\n\n  \/\/ Position centrale des deux servomoteurs\n  servoEO.write(90);\n  servoNS.write(90);\n}\n\nvoid loop() {\n  \/\/ Les servomoteurs restent \u00e0 90\u00b0\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Les deux servomoteurs se positionnent alors \u00e0 <strong>90\u00b0<\/strong>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Attention :<\/strong> les servomoteurs peuvent effectuer un mouvement brusque lors de leur mise sous tension. Il est pr\u00e9f\u00e9rable de maintenir le m\u00e9canisme libre pendant cette \u00e9tape.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois les servomoteurs positionn\u00e9s, installer les palonniers et fixer m\u00e9caniquement le support.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La position recherch\u00e9e est une position <strong>centrale<\/strong>, dans laquelle le support peut ensuite se d\u00e9placer dans les deux directions.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"564\" height=\"392\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/IMG_4764-mini-1.jpg\" alt=\"\" class=\"wp-image-2196\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/IMG_4764-mini-1.jpg 564w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/IMG_4764-mini-1-300x209.jpg 300w\" sizes=\"auto, (max-width: 564px) 100vw, 564px\" \/><figcaption class=\"wp-element-caption\"><strong>Pan-Tilt en position neutre<\/strong><\/figcaption><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">V\u00e9rification des deux axes<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Avant de connecter les capteurs et de lancer le programme de suivi solaire, il est int\u00e9ressant de v\u00e9rifier s\u00e9par\u00e9ment le fonctionnement des deux servomoteurs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On peut par exemple tester l&rsquo;axe Est-Ouest avec :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">servoEO.write(60);\nservoNS.write(90);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">puis :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">servoEO.write(120);\nservoNS.write(90);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le support doit alors se d\u00e9placer autour de l&rsquo;axe Est-Ouest.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On peut ensuite tester l&rsquo;autre axe :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">servoEO.write(90);\nservoNS.write(60);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">puis :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">servoEO.write(90);\nservoNS.write(120);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le support doit alors s&rsquo;incliner autour de l&rsquo;axe Nord-Sud.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Selon le montage m\u00e9canique, le sens de rotation peut \u00eatre invers\u00e9. Il suffit alors d&rsquo;adapter le programme.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">C\u00e2blage<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Les quatre photor\u00e9sistances sont utilis\u00e9es pour obtenir les deux mesures d&rsquo;orientation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les connexions principales sur la carte Arduino sont les suivantes :<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Fonction<\/th><th>Broche Arduino<\/th><\/tr><\/thead><tbody><tr><td>Mesure Est-Ouest (EO)<\/td><td><strong>A0<\/strong><\/td><\/tr><tr><td>Mesure Nord-Sud (NS)<\/td><td><strong>A1<\/strong><\/td><\/tr><tr><td>Servomoteur axe EO<\/td><td><strong>D9<\/strong><\/td><\/tr><tr><td>Servomoteur axe NS<\/td><td><strong>D10<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Les servomoteurs sont aliment\u00e9s en 5 V par la carte Arduino (la puissance est suffisante pour ces petits mod\u00e8les de servomoteurs, il n&rsquo;est pas n\u00e9cessaire d&rsquo;utiliser une autre alimentation ext\u00e9rieure)<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"527\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/suiveur-solaire_bb-1-1024x527.png\" alt=\"\" class=\"wp-image-2206\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/suiveur-solaire_bb-1-1024x527.png 1024w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/suiveur-solaire_bb-1-300x154.png 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/suiveur-solaire_bb-1-766x394.png 766w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/suiveur-solaire_bb-1-1536x790.png 1536w, https:\/\/labopothier.com\/wp-content\/uploads\/2026\/09\/suiveur-solaire_bb-1.png 1680w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Programmer le suiveur solaire<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Une fois le montage m\u00e9canique r\u00e9alis\u00e9 et les deux servomoteurs mis au neutre, on peut programmer le suivi de la source lumineuse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le programme mesure successivement :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">analogRead(A0)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">pour l&rsquo;axe <strong>Est-Ouest<\/strong>, puis :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">analogRead(A1)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">pour l&rsquo;axe <strong>Nord-Sud<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La valeur d&rsquo;\u00e9quilibre est fix\u00e9e \u00e0 environ <strong>512<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le programme commande alors les servomoteurs afin de r\u00e9duire l&rsquo;\u00e9cart par rapport \u00e0 cette valeur.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Programme Arduino<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">#include &lt;Servo.h&gt;\n\n\/\/ -------------------------\n\/\/ Entr\u00e9es des capteurs\n\/\/ -------------------------\nconst int CAPTEUR_EO = A0;\nconst int CAPTEUR_NS = A1;\n\n\/\/ -------------------------\n\/\/ Servomoteurs\n\/\/ -------------------------\nconst int SERVO_EO = 9;\nconst int SERVO_NS = 10;\n\nServo MonServo1;\nServo MonServo2;\n\n\/\/ -------------------------\n\/\/ Position des servomoteurs\n\/\/ -------------------------\nint angleEO = 90;\nint angleNS = 90;\n\n\/\/ Limites m\u00e9caniques\nconst int ANGLE_MIN = 10;\nconst int ANGLE_MAX = 170;\n\n\/\/ -------------------------\n\/\/ R\u00e9glages des capteurs\n\/\/ -------------------------\n\n\/\/ Valeur correspondant \u00e0 l'\u00e9quilibre\nconst int CENTRE = 512;\n\n\/\/ Zone morte autour de la valeur d'\u00e9quilibre\nconst int ZONE_MORTE = 15;\n\n\/\/ -------------------------\n\/\/ Moyenne des mesures\n\/\/ -------------------------\nconst int N = 5;\n\n\nvoid setup() {\n\n  MonServo1.attach(SERVO_EO);\n  MonServo2.attach(SERVO_NS);\n\n  \/\/ Position initiale\n  MonServo1.write(angleEO);\n  MonServo2.write(angleNS);\n\n  Serial.begin(9600);\n}\n\n\nvoid loop() {\n\n  \/\/ -------------------------\n  \/\/ Lecture moyenne des capteurs\n  \/\/ -------------------------\n\n  long sommeEO = 0;\n  long sommeNS = 0;\n\n  for (int i = 0; i &lt; N; i++) {\n\n    sommeEO += analogRead(CAPTEUR_EO);\n    sommeNS += analogRead(CAPTEUR_NS);\n\n    delay(2);\n  }\n\n  int ValEO = sommeEO \/ N;\n  int ValNS = sommeNS \/ N;\n\n\n  \/\/ -------------------------\n  \/\/ Axe Est-Ouest\n  \/\/ -------------------------\n\n  if (ValEO &gt; CENTRE + ZONE_MORTE) {\n\n    if (angleEO &lt; ANGLE_MAX) {\n      angleEO++;\n    }\n  }\n\n  else if (ValEO &lt; CENTRE - ZONE_MORTE) {\n\n    if (angleEO &gt; ANGLE_MIN) {\n      angleEO--;\n    }\n  }\n\n\n  \/\/ -------------------------\n  \/\/ Axe Nord-Sud\n  \/\/ -------------------------\n\n  if (ValNS &lt; CENTRE - ZONE_MORTE) {\n\n    if (angleNS &lt; ANGLE_MAX) {\n      angleNS++;\n    }\n  }\n\n  else if (ValNS &gt; CENTRE + ZONE_MORTE) {\n\n    if (angleNS &gt; ANGLE_MIN) {\n      angleNS--;\n    }\n  }\n\n\n  \/\/ -------------------------\n  \/\/ Commande des servomoteurs\n  \/\/ -------------------------\n\n  MonServo1.write(angleEO);\n  MonServo2.write(angleNS);\n\n\n  \/\/ -------------------------\n  \/\/ Affichage dans le moniteur s\u00e9rie\n  \/\/ -------------------------\n\n  Serial.print(\"EO : \");\n  Serial.print(ValEO);\n\n  Serial.print(\"   NS : \");\n  Serial.print(ValNS);\n\n  Serial.print(\"   Angle EO : \");\n  Serial.print(angleEO);\n\n  Serial.print(\"   Angle NS : \");\n  Serial.println(angleNS);\n\n\n  delay(50);\n}<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Explication du programme<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Lecture des capteurs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;Arduino r\u00e9alise plusieurs mesures successives :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">sommeEO += analogRead(CAPTEUR_EO);\nsommeNS += analogRead(CAPTEUR_NS);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Les cinq mesures sont ensuite moyenn\u00e9es.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette moyenne permet de r\u00e9duire les petites fluctuations de la mesure et d&rsquo;obtenir un mouvement plus r\u00e9gulier des servomoteurs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Une zone morte autour de 512<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Une mesure exactement \u00e9gale \u00e0 512 est difficile \u00e0 obtenir en permanence dans un montage r\u00e9el.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les mesures peuvent par exemple osciller entre 508, 514, 510, 516&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si le programme r\u00e9agissait \u00e0 chaque variation, les servomoteurs pourraient effectuer de petits mouvements permanents.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On introduit donc une <strong>zone morte<\/strong> :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">const int ZONE_MORTE = 15;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le syst\u00e8me consid\u00e8re ainsi que le capteur est suffisamment \u00e9quilibr\u00e9 lorsque la mesure est comprise approximativement entre :<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>497 et 527.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans cette zone, le servomoteur ne bouge pas.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Limitation de la course des servomoteurs<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Les angles sont limit\u00e9s \u00e0 :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">const int ANGLE_MIN = 10;\nconst int ANGLE_MAX = 170;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cela permet d&rsquo;\u00e9viter d&rsquo;aller jusqu&rsquo;aux extr\u00e9mit\u00e9s de la course du servomoteur et de limiter les risques de blocage m\u00e9canique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Contrairement au programme initial, le syst\u00e8me <strong>ne revient pas brutalement \u00e0 90\u00b0 lorsqu&rsquo;une limite est atteinte<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Chaque axe est simplement maintenu dans sa plage autoris\u00e9e.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Mise au point<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Pour les premiers essais, il est pr\u00e9f\u00e9rable d&rsquo;utiliser une <strong>lampe<\/strong> plut\u00f4t que directement le Soleil.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On peut d\u00e9placer progressivement la source lumineuse autour du capteur et observer :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>les valeurs EO et NS dans le moniteur s\u00e9rie ;<\/li>\n\n\n\n<li>les variations des angles des servomoteurs ;<\/li>\n\n\n\n<li>le d\u00e9placement du support ;<\/li>\n\n\n\n<li>la recherche progressive de la position d&rsquo;\u00e9quilibre.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Le moniteur s\u00e9rie affiche par exemple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">EO : 518   NS : 507   Angle EO : 94   Angle NS : 87\nEO : 514   NS : 510   Angle EO : 95   Angle NS : 88\nEO : 512   NS : 512   Angle EO : 95   Angle NS : 88<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsque les valeurs se rapprochent de la zone d&rsquo;\u00e9quilibre, les servomoteurs cessent progressivement de bouger.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Si le syst\u00e8me tourne dans le mauvais sens<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Selon la fa\u00e7on dont les photor\u00e9sistances et les servomoteurs ont \u00e9t\u00e9 mont\u00e9s, il est possible qu&rsquo;un axe tourne dans le mauvais sens.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Par exemple, si le syst\u00e8me s&rsquo;\u00e9loigne de la source lumineuse au lieu de s&rsquo;en rapprocher, il suffit d&rsquo;inverser les deux commandes correspondantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour l&rsquo;axe EO :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">angleEO++;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">et<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"cpp\" class=\"language-cpp\">angleEO--;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">peuvent \u00eatre interverties.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">M\u00eame chose pour l&rsquo;axe NS.<\/p>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\" style=\"grid-template-columns:auto 32%\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">Tous les fichiers (code Arduino, fichiers 3D, &#8230;) sont <strong><a href=\"https:\/\/github.com\/jonasforlot\/python-arduino\/tree\/main\/essai_panneau_solaire\">ICI<\/a><\/strong><\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><a href=\"https:\/\/github.com\/jonasforlot\/python-arduino\/tree\/main\/essai_panneau_solaire\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/pngwing.com_.png\" alt=\"\" class=\"wp-image-1603 size-full\" srcset=\"https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/pngwing.com_.png 512w, https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/pngwing.com_-300x300.png 300w, https:\/\/labopothier.com\/wp-content\/uploads\/2024\/09\/pngwing.com_-150x150.png 150w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/a><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Objectif L&rsquo;objectif de ce projet est de r\u00e9aliser un suiveur solaire \u00e0 deux axes \u00e0 l&rsquo;aide d&rsquo;une carte Arduino, de quatre photor\u00e9sistances et de deux servomoteurs. Le dispositif fonctionne sur le principe d&rsquo;un \u00ab tournesol robotis\u00e9 \u00bb : il cherche en permanence la direction de la source lumineuse et oriente automatiquement son support vers celle-ci. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2198,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","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":"","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":[9,7],"tags":[],"class_list":["post-2190","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-microcontroleurs-et-python"],"_links":{"self":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/2190","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=2190"}],"version-history":[{"count":19,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/2190\/revisions"}],"predecessor-version":[{"id":2222,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/posts\/2190\/revisions\/2222"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/media\/2198"}],"wp:attachment":[{"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/media?parent=2190"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/categories?post=2190"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/labopothier.com\/index.php\/wp-json\/wp\/v2\/tags?post=2190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}