le 06-26-2013 08:11 AM
Bonjour,
Presque nouveau sous Labview et Arduino, je souhaiterai effectuer un simple asservissement à l'aide d'un PID.
La fonction est relativement simple.
Un accéleromètre deux axes (X/Y) est relié à l'Arduino sur les bornes analogiques.
J'ai converti les tensions en angles et lorsque je bouge l'accéleromètre, je fonctionne bien sur la plage 0-180 degrés des servos en X et Y.
Vous pouvez voir le schéma joint à ce post.
Maintenant que tout cela fonctionne correctement, je souhaiterai utiliser la fonction PID, de sorte à ce que mes deux servos en X et Y aient toujours une assiette nulle (Normal au plan terrestre), avec l'accéleromètre monté sur le support des servos.
Donc, envoyer une ref. à 0 en X et Y (qui correspond à 90° des servos), et les maintenir quelque soit l'angle dans la plage des 0-180°.
J'ai fait plusieurs essais, mais à chaque fois, je divise ma plage en deux (0-90°) et mon système oscille violement bien qu'ayant mis un filtre de lissage.
Auriez-vous une solution ?
Merci pour votre aide.
Amitiés,
Christophe
le 06-27-2013 02:55 AM
Hello,
Je ne suis pas sûr de ce qui ne va pas ? Est-ce le réglage des paramètres du PID ? Si c'est le cas, je pense qu'un petit tour sur ce ptetit white paper aidera :
- http://www.ni.com/white-paper/3782/en#toc3
Cdt,
Eric M. - Senior Software Engineer
Certified LabVIEW Architect - Certified LabVIEW Embedded Systems Developer - Certified LabWindows™/CVI Developer
Neosoft Technologies inc.
06-27-2013 03:17 AM - modifié 06-27-2013 03:21 AM
Boujour,
A ma connaissance, l'implementation d'un PID géré par Labview avec une arduino et le toolkit LIFA comme vous souhaitez le faire n'est pas faisable.
La communication serie entre LV et l'arduino constitue un goulot d'étranglement trop important pour cela.
Une solution, serait de coder la partie PID dans le sketch de l'arduino directement, et de n'utiliser labview que pour l'interface graphique, mais ça demandera un peu plus de boulot et des compétences de programation en C.
Si la reactivité du systéme n'est pas critique, un systeme en boucle ouverte avec une moyenne mobile pour lisser le signal issu du capteur devrait fonctionner sans intervenir sur la programmation de l'arduino, le systéme aura cependant inevitablement un certain retard...
Bon courage.
Antoine