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.
- 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. |
![]() |
|
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. ![]() |
Protocole de communication | |
Le PICBASIC et la carte d'asservissement communiquent suivant le protocole décrit ci-dessous :
- 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 :
![]() ![]() |