lundi 7 mai 2012

Le programme

Algorithme:


La trame du programme principal est simple: lire la position du spot et commander le moteur pour déplacer l'esclave vers cette position.

Une fois le signal AO récupéré par l'intermédiaire d'un convertisseur analogique numérique (ceci se fait automatiquement au fur et à mesure que les bits arrivent), il faut le traiter pour en déduire la position du spot. Pour cela, on voulait faire une corrélation de l'image du spot lumineux avec le signal, afin d'avoir une position très précise. Cependant, la saturation de celui-ci rend infaisable cette solution.

On a donc choisi de réaliser la détection en 2 temps:
      • Connaître la taille du spot lumineux sur la barrette. Pour cela on laisse le spot immobile sur la barrette sur 8 images, on détecte alors les bords de la saturation, on en déduit la taille du spot et on en fait la moyenne et on la garde en mémoire. Cette étape permet de s'adapter à toute taille de spot lumineux.
      • Connaître l'emplacement du spot lumineux. Pour cela, sur chaque ''image'' rendue par la barrette on détecte les bords de la saturation par seuillage, puis on compare la taille obtenue à la taille du spot connue grâce à l'étape précédente. Cela nous permet de savoir, si celle-ci est plus petite que le spot dépasse sur un bord de la barrette, et que donc il faut commander à l'esclave d'aller un peu plus loin. S'il n'est pas sur un bord, on commande à l'esclave de superposer le milieu des bords de la saturation et le milieu de la barrette.
        On reboucle cette deuxième étape.

Ceci donne l'algorithme suivant.


Difficulté du programme :


La principale difficulté est de synchroniser les signaux SI et CLK d'un côté, de relever le signal AO et commander les 2 moteurs d'un autre, le tout à la fois.
Pour cela, il faut utiliser plusieurs timers. L'un à 5MHz qui détermine CLK et sur lequel est également indexé SI (ces deux signaux sont donc parfaitement synchronisés) et les relevés du signal AO, ainsi qu'un deuxième timer à 50Hz pour commander les servo-moteurs.

Aucun commentaire:

Enregistrer un commentaire