De2115Extension
Sommaire
Étude et conception
Présentation projet
On cherche à contrôler une tourelle pan-tilt à l'aide de 2 servomoteurs, d'un joystick ou d'un nunchuk, et d'un radar ultra-son.
Contraintes
Dimensionnement des écarts entre les connecteurs
1) Ecart entre les connecteurs MSP
C'est l'écart qui compte le plus : s'il n'y a qu'un mm de trop, la carte extension ne sert à rien. Une mesure précise de l'écart entre les broches extérieures de la MSP432, puisque celle-ci possède 2 broches doubles, donne 46mm.
2) Ecart entre les connecteurs MSP et le connecteur Altera
Une distance minimale est également nécessaire entre le connecteur Altera et les connecteurs MSP : 21mm.
3) Ecart entre les autres composants et les connecteurs MSP ou Altera
Comme le connecteur Altera a une certaine largeur, on ne peut pas placer des straps en-deçà d'une certaine distance avec l'élément. Or, comme, pour des raisons de commodité, il est très conseillé de placer toutes les pistes connectées à l'élément sur le côté inférieur de la carte, on se retrouve donc avec plusieurs straps, et il ne faut pas oublier cet élément.
De la même manière, une certaine distance est obligatoire entre les connecteurs MSP et les autres, car la carte n'a même pas exactement la largeur existante entre ses deux connecteurs, elle empatte. Cet empattement est de 5mm. Pour d'autres composants, cette distance doit être encore plus grande, car ceux-ci ont également une certaine largeur. Ainsi, la prise de la nunchuk ayant une largeur respectable, il faut une distance de 15mm entre les deux connecteurs.
Espace nécessaire à la fixation de la tourelle
La carte doit également nécessiter un espace suffisant pour fixer la tourelle pan-tilt.
Surface de la tourelle (en mm) : 33 x 37
Distances maximales entre les connecteurs et les composants
Comme les fils des composants n'ont pas une distance infinie, il y a une distance maximale entre ceux-ci et les connecteurs. Sur les 3 composants,l'un d'entre eux ne pose pas de problèmes : le nunchuk est tenu en main. Les deux restants se trouvent au même endroit : le sonar est imbriqué dans la tourelle. Cela implique donc que la tourelle doit se trouver à proximité des connecteurs des servomoteurs et du sonar.
Longueur des fils (en cm) :
- du sonar : 30
- de la tourelle pan-tilt : 24
Surface de la carte : 17 x 9
Etant donné que la surface de la carte est inférieure à la longueur des fils, la contrainte peut donc être négligée.
Cependant, dans l'optique de rendre la carte plus simple, il vaut mieux diminuer autant que possible la distance entre les composants et les connecteurs, afin de pouvoir raccourcir la longueur des fils.
Conception
Conception de la carte du binôme Baczkowski/To
Nous avons conçu notre carte en prenant en compte plusieurs paramètres.
Tout d'abord, afin de diminuer le flux entre les pistes, nous avons essayé d'éviter que celles-ci soient parallèles.
Dans un deuxième temps, pour éviter les vias, nous avons fait une carte en double face.
Nous avons eu un choix à faire au sujet des barrettes : celles-ci agissent en quelque sorte comme un interrupteur, sauf qu'il n'y a pas un état 0 et un état 1 mais, comme dans les deux cas il y a une liaison, une connexion A et une connexion B.
Comme un barrettes possède 4 pattes, on a une alternative :
- solution 1 : il y a une entrée et 2 sorties. Pour que les 4 pattes soient utilisées, on peut dupliquer l'entrée, et dans ce cas-là, il faut décaler le cavalier pour passer de la connexion A à la connexion B.
- solution 2 : on peut également se contenter d'une entrée. Mais comme le cavalier a une taille fixe, il ne peut pas être disposé sur la diagonale de la bar. On est donc obligé de disposer les sorties du cavalier de part et d'autre de l'entrée.
Dans un premier temps, nous avons retenu la première solution. Mais après la réalisation du premier prototype, nous avons préféré nous reporter sur la deuxième solution, afin de rendre l'utilisation de la carte plus simple. Mieux encore, nous avons décidé que sur chaque barrette, les positions des cavaliers auraient la même signification. Premièrement, les cavaliers sont toujours disposés de manière horizontale. Ensuite, la première position, celle du haut, relie l'élément au microcontrôleur de la carte MSP432, et celle du bas relie l'élément à la carte Altera.
Un autre défi s'est présenté à nous lorsqu'il nous a fallu dimensionner, puis stabiliser la plaque soutenant le sonar sur la tourelle. Plusieurs solutions se présentaient à nous, mais dans tous les cas il nous fallait viser les deux plaques.
Les 3 dimensions sont à prendre en compte :
- pour la largeur, des bordures en plastique permettent de la limiter, mais encore faut-il que la largeur du support du sonar corresponde avec l'écart entre les deux bordures ;
- pour la longueur, une bordure en plastique est placée à l'avant, mais il n'y a rien à l'arrière, il y a donc un risque que la carte s'échappe.
- pour la hauteur, elle est encore une fois limitée, en haut, par deux morceaux de plastique. Cependant, comme le mouvement de la tourelle est vertical, le sonar et sa plaque bougent beaucoup. C'est donc sur la hauteur que la stabilisation importe vraiment, même s'il n'y a pas pour autant de risques que le sonar s'échappe.
Conception de la carte du binôme Gaya/Gnagne
Programmation
Une fois la carte réalisée, nous avons voulu vérifier si celle-ci fonctionnait en commençant directement avec un programme complexe. Mais comme les résultats que nous a donnés celui-ci se sont avérés surréalistes, nous avons dans un second temps préféré créer 3 programmes séparés, pour chacune des 3 parties du montage :
- le premier destiné à contrôler le fonctionnement des servomoteurs, et donc la rotation de la tourelle ;
- le second destiné à soumettre cette tourelle au mouvement de la nunchuk ;
- et dans un troisième temps, faire fonctionner le sonar, c'est-à-dire émettre et récupérer un signal pour pouvoir déterminer la distance à laquelle se trouvent les obstacles les plus proches.
Programme relatif au contrôle des servomoteurs
Pour contrôler les servomoteurs, nous avons d'abord trouvé un programme test, pour vérifier le fonctionnement du servomoteur sur une plaque à essai avant la réalisation.
Pour cela, nous avons trouvé dans Energia, une plateforme de prototypage électronique permettant de rendre compatible la structure Arduino, avec les composants Texas Instruments, le programme Knob dans la bibliothèque Servo.
#include <Servo.h> Servo myservo; // create servo object to control a servo int potpin = PE_4; // analog pin used to connect the potentiometer int val; // variable to read the value from the analog pin void setup() { myservo.attach(PF_1); // attaches the servo on Port F, pin 1 (Red LED pin) to the servo object } void loop() { val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 4095) val = map(val, 0, 4095, 0, 179); // scale it to use it with the servo (value between 0 and 180) myservo.write(val); // sets the servo position according to the scaled value delay(15); // waits for the servo to get there }
De cette manière, nous avons pu nous assurer que le montage que nous nous proposions de faire ne comportait pas d'erreur de routage.
Par la suite, avec l'aide de l'enseignant, nous avons fait un deuxième programme, servant uniquement à vérifier que la tourelle n'ait pas de problèmes.
#include <Servo.h> Servo h_servo, v_servo;; uint8_t horizontal,vertical; void setup() { //définir patte Data des servomoteurs h_servo.attach(A15); // servomoteur horizontal v_servo.attach(3); // servomoteur vertical // iniatialisation de la valeur de départ horizontal=0; vertical=20; } void loop() { // Incrémentation de la variable horizontale horizontal += 10; // Condition if (horizontal > 180) // si la variable horizontale est maximale { vertical += 10; // Incrémentation la variable verticale horizontal=0; // remise à zéro de la valeur horizontale } if (vertical > 105) vertical=20; // si la variable vertical est maximale, retour à la valeur initiale // donne une valeur aux servomoteurs h_servo.write(horizontal); v_servo.write(vertical); delay(1000); h_servo.write(horizontal); v_servo.write(vertical); delay(333); }
Nous avons toutefois rencontré des problèmes. L'un d'entre eux ne nous a pas posé de vrais problèmes, étant aisément contournable, mais il nous a agacé, car nous n'en comprenons pas la cause : la temporisation que l'on trouve dans la boucle ne pouvait pas être une autre valeur que 100 ou 333.
Comme nous cherchions une temporisation de 1000, nous avons d'abord pensé que les servomoteurs ne gardaient pas en mémoire leur valeur suffisamment longtemps, mais comme nous avons essayé également une temporisation de 250, nous avons dû admettre que ce n'était pas ça. Finalement, afin de pouvoir conserver une temporisation assez grande, nous avons compris que c'était le fait que ce soit la dernière temporisation qui posait problème, et nous avons donc rajouté une deuxième temporisation, avec cette fois-ci une valeur "admise".
Comme la rotation de la tourelle est soumise à la nunchuk, cette temporisation n'est pas si importante, même si on en aura quand même besoin pour la réception du signal par le sonar.
Programme relatif au contrôle du sonar
Programme relatif au contrôle de la manette nunchuk
Réalisation technique
Réalisation de la carte du binôme Baczkowski/To
Nous avons commencé par le composant le plus important, à savoir le connecteur Altera. Toutes les soudures n'étaient pas obligatoires, car la plupart des pattes n'étaient reliées à aucune piste. Néanmoins, par souci de stabilité, nous avons jugé préférable d'effectuer les 40 soudures au dos de la carte, car aucun composant ne nous gênait.
Comme nous avions besoin de souder des 2 côtés de la carte, il fallait nous assurer de sa stabilité. Pour cela, nous avons utilisé un étau.
Comme, pour les premières soudures, le fer n'avait assez chauffé, les soudures ont donc bavé. Ce petit défaut récurrent a été légèrement par la suite.
En ce qui concerne les connecteurs mâles des servomoteurs, nous avons eu affaire à une rupture de stock. Nous avons donc choisi des connecteurs femelles, et de placer des adaptateurs dessus.
Mais par la suite, nous nous sommes aperçus que la carte comportait trop d'erreurs. Beaucoup d'entre elles étaient rattrapables, mais certaines ne l'étaient pas. Plutôt que d'utiliser le système D pour tenter de faire fonctionner ladite carte, nous avons préféré tirer profit de nos erreurs, et, puisque nous en avions encore le temps.
En ce qui la fixation du sonar sur la tourelle, plusieurs solutions se présentaient à nous, mais dans tous les cas il nous fallait viser les deux plaques. Pour dimensionner la plaque, et pouvoir l'intégrer dans la structure de la tourelle, nous l'avons d'abord limée. Puis, pour la stabiliser, nous avons choisi un système à 3 vis et 4 écrous : 2 d'entre elles servent à maintenir l'écart entre la plaque et la tourelle. Seule la plaque est percée, et pour l'empêcher de descendre, un écrou est disposé juste en dessous de celle-ci. Pour éviter qu'un des côté ne s'affaisse, les 2 vis sont disposées en diagonale. La dernière vis a 2 fonctions : premièrement, éviter un affaissement diagonal, peu probable mais toujours possible. Dans un second temps, il faut absolument éviter que celle-ci ne s'avance ou ne recule. Donc, cette vis, en plus du premier écrou, doit également en posséder un deuxième, situé de l'autre côté de la plaque qu'il traverse dans un deuxième temps.
Problèmes rencontrés lors de la réalisation
1) Position et sens des connecteurs
Le premier problème que nous avons rencontré est la position du connecteur Altera. En effet, pour éviter de torsader la nappe, il fallait que le celui-ci ait un sens particulier, car la position de la carte Altera est prédéterminée. Ce problème n'est pas vraiment handicapant, car il est seulement d'ordre esthétique.
2) Problème de la carte en double face
Il s'est rapidement avéré qu'il aurait mieux valu avoir des vias et tout mettre au dos de la carte : en ayant des pistes sur la carte, cela nous empêche d'enfoncer totalement le connecteur Altera, car nous avons besoin de souder le composant des deux côtés.
À cause de cela, les soudures pistes/pastilles posent problème au top. Le plus embêtant reste lorsque les pistes viennent de l'autre côté de la carte : la soudure doit alors être faite sous le composant, ce qui pose problème.
Mais cela ne se limite pas au composant Altera : les connecteurs 4 pattes, du sonar et du nunchuk, et 3 pattes, des servomoteurs, et les barrettes, ainsi que les connecteurs de la carte MSP432, ont le même problème.
Le plus gros problème de la carte est donc d'être en double-face, une carte en simple face n'aurait pas eu tout ces inconvénients.
Cela nous a posé problème lorsque nous avons voulu vérifier l'absence de court-circuit et de faux contact.
3) Problème de la place des pistes dans les connecteurs
Solutions apportées
Lorsque nous avons voulu vérifier l'absence de court-circuit et de faux contact, nous avons dû employer une astuce : afin de pouvoir toucher la patte du composant située sous sa partie plastique, nous avons enroulé un fil en étain autour d'une des pointes.
Mais ces précautions prennent du temps : pour souder 5 composants, nous avons passé 1h30, et 30 min supplémentaires ont été nécessaires pour les vérifications.
Carte finale
Sur le deuxième essai, nous avons pris en compte tous ces paramètres afin de faire une carte plus simple à réaliser, à l'utilisation plus intuitive, et surtout immédiatement fonctionnelle.
Nous avons toutefois rencontré, là encore, des difficultés. En particulier, et ça a été une surprise car ça n'avait pas été le cas lors de la réalisation du prototype, lors du perçage. En effet, lors de la création du calque, nous avons sélectionné une catégorie supplémentaire, qui nous a gênés pour distinguer le diamètre des pastilles. Par mesure de sécurité, nous avons décidé de choisir, pour le perçage, un foret de 1mm pour chaque pastille, sauf pour les résistances, car nous avons rapidement vu qu'un diamètre de 0.8mm convenait.
En ce qui concerne la fixation de la tourelle sur la carte, et afin d'avoir une carte nous avions plusieurs solutions :
- premièrement, nous pouvions coller la tourelle sur la carte, en utilisant un pistolet à colle ;
- ensuite, nous pouvions placer des vis du côté supérieur de la carte, et comme celles-ci dépassent de l'autre côté, il aurait aussi fallu placer des entretoises. Comme le diamètre de ces entretoises est supérieur à celui des trous préexistants, il aurait fallu repercer la tourelle ;
- enfin, nous pouvions placer des vis du côté inférieur de la carte.
Nous avons retenu la troisième solution, qui nous a plu par sa simplicité, et afin de stabiliser la carte, nous avons également placé des plots adhésifs sous la carte, afin que celle-ci ne soit pas soutenue par les soudures.
Comme les fils du sonar et des servomoteurs étaient trop grands et gênaient, nous avons résolu le problème en raccourcissant les fils du sonar, et comme cela n'était pas possible pour les fils des servomoteurs, qui avaient une taille fixe, nous avons utilisé un collier de câblage, afin de rassembler les fils.
Réalisation de la carte du binôme Gaya/Gnagne
Améliorations possibles
La carte qu'on obtient au final a un fonctionnement plutôt intuitif, mais elle est loin d'être parfaite.
Son plus gros défaut est le fait qu'elle soit alimentée seulement par la carte Altera : ça implique une dépendance à la carte DE2-115, or cette carte est assez volumineuse et prend de la place. Donc, le FPGA est très puissant, et permet de réaliser beaucoup plus d'applications que la carte MSP432, mais pour les tâches simples, le processeur suffit largement.