Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2019-03-14T17:57:19+01:00Les derniers messages parus sur le forum de Zeste de Savoir.Asservissement position avec correcteur PI, message #2003532019-03-14T17:57:19+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/12227/asservissement-position-avec-correcteur-pi/?page=1#p200353<p>Salut! <img src="/static/smileys/smile.png" alt=":)" class="smiley">
Curiosité: je n’ai pas trouver où tu accèdes au mode graphique sur l’IDE Arduino, pourrais-tu m’en dire plus ?</p>
<p>Merci! <img src="/static/smileys/heureux.png" alt=":D" class="smiley"></p>Asservissement position avec correcteur PI, message #2003332019-03-13T23:12:12+01:00dubser/@dubserhttps://zestedesavoir.com/forums/sujet/12227/asservissement-position-avec-correcteur-pi/?page=1#p200333<p>Allô,</p>
<p>Même le système tel que décrit n’est pas totalement linéaire, le théorie s’applique a peu près. Si je comprend bien les courbes, la variable controlée, l’angle, vert, suit approximativement la consigne, vert avec +- une erreur parfaitement normale dans un asservissement proportionnel seulement, ce qui me semble le cas si jai bien compris le script Arduino. S’il est désire une erreur plus faible il faut introduire une composante intégrale a l algorithme. Contrôle PI plutôt que P seulement. Cette fonction devra ajouter (sommer) à la variable controlée une valeur égale a I= SUM(Ki * erreur) ou SUM est l’intégration (sommation a chaque n tours de boucle). Ceci si les constantes sont ajustées correctement va réduire l’erreur a zéro sans oscillation du système en régime permanent. </p>
<p>Je me permet de mentionner cet article qui aborde le même type de sujet et vaut d’être consulté:<br>
<a href="https://zestedesavoir.com/forums/sujet/11649/arduino-asservissement-grace-au-pid/">https://zestedesavoir.com/forums/sujet/11649/arduino-asservissement-grace-au-pid/</a></p>Asservissement position avec correcteur PI, message #2003312019-03-13T22:20:31+01:00clem34/@clem34https://zestedesavoir.com/forums/sujet/12227/asservissement-position-avec-correcteur-pi/?page=1#p200331<p>Merci pour ton aide Aabu. Voici les images. </p>
<p>Les courbes ont été tracé à l’aide du traceur de l’environnement Arduino (qui ne présente visiblement pas les échelles… :o)</p>
<p>Légende et axe :<br>
En bleu => Angle parcouru par le rotor<br>
En rouge => Erreur entre consigne et angle parcouru<br>
En orange => Rapport cyclique<br>
En vert => Consigne<br>
X => n-ième asservissement </p>
<p>Pour Kp = 0.25</p>
<figure><img src="/media/galleries/6770/d9acc9e2-5535-4e4b-983b-f64339fbcf1c.png" alt="graphe_2.png"><figcaption>graphe_2.png</figcaption></figure>
<p> L’amortissement du système est faible, ce qui est a priori normal. Mais l’erreur statique est quant à elle constante quelque soit la consigne. D’après mes souvenirs des cours d’automatiques, l’erreur statique doit être proportionnelle à la valeur de la consigne. => Donc là… pas bon.</p>
<p>Pour Kp = 0.5</p>
<figure><img src="/media/galleries/6770/38fc2340-856c-436b-aa35-eb79530a6e0f.png" alt="graphe_3.png"><figcaption>graphe_3.png</figcaption></figure>
<p>Il y a un faible dépassement et quelques oscillations, mais l’erreur statique remontée par le µC est quasiment nulle, alors que le rotor a parcouru en réalité, un angle bien plus important que la consigne demandée… => Donc là, pas bon non plus.</p>
<p>Pour Kp = 0.75</p>
<figure><img src="/media/galleries/6770/1bb28b17-e702-46e5-8cd0-19df89f51c07.png" alt="graphe_4.png"><figcaption>graphe_4.png</figcaption></figure>
<p>Même constat que pour Kp = 0.5 hormis une légère amplification des oscillations (erreur statique remontée par le µC toujours nulle alors que l’angle parcouru en réalité, est beaucoup, beaucoup plus important que la consigne demandée). => Pas bon non plus…</p>Asservissement position avec correcteur PI, message #2003292019-03-13T22:05:11+01:00Aabu/@Aabuhttps://zestedesavoir.com/forums/sujet/12227/asservissement-position-avec-correcteur-pi/?page=1#p200329<p>Salut,</p>
<p>Sans les images, c’est plus difficile de t’aider. Normalement, il suffit de les copier-coller dans la zone d’édition depuis le presse-papiers ou d’y glisser-déposer le fichier. </p>Asservissement position avec correcteur PI, message #2003282019-03-13T21:45:19+01:00clem34/@clem34https://zestedesavoir.com/forums/sujet/12227/asservissement-position-avec-correcteur-pi/?page=1#p200328<p>Bonjour à tous,</p>
<p>Je suis nouveau sur ce forum et je le trouve super intéressant. Du coup, j’ai souhaité partager le problème que je rencontre actuellement sur un asservissement de position de moteur à courant continu. Je vais essayer d’être le plus précis possible dans mes explications.</p>
<p>Description de mon application : j’effectue un asservissement numérique avec un Atmega328 à l’aide d’Arduino. Ce microcontrôleur vient commander un moteur CC à travers un pont en H. En particulier, la commande est générée par la PWM du microcontrôleur, et est ensuite dirigée vers des portes logiques qui délivrent eux-même le signal PWM et son complément au pont en H.
Le moteur est équipé d’une roue codeuse à effet Hall pour capter la rotation de son axe rotor. Ce capteur fourni des fronts, provoqué par un changement d’angle, que je viens compter avec le µC (l’angle parcouru entre 2 tick est de 30°).
Ref. moteur : <a href="https://www.pololu.com/product/3215">https://www.pololu.com/product/3215</a></p>
<p>Les couples résistants élevés induits par la charge mécanique m’empêche d’utiliser un servomoteur. Le moteur possède donc un réducteur 1:20.4 pour palier à ce problème. L’axe de sorti parcourt dans l’application, au maximum 3 tours.</p>
<p>Pour les besoins de mon application, le axe moteur doit atteindre la consigne sans erreur statique (c’est primordial). J’ai donc souhaité implanter un correcteur PI.</p>
<p>Dans un premier temps, j’ai commencé par un asservissement avec correction proportionnelle seulement dont voici le code :</p>
<div class="hljs-code-div"><div class="hljs-line-numbers"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></div><pre><code class="hljs language-arduino"><span class="hljs-keyword">void</span> Asservissement(<span class="hljs-keyword">float</span> ConsignePositionRotor) <span class="hljs-comment">// fonction d'asservissement effectuée toutes les 79ms</span>
{
<span class="hljs-comment">// Chaine directe </span>
ErreurCourante = ConsignePositionRotor - PositionCouranteRotor ; <span class="hljs-comment">// Calcul de l'erreur</span>
RapportCyclique = Kp * ErreurCourante + <span class="hljs-number">127</span> ; <span class="hljs-comment">// Correcteur PI</span>
<span class="hljs-built_in">if</span> ( RapportCyclique > <span class="hljs-number">255</span> ){<span class="hljs-comment">// Saturation dans un sens de rotation</span>
RapportCyclique = <span class="hljs-number">255</span>;
}
<span class="hljs-built_in">if</span> ( RapportCyclique < <span class="hljs-number">0</span> ){<span class="hljs-comment">// Saturation dans l'autre de rotation</span>
RapportCyclique = <span class="hljs-number">0</span>;
}
OCR2A = RapportCyclique ; <span class="hljs-comment">// Registre de la valeur de rapport cyclique de la PWM de l'Atmega328</span>
<span class="hljs-comment">// Chaine de retour </span>
<span class="hljs-built_in">if</span> (ErreurCourante > <span class="hljs-number">0</span>){
PositionCouranteRotor = PositionCouranteRotor + TCNT1 ;
TCNT1 = <span class="hljs-number">0</span> ;
}
<span class="hljs-built_in">if</span> (ErreurCourante < <span class="hljs-number">0</span>){
PositionCouranteRotor = PositionCouranteRotor - TCNT1 ;
TCNT1 = <span class="hljs-number">0</span> ;
}
}
</code></pre></div>
<p>Cette fonction est effectuée toutes les 26.3ms.
TCNT1 est le registre du compteur 1 de l’atmega qui compte les 'ticks’ de ma roue codeuse.
Toutes les variables sont réinitialisées à chaque fin d’asservissement.
Enfin, la constante 127 est ajouté à la variable RapportCyclique pour utiliser les deux sens de rotations(de 0 à 127, on tourne dans un sens et de 127 à 255, on tourne dans l’autre).</p>
<p>J’ai ensuite testé plusieurs consignes d’angles pour 3 valeurs gain Kp (0.25, 0.5 et 0.75) afin de tester cette asservissement tout neuf.</p>
<p>Pour Kp = 0.25 :
L’amortissement du système est faible, ce qui est a priori normal. Mais l’erreur statique est quant à elle constante quelque soit la consigne. D’après mes souvenirs des cours d’automatiques, l’erreur statique doit être proportionnelle à la valeur de la consigne. => Donc là… pas bon.</p>
<p>Pour Kp = 0.5 :
Il y a un faible dépassement et quelques oscillations, mais l’erreur statique remontée par le µC est quasiment nulle, alors que le rotor a parcouru en réalité, un angle bien plus important que la consigne demandée… => Donc là, pas bon non plus.</p>
<p>Pour Kp = 0.75 :
Même constat que pour Kp = 0.5 hormis une légère amplification des oscillations (erreur statique remontée par le µC toujours nulle alors que l’angle parcouru en réalité, est beaucoup, beaucoup plus important que la consigne demandée). => Pas bon non plus…</p>
<p>Voilà mon soucis… J’ai l’impression qu’il y a un truc qui m’échappe… peut-être que j’emploie une mauvaise méthode ?</p>
<p>En vous remerciant par avance pour toutes vos réponses.
Bonne soirée !</p>
<p>PS : j’ai des photos de mes courbes mais je n’arrive pas à les intégrer dans le message…</p>[Arduino] Alimentation moteur , message #1652742017-10-29T08:46:56+01:00bendia/@bendiahttps://zestedesavoir.com/forums/sujet/9597/arduino-alimentation-moteur/?page=1#p165274<p>Bonjour <img alt=":)" src="/static/smileys/smile.png"></p>
<p>Le principal problème n’est pas la tension (ça changerait juste la vitesse) mais plutôt le courant.</p>
<p>Ton moteur consomme 250mA alors que ton arduino ne peut en délivrer que 75 il me semble. De ce fait, si tu alimentes ton moteur via l’arduino, tu crames l’arduino.</p>
<p>Du coup, il te faut une alimentation externe, l’arduino ne servant que de commande à travers un transistor (pour un fonctionnement dans un seul sens), un pont en H, ou un driver moteur selon ce que ce que tu veux que fasse ton moteur.</p>
<p>Jette un oeil au tuto d’Eskimon sur l’arduino, il y a un chapitre à ce sujet <img alt=";)" src="/static/smileys/clin.png"></p>[Arduino] Alimentation moteur , message #1652702017-10-28T22:48:29+02:00Gainsboroow/@Gainsboroowhttps://zestedesavoir.com/forums/sujet/9597/arduino-alimentation-moteur/?page=1#p165270<p>Bonjour,
Je dispose d’<a href="http://www.ag-electronique.fr/moteurs-cc/11007-moteur-cc-6vcc-250ma-14500rpm-25-6vcc-velmot2n-5410329401238.html">un moteur CC 6V</a> (Référence : VEL_MOT2N). Je souhaiterais l’alimenter soit avec un arduino soit avec un coupleur de piles (6V au total).
Cependant, je ne sais pas quelle est la meilleure option. L’arduino fournit 5V est-ce suffisant pour faire fonctionner le moteur ? (Je me demande aussi ce qu’il se passe si je fournit une alimentation supérieure à 6V, le moteur ne fonctionne plus ?).</p>
<p>Merci.</p>La commande d'un moteur à courant continue avec L293D via Arduino, message #1380352017-01-08T21:24:42+01:00escale_atomique/@escale_atomiquehttps://zestedesavoir.com/forums/sujet/7735/la-commande-dun-moteur-a-courant-continue-avec-l293d-via-arduino/?page=1#p138035<p>Bonjour <img alt=":)" src="/static/smileys/smile.png">
Je vous remercie pour votre réponse.
Oui sans aucun doute que le problème est au niveau de la puissance, le souci est que je peut pas voir la plaque signalétique du moteur car il se trouve dans un boitier fermé.</p>
<p>J’aimerais bien savoir si il y a un moyen d’alimenter le moteur d’une tension supérieur à 5v car j’ai vu sur le datasheet du L293D qu’il possède deux pin d’alimentation, l’une à 5v et l’autre de 4 v à 36 v mais je sait pas comment ça s’utilise.</p>
<p>Cordialement.</p>La commande d'un moteur à courant continue avec L293D via Arduino, message #1380212017-01-08T18:48:00+01:00hobi1/@hobi1https://zestedesavoir.com/forums/sujet/7735/la-commande-dun-moteur-a-courant-continue-avec-l293d-via-arduino/?page=1#p138021<p>Bonjour <img alt=":)" src="/static/smileys/smile.png"> as tu les caractéristiques du moteur que tu souhaite faire démarrer ? Il y’a surement un problème de puissance, le l293d peut débiter au maximum 600mA, ce n’est pas forcément suffisant pour ton moteur …</p>La commande d'un moteur à courant continue avec L293D via Arduino, message #1380032017-01-08T13:30:21+01:00escale_atomique/@escale_atomiquehttps://zestedesavoir.com/forums/sujet/7735/la-commande-dun-moteur-a-courant-continue-avec-l293d-via-arduino/?page=1#p138003<p>Bonjour,</p>
<p>j’ai oublier de préciser que le moteur possède un réducteur en engrenages donc je pense que ça se demande plus de puissance.
Cordialement.</p>La commande d'un moteur à courant continue avec L293D via Arduino, message #1379632017-01-07T21:24:14+01:00escale_atomique/@escale_atomiquehttps://zestedesavoir.com/forums/sujet/7735/la-commande-dun-moteur-a-courant-continue-avec-l293d-via-arduino/?page=1#p137963<p>Bonsoir à toutes et à tous,</p>
<p>en ce moment je suis sur un tout petit projet, en tant que débutant sur l’Arduino, je réalise une voiture automatisé.
j’ai commencé par réaliser un branchement du moteur sur le L293D avec l’Arduino que j’ai trouvé sur le site d’<strong>Eskimon</strong>, le circuit est impeccable, je l’ai tester sur un petit moteur tout marche !
Mais quand je le branche sur le moteur de la voiture, comme résultat juste un petit bruit - le moteur ne tourne pas ! Je pense que c’est une question de puissance car le moteur marche bien quand je le branche sur une pile de 9v.
Ce que j’aimerais savoir c’est comment brancher une pile 9v sur ce montage ?<img alt="Image utilisateur" src="http://eskimon.fr/wp-content/uploads/tuto/423828.png"></p>
<p>Cordialement.</p>
<p>escale</p>Moteur acc: Dimensionnement et/ou adaptation , message #1369602016-12-30T14:06:23+01:00Pouet_forever/@Pouet_foreverhttps://zestedesavoir.com/forums/sujet/7665/moteur-acc-dimensionnement-etou-adaptation/?page=1#p136960<p>Il a l’air pas mal ce cours ! Je l’ai pas lu, mais il parle des moteurs a bagues/balais. Maintenant, technologie oblige, il existe des moteurs bien plus performants et surtout sans contacts ! <a href="https://fr.wikipedia.org/wiki/Moteur_sans_balais">Les moteurs sans bagues ni balais, dis moteurs brushless.</a></p>Moteur acc: Dimensionnement et/ou adaptation , message #1369562016-12-30T13:39:05+01:00Francky/@Franckyhttps://zestedesavoir.com/forums/sujet/7665/moteur-acc-dimensionnement-etou-adaptation/?page=1#p136956<blockquote>
<p>Si quelqu’un peu juste m’expliquer d’où sort le "3.18 tours de l’axe du moteur par seconde" c’est extrait du cour d’eskimon sur <a href="http://eskimon.fr/285-arduino-601-le-moteur-courant-continu">Moteur acc</a> il le déduit mais j’ai louper quelques chose.</p>
</blockquote>
<p>le 3.18 tours vient de : "On admet que le moteur tourne à 20 rad/s".
20 rad/s ça donne 3,18 tr/min. Mais le 20 rad/s a été choisi arbitrairement pour l’exemple du calcul dans le cours d’Eskimon.</p>Moteur acc: Dimensionnement et/ou adaptation , message #1369472016-12-30T10:43:18+01:00sas.globalvelo/@sas.globalvelohttps://zestedesavoir.com/forums/sujet/7665/moteur-acc-dimensionnement-etou-adaptation/?page=1#p136947<p>OUFF!</p>
<p>j’ai bien cru que personne n’aller répondre je suis conscient d’avoir fait un post un peu long. </p>
<p>Ça je n’y avais pas pensé depuis le temps que je voulais me servir d’un oscilloscope sans savoir pourquoi et quand.
je vais pouvoir certainement voir effectivement sa rotation en charge et a vide ;
je posterais les résultats au cas ou ça intéresse quelqu’un <img alt=":honte:" src="/static/smileys/rouge.png"></p>
<p>Si quelqu’un peu juste m’expliquer d’où sort le "3.18 tours de l’axe du moteur par seconde" c’est extrait du cour d’eskimon sur <a href="http://eskimon.fr/285-arduino-601-le-moteur-courant-continu">Moteur acc</a> il le déduit mais j’ai louper quelques chose.</p>
<p>Comme ça j’essaierais de m’en sortir pour mes calcul de dimensionnement.</p>Moteur acc: Dimensionnement et/ou adaptation , message #1369372016-12-30T09:29:56+01:00Pouet_forever/@Pouet_foreverhttps://zestedesavoir.com/forums/sujet/7665/moteur-acc-dimensionnement-etou-adaptation/?page=1#p136937<p>Je suis pas sur que tu comptes les rpm de cette manière. Au pire, fais un essai et branche un oscilloscope pour voir le courant en régime transitoire et en régime stabilisé. <img alt=":)" src="/static/smileys/smile.png"></p>Moteur acc: Dimensionnement et/ou adaptation , message #1368932016-12-29T17:11:44+01:00Marycha/@Marychahttps://zestedesavoir.com/forums/sujet/7665/moteur-acc-dimensionnement-etou-adaptation/?page=1#p136893<p>Bonjour à tous , </p>
<p>je travaille sur un projet qui vois le jour peu à peu mais je butte sur un détail que je n’est pas pris suffisamment en compte au départ, et j’aimerais un avis éclairer pour savoir si mon erreur est rattrapable ou ( solution de facilité ) tous remplacer.
je veux automatisé des stores pour cela j’utilise un moteur ( 4 pour 4 store ).
la plus longue course dois tirer le store sur 3m c’est sur celui ci je je fait mes test:</p>
<p>Description du moteur:</p>
<p>Coque et engrenage en métal, résistant à l’usure, couple élevé, bruit faible, longue durée de vie.
Largement utilisé da: serrures électroniques, modèles de voitures intelligentes, robots, caméras, etc.Spécificatio:</p>
<p>-Tension nominale: 12V</p>
<p>-Vitesse à vide: 30rpm</p>
<p>-Diamètre du produit: 37mm</p>
<p>-Couple nominal: 4kg/cm</p>
<p>-Couple de décrochage: 12kg/cm</p>
<p>-Poids: 146g</p>
<p>-Diamètre de l’axe: 6mm</p>
<p>-Taille du produit: diamètre 37mm x longueur totale 70mm</p>
<p>Voici les forces que j’ai relever avec un peson
60 cm => 4kg
60cm => 5kg
65cm => 7kg
65cm => 9kg
50cm=> 13kg </p>
<p>Déplacement 300cm force moy 7.6kg sachant qu’il y a une poulie en bout de montage donc les forces seront divisé par deux mais le déplacement seras lui multiplié par 2 également </p>
<p>Mon problème est que selon mes calculs mon moteur mettrait 18 min a fermée le store avec une poulie moteur de 1 cm diamètre. j’ai proportionné la rotation en fonction des forces 12kg = 0 tr/min 0kg = 30tr/min.</p>
<p>donc il en découle 3 question </p>
<p>1- je me suis trompé sur mes calculs ( sa m’arrangerais )</p>
<p>2- je bourrine et je le suralimente : j’ai une alim d’un chargeur d’aspi ( je le passe rarement donc elle ne m’est plus utile <img alt=";)" src="/static/smileys/clin.png"> )
caractéristique :
output 16.75v 348ma
24.35v 348ma
il y a un picot a l’intérieur peu être pour les charges rapides.</p>
<p>3- celle qui ne me plais pas du tout changer, les moteurs mais bon dieux!! ( dsl )
Comment on peu calculer ça de façon à s’en sortir avec toute les descriptions : kg/cm ; mNm ; N/cm ; poids nominal , a vide , en charge on a jamais les mêmes description pour deux moteur. </p>
<p>merci de votre aide </p>
<p>ps: si vous souhaitez m’aider parler avec des mots simple rien n’est évident pour moi ce n’est pas mon métier juste un hobbies. </p>