/home/totofweb/homepage
Christophe Le Lann's Homepage v0.8
 

Robot Pidzy - Implémentation d'un asservissement PID

Date d'initialisation : Décembre 2006
État actuel : Terminé

Sommaire

Robot Pidzy - Implémentation d'un asservissement PID

Sous-projets

Titre Date État
Carte de contrôle du robot Pidzy Décembre 2006 Terminé
Carte d'asservissement du robot Pidzy Décembre 2006 Terminé
Carte moteurs à L298 du robot Pidzy Décembre 2006 Terminé
Décodeur et diviseur de signaux en quadrature Décembre 2006 Terminé
Convertisseur Fréquence => Tension Janvier 2007 Terminé

Description générale

Le but de ce robot est uniquement d'apprendre à mettre en place un asservissement de position et/ou de vitesse logiciellement (sans utiliser de HCTL ni de LM629...) pour un projet d'étude. Il n'y a donc aucun autre capteur que deux encodeurs optiques placés sur les moteurs (deux HEDS 512pt/tour en quadrature).

Aspect mécanique

La mécanique est réalisée en étages à partir de plaques de plastique de 3mm disponibles chez GoTronic. Elles ont l'avantage de se découper très facilement et très rapidement au cutter : on fait une entaille en quelques passages de cutter, puis on plie le plastique qui se casse de lui-même en suivant la fente dessinée par le cutter.

Les moteurs sont achetés chez Robot-Italy : ce sont de bons compromis puisque pour un coût réduit on dispose de moteurs correctement réductés (réduction 1/30, 200rpm) livrés avec roues, moyeux et supports, et qui ne consomment que quelques centaines de milliampères sous 12V, donc facilement pilotables avec un L298, voire même un L293D.

Aspect électronique

Du côté de l'électronique, j'ai préféré concevoir plusieurs cartes réparties sur différents étages du robot :

Remarque : Pour ces tests, seule la carte d'asservissement a été utilisée et recevait ses ordres du PC via une liaison série et non de la carte de commande via une liaison I2C. Les programmes disponibles en téléchargement correspondent à ce mode de fonctionnnement.

La prédivision des signaux n'étant pas indispensable selon la résolution des capteurs utilisés, l'association des broches des connecteurs d'entrée (venant des capteurs HE10) et des connecteurs de sortie (vers la carte d'asservissement) est identique, ce qui permet dans le cas de capteurs de faible résolution de ne pas utiliser la carte de prédivision des signaux et de connecter directement les encodeurs HEDS sur la carte d'asservissement.

Aspect informatique embarquée

Les deux AVR sont programmés en C avec AVR-GCC. Toutes les sources sont commentées et les fichiers makefile sont fournis, ce qui devrait faciliter la compréhension.

Voici les fusibles de configuration à utiliser pour les deux AtMega32 :

  • Fuse High Byte : 0xDF
  • Fuse Low Byte : 0xFF
  • Lock Bit Protection Modes : 0xFF

Pour plus de détails à propos de la mise en place d'un PID sur microcontrôleurs, vous pouvez aussi vous référer au site des fribotte.

Récupération de courbes d'évolution

Pour pouvoir mettre au point l'asservissement PID de manière efficace, il est utile de récupérer des courbes d'évolution du système. On peut ainsi comparer le temps de réaction, le dépassement, l'erreur statique, ..., et ainsi déterminer la meilleure valeur pour les coefficients du PID que l'on recherche.

Pour cela, il y a deux manières : récupérer les courbes logiciellement sur un PC via la connexion série du robot, ou les récupérer par une acquisition électronique directe d'après les signaux renvoyés par les capteurs.

La première méthode est assez simple à mettre en oeuvre : à chaque boucle de correction du PID, on envoie sur le port série une nouvelle ligne contenant la valeur asservie (position ou vitesse). Ensuite, on récupère ces données depuis un terminal série et on se sert d'un logiciel comme l'excellent GnuPlot pour tracer immédiatement les courbes correspondantes.

La deuxième méthode va nécessiter un circuit de traitement des signaux carrés issus des encodeurs. En effet, les encodeurs ne vont fournir qu'un signal carré dont la fréquence sera l'image de la vitesse de rotation. Pour obtenir quelque chose de facilement mesurable avec une interface d'acquisition, on va utiliser un circuit de conversion fréquence-tension, détaillé sur ce site.

La mise en place du PID - Travail d'étude

L'ensemble des détails à propos du PID, de sa mise en place et des résultats est disponible dans ce document PDF :

Cliquez pour visionner le document pdf

rapport.pdf (4.1Mo)

Photos


Carte d'asservissement des moteurs.
Carte Asservissement.jpg
Carte d'asservissement des moteurs.
Carte de contrôle avec le LCD et le module de communication sans fil.
Carte Controle.jpg
Carte de contrôle avec le LCD et le module de communication sans fil.
Carte de contrôle des moteurs contenant un double pont en H L298 et les diodes de roue libre.
Carte Moteurs.jpg
Carte de contrôle des moteurs contenant un double pont en H L298 et les diodes de roue libre.
Carte de conversion Fréquence-Tension permettant de visualiser les signaux à l'oscilloscope.
Convertisseur Frequence-Tension.jpg
Carte de conversion Fréquence-Tension permettant de visualiser les signaux à l'oscilloscope.
Découpage des éléments du chassis, par entaille au cutter puis pliage.
Decoupage.jpg
Découpage des éléments du chassis, par entaille au cutter puis pliage.
Vue globale du robot sans l'étage de contrôle.
Global sans controle.jpg
Vue globale du robot sans l'étage de contrôle.
Les roues sont nécessairement fines pour permettre un bon asservissement en position.
global.jpg
Les roues sont nécessairement fines pour permettre un bon asservissement en position.
Le robot en cours de montage.
Montage.jpg
Le robot en cours de montage.
La fixation des encodeurs HEDS s'est faite "à la barbare" avec un pistolet à colle.
Moteur HEDS.jpg
La fixation des encodeurs HEDS s'est faite "à la barbare" avec un pistolet à colle.
Graphique généré automatiquement par gnuplot depuis un script bash pilotant le robot (double PID vitesse/position sur une consigne de position).
output.png
Graphique généré automatiquement par gnuplot depuis un script bash pilotant le robot (double PID vitesse/position sur une consigne de position).

Code source


Quelques exemples de codes pour différentes types d'asservissements.
codes.zip
Quelques exemples de codes pour différentes types d'asservissements.

Documents PDF


PDF de la modélisation sous Maple de l'asservissement PID en position et en vitesse d'un moteur électrique.
ModelisationMaple.pdf
PDF de la modélisation sous Maple de l'asservissement PID en position et en vitesse d'un moteur électrique.
Document écrit résumant l'ensemble de mon travail sur le PID. Il traite dans un premier temps du PID appliqué aux moteurs électriques, puis étudie les cas de double asservissement.
rapport.pdf
Document écrit résumant l'ensemble de mon travail sur le PID. Il traite dans un premier temps du PID appliqué aux moteurs électriques, puis étudie les cas de double asservissement.

Divers


Export HTML (visualisable directement en ligne) de la modélisation sous Maple de l'asservissement PID en vitesse et en positiond d'un moteur électrique.
ModelisationMaple.html
Export HTML (visualisable directement en ligne) de la modélisation sous Maple de l'asservissement PID en vitesse et en positiond d'un moteur électrique.
Fichier Maple (version 10) de la modélisation de l'asservissement PID en vitesse et en positiond d'un moteur électrique.
ModelisationMaple.mw
Fichier Maple (version 10) de la modélisation de l'asservissement PID en vitesse et en positiond d'un moteur électrique.

Commentaires des visiteurs

Laisser un commentaire

Par sylv le 06/05/2007

Salut !
c'est une belle réalisation !
le lien vers le rapport ne semble pas fonctionner...

Par Totofweb le 07/05/2007

Sylv> Le rapport n'est pas encore terminé, il le sera d'ici un mois. Je t'en joins une copie en l'état actuel dans ta boîte mail (en espérant que tu sois bien le sylv auquel je pense...).

Par seb232 le 15/10/2007

Page tres interessante, surtout la description tres detaillée d\'un asservissement numerique PID.Je n\'ai plus qu\'a potassé tout cela pour notre futur robot !!

Par bailo le 21/05/2008

vraiment tre bien construit ta page et on ytrouve toutes les connaissances pour bien comprendre le pid ;le rapport est tres bien fait ;merci beaucoup.

Par jean pierre le 17/02/2011

Bonjour
(un AVR AtMega32 cadencé à 16MHz, piloté par I2C par la carte maître) Dans votre projet il y a une explication qui me serai tres utile pour mon projet de robotique.
Comment donner une adresse i2c a un atmega pour en faire un esclave d'un autre atmega,
Si vous pouvez me venir en aide merci d'avance

salutations

Par Totofweb le 17/02/2011

Jean-Pierre> La datasheet contient tout ce que vous devez savoir à ce propos : il y est explicitement précisé comment passer le module TWI en mode esclave entre les pages 189 et 195 (notamment le registre TWAR pour le gestion de l'adressage).
Pour toute autre question d'ordre général sur les AtMega et l'I2C, je vous suggère de vous tourner vers le forum de Planète-Sciences (http://www.planete-sciences.org/forums/viewforum.php?f=5).

Par tec.h le 05/02/2013

salut
si on ajoute un capteur detecteur d'ostacle remplace le xbee la question la nouvelle circuit reste le meme ou on change l'Atmega par un autre µc???????

Laisser un commentaire

Merci de ne poster ici que des questions ou commentaires concernant réellement le projet présenté sur cette page. Si vous recherchez de l'aide pour réaliser vos propres projets, merci de vous tourner vers des forums appropriés tel que celui de Planète-Sciences (où je suis très présent).


Pseudo
Mail (facultatif)
Votre message
erreur de génération du cryptogramme visuel. Veuillez recopier le cryptogramme visuel :