La carte d'asservissement

 
   
Année de développement : 2002
 
Liaison avec le système : I2C
 
Composants utilisés : Pic 16F84, Pic 16F876, LM 629.

 
  Vu les réultats médiocres de notre ancien asservissement des moteurs (instabilité, manque de précision, bugs, etc.) nous avons décidé de changer radicalement tout le système.
    - Les systèmes de roue de souris est remplacé par des codeurs HP.
    - Le 16F84 d'asservissement est remplacé par deux circuits spécialisés : les LM629.
    - Un Pic 16F876 se charge de contrôler les deux LM629.
    - Un petit écran piloté par un Pic 16F84 relié par I2C au 16F876 permettra de debugger le programme de pilotage des LM629 par celui-ci.

 

 
  Le principe
  Le PicBasic envoie par liaison I2C la valeur de la distance à parcourir et la vitesse limite du robot. A charge du Pic 16F876 d'envoyer les données nécessaires aux LM629 pour chaque moteur. Ces derniers effectueront l'asservissement PID sur les moteurs.
   
 

 

 
  Le schéma
  Le schéma du dispositif.


 
  Liste des composants
  Le circuit imprimé, avec tous les composants, est terminé.

 

 
  Le soft
  Il est décomposé en deux parties :
 
La première est codée dans le PicBasic et se charge d'envoyer des ordres à la carte d'asservissement.
Vous en trouverez le code (encore non testé) ici .
 
L'autre partie correspond au code chargé dans le microcontrôleur Pic 16F876 implanté sur la carte d'asservissement.
Celui-ci est développé en C grace au compilateur PICC Compiler, fourni par notre sponsor HI TECH TOOLS . Nous le publierons sur cette page dès qu'une version existera et sera testée.
 
Le principe est le suivant : un soft est développé pour le 16F84 de debug, un autre soft est en développement, qui pilote les LM629 via le Pic 16F876. Ce dernier récupère un code (compris entre 0 et 255) via la liaison I2C avec la PicBasic, puis une valeur sur 2 octets qui correspond à la valeur de l'asservissement à effectuer (distance, angle, accélération, vitesse...). Un arrêt des moteurs par le PicBasic avant la fin de l'action est également prévu.
 
Voici un lien décrivant en détail le LM629 (fonctionnement interne, description des instructions etc.)

 
  Protocole de communication
 
 
Le PICBASIC et la carte d'asservissement communiquent suivant le protocole décrit ci-dessous :
 
    - Le PICBASIC envoie à la carte d'asservissement l'octet 0xFA.
     
    - Si l'octet est reçu correctement la carte d'asservissement renvoit l'octet 0xAA, dans le cas contraire la carte d'asservissement renvoie 0x33.
     
    - Le PICBASIC enoie ensuite 2 octets (octet 1 et octet 2). L'octet 1 donne le type de commande (avance, recule...) et l'octet 2 donne la valeur (comprise entre 0 et 255).
     
    - A chaque opération, la carte d'asservissement renvoie 0xFA.
     
    - Le PICBASIC attend la fin de l'action
     
    - A la fin de l'action la carte d'asservissement informe le PICBASIC que l'action est terminée, en renvoyant la valeur de l'action. Si un stop avec remise à 0 (reset) est activé, alors la carte d'asservissement renvoie la valeur du trajet déja parcouru.
     
    Type de commande (octet 1) :
     
    1: Avance
    2: recule
    3: tourne à gauche
    4: tourne à droite
    5: vitesse
    6: accélération
    7: stop avec RAZ (pas encore implémentée)
    8: stop sans RAZ
    9: continuer
    10: Réglage du coefficient proportionnel du PID
    11: Réglage du coefficient intégral du PID
    12: Réglage du coefficient dérivé du PID
    13: Réglage du coefficient "integral limit" du PID

     
    Valeurs (octet 2) :
     
    Elle est comprise entre 0 et 255 (1 octet).
    C'est soit l'angle (en ), soit la vitesse (en m/s), soit l'accélération (en m/s), soit la distance (en cm).

 
  Voici une première version encore incomplète des programmes :
Le programme du PIC 16F876
 
Le programme du PIC 16F84