Bonjour Futura-Science!
Je suis actuellement ma dernière année d'électronique et pour finir l'année tranquillement, à part l'exament pratique, je dois réaliser une base roulante dans le but de faire un robot. Cette base roulante sera récupérée par les apprentis qui me précéderont.
Voila, la base est concue en 3 module: un module Gestion des moteurs, un module Gestion des capteurs et un module "Cerveau" qui gère tout sa.
Si on zoom sur le module moteur, on voit que je l'ai vu comme ceci:
- Un PIC Master (qu'on appellera M)
- Deux PIC Slave (qu'on appellera S)
- Deux moteur DC avec encodeur.
Voila le fonctionnement: Le M envoie une consigne de vitesse sur 8 bit qui sera la valeur du PWM à envoyer au moteur. Par exemple 128 (c'est la moitié de 255 donc un rapport cyclique de 50%).
Le S recoit cette consigne et envoie le PWM de 128 sur le moteur qui fera osciller le codeur à une certaine fréquence. Le S envoie 128 mais peut-être qu'à cause d'un défaut mécanique ou une surcharge ou je ne sais quoi, le moteur tournera à 130 réellment, ou 125...
Pour corriger cette erreur, le S va mesurer la fréquence à laquelle oscille le codeur. Il va ensuite le comparer à un tableau de valeurs et vérifier si la fréquence réelle correspond à la fréquence qui devrait être présente pour un PWM de 128, je sais pas si je me fais comprendre...
128 = 17kHz
Le moteur tourne à 132 réellement, alors que S envoie 128. S mesure la fréquence du codeur et calcule qu'il oscille à 17,6kHz. Il va dont décrémenter de 1 le PWM réel qu'il envoie, indépendement de la consigne vitesse qui restera à 128.
Dans le cas contraire, c'est la même démarche, sauf que l'on incrémente le PWM.
Ce que je veux savoir, est-ce que les signaux du codeur (interruption sur le pic) doivent être toujours présent ou je peux compter sur 4-5 flanc pour mesurer? Le cas ou ils doivent toujours être présent, je me demande si mon programme va être "rentable" puisqu'il sera interrompu sans cesse...
Les signaux codeur d'un seul moteur iront aussi sur M, pour qu'il puisse connaitre sa position (avance tout droit, tourne sur lui même, re'avance tout droit, re'tourne sur lui même) ce qui permet de récupérer les signaux que d'un seul moteur...
Voila! J'éspère que j'ai été compréhensible et si vous connaissez une solution plus pratique, plus efficace, merci de me la décrire =)
J'ai déja étudié le composant LM629 qui est un correcteur PID très complet, mais après le budget de l'entreprise qui est en crise on ne peut pas se l'offrire car il coute plus de 100.- CHF (environ 60 - 80€)...
Merci pour vos futures réponse et je vous souhaite une bonne journée!
-----