Au niveau de la motorisation de notre projet, nous avons très vite opté pour des servomoteurs vis à vis des moteur pas à pas. Le principal critère de sélection étant que les servomoteurs sont “intelligents” et gardent en mémoire leur position contrairement au moteur pas à pas, ce qui s’avère très discriminant dans notre projet. Ensuite nous avons choisi des servomoteurs de la classe dynamixel car il est possible de les contrôler directement via un code python sans passer par arduino. Etant donné que le reste du projet est réalisé en python, cette solution a paru pertinente. De manière concrète, nous avons opté pour le modèle AX-12A, le modèle dynamixel d’entrée de gamme qui permet de réaliser 300° d’angle (270° nécessaire pour notre projet) avec des pas minimum de 0.3° (ce qui est conforme au cahier des charges) et un couple de 1.5N.m largement suffisant pour notre projet. Pour le contrôle, nous avons utilisé un port série USB2 Dynamixel qui nous permet de commander nos servomoteurs avec la librairie pydynamixel de python. En ce qui concerne l’alimentation, les servomoteurs ont besoin d’un voltage de 9 à 12V avec une intensité inférieur à 900mA. Nous avons utilisé une alimentation classique pour notre projet.
L’architecture du programme de pilotage comporte deux grandes parties. La première, orientée objet, est une bibliothèque qui permet de commander les deux moteurs. La seconde est une série de fonctions permettant l’acquisition et le traitement des données fournies par le spectromètre.
L’interface graphique comporte une architecture en fenêtres ordonnées les unes aux autres, permettant de gérer distinctement le calibrage et l’utilisation de l’instruments. A l’intérieur de ces fenêtres, les éléments du programme de pilotage sont intégrés de façon à être compatibles avec les contraintes d’une interface tkinter.
Le langage a été choisi pour être compatible avec les moteurs dynamixel utilisés, qui ne peuvent pas être commandés en python 3 (dernière version de python).
La bibliothèque tkinter a l’avantage d’être installé par défaut dans python, et donc de pouvoir être utilisé sur n’importe quelle machine.