Aller au contenu


Contenu de Quentin M

Il y a 12 élément(s) pour Quentin M (recherche limitée depuis 03-avril 13)


#94755 Arduino et PID, tutoriel et questions

Posté par Quentin M sur 22 avril 2018 - 09:41 dans Programmation

Bonsoir,
C'est le même code que dans le tuto.




#94630 Arduino et PID, tutoriel et questions

Posté par Quentin M sur 18 avril 2018 - 09:17 dans Programmation

Bonsoir,
Ok j'ai changer les traces pour voir la vitesse réelle.
Du coup ne reprenant le code tel que présenté dans le tuto mon moteur fait des vas et viens.

Donc je me dis je vais régler les 3 coefficients les un apres les autres.

Du coup je commence par Kp qui permet d'avoir une commande proportionnel à l'erreur.

Toute fois pour le régler je ne sais pas trop où m’arrêter si je le mets trop faible mon moteur par très vite mais s’arrête très vite (Kp = 0.1,Ki =0; Kd =0):
 

 

 

Ensuite je passe Kp à 1 :

 

 

 

La on voit que le moteur est allez trop loin puis est revenue en arrière pour ralentir et après se re-bloque à 0. Je me dis que du coup je suis allez trop loin dans le Kp mais je ne suis pas sur.

Qu'en pensez vous ?

 

Autre point pourquoi le moteur s’arrête ? Il trouve un point de balancement ? Car en théorie si la vitesse mesuré est nulle et la vitesse demandé est de 50% de la vitesse max il devrait accélérer non ?

 

Du coup j'essaie ensuite de régler le Ki avec 0.1 (Kd=1):

 

Puis avec Ki = 1 (Kd=1):

 

J'avoue ne pas trop savoir quoi penser des courbes.

 

 

Merci

Image(s) jointe(s)

  • Kp0,1.PNG
  • Kp1.PNG
  • Kp1Ki0,1.PNG
  • Kp1Ki1.PNG



#94580 Arduino et PID, tutoriel et questions

Posté par Quentin M sur 17 avril 2018 - 09:22 dans Programmation

Ok merci je me disais bien que le symbole à coté des pins voulaient dire quelque chose.
Bon du coup j'essaie de comprend encore le code et il y a quelque chose que je saisie pas bien dans la fonction compute :

 

bool PID::Compute()
{
   if(!inAuto) return false;
   unsigned long now = millis();
   unsigned long timeChange = (now - lastTime);
   if(timeChange>=SampleTime)
   {
      /*Compute all the working error variables*/
      double input = *myInput;
      double error = *mySetpoint - input;
      double dInput = (input - lastInput);
      outputSum+= (ki * error);

      /*Add Proportional on Measurement, if P_ON_M is specified*/
      if(!pOnE) outputSum-= kp * dInput;

      if(outputSum > outMax) outputSum= outMax;
      else if(outputSum < outMin) outputSum= outMin;

      /*Add Proportional on Error, if P_ON_E is specified*/
	   double output;
      if(pOnE) output = kp * error;
      else output = 0;

      /*Compute Rest of PID Output*/
      output += outputSum - kd * dInput;

	    if(output > outMax) output = outMax;
      else if(output < outMin) output = outMin;
	    *myOutput = output;

      /*Remember some variables for next time*/
      lastInput = input;
      lastTime = now;
	    return true;
   }
   else return false;
}

L'erreur est calculé en fonction de *mySetpoint  et input hors *mySetpoint est égale à la commande qui si on n’envoie rien sur le port série est toujours égale à 0 et input et de même toujours égale à la vitesse du coup l'erreur est toujours la même, non ?

J'ai remplacer le backoff par advance(output-255); et au moins ça ne recule plus.




#94566 Arduino et PID, tutoriel et questions

Posté par Quentin M sur 17 avril 2018 - 08:10 dans Programmation

Bonsoir,
Je viens de remarquer un truc qui me parait étrange mais peut être que j'ai mal compris.

Dans les fonctions avance et backoff on utilise un analogWritte et un digitalWritte hors d'apres le schéma de cablage on est uniquement brancher sur la partie digital de l'arduino donc comment la ligne :analogWrite (A,a); peut elle fonctionner ?

Il y a aussi le attachInterrupt qui est mis sur la pin 0 alors que rien n'y est rattachée ?

Merci




#94530 Arduino et PID, tutoriel et questions

Posté par Quentin M sur 16 avril 2018 - 04:13 dans Programmation

Quand tu dis les 3 valeurs c'est les trois coefficiant ou d'autres variables ?
merci

EDIT: Alors je comprend pas trop pourquoi mais lorsque j'envoie sur le port serie une valeur "1" le moteur tourne pendant quelques secondes puis refait un va et vient.
Je pense que la boucle va trop vite mais je ne comprend pas trop les modifications à faire pour que ça roule bien.




#94528 Arduino et PID, tutoriel et questions

Posté par Quentin M sur 16 avril 2018 - 03:17 dans Programmation

Si ça à l'air normal je vais modifier les coefficiants. Mais j'avous que je comprend pas du coup comment on avoir une marche puis une marche arrière et un arret complet.
Je me demande aussi à quoi sert la valeur commande ?
Je vais relire la théorie du PID, mais je trouve ça bizzare que le code du tuto n'est pas des coefficiants proches d'un fonctionement normale.
Je vais refaire des testes.
Merci




#94510 Arduino et PID, tutoriel et questions

Posté par Quentin M sur 15 avril 2018 - 09:27 dans Programmation

En gros d'abords il tourne dans un sens un dans l'autre puis il arrête complétement de tourner.
Vidéo : https://www.cjoint.com/c/HDpuAresXjb


 




#94504 Arduino et PID, tutoriel et questions

Posté par Quentin M sur 15 avril 2018 - 08:12 dans Programmation

Salut,
Alors les traces dependes de ce qu'il se passe :
-Si le moteur bouge j'ai ça :

0
'''''''''''''''''speed
128.00
'''''''''''''''''output
-255
'''''''''''''''''commande
0
'''''''''''''''''speed
128.00
'''''''''''''''''output
-255
'''''''''''''''''commande
0
'''''''''''''''''speed
-40.00
'''''''''''''''''output
112
'''''''''''''''''commande
0
'''''''''''''''''speed
-111.00
'''''''''''''''''output
112
'''''''''''''''''commande
0
'''''''''''''''''speed
-78.00
'''''''''''''''''output
90
'''''''''''''''''commande
0
'''''''''''''''''speed
9.00
'''''''''''''''''output
90
'''''''''''''''''commande
0
'''''''''''''''''speed
31.00
'''''''''''''''''output
-174
'''''''''''''''''commande
0
'''''''''''''''''speed
35.00
'''''''''''''''''output
-174
'''''''''''''''''commande
0
'''''''''''''''''speed
-16.00
'''''''''''''''''output
-108

et ça continue.

-Si il ne bouge pas :

'''''''''''''''''commande
0
'''''''''''''''''speed
0.00
'''''''''''''''''output
31
en boucle

 

J'ai vérifie les branchements normalement c'est bon. Faudrait il que je vérifie avec un voltmetre certains branchement ?

Merci




#94489 Arduino et PID, tutoriel et questions

Posté par Quentin M sur 15 avril 2018 - 04:51 dans Programmation

Oui.




#94486 Presentation nouveau

Posté par Quentin M sur 15 avril 2018 - 03:33 dans Et si vous vous présentiez?

Bonjour,
J'ai fait la coupe des mini robots sumo de l'esiee et j'ai participé il y a quelques années à la coupe de france de robotique sans grand succès.
Est ce que cela à intérêt de publié des robots de kit ? Car pour la coupe des mini sumo j'ai simplement acheté le kit pour ma première participation et je l'ai monté donc techniquement je n'ai pas changer grand chose.
Après j'ai un retour d'expérience sur le kit et ce que j'ai fait.
 




#94484 Arduino et PID, tutoriel et questions

Posté par Quentin M sur 15 avril 2018 - 03:23 dans Programmation

Bonjour à tous,
Pour mon premier tuto du site j'ai essayé de réaliser celui ci : http://www.robot-maker.com/shop/blog/33_Asservir-moteurs-courant-continu-PID.html

Mon soucis est que lorsque le code ce lance la roue tourne de maniere instable mais surtout un coup vers l'avant un coup vers l'arrière.
Pour le manque de stabilité je pense que c'est les coefficiants mais pour ce qui est de la directions je trouve ça étrange.
Est ce vous auriez une idée ?
Merci




#94482 Presentation nouveau

Posté par Quentin M sur 15 avril 2018 - 03:16 dans Et si vous vous présentiez?

Bonjour,
Je m'appelle Quentin, je fais de la robotique de manière très légère depuis plusieurs années et j'essaie de améliorer avec ce super site et en participant à des compétitions de robotique.
A bientôt sur le forum :)