<< The Fribotte Homepage >>
Un club de passionnés en robotique participant à la coupe de France E=M6.
[Accueil] [Qui sommes-nous ?] [Robots] [Coupe e=m6] [BD Technique] [Forum] [Reportages] [Liens] [WiKiFri]

Fribotte



Avant propos
Contraintement aux autres fiches de cette Bdtech qui présentent des informations sur des technologies ou des réalisations des Fribottes, cette fiche se veut être sous la forme d'un projet. Un projet non terminé, où chacun peut apporter sa contribution (améliorations, adaptations, corrections, etc...).
De ce fait, ces pages sont amenées à évoluer, et vous-même pourrez participer à leur évolution.

Pourquoi avoir choisit un tel mode de travail ? Tout simplement parce que le sujet est vaste, et que des variations sont possibles suivant l'utilisation qu'en feront les différentes personnes.

En espérant qu'il vous sera utile,

Julien, des Fribottes



Présentation du projet
Les grandes lignes

 

Le but de ce projet est de réaliser une double asservissement de vitesse (type PID) de deux moteurs sur un seul PIC (type 16F877). L'utilité majeure étant de faire rouler un robot bien droit et à la bonne vitesse :-)
A quoi ça sert plus precisement ?
Avec un seul PIC ce projet permet aux robotitiens amateurs et chevronés de réaliser facilement leur asservissement de vitesse de moteurs à courant continu (en général les moteurs de propulsions de leur robot, mais ça peut être bien sûr d'autres moteurs).
La commande de l'asservissement pourra se faire, à terme, en liaison série (déjà fait) , I2C ou par bus ISA.

 

Avantages


Il existe bien sûr d'autres systèmes qui gèrent un asservissement de vitesses. Des sytèmes professionels existent comme les LM629. Ils ont l'inconvenient d'être cher (et ce pour un seul moteur) et relativement complexes.
Pourquoi chercher un fusil pour chasser des moustiques ? Le double asservissement sur PIC vous coûte ... le prix d'un PIC... soit environ 15Euro pour un 16F877 actuellement, et ce pour 2 moteurs.
Ce double asservissement se veut relativement simple .
De plus, vous pouvez en modifier le programme et l'adapter à vos besoins.

 

Inconvénients

Les personnes qui auront les moyens préférerons opter pour un système professionel, certainement pour des raisons de fiabilité, mais c'est à leurs risques et périls ;-)
La puissance du PIC étant limitée, il ne peut pas réaliser des PID trop rapides ou trop complexes. Il y a en particulier une limitation sur le nombre d'impulsions par seconde qu'il est capable de gérer.
Le langage utilisé étant le C, il faut une licence du logiciel pour pouvoir modifier et recompiler le code source c. Mais le projet se veut générique : Une version donnée pourra être utilisé sans recompilation en respectant quelques contraintes.

 

Les tests

Les premiers développements ont étés testés et validés sur un petit prototype avec 2 moteurs, un robot appellé Nikoro. Cette plate-forme a conditionné les contraintes pour la 1ère version du projet.

Une deuxième plate-forme plus performante est en cours de réalisation. Retrouvez la page web de Haku ici.



Quelques questions ...
L'asservissement de vitesse des moteurs, kézako ?

En fait on pourrait imaginer qu'il suffirait d'envoyer au moteur une puissance constante pour qu'il tourne tout le temps à la même vitesse.

Ce n'est pas vrai du tout. Tout d'abord 2 moteurs d'une même série n'auront pas forcément le même comportement. Ensuite parceque les niveaux de tension ou d'autre différences électriques peuvent jouer. Enfin parce que des influences extérieures (obstacles, frein, mécanique du robot) peuvent jouer.
Du coup il est très difficile de faire aller un moteur à la vitesse voulue. Parfois ce n'est pas génant, mais ça peut l'être. Un exemple classique est le robot avec 2 roues motrices, type char, une configuration qui est très courante.Mais pour que ce robot aille droit, il faut que les 2 moteurs aillent exactement à la même vitesse !
La solution est de faire un asservissement. C'est a dire moduler dynamiquement la puissance envoyé aux moteurs suivant leur vitesse mesurée, afin d'adapter celle-ci à ce qui est désirée.
Cela implique un élément très important : pour asservir il faut un capteur de vitesse du moteur. En général il s'agit d'un compte-tour, qui envera N impulsions (ou "pas") par tour de moteur.
Ensuite un programme va calculer, en fonction de la vitesse mesurée du moteur, la puissance à utiliser.

Les asservissements sont constamment en train de chercher l'équilibre. Il faut bien comprendre qu'ils mettent un certain temps à l'atteindre, et ce dernier peut aussi être instable si l'asservissement est mal réglé...

L'asservissement qu'on va utiliser ici est un classique PIDou plus précisément un PI, car pour des raisons de vitesses de traitement la composante dérivée est laissée de coté (mais rien de difficile à rajouter).

Le PID ou Proportionnel Intégrale Dérivé est une méthode de calcul d'asservissement.

Soit Kp, Ki et Kd les coefficients proportionnels, intégrale et dérivé.
Soit e l'erreur : Vitesse mesurée moins vitesse demandée.
Soit Ti le terme intégral, d'abord initialisé à 0.

Consigne a appliquer (PWM) = Kp * e + (1/Ki) * (Ti += e) + Kd * (e - e(t-1))

On pourait dire des pages et des pages sur le PID, et ce n'est pas mon but ici. Merci de vous reporter au lien ci-dessous :

Pour plus de détails sur le PID, la page de l'ANCR : http://www.ancr.org/fichtech/action/pid/index.htm
Chez les Fribottes, la Simulation de Jean-Claude : http://www.wiki.free.fr/WiKiFri/index.php?Simulateur%20de%20PID

Le PIC, kézako ?


Le PIC est un petit micro-controleur, assez bon marche, et simple a programmer comme a utiliser.
La aussi je vais pas rentrer dans les details, vous pouvez vous reporter à la bdtech du site Fribotte, et en particulier aux cours de Bigonoff.

Le PIC est ici programmé en C, voir la page fribotte ici. L'utilisation du language C permet d'alleger considérablement le développement d'une application compliquée.

 

Le plan

Le projet est reparti sur plusieurs pages (sinon ca faisait trop gros) :

PID sur PIC, problématique et réalisation

- Les données
- Description des compte-tour
- Le choix du PIC
- Les E/S du PIC

La programmation du PIC

- Generalites - Les contraintes de temps
- Les grandes lignes du programme
- La Communication avec le donneur d'ordre
- Les méthodes de calcul de coéficients du PID

Le reste de la plate-forme de test : Nikoro le robot

- Présentation de Nikoro
- La mécanique
- L'électronique
- La programation
- Ce que ca donne au final

Le robot Haku, qui utilise le Pid sur PIC

Les autres pages ne sont pas encore terminées, merci de votre patience (c'est que c'est long à taper toutes ces pages, et puis je ne suis pas un grand spécialiste de l'électronique...).

L'electronique

- Description et typon de la carte du PIC
- Description et typon de la carte puissance





Complétez cette page, posez vos questions et remarques ici : WiKiFri

Page http://fribotte.free.fr/bdtech/PidSurPic/PidSurPic.html modifiée le 13/09/2004.
Copyright fribotte@free.fr, libre de droit pour toute utilisation non commerciale.
Reproduction autorisée par simple mail