<< 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




PID sur PIC V2
Intro

Vous trouverez sur cette page temporaire l'adaptation du PIC sur PID v1 sur un nouveau PIC plus récent ainsi que sur le compilateur C de microchip.

PID sur PIC v1 : PIC 16F8777 et compilateur PCM de CCS
PID sur PIC v2 : PIC 18F452 et compilateur C18 de Microchip

Avantages de ces changements :
- le compilateur C18 n'est pas gratuit, mais il y a une version de démo qui peut se réinstaller tous les 60 jours. CCS, par contre, est payant. Donc j'espère que ce portage rendra le projet plus accessible.
- le PIC 18F452 a plus de ram, est plus rapide (40Mhz au lieu de 20Mhz, même si cette 1ere version tourne encore a 20Mhz) et a surtout la multiplication 8bits*8bits câblé en hardware, ce qui permet de gagner un bon facteur sur le calcul du PID. Ce dernier pourra donc être beaucoup plus précis. D'une façon générale le 18F452 permettra de rajouter de nouvelles choses en plus du PID, alors que le 16F877 était complètement saturé.

Le 18F452 reste compatible broche a broche avec le 16F877. Donc le schéma donné sur Haku est toujours valable.

Le portage actuel est assez limité : par rapport a la v1 seul la précision des coefficients et des résultats intermédiaires sur le PID a été augmentés. D'autres choses plus intéressantes sont possibles ! Apres il faut que j'ai le temps

Améliorations prévues :
- Ajouter le calcul de la dérive
- Accélérer la vitesse de la liaison série, qui est actuellement de 9600 bds. Peut-être aussi changer le protocole.
- Ajouter des commandes trapézoïdales, des commandes en position, etc...

 

 

Emplacement des valeurs sur l'EEPROM


Les emplacements ont changés pour tenir compte de l'accroissement de la précision :

Position dans l'EEPROM Signification
Octet 0 Kp moteur 1
Octet 1 (1/256)ème de Kp moteur 1 (Kp = octet0 + octet1 /256)
Octet 2 Kp moteur 2
Octet 3 (1/256)ème de Kp moteur 2 (Kp = octet2 + octet3 /256)
Octet 4 (1/Ki) moteur 1
Octet 5 (1/256)ème de (1/Ki) moteur 1 (1/Ki = octet4 + octet5/256)
Octet 6 (1/Ki) moteur 2(partie entière)
Octet 7 (1/256)ème de (1/Ki) moteur 2(1/Ki = octet6+ octet7/256)
Octet 8 Kd moteur 1 (non encore utilisé)
Octet 9 (1/256)ème de Kd moteur 1 (Kd = octet8 + octet9 /256)
Octet 10 Kd moteur 2 (non encore utilisé)
Octet 11 (1/256)ème de Kd moteur 2 (Kd = octet10 + octet11 /256)
Octet 12 Limite de SI moteur 1 (poid fort)
Octet 13 Limite de SI moteur 1 (poid faible)
Octet 14 Limite de SI moteur 2 (poid fort)
Octet 15 Limite de SI moteur 2 (poid faible)
Octet 16 Limite haute de la mesure moteur 1
Octet 17 Limite basse de la mesure moteur 1
Octet 18 Limite haute de la mesure moteur 2
Octet 19 Limite basse de la mesure moteur 2
Octet 20 2*Base de temps par defaut moteur 1 en ms (4ms mini, soit 8 en valeur)
Octet 21 2*Base de temps par defaut moteur 2 en ms (4ms mini, soit 8 en valeur)

 

Comment utiliser les PIC 18F452 et le compilo C18 ?

Rapidement, voici ce dont vous avez besoin comme doc :

D'abord la doc du 18F452 (et d'autres 18FXXX)
http://www.microchip.com/1010/pline/picmicro/category/embctrl/14kbytes/devices/18f452/9230/index.htm
C'est toute la description du microcontrôleur, de tout ce qu'il peut faire, avec en prime les commandes assembleurs

Ensuite viennent les doc sur C18:
D'abord le "Getting Started" (pas super important) :
http://www.microchip.com/download/tools/picmicro/code/mplab18/51295b.pdf
Puis le user guide :
http://www.microchip.com/download/tools/picmicro/code/mplab18/51288b.pdf
Et enfin les librairies :
http://www.microchip.com/download/tools/picmicro/code/mplab18/51297b.pdf

Maintenant pour les logiciels a télécharger.
Il y a d'abord MPLAB 6.2 qui permet de faire l'assembleur (il faut l'installer avant C18)
http://www.microchip.com/download/tools/picmicro/devenv/v6xx/v630/mp632c.zip

Ensuite C18 qui est le compilo C a proprement parler :
http://www.microchip.com/download/tools/picmicro/code/mplab18/c18v220ad.zip

n'oublions pas le logiciel pour programmer les PIC :
http://www.ic-prog.com/index1.htm
qu'il faut télécharger ici plus précisément :
http://www.ic-prog.com/download.html
Avec un lien qui explique pour l'installer sous Windows XP :
http://kudelsko.free.fr/prog_pic/PIC_XP.htm

Tout ça qui marche avec un programmateur de PIC.

 

Le programme

Voici donc le programme C correspondant à ce PID sur PIC v2, avec aussi l'hexe généré.

++

Julien, pour les Fribotte




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

Page http://fribotte.free.fr/bdtech/PidSurPicV2/PidSurPicv2.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