Aller au contenu


Photo
- - - - -

UGV à base d'éléments de trottinette ou d'hoverboard


410 réponses à ce sujet

#381 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 20 avril 2023 - 04:13

 

Je ne trouve pas cela très logique.

Il n'y a aucune raison d'apporter une correction à la consigne. A mon avis, seul l'erreur devrait être corrigée.

 

Est que si on diminue le coefficient Kp et que l'on fait PWM = P = consigne + (Kp * erreur) , on pourrait s'approcher d'un meilleur résultat ?

Il est vrai que c'est ce que tu suggères dans ton avant dernière phrase.

 

Oracid en effet tu peux ajuster la " formule qui te va bien et faire une formule  du style PWM = "Consigne" + KP * erreur et on peut s'approcher d'un bon résultat avec une formule de ce genre ( à un détail près il te faudra quand même un coefficient " Kconsigne  " ... Pas pour la " corriger " mais pour "l'adapter à la méthode de contrôle " . 

Pour reprendre l'analogie de pat :  

 

 

Il n'y a pas de relation mathématique entre la vitesse en km/h et le degré de pression sur la pédale. Enfin, ce n'est pas le calcul que je fais au volant !

 

 

La consigne c'est une vitesse en Km/h et  la méthode de contrôle c'est l'angle de la pédale d'accélérateur . 

Si je veux aller à 50 Km/h je ne vais pas mettre 50° sur l'angle de la pédale ... De même que je ne vais pas mettre 25° d'angle si je veux aller à 25Km/h ... 
Par contre on peut quand même essaye trouver une formule approximative qui pour un angle de pédale donné donne une vitesse ... ( même si c'est pas ce que tu fais exactement sur la route, d'instinct quand tu conduis tu remarqueras que tu précharges quand même plus ou moins ton pied sur la pédale en fonction de si tu veux partir vite ou pas car tu anticipes entre autre l'inertie de ta voiture ... )

" Bêtement" ," mathématiquement" on  peut faire l'approximation suivante : Si mon débattement d'angle de la pédale est de 30°, et que la vitesse maximale de ma voiture c'est 150 Km/h ... on peut comme première approche essayer de faire une relation du genre 1° => 5km/h ...  Et " fonder une partie de notre asservissement sur ce constat de base " 

Dans ce cas on peut sortir une formule du genre :

Angle = Kc * Consigne  + Kp * erreur   avec Kc = 1/5    ( si on fait le calcule, pour 150 Km/h , et si l'erreur est nulle on retrouve bien notre angle max de 30° C ) 

Bien entendu avec cet exemple je pense que tu comprends bien vite les limites des formules du genre : Correcteur  = Kc * consigne + PID(erreur ) ,
Car même si dans certains cas ça marche très bien, ( quand la relation entre la valeur du contrôle et la consigne est linéaire / simple ...  ) bien souvent on a pas la relation entre la consigne et la valeur qu'il faut mettre en contrôle... Sinon ça simplifierais quand même beaucoup les choses ... 
 

 

Faut-il vraiment chercher une 'logique' dans un PID. C'est une technique d'asservissement de base, dont le réglage peut se faire de manière empirique. Ça convient parfaitement, pour nous roboticiens du dimanche ! :-)
 

 

Justement je pense que comprendre la logique permet de plus facilement régler la chose de manière empirique ... Si tu comprends comment va réagir le système en fonction des modifications que tu fais, tu peux plus facilement faire la modification qu'il faut pour avoir le résultat que tu veux =) 

 

 

Tu noteras que faire une somme de vitesses pondérées donne un % (PWM). En termes d'unités, la formule peut paraître curieuse aussi !

 

 

Justement ça peut paraître curieux mais c'est justement la pondération qui vient jouer avec les unités ! 

Si tu as une consigne en Km/h et que ton angle de contrôle et en degré, alors angle = kc * consigne avec kc qui est un coefficient en ° / Km/h ... 
=> Mathématiquement l'ajout du KC, même si il vaut 1 ( ce qui peut arriver ) prend tout son sens car c'est lui qui ajuste les unités pour que les relations restent " homogènes " et gardent du sens ...  On ne multiplie pas des pommes avec des bananes pour savoir combien on va payer ... Prix = Kprix * banane .... Même si 1 banane vaud 1 € on a Kprix = 1 en € / banane .... 

Du coup avoir en tête la relation et les unités peut également aider à trouver des valeurs qui peuvent à peu près fonctionner ... C'est comme ça que j'ai trouvé mon 1/5 dans l'exemple plus haut ...


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#382 pat92fr

pat92fr

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 673 messages
  • Gender:Male

Posté 20 avril 2023 - 07:25

Bonjour,

 

+1! Comprendre l'effet de chaque coefficient est utile pour régler un PID de manière empirique.

 

Pour obtenir un asservissement rapide, bien utile à nos robots, parvenir à générer une commande à partir de la consigne, en complément du PID, est très avantageux. 

https://www.controle...nt-pid-control/

Je valide avec ma petite expérience, car je n'ai jamais réussi à avoir un asservissement correct sans employer différentes techniques (feed-forward, anti-windup, filtrage consigne, filtrage commande...).

 

----edit : une de mes références a une époque était la documentation Dynamixel (profile, anti-windup, feed-forward, limiter, etc) et c'est juste un servo !

image.png

 

Patrick.

 

Blague, désolé : On peut toujours trouver un coefficient K, appliqué à une valeur d'unité A, qui donne une autre valeur d'unité B ! De toute façon, ce qui compte, c'est les valeurs (Perceval).  :Koshechka_08:



#383 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 22 avril 2023 - 02:20

Et bien l'utilisation de 3 potentiomètres pour paramétrer Kp, Ki et Kd est vraiment une excellente solution.

Voici mon code qui est inspiré de vos conseils :

Spoiler

 

Et voici la log :

Spoiler

 

Comme vous pouvez le constater, le pid_Hz est très proche de Target_Hz (la consigne).

C'était bien l'objectif à atteindre. Et cela, même lorsque je freine fortement la roue avec ma main gantée.

On s'aperçoit du freinage, lorsque Hall_Hz passe de 31Hz à 30Hz. Et malgré tout, pid_Hz reste très proche de la consigne, Target_Hz.

 

Néanmoins :

- je ne comprends pas la valeur de Hall_Hz.

- la somme des erreurs rSum est instantanément au maximum, 1000. Et donc, la valeur de Ki*rSum est constante.

- à mon avis, Kd n'a aucune incidence.

 

Bubu, pourquoi dans ton code tu fais :

      consigne+=inc;
      if (consigne >= 800) {inc = -1;}
      if (consigne <= 15) {inc =  1;}
      err = consigne - rpm; // pour le proportionnel
 

 



#384 pat92fr

pat92fr

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 673 messages
  • Gender:Male

Posté 22 avril 2023 - 04:23

Salut,

 

Tu as un écart très net entre la consigne (Target_Hz) et la mesure (Hall_Hz).

 

Soit la consigne est plus élevée que ce que le robot peut réaliser, soit le réglage PID est inefficace.

 

D'ailleurs, l'erreur s'accumule avec le temps et le terme I est saturé. C'est bien le signe que l'erreur est anormalement élevée et que le réglage PID ne parvient pas à compenser.

 

La sortie du PID est une valeur de PWM entre 0 et 255 (=argument de analogwrite). Appeler la sortie PID_Hz est trompeur. Ce n'est pas une vitesse. D'ailleurs tu la compares à la vitesse de consigne (100 Hz vs 100/256 de rapport cycle) alors que ce n'est pas lié.

 

Il faut encore travailler les réglages... bonne chance !

 

Patrick.



#385 bubu17

bubu17

    Membre

  • Membres
  • 15 messages

Posté 22 avril 2023 - 09:35

Bonsoir,

consigne+=inc;
      if (consigne >= 800) {inc = -1;}
      if (consigne <= 15) {inc =  1;}

j'ai rajouter ce bout de code pour faire une rampe d'accélération jusqu'à 800 tr/mn et ensuite ralentir jusqu'à 15tr/mn.

le pid a bien suivi jusqu'à 500tr/mn, ensuite la somme des erreurs étant au maximum je n'est pas atteint les 800tr/mn.

c'était pour voir , je l'est transformer pour faire une rampe d'accélération pour ma tondeuse, à chaque départ et manœuvre.

 

              if (consignemoteur < 32){                          // rampe d'accélération

                  consignemoteur+=inc;                           //incrémente de 1 à chaque boucle

                   }

 

dans le code la consigne moteur sera à 18 , et montera à 32.

 

​la dernière ligne

err = consigne - rpm; // pour le proportionnel

c'est le calcule de l'erreur: la ligne est mal écrite, la consigne n'est pas la même que les 3 lignes au dessus, il faut écrire:

                  err = consigemoteur - rpm;

 

consignemoteur = vitesse demandé        entre 18 vitesse minimum et 32 maximum(pour ma tondeuse)

rpm = vitesse réelle.

 

 

concernant ta lecture de la log,

Tu as un écart entre la consigne (Target_Hz) et la mesure (Hall_Hz).

​ce n'est pas le pid qui doit être = à la consigne mais le (Hall_Hz)

je trouve que Hall_Hz et pid varie trés peu avec l'effort

 

je ne comprend pas les différences de valeurs entre ton moteur et le mien 

à 32 tr/mn le pid est à10-11 à vide et avec effort je monte à 50

​peut-être le contrôleur moteur?? 

 

 

             :

 

Et bien l'utilisation de 3 potentiomètres pour paramétrer Kp, Ki et Kd est vraiment une excellente solution.

Voici mon code qui est inspiré de vos conseils :

Spoiler

 

Et voici la log :

Spoiler

 

Comme vous pouvez le constater, le pid_Hz est très proche de Target_Hz (la consigne).

C'était bien l'objectif à atteindre. Et cela, même lorsque je freine fortement la roue avec ma main gantée.

On s'aperçoit du freinage, lorsque Hall_Hz passe de 31Hz à 30Hz. Et malgré tout, pid_Hz reste très proche de la consigne, Target_Hz.

 

Néanmoins :

- je ne comprends pas la valeur de Hall_Hz.

- la somme des erreurs rSum est instantanément au maximum, 1000. Et donc, la valeur de Ki*rSum est constante.

- à mon avis, Kd n'a aucune incidence.

 

Bubu, pourquoi dans ton code tu fais :

      consigne+=inc;
      if (consigne >= 800) {inc = -1;}
      if (consigne <= 15) {inc =  1;}
      err = consigne - rpm; // pour le proportionnel
 

 

 



#386 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 23 avril 2023 - 06:51

Merci Patrick, merci Bubu, pour vos conseils.

Je vais revoir tout cela.

Maintenant que je commande le PID avec 3 potentiomètres, cela devrait pouvoir se faire.



#387 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 27 avril 2023 - 09:37

J'ai l'impression d'être sur la bonne voie, grâce à toutes vos remarques. J'ai malgré tout, quelques interrogations.

 

Quelques remarques:

- j'ai constaté que le moteur démarrait avec un PWM égal à 105, et s'arrêtait avec un PWM égal à 124

  Pour ces deux valeurs, la rotation du moteur était respectivement égale à 0,78 et 5,34 rotations par seconde.

  J'ai donc défini 4 variables pour ces valeurs, minTrgt=105,  maxTrgt=124,  minHall=0.78*100,  maxHall=5.34*100

  J'ai multiplié les deux dernières par 100, pour une plus grande précision, et pour pouvoir les utiliser dans une fonction map() qui n'accepte que des entiers.

- J'ai également défini deux nouvelles variables.

  Trgt, pour mapper en unité PWM, la variable Throttle avec  les valeurs de minTrgt et maxTrgt.

  Trgt_motor, pour mapper le PWM en unité de rotation seconde, avec les valeurs de minHall et maxHall.

  En résumé, je passe d'une valeur analogique, à un PWM, puis à une rotation par seconde.

- dans la fonction P_I_D(), je soustrais la vitesse du moteur (Hall_Hz) à la consigne (Trgt_motor) pour trouver l'erreur (err).

 

Voici le code :

Spoiler
 

 

Et voici la log :

Spoiler
 

 

Dans cette log, on peut constater que la consigne, Trgt_motor, est très proche de Hall_Hz et que le PID à vide est très proche de la consigne PWM Trgt.

Vers le milieu de la log, on peut voir que le PID augmente de 108 à 113. Cela est dû au frottement de ma main sur la roue. Je frotte très fort, je ne pense pas que je serais capable de bloquer la roue.

 

Néanmoins :

- j'ai constaté que la valeur de Kd, n'avait aucune influence sur le PID, et que la valeur de Kp, en avait très peu.

- dans cette version, j'ai choisi de diviser la fréquence de Hall_Hz par 15, pour avoir une valeur en rotation par seconde.

  J'ai essayé de revenir à une valeur de la Hall_Hz d'origine, pour avoir plus de précision, en multipliant les variables minHall et maxHall par 15, mais malheureusement, cela ne fonctionne pas.

 



#388 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 22 novembre 2023 - 02:43

Depuis quelques temps, j'ai repris mes tests sur le PID avec une première approche, ici, https://www.robot-ma...st/#entry119908

Grace à cette expérience, aujourd'hui, je reprends l'étude de mon PID pour mon UGV à base de moteur d'HoverBoard avec un eBike controller.

 

Comme à mon habitude j'ai essayé de faire un code le plus court possible d'environ 50 lignes (plus les fonctions Trace() et Plotter()), pour essayer d'être le plus simple et le plus lisible possible en m'inspirant du code de mon banc de test.

 

- tout repose sur deux variables, target (la cible) et feedback (le retour). Rien de bien nouveau, bien sûr.

- j'ai choisi un target = 70 , car à cette valeur de PWM la vitesse du moteur me convient. Mais pour moi, peu importe qu'il s'agisse de PWM, de vitesse ou de température.

- la variable trgt_min détermine la valeur à laquelle le moteur commence à tourner, alors que la variable trgt_max détermine la vitesse maximum résonnable pour des raisons de sécurité.

- mon moteur possède 15 capteurs Hall, mais je ne m'en soucie pas. Le feedback est basé sur la mesure de la période entre deux mesures de capteurs successifs.

- la variable fb_min est la période du feeback quand le moteur commence à tourner. Cette valeur est donc corrélée à la valeur de la variable trgt_min.

  De la même manière, la variable fb_max est corrélée à la valeur de la variable trgt_max.

- dans la fonction d'interruption, je mappe  les extrêmes du feedback sur les extrêmes du target. j'ai ainsi une cohérence entre les unités des varibales target et feedback.

- dans la fonction d'interruption, je contrains la valeur du feedback pour des raisons de sécurité.

- dans la fonction PID(), je contrains la variable errSum de -100 à 100. Bubu17 fait également cela, mais avec une valeur à 1000, ce qui prend beaucoup de temps pour "remonter" l'erreur.

  J'aimerais bien avoir ton avis, Bubu, à ce sujet.

- dans la fonction PID(), je bloque les interruptions pendant l'acquisition de l'erreur.

- pour l'utilisation de la fonction analogWrite(), j'ai choisi la pin 3 au lieu de la pin 5, en raison du warning de cette page,  https://www.arduino....io/analogwrite/

- dans cette nouvelle version, basée sur le banc de tests, j'utilise également la variable dt qui détermine la période entre deux loop().

  Notez que dt n'est pas perturbé par le temps pris par les fonctions Trace() ou Plotter().

  Dans ma version de programme définif pour mon UGV, je pense que je garderai ces fonctions actives, même si je ne les regarde pas pendant le fonctionnement de l'UGV.

  Ainsi le paramétrage sera établi en prenant en compte le temps de l'exécution de ces fonctions.

- j'ai beaucoup peiné avant de comprendre que mes valeurs pour kp et ki étaient trop élevées. A quoi correspond l'échelle de ces valeurs ? Mystère !

 

- ci dessous une vidéo (non publique) qui montre le résultat sur le Plotter de l'IDE Arduino.

  L'échelle est garantie par une ligne à 0 et une ligne à  80. Au centre la ligne du target=70.

  Sur la ligne du centre, en rouge, le feedback. Au dessus, en vert, le PID. On voit très nettement comment le PID essaye de corriger l'erreur.

  Au démarrage, le PID corrige énergiquement l'erreur, cela grâce au  errSum = constrain(errSum,-200,200); dans la fonction PID(). En tout cas, c'est la conclusion que j'ai tiré de mes essais.

  A 0'38", je freine le moteur, le PID réagit énergiquement, puis revient rapidement en position normale dés que j'arrête.

  A 1'10" et à 1'28", je fais un arrêt/redémarrage rapide. Pas de souci, le moteur retrouve rapidement, sa vitesse de consigne.

 

A voir en full screen, tellement c'est beau !

 

Le code.

Spoiler

 

Merci d'avance pour vos remarques.



#389 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 05 décembre 2023 - 03:40

Voici un nouveau test.

 

- à la différence du précédent, toutes les variables sont en "float", ce qui apporte plus de précision.

- j'ai affiné la correspondance des minimums et maximums, entre les valeurs PWM et les valeurs du FeedBack.

- le point le plus important est l'initialisation de la variable errSum à la valeur maximum au lieu de 0 précédemment.

  Cela permet de faire des arrêts / relances très rapides, alors que précédemment, il fallait attendre que cette variable s'incrémente jusqu'à son maximum. Ce qui était très gênant.

  Je ne comprends pas vraiment ce dernier point, mais c'est en observant la valeur de cette variable que j'ai pris cette décision.

 

Comme vous pouvez le constater, le résultat est nettement meilleur et je pense que je vais pouvoir l'appliquer à mon UGV.

 

La vidéo.

 - Au centre, le Feedback en rouge et le PID en bleu.

 - A 0'15", un freinage manuel.

 - A 0'34 et à 0'49", un arrêt / relance, notez la vitesse du rétablissement.

 

 

Le code.

Spoiler

 

Merci d'avance, pour vos remarques.



#390 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 13 février 2024 - 01:08

Voici ma dernière vidéo sur le PID.

Comme vous pouvez le constater, je suis revenu au contrôleur ZS-X11H.

 

Cela fait déjà un an que je suis sur le PID. Il y a eu pas mal de découragement, mais au final, je pense que je m'en sors pas trop mal 

Merci d'avance pour vos remarques.

 

 

Les codes des deux programmes :

 

Spoiler

 

Spoiler


#391 Melmet

Melmet

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 521 messages
  • Gender:Male
  • Location:Saint-Sozy (46200)

Posté 13 février 2024 - 07:47

Oracid je reve ou c'est la premiere fois que l'on peut enttendre ta voix? :laugh1: :clapping: :clapping: :clapping: :clapping:

 

Bon tu es vraiment bluffant dans ce que tu fai bravo à toi.


Ne demande jamais à un robot de faire ce que tu peux faire toi même. :nono: :laugh1:


#392 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 13 février 2024 - 09:05

Oracid je reve ou c'est la premiere fois que l'on peut enttendre ta voix? :laugh1: :clapping: :clapping: :clapping: :clapping:

Bon tu es vraiment bluffant dans ce que tu fai bravo à toi.

Merci. Oui, c'est la première fois.

Perso, quand je me vois, je me déteste, mais ma femme m'a dis que c'était bien, alors, j'ai posté.

J'ai essayé en anglais. Au secours !

 

Le boulot que demande une vidéo comme celle là est vraiment énorme. On ne se l'imagine pas tant que l'on ne l'a pas fait.

De plus, pour pouvoir faire cette vidéo, je suis passé à DaVinci Resolve pour le montage, et à OBS Studio pour l'enregistrement du PC.

Pour ces 2 outils, l'investissement en temps pour regarder les tutos sont assez énormes.

 

Indépendamment du fond, juste sur la forme, j'aimerais bien avoir vos avis, mais sans complaisance.

Si je suis complètement ridicule, allez-y ! Faites vous plaisir.



#393 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 13 février 2024 - 09:48

Bonjour Oracid

Moi je suis d'accord avec Madame. Je trouve que c'est très bien. Très clair. Très didactique.

Merci beaucoup et continue stp.



#394 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 15 février 2024 - 03:30

 

 

Indépendamment du fond, juste sur la forme, j'aimerais bien avoir vos avis, mais sans complaisance.

Si je suis complètement ridicule, allez-y ! Faites vous plaisir.

 

Je trouve ça très bien :) 

 

 

 

Le boulot que demande une vidéo comme celle là est vraiment énorme. On ne se l'imagine pas tant que l'on ne l'a pas fait.

De plus, pour pouvoir faire cette vidéo, je suis passé à DaVinci Resolve pour le montage, et à OBS Studio pour l'enregistrement du PC.

Pour ces 2 outils, l'investissement en temps pour regarder les tutos sont assez énormes.

 

Peut être que pour simplifier un peu tu peux faire une vidéo sans son et juste mettre une voix off ? Est ce que ça ferait plus ou moins de boulot ?


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#395 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 15 février 2024 - 06:07

Je trouve ça très bien :)

Peut être que pour simplifier un peu tu peux faire une vidéo sans son et juste mettre une voix off ? Est ce que ça ferait plus ou moins de boulot ?

J'ai essayé avec le code. Je lis un texte. L'improvisation, c'est pas mon truc. En fait, je fais un plan très détaillé de ce que je dois dire. Mon problème, c'est que je n'ai pas de mémoire.

Mais je pense que je suis meilleur quand je me lâche. D'ailleurs, j'ai des tons très différents au cour de la vidéo.

En parcourant les tutos, je me suis rendu compte que les vidéos très professionnels n'était pas du tout improvisées. Tout est minutieusement écrit. Je parle de professionnels de la vidéo. Cela mes rassure un peu. 

 

Sinon, le fond ? Je n'ai pas dit trop de conneries ?



#396 pmdd

pmdd

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 945 messages
  • Gender:Male

Posté 17 février 2024 - 04:49

J'ai essayé avec le code. Je lis un texte. L'improvisation, c'est pas mon truc. En fait, je fais un plan très détaillé de ce que je dois dire. Mon problème, c'est que je n'ai pas de mémoire.

Mais je pense que je suis meilleur quand je me lâche. D'ailleurs, j'ai des tons très différents au cour de la vidéo.

En parcourant les tutos, je me suis rendu compte que les vidéos très professionnels n'était pas du tout improvisées. Tout est minutieusement écrit. Je parle de professionnels de la vidéo. Cela mes rassure un peu. 

 

Sinon, le fond ? Je n'ai pas dit trop de conneries ?

Sur le fond je n'y connais rien alors ça m'intéresse.

Sur la forme je ne voiis pas de problème, il faut faire confiance à ta femme. 

 

Je fais beaucoup de vidéo, pas forcément techniques et je sais que c'est un lourd investissement de temps. Mais mon point de vue c'est que tu te démarquais nettement en faisant des vidéos muettes.



#397 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 17 février 2024 - 07:25

Mais mon point de vue c'est que tu te démarquais nettement en faisant des vidéos muettes.

J'ai essayé.

Ce n'était pas impossible, mais là, il fallait le talent de Chaplin.



#398 Chucky

Chucky

    Nouveau membre

  • Membres
  • 6 messages
  • Gender:Male

Posté 01 avril 2024 - 11:06

Bonjour Oracid !

 

Alors, comme promis, je reviens vers toi au travers d'un post (j'ai choisi de suivre ton post dans la mesure où j'ai tenté d'appliquer à la lettre ton tuto.

 

Tout d'abord, un grand bravo à toi, ton explication du PID pour les novices m'a permis de briller à l'occasion de mon repas de Pâques familial de ce dimanche !

 

Alors, je te fais part de ce que j'ai fait...

 

J'ai trouvé le bon code couleur pour qu'il n'y ait pas de bruits étranges dans le moteur en mouvement.

 

J'ai lancé avec succès le programme min-max et noté les valeurs. Il y a eu une différence notable avec ta vidéo, c'était que une ligne sur 4 j'avais 0 en feedback. Mais pour tout le reste, même si les valeurs étaient sensiblement différente (j'ai des moteurs d'un diamètre identique aux tiens mais c'était du 24V.)

 

Lorsque j'ai lancé le programme principal, j'y ai référé les valeurs du programme min max dans celui-ci.

 

J'ai mis une target à 16 qui correspond à mon minimum de PWM.

 

Lorsque le programme est lancé, le plotter (la valeur du PID) est à 16. Il n'est pas légèrement différent comme dans ta vidéo.

 

Surtout quand j'applique une résistance sur le moteur, cette valeur ne varie pas du tout. C'est comme si le PID n'était pas recalculé...

 

As-tu une idée du pourquoi le PID n'évolue pas ? 

A priori, tout est bien branché mais je peux revoir de ce côté-çi. Bien sûr, je n'ai rien du tout changé d'autre :)

 

A bientôt j'espère :)



#399 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 769 messages
  • Gender:Male

Posté 02 avril 2024 - 11:02



Tout d'abord, un grand bravo à toi, ton explication du PID pour les novices m'a permis de briller à l'occasion de mon repas de Pâques familial de ce dimanche !

Sympa, les réunions de famille, chez toi ! Chez moi, interdiction de parler robotique à table. Ma fille et ma femme veillent au grain.

Merci pour tes remarques. J'espère ne pas avoir dit trop de bêtises dans ma vidéo.

En tout cas, tout ce que je dis doit être considéré avec beaucoup de réserves et un esprit très critique. 

 

-  tu as réussi à bien brancher le moteur, c'est parfait !

-  dans le programme MinMax, la valeur 0 du Feedback est peut-être dû à une sorte de rebond provoqué par le capteur Hall. Peut-être que ton plan de travail vibre.

-  sur le Plotter, le Target = 16 ne bouge pas. C'est ta consigne, elle n'a aucune raison de changer.

-  par contre, la valeur du PID, elle, doit se modifier en fonction des accélérations et des frottements que tu appliques. 

-  je te crois sur parole, mais une erreur est vite arrivée. Pourrais tu faire une copie de tout le programme ici.

   Si tu ne sais pas comment faire, dans le menu Edit, tu fais Copier pour le Forum. Tu fais un Coller du programme à l'intérieur des balises [spoiler  [code . . . .  ici . . . . /code] /spoiler], avec tous les crochets qui vont bien, que je ne peux pas mettre ici.

 

 



#400 Chucky

Chucky

    Nouveau membre

  • Membres
  • 6 messages
  • Gender:Male

Posté 05 avril 2024 - 04:58

Bonjour Oracid, ce n'est que maintenant que je peux te répondre...
 
Lorsque j'ai reçu ta réponse, j'avais découvert les joies du court circuit sur Arduino (il est devenu brûlant). Un malheureux câble connecté à l'arduino a eu la brillante idée de toucher la surface en métal de l'hoverboard...
 
Après une commande d'un arduino sur Amazon et de 8 sur Ali (qui arriveront un peu plus tard) me revoilà.
 

En avant propos, mon moteur se lance tout seul au démarrage du programme principal (à une faible vitesse) avant même que je lance le programme au travers du bouton.

Alors, tout d'abord voici les retours du programme min-max :
 

 
15:40:46.201 ->   target: 30  feedback: 26
15:40:46.386 ->   target: 30  feedback: 27
15:40:46.616 ->   target: 30  feedback: 0
15:40:46.811 ->   target: 30  feedback: 26
15:40:46.985 ->   target: 30  feedback: 0
15:40:47.211 ->   target: 30  feedback: 0
15:40:47.409 ->   target: 30  feedback: 26
15:40:47.609 ->   target: 30  feedback: 0
15:40:47.812 ->   target: 30  feedback: 27
15:40:48.001 ->   target: 30  feedback: 26
15:40:48.213 ->   target: 30  feedback: 27
 

 

  
les zéros ne sont pas dû à l'établi, j'ai posé l'hoverboard au sol.
 
Maintenant voici le code principal :
 

Spoiler

 
Lorsque je lance le code principal, voici le résultat dans la console :

 

16:03:51.435 -> 0  174.000  30.000  108

16:03:51.435 -> 0  35.000  30.000  108

....

 

ça tourne entre 25.000 et 35.000 le plus souvent et parfois j'ai du 174.000 ?

 

Je t'ai joins un imprim écran du graph.

 

J'ai changé la carte contrôleur (même pb) et je vais tester sur l'autre moteur de l'hoverboard (24v).

 

J'ai un autre hoverboard qui devrait être identique au tien (36v), je pourrais tester avec ses moteurs aussi.

 

J'espère pouvoir trouver le temps ce WE de faire les tests car j'ai tellement hâte de mettre mon 1er sur son tricycle motorisé !

 

Merci pour ton partage de connaissance :)





Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users