IMA4 2018/2019 P44 : Différence entre versions
(→Réponse à la question difficile) |
(→Documents Rendus) |
||
(29 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 19 : | Ligne 19 : | ||
===Fonctions=== | ===Fonctions=== | ||
La carte regroupant différentes fonctions, nous devrons gérer efficacement les différents étages d'alimentations, ainsi que faire attention à la consommation générale pour garantir une autonomie correcte. | La carte regroupant différentes fonctions, nous devrons gérer efficacement les différents étages d'alimentations, ainsi que faire attention à la consommation générale pour garantir une autonomie correcte. | ||
− | Nous utiliserons donc différents chipsets et composants passifs | + | Nous utiliserons donc différents chipsets et composants passifs importants: |
*bien évidemment, un microcontrôleur Atmega 2560, | *bien évidemment, un microcontrôleur Atmega 2560, | ||
*un module de type ESP82XX pour la partie sans-fil, | *un module de type ESP82XX pour la partie sans-fil, | ||
− | *un module FTDI pour la connexion USB | + | *un module FTDI pour la connexion USB, |
*différents transistors FET pour le contrôle des moteurs | *différents transistors FET pour le contrôle des moteurs | ||
;OU | ;OU | ||
Ligne 47 : | Ligne 47 : | ||
De plus, les pistes doivent être bien dimensionnées afin d'éviter la surchauffe des pistes et, par conséquent, celle de la carte. | De plus, les pistes doivent être bien dimensionnées afin d'éviter la surchauffe des pistes et, par conséquent, celle de la carte. | ||
Ce matériel étant amené à piloter des puissances relativement importantes (jusqu'à 50W par moteur), il est également judicieux de faire attention à sa température et aux effets joules présents.<br> | Ce matériel étant amené à piloter des puissances relativement importantes (jusqu'à 50W par moteur), il est également judicieux de faire attention à sa température et aux effets joules présents.<br> | ||
− | Également, il faudra faire attention aux tensions d'alimentations, aux courants et leurs sens, et les niveaux d'alimentations pour | + | Également, il faudra faire attention aux tensions d'alimentations, aux courants et leurs sens, et les niveaux d'alimentations pour abîmer ni la batterie ni la carte. Pour cela, un ensemble de diodes judicieusement choisies sera connecté à chacune des fonctions. Par exemple, des diodes zener en série sur la batterie pour s'assurer d'avoir une tension minimale et/ou ajouter également un circuit logique désactivant la carte si l'alimentation est trop basse. |
Ligne 57 : | Ligne 57 : | ||
Cette carte n'a en soit rien de nouveau. En effet il existe déjà quelques cartes de ce type, par exemple à destination des imprimantes 3D, ou encore différents modules (shield) Arduino qu'il suffit alors d'empiler les uns sur les autres. <br> | Cette carte n'a en soit rien de nouveau. En effet il existe déjà quelques cartes de ce type, par exemple à destination des imprimantes 3D, ou encore différents modules (shield) Arduino qu'il suffit alors d'empiler les uns sur les autres. <br> | ||
Pour l'analyse des concurrents, j'utiliserai donc ces deux exemples. | Pour l'analyse des concurrents, j'utiliserai donc ces deux exemples. | ||
− | Cependant, | + | Cependant, il existe un réel avantage à ce que Polytech Lille possède sa propre carte de développement. Il sera possible : |
− | * | + | *d'améliorer la carte au gré des besoins des différents étudiants et du club Robotech, |
− | *fournir une base d'étude solide pour différents modules d'enseignements (microprocesseur, temps réel, systèmes, etc, conception de circuit électronique, parmi d'autres) | + | *de fournir une base d'étude solide pour différents modules d'enseignements (microprocesseur, temps réel, systèmes, etc, conception de circuit électronique, parmi d'autres), |
− | * | + | *de la réaliser à l'école, offrant l'occasion d'améliorer ses compétences pratiques pour l'utilisation des machines spécifiques à ce type de projets tels que les fers à souder, les fours CMS et les appareils de gravure PCB. |
− | *ainsi être répliquée "à l'infini" | + | * et ainsi d'être répliquée "à l'infini". |
<br> | <br> | ||
− | Et c'est quand même plus fun et plus sympa de réaliser ce genre de carte de A à Z plutôt que de jouer aux | + | Et c'est quand même plus fun et plus sympa de réaliser ce genre de carte de A à Z plutôt que de jouer aux Lego ou de commander une carte entière qui ne sera pas forcément adaptée à tous nos besoins. |
==Analyse du premier concurrent== | ==Analyse du premier concurrent== | ||
Ligne 70 : | Ligne 70 : | ||
Une première solution pour réaliser ce projet relève bien un peu du bricolage. Il est possible de commander chacune des pièces qui seraient nécessaire au projet. | Une première solution pour réaliser ce projet relève bien un peu du bricolage. Il est possible de commander chacune des pièces qui seraient nécessaire au projet. | ||
Il existe pour cela des contrôleurs moteurs courant continu [https://store.arduino.cc/arduino-motor-shield-rev3 tel que celui-ci]. Il suffit par la suite de le fixer sur un arduino uno ou mega.<br> | Il existe pour cela des contrôleurs moteurs courant continu [https://store.arduino.cc/arduino-motor-shield-rev3 tel que celui-ci]. Il suffit par la suite de le fixer sur un arduino uno ou mega.<br> | ||
− | Ce shield est basé sur un L298, un contrôleur moteur dont l'architecture | + | Ce shield est basé sur un L298, un contrôleur moteur dont l'architecture repose sur un pont en H contrôlé par un circuit logique OU Exclusif. Bien que le chipset soit assez vieux, sa conception robuste le rend encore d'actualité. |
Il permet de piloter deux moteurs jusqu'à 46V à un courant de 2A par voie. La puissance totale pouvant être dissipée est de l'ordre de 50W. | Il permet de piloter deux moteurs jusqu'à 46V à un courant de 2A par voie. La puissance totale pouvant être dissipée est de l'ordre de 50W. | ||
Ligne 83 : | Ligne 83 : | ||
;Carte basée sur un atmega 2560 à destination d'une imprimante 3D de type RAMPS <br> | ;Carte basée sur un atmega 2560 à destination d'une imprimante 3D de type RAMPS <br> | ||
− | Cela pourrait être Tevo, comme Anet, ou pour citer plus | + | Cela pourrait être Tevo, comme Anet, ou pour citer des plus acteurs plus connus, Ultimaker ou encore Dagoma, il existe beaucoup de points communs entre la carte que je souhaite réaliser et ce type de matériel. |
Tous deux disposent de contrôleurs moteurs, même s'il s'agit de moteurs pas à pas, d'une alimentation continue pouvant être importante et de plusieurs E/S possibles supplémentaires.<br> | Tous deux disposent de contrôleurs moteurs, même s'il s'agit de moteurs pas à pas, d'une alimentation continue pouvant être importante et de plusieurs E/S possibles supplémentaires.<br> | ||
Bien que basée sur un système d'exploitation (nommé [http://marlinfw.org Marlin] pour les différentes cartes opensource), rien n'empêche de programmer ces cartes manuellement.<br><br> | Bien que basée sur un système d'exploitation (nommé [http://marlinfw.org Marlin] pour les différentes cartes opensource), rien n'empêche de programmer ces cartes manuellement.<br><br> | ||
Ligne 92 : | Ligne 92 : | ||
[[Image:Arduino_mega.jpg|200px|thumb|left|Arduino Mega]] | [[Image:Arduino_mega.jpg|200px|thumb|left|Arduino Mega]] | ||
− | Ce shield se fixe sur l'arduino Mega | + | Ce shield se fixe sur l'arduino Mega et contient alors toutes les E/S découplées aux fonctions que proposent le RAMPS. Ce projet étant opensource, il est suffisamment documenté pour s'en servir à ses besoins. Il pourrait donc offrir une solution alternative en ajoutant un module d'alimentation pour gérer la batterie. |
[https://www.reprap-france.com/produit/364-kit-electronique-ramps-1-4 Le coût total de revient est de 110€] pour une solution officielle comprenant également les contrôleurs moteurs.<br> | [https://www.reprap-france.com/produit/364-kit-electronique-ramps-1-4 Le coût total de revient est de 110€] pour une solution officielle comprenant également les contrôleurs moteurs.<br> | ||
Ligne 114 : | Ligne 114 : | ||
===Premier scénario : ''Projet CREP''=== | ===Premier scénario : ''Projet CREP''=== | ||
− | Le projet de Pierre et Thibault est de participer à la Coupe Robotique des Ecoles Primaires (CREP), et de montrer aux enfants ce qu'il est possible de faire à "haut niveau" lorsqu'on souhaite s'amuser avec | + | Le projet de Pierre et Thibault est de participer à la Coupe Robotique des Ecoles Primaires (CREP), et de montrer aux enfants ce qu'il est possible de faire à "haut niveau" lorsqu'on souhaite s'amuser avec des robots.<br> |
Leur sujet repose sur la programmation d'un robot utilisant un microcontrôleur communiquant avec divers capteurs installés sur la piste. <br> | Leur sujet repose sur la programmation d'un robot utilisant un microcontrôleur communiquant avec divers capteurs installés sur la piste. <br> | ||
Ce robot doit se rapprocher du fonctionnement d'un [https://www.lego.com/fr-fr/mindstorms Lego MindStorm] et se base sur le cahier des charges fourni par la CREP aux écoles primaires.<br> | Ce robot doit se rapprocher du fonctionnement d'un [https://www.lego.com/fr-fr/mindstorms Lego MindStorm] et se base sur le cahier des charges fourni par la CREP aux écoles primaires.<br> | ||
− | Ils choisissent d'utiliser une carte contenant | + | Ils choisissent d'utiliser une carte contenant plusieurs E/S et également capable de piloter deux moteurs à courant continu. Cette carte, alimentée par une batterie lipo 6S, s'adapte bien à leur problématique de conception et est programmable en C, un langage qu'ils maîtrisent. <br> |
Ébahis par les possibilités de ce robot et son apparente simplicité, les enfants décident alors tous de s'inscrire à Polytech Lille après leur bac et presque tous de poursuivre leur cursus en IMA. <br> | Ébahis par les possibilités de ce robot et son apparente simplicité, les enfants décident alors tous de s'inscrire à Polytech Lille après leur bac et presque tous de poursuivre leur cursus en IMA. <br> | ||
A chaque difficulté rencontrée, ils se rappelleront avec émotion la merveilleuse journée passée dans cette école qu'ils ont maintenant intégrée et découvriront à leur tour les envers du métier d'ingénieur en Informatique, Micro-électronique et Automatique avec un plaisir sans pareil. | A chaque difficulté rencontrée, ils se rappelleront avec émotion la merveilleuse journée passée dans cette école qu'ils ont maintenant intégrée et découvriront à leur tour les envers du métier d'ingénieur en Informatique, Micro-électronique et Automatique avec un plaisir sans pareil. | ||
Ligne 123 : | Ligne 123 : | ||
===Second scénario : ''Projet Robotech''=== | ===Second scénario : ''Projet Robotech''=== | ||
− | Ça y est, Juliette est décidée. Membre à part entière de Robotech, elle se | + | Ça y est, Juliette est décidée. Membre à part entière de Robotech, elle se lance aujourd'hui dans la programmation d'un robot en vue de participer à une compétition. Mais Polytech Lille a un avantage par rapport aux autres écoles, elle possède une plateforme facile à intégrer et à programmer qui contient déjà tout ce dont elle a besoin : une alimentation par batterie, une connexion sans-fil, deux contrôleurs moteurs et une multitude d'E/S faciles à utiliser car toutes connectées à des headers. <br> |
Elle n'a plus qu'à ajouter les différents capteurs qui lui manquent et éventuellement d'autres contrôleurs. Gagnant un précieux temps, car n'ayant plus besoin de s'inquiéter des contraintes d'intégration, elle peut s'attaquer tout de suite la programmation du robot tout en testant son code au fur à et mesure sur une platine documentée. Sa seule inquiétude est maintenant de finir à la première place de ce concours ! | Elle n'a plus qu'à ajouter les différents capteurs qui lui manquent et éventuellement d'autres contrôleurs. Gagnant un précieux temps, car n'ayant plus besoin de s'inquiéter des contraintes d'intégration, elle peut s'attaquer tout de suite la programmation du robot tout en testant son code au fur à et mesure sur une platine documentée. Sa seule inquiétude est maintenant de finir à la première place de ce concours ! | ||
==Réponse à la question difficile== | ==Réponse à la question difficile== | ||
− | [[Fichier: | + | [[Fichier:Schema_carte_p44.png|350px|thumb|right|Schéma de la carte envisagé]] |
;La démarche vis à vis des contraintes spécifiques à la gestion de courants devrait être précisé. <br> La contrainte de taille apparaît secondaire par rapport aux autres mais comment faire en sorte de l’optimiser. | ;La démarche vis à vis des contraintes spécifiques à la gestion de courants devrait être précisé. <br> La contrainte de taille apparaît secondaire par rapport aux autres mais comment faire en sorte de l’optimiser. | ||
Ligne 140 : | Ligne 140 : | ||
J'expliquerai d'abord quelles sont les contraintes auxquelles les circuits seront soumis au niveau des courants, puis comment ce problème est relié à la taille de la carte et quelles solutions ou attentions sont nécessaires. | J'expliquerai d'abord quelles sont les contraintes auxquelles les circuits seront soumis au niveau des courants, puis comment ce problème est relié à la taille de la carte et quelles solutions ou attentions sont nécessaires. | ||
<br clear=all> | <br clear=all> | ||
− | |||
− | |||
===Les courants=== | ===Les courants=== | ||
Ligne 186 : | Ligne 184 : | ||
==Cahier des charges== | ==Cahier des charges== | ||
+ | |||
+ | Après les différentes informations détaillées précédemment, nous pouvons élaborer le cahier des charges suivant : | ||
+ | *La carte possède 3 fonctions : | ||
+ | **une partie alimentation, cette partie doit pouvoir utiliser une batterie lipo comme source d'alimentation, | ||
+ | **une partie gestion de moteurs qui doit être en mesure de piloter des moteurs à courant continu, | ||
+ | **une partie micro-contrôleur basée sur l'utilisation d'un atmega 2560. | ||
+ | * La carte doit être programmable via USB. | ||
+ | * Elle peut également communiquer via une connexion sans-fil. | ||
+ | * Elle doit respecter posséder les E/S caractéristiques de l'atmega2560. | ||
+ | * Elle doit être d'une taille raisonnable mais être correctement dimensionnée pour ne pas souffrir de problème d'échauffement et de fragilité des pistes. | ||
+ | * Il peut être intéressant de posséder un modèle à intégrer à l'Arduino IDE pour faciliter son intégration. | ||
+ | |||
+ | Ses limites de tensions et de courants devront être documentées (qu'on ne s'en serve pas pour piloter un moteur à courant continu digne d'une grosse usine). | ||
+ | |||
==Choix techniques : matériel et logiciel== | ==Choix techniques : matériel et logiciel== | ||
+ | |||
+ | Pour concevoir la carte, j'ai fait le choix d'utiliser le logiciel Altium, connu et utilisé en cours régulièrement pour diverses projets. | ||
+ | Pour programmer la carte, le logiciel Arduino IDE se prête bien à l'exercice, de par sa flexibilité et ses librairies existantes pour l'atmega2560. | ||
+ | |||
+ | En terme de matériel, une liste non exhaustive peut être établie, mais elle sera bien sûr incomplète.<br> | ||
+ | pour chaque carte, nous avons besoin :<br> | ||
+ | *un atmega2560, | ||
+ | *un atmega16u2 pour s'occuper de la gestion FTDI, | ||
+ | *un esp8266 pour la connexion sans-fil, | ||
+ | |||
+ | |||
+ | *8 MOSFETs pouvant gérer une puissance de 60W minimum (en continu), | ||
+ | *4 photocoupleurs pour piloter 2 à 2 les différents MOSFETs, | ||
+ | *un circuit logique XOR pour exclure les mauvaises utilisations des MOSFETs, | ||
+ | |||
+ | |||
+ | *Un convertisseur 5V 1A en sortie pour alimenter l'ensemble du circuit micro-contrôleur, | ||
+ | *Différentes diodes (de puissances et zener) pour s'assurer du niveau de la batterie. | ||
+ | |||
+ | |||
+ | Le matériel nécessaire pour la fabrication de la carte est une machine capable de concevoir le PCB, un four CMS et un fer à souder.<br> | ||
+ | |||
==Liste des tâches à effectuer== | ==Liste des tâches à effectuer== | ||
+ | |||
+ | do{ | ||
+ | Design de la carte sous altium; | ||
+ | Conception de la carte grâce à la graveuse PCB; | ||
+ | Soudure des composants; | ||
+ | Programmation et tests des fonctions de la carte; | ||
+ | } | ||
+ | while(!(carte fonctionnelle et respectant tout le cahier des charges)) | ||
+ | |||
==Calendrier prévisionnel== | ==Calendrier prévisionnel== | ||
+ | |||
+ | Mois 1 : | ||
+ | *Conception et assemblage du prototype 1 de la carte : | ||
+ | **Chaque circuit construit de façon indépendante (sauf alimentation) | ||
+ | *Test des cartes | ||
+ | |||
+ | Mois 2: | ||
+ | *Conception et assemblage du prototype 2 de la carte : | ||
+ | **Une seule carte contenant tous les circuits | ||
+ | *Test des cartes | ||
+ | |||
+ | Mois 3: | ||
+ | *Elaboration d'une datasheet | ||
+ | *Toujours plus de tests | ||
+ | *Création d'un robot type pour l'exemple ? | ||
=Réalisation du Projet= | =Réalisation du Projet= | ||
Ligne 213 : | Ligne 271 : | ||
==Prologue== | ==Prologue== | ||
− | ==Semaine 1== | + | Ouh là, qu'on se le dise tout de suite, ce projet a l'air simple, cependant, il n'en a pas la chanson ! L'association de deux micro-contrôleurs et d'une partie de puissance tout de même conséquente me pose quelques problèmes de conception de par le nombre de composants : il y en a beaucoup ! Le choix des composants adéquats, le dimensionnement des composants passifs, puis leurs recherches se sont avérés beaucoup plus chronophage que prévu, j'ai malheureusement en conséquence accumulé du retard. En effet, je n'en suis encore qu'aux schematics du projet... Cependant, ce retard n'est pas vain car je crois que le modèle mis en place permettra d'accélérer grandement la soudure des composants et d'assurer à coup sûr leur fonctionnement (notamment en ce qui concerne leurs empreintes, loin d'être standards pour la plupart). |
− | == | + | <br> |
+ | Comme il est difficile pour moi de faire le point semaine par semaine sur l'avancement du projet du fait qu'il y a des semaines où je passe mon temps sur mouser et farnell à faire défiler les composants, je vais faire le point pour cette huitième semaine sur l'état actuel de chacun des modules. | ||
+ | |||
+ | ==Semaine actuelle : 8== | ||
+ | ===Module micro-contrôleur principal : atmega2560=== | ||
+ | [[Fichier:MCU2560_8.png|200px|thumb|left|Avancement actuel du schematic de l'atmega2560]] | ||
+ | <br><br> | ||
+ | Afin de pouvoir garder une certaine souplesse lors de l'utilisation, je souhaitais garder la même disposition que celle d'un Arduino Mega pour les pins et les headers, au détriment peut-être d'un agencement plus laborieux des autres composants. | ||
+ | <br> | ||
+ | Cependant, cela deviendrait une carte avec un module de puissance à laquelle on pourra adjoindre n'importe quel Shield Arduino standard. Ainsi quasiment tout est relié sur cette partie et ne reste que les points un peu laborieux à finaliser : le bouton reset à mettre en place et les pins non connectés par défaut sur l'Arduino Mega. | ||
+ | <br> | ||
+ | '''Avancement de la partie estimé : 85%''' | ||
+ | <br clear=all> | ||
+ | |||
+ | ===Module USB-Série 16U2=== | ||
+ | [[Fichier:FT16U2_8.png|200px|thumb|right|Avancement actuel du schematic de l'atmega16u2]] | ||
+ | <br><br> | ||
+ | Finalement, après hésitation et discussion, nous avons décidé avec Mathieu, membre de Robotech, de garder l'atmega16u2 pour le charme indéniable qu'il possède : il est programmable ! Fort heureusement, sur cette partie, il ne reste plus grand chose à faire : en effet, toute la partie numérique est prête à être lancée. Il ne reste à regarder de plus près que la partie alimentation issue de l'USB en rajoutant une diode, un fusible réarmable et la logique "de puissance" permettant d'éteindre l'alimentation USB lors de la connexion à la batterie. Cette partie est délicate car j'ai encore du mal à visualiser comment faire lors de la conversion du 5V en 3V3 pour alimenter le module wifi par la suite et ressortir le 3V3 sur les ports de notre clone d'Arduino Mega. Cependant, il ne s'agit pas là de la partie la plus compliquée et devrait se résoudre assez rapidement une fois la mise en place des alimentations 5V et 3V3 par batterie. | ||
+ | <br> | ||
+ | '''Avancement de la partie estimé : 95%''' | ||
+ | <br clear=all> | ||
+ | |||
+ | ===Module Wifi ESP8266=== | ||
+ | [[Fichier:ESP8266_8.png|200px|thumb|left|Avancement actuel du schematic de l'ESP8266]] | ||
+ | <br> <br> | ||
+ | Aïe, c'est là que le bât blesse... Il s'agit peut-être de la fonction la plus importante de cette carte et pourtant, j'ai beaucoup de difficulté à la faire avancer ! | ||
+ | Pourquoi n'aie-je pas choisi la solution de facilité et commander directement le module ? Parce que j'aime avoir le choix dans les composants et que d'après la doc technique il ne s'agissait que d'une dizaine de condensateurs et résistances ! Mais quelles résistances, et quels condensateurs ! En effet d'après la doc technique, chaque choix de valeur de composant est "critique" pour un fonctionnement optimal du réseau wifi par la suite. Et chaque composant se basent sur des formules obscures que je cherche encore à comprendre, notamment en ce qui concerne l'antenne. | ||
+ | Je poste la doc technique concernant [https://www.espressif.com/sites/default/files/documentation/esp8266_hardware_design_guidelines_en.pdf le schéma électronique ici], dans un soucis de gain de temps par la suite. | ||
+ | <br> <br> | ||
+ | Comme on peut le voir sur le schematic je souhaite utiliser un système de jumper pour choisir soit de reprogrammer l'esp8266 à partir de l'atmega16u2 en mettant le 2560 en défaut (pull-down sur la broche reset du 2560), ce qui impose d'être à côté de la carte et qu'elle soit accessible dans ce cas précis, ou bien de communiquer avec l'atmega2560 par défaut, en ayant la possibilité de le reprogrammer. J'ai cependant peur qu'il puisse y avoir conflit entre le 16U2 et l'ESP8266 lors de la reprogrammation via wifi et qu'au final il ne se passe rien de bon. A voir dans la pratique. | ||
+ | Il reste également comme pour la partie 16U2 à implanter la tension 3V3 qu'il ne faut en aucun cas dépasser sous peine de griller l'ESP, il faudra donc faire attention lors du routage à bien mettre de côté cette partie du circuit. | ||
+ | <br> | ||
+ | Je n'ai aucune stricte idée de comment réaliser l'antenne proprement, cela se fera sûrement lors du routage et on copiera bêtement ce qui a déjà été fait ailleurs... | ||
+ | <br> | ||
+ | '''Avancement de la partie estimé : 50%''' | ||
+ | <br clear=all> | ||
+ | |||
+ | ===Module contrôleur moteur=== | ||
+ | [[Fichier:ALIM_MOT_8.png|200px|thumb|right|Avancement actuel du schematic Moteur]] | ||
+ | <br> | ||
+ | Il s'agit d'une des partie qui m'a donné le plus de fil à retordre à l'heure actuelle (quasi ex-aequo avec l'ESP8266). En cause, le choix des composants, la prise de décision, le changement de fournisseur (digikey -> '''mouser''';farnell) qui ont changé à quelques reprises en cours de route. | ||
+ | <br> | ||
+ | Pourquoi le même circuit est-il présent deux fois ? Car chacun des contrôleurs moteurs sera alimenté indépendamment. Cela crée plusieurs soucis à priori : augmentation du prix, peut-être instabilité électrique lors d'appels de courant et augmentation de la complexité du circuit. Mais les avantages sont là : je n'ai pas trouvé de convertisseur buck permettant de débiter 10A pour contrôler les deux moteurs qui soit dans des tailles raisonnables et intégrable sur la carte. Mais après tout, si des circuits de carte graphique possèdent plusieurs étages d'alimentation pour le même composant, pourquoi pas cette carte pour deux composants qui ne sont pas liés intrinsèquement ? | ||
+ | <br> | ||
+ | Je m'étais tout d'abord orienté sur des convertisseurs buck ajustables afin de pouvoir proposer plusieurs gammes de tensions de 6V à 12V tout d'abord à l'aide d'un potentiomètre double voies(comme utilisé sur les ampli audio). Mais vu la taille et la spécialité de ces potentiomètres, j'ai choisi après coup un système de jumpers comme pour l'ESP8266 et la reprogrammation(soit 6V, soit 12V). Cependant après calculs théoriques pour le choix des résistances en vu de sélectionner la tension, le choix des condensateurs de puissance et le choix des bobines de lissages des convertisseurs, je me suis rendu compte de l'impossibilité de combiner ces deux tensions. En cause, les différences de design trop importantes en fonction de la tension (au niveau des bobines et des condensateurs). J'ai donc décidé finalement d'abandonner les convertisseurs ajustables et me suis exclusivement orienté sur des convertisseurs 12V de la même famille. Cette partie possède des condensateurs et des bobines spécifiques aux empreintes tout aussi spécifiques, comme pour les borniers de batterie et des moteurs. | ||
+ | <br> | ||
+ | Nous pouvons remarquer l'ajout d'un comparateur (d'ailleurs monté à l'envers sur le schematic) et d'un FET type P afin de bloquer l'alimentation des moteurs quand le niveau des batteries est trop bas (que ce soit pour les batteries 4S ou 5S, cela coupe à environ 3,3V par cellule). Mais aussi d'un porte-fusible automobile ! Il faudra par conséquent utiliser des fusibles auto de 10A ou 12A pour assurer le bon fonctionnement de la carte. L'autre partie de l'AOP servira très certainement à activer ou désactiver l'alimentation USB sur le même fonctionnement. | ||
+ | <br><br> | ||
+ | Quant aux fameux contrôleurs moteurs, ils paraissent assez simple, et bien c'est parce qu'ils le sont, c'est ni plus ni moins que des ponts en H tel que décrit plus haut. Je jetterai tout de même un oeil attentif avant impression sur ces composants, au cas où il faudrait adjoindre plus de composants passifs. | ||
+ | <br> | ||
+ | '''Avancement de la partie estimé : 95%''' | ||
+ | |||
+ | ===Module alimentation=== | ||
+ | |||
+ | Dernière partie et malheureusement, je n'ai pas de schematic à montrer... Je n'ai pas encore eu le temps de le réaliser, néanmoins les composants sont tous sélectionnés et cette dernière partie est prête à démarrer. | ||
+ | La carte possédera en plus 3 autres modules d'alimentations : | ||
+ | * Un 3V3 1A pour alimenter l'ESP8266 et d'autres modules éventuels de type LM2575 buck | ||
+ | * Un 5V 1A pour alimenter le reste des microcontrôleurs et également d'autres modules, également de type LM2575 buck | ||
+ | ** Des condensateurs aluminium, deux bobines de 330uH et deux diodes Schottky seront utilisés pour ces contrôleurs | ||
+ | |||
+ | * Un 3V3 500mA LDO de type TPS73633 qui possède un bon rendement pour ce type de composant (chute de tension visible d'uniquement 75mV et résistance de sortie à 0.25ohm à 400mA) pour fournir du 3V3 à partir de l'USB | ||
+ | ** la liste des composants est encore à établir, mais à priori il n'utilise que 2/3 condensateurs optionnels, ce ne sera donc pas un problème. | ||
+ | <br> | ||
+ | '''Avancement de la partie estimé : 35%''' | ||
+ | <br> | ||
+ | |||
+ | ===Mi-Bilan=== | ||
+ | <br> | ||
+ | L'objectif des prochains jours sera de finir cette partie et bien sûr toutes les autres d'ici la semaine prochaine pour commencer le routage au plus vite et commander les composants. | ||
+ | <br> | ||
+ | D'ailleurs, [https://docs.google.com/spreadsheets/d/1QFI_ML3kTK1s7lASCpETcXS_xkkKhEd2CiUr_aJ2YY0/edit?usp=sharing la liste des composant est à ce titre quasi prête] mais j'ai malgré tout fait le choix de ne la poster qu'une fois qu'elle sera complétée, à tort ou à raison, sûrement à tort, mais il ne manque quasiment rien et permettra dans le même temps de chiffrer le projet. | ||
+ | Bien qu'ayant fait attention à chaque instant aux prix des composants, certains s'avèrent chers (notamment les convertisseurs). Cependant, ces technologies étant amenées à toujours plus évoluer, nous pouvons espérer une baisse des prix dans les prochaines années et rendre le projet abordable pour Robotech lors de la réalisation de ces cartes. | ||
+ | |||
+ | ==Semaine 9== | ||
+ | |||
+ | Il ne reste que la partie ESP8266 et la partie alimentation 5V et 3v3 à compléter, ainsi qu'un peu de logique pour couper les alimentations aux bons niveaux. La liste de matériel est enfin prête, du moins en ce qui concerne les éléments les plus importants (les chipsets et les composants de puissance). | ||
+ | Par conséquent la voici : <br> | ||
+ | '''Liste de matériel''': | ||
+ | * Chipsets et quartz : | ||
+ | ** 1 x atmega2560[https://www.mouser.fr/ProductDetail/Microchip-Technology-Atmel/ATMEGA2560-16AU?qs=sGAEpiMZZMvqv2n3s2xjsVIKSdqlAUq67FxyjUE6IyE%3D] | ||
+ | ** 1 x atmega16u2[https://www.mouser.fr/ProductDetail/Microchip-Technology-Atmel/ATMEGA16U2-AU?qs=sGAEpiMZZMvqv2n3s2xjsYzXfq0AWv1C8bygfvb0PY4%3D] | ||
+ | ** 1 x esp8266[https://www.mouser.fr/ProductDetail/Espressif-Systems/ESP8266EX?qs=sGAEpiMZZMve4%2fbfQkoj%252bGif8WCprhV4ngk1mHM9Xjs%3d] | ||
+ | ** 1 x Mémoire flash 4MB[https://www.mouser.fr/ProductDetail/ON-Semiconductor/LE25U40CMDTWG?qs=sGAEpiMZZMtI%252bQ06EiAoG1iZ16Y%2f6rybiimJgtKUHdU%3d] | ||
+ | ** 2 x Quartz 16MHz[https://www.mouser.fr/ProductDetail/ABRACON/ABM8W-160000MHZ-8-B1U-T3?qs=sGAEpiMZZMsBj6bBr9Q9abMK2mGYOCsJVjACtn61jZ2zXc7WgL7O9Q%3D%3D] | ||
+ | ** 1 x Quartz 40MHz[https://www.mouser.fr/ProductDetail/ABRACON/ABM8W-400000MHZ-4-B1U-T3?qs=%2Fha2pyFaduh9lrBeP97RFT19jxXpYYUhEjrvWfb562Q%3D] | ||
+ | ** 1 x Régulateur buck 5V 1A[https://www.mouser.fr/ProductDetail/Texas-Instruments/LM2575SX-50-NOPB?qs=sGAEpiMZZMvu8NZDyZ4K0eq9Ol60cf60] | ||
+ | ** 1 x Régulateur buck 3V3 1A[https://www.mouser.fr/ProductDetail/Texas-Instruments/LM2575SX-33-NOPB?qs=sGAEpiMZZMtitjHzVIkrqaeIqJaO9bXJtcP%252B%2FyemI2A%3D] | ||
+ | ** 1 x Régulateur LDO 3V3 500ma[https://www.mouser.fr/ProductDetail/Microchip-Technology/TC1263-33VOA?qs=sGAEpiMZZMsGz1a6aV8DcLAtKAxXH4ddZphM1%2Fzm3Q8%3D] | ||
+ | ** 2 x Régulateur 12V 5A[https://www.mouser.fr/ProductDetail/Texas-Instruments/LM2679S-12-NOPB?qs=sGAEpiMZZMtitjHzVIkrqaeIqJaO9bXJBBMm7wwbtkU%3D] | ||
+ | ** 2 x Contrôleur moteurs[https://www.mouser.fr/ProductDetail/Texas-Instruments/DRV8871DDAR?qs=sGAEpiMZZMtKB4wrjsn3lfiMsjpaDHn7iQzpxEt09sg%3D] | ||
+ | ** 2 x AOP Commande[https://www.mouser.fr/ProductDetail/STMicroelectronics/LM358ADT?qs=sGAEpiMZZMtOXy69nW9rMwQxrOq0PlzgqhjtABJmqow%3D] | ||
+ | |||
+ | * Diodes, transistors et autres : | ||
+ | ** 2 x Diodes Schottky 5A 40V[https://www.mouser.fr/ProductDetail/ON-Semiconductor/MBRD640CTT4G?qs=sGAEpiMZZMtQ8nqTKtFS%2FCKUxMvjsmGz4wktUwDCGSU%3D] | ||
+ | ** 2 x Diodes Schottky 1A[https://www.mouser.fr/ProductDetail/ON-Semiconductor/MBRS130LT3G?qs=sGAEpiMZZMtQ8nqTKtFS%2FCKUxMvjsmGz8WwNPDp7quY%3D] | ||
+ | ** 2 x Diodes ESD[https://www.mouser.fr/ProductDetail/Bourns/CG0603MLC-05E?qs=%2Fha2pyFaduj8GWc5RpRwWsoz%252BsBNDfM0b%2FMwO0m8cAS%252B28tb9AwLWQ%3D%3D] | ||
+ | ** 1 x MOSFET P Protection batterie[https://www.mouser.fr/ProductDetail/Infineon-IR/IRLR9343TRPBF?qs=sGAEpiMZZMshyDBzk1%2FWiwjrIxqdxdrRoBrOPT%252BL7iI%3D] | ||
+ | ** 1 x MOSFET 9 Alimentation USB[https://www.mouser.fr/ProductDetail/Diodes-Incorporated/DMG2305UX-7?qs=sGAEpiMZZMshyDBzk1%2FWi%252BzdcdBSapG%252B%252B6LG%2FrJSnXE%3D] | ||
+ | ** 1 x Fusible USB[https://www.mouser.fr/ProductDetail/Bourns/SF-0402FP050F-2?qs=sGAEpiMZZMtxU2g%2F1juGqWJziY9CkRY0d8wlPh37j0JspE0%252bg5nJ5w%3D%3D] | ||
+ | ** 2 x Fusible 10A[https://www.mouser.fr/ProductDetail/Littelfuse/0287010PXCN?qs=sGAEpiMZZMsh2y49K8ANre2oST0CvVKyEVfsdH5LJ1A%3D] | ||
+ | ** 1 x Support Fusible[https://www.mouser.fr/ProductDetail/Keystone-Electronics/3587?qs=sGAEpiMZZMtfCDX1wnHMct4YJiDBrGCEMo%252bny4NPwLg%3D] | ||
+ | ** 3 x Borniers à vis[https://www.mouser.fr/ProductDetail/Amphenol-Anytek/20020327-C021B01LF?qs=sGAEpiMZZMvZTcaMAxB2AKtNaO62vZlilPV5b0dkn5E%3D] | ||
+ | ** 5 x Headers 8-pins[https://www.mouser.fr/ProductDetail/Preci-dip/801-87-008-10-001101?qs=sGAEpiMZZMs%252BGHln7q6pm485q53MaQQ%2FQUNvnteQocg%3D] | ||
+ | ** 1 x Header 10-pins[https://www.mouser.fr/ProductDetail/Gravitech/10Fx1-254mm?qs=sGAEpiMZZMs%252BGHln7q6pm%252B2s%252BkRQbzIZAnEKwiFHnL0%3D] | ||
+ | ** 1 x Header 2x18-pins[https://www.mouser.fr/ProductDetail/Preci-dip/803-87-018-10-001101?qs=sGAEpiMZZMs%252BGHln7q6pm485q53MaQQ%2Fz%252Ba8AiQegaA%3D] | ||
+ | ** 1 x Header 2x4-pins[https://www.mouser.fr/ProductDetail/Preci-dip/803-87-004-10-012101?qs=sGAEpiMZZMs%252BGHln7q6pm485q53MaQQ%2FRssGaoP%2F5y4%3D] | ||
+ | ** 1 x Connecteur micro-USB[https://www.mouser.fr/ProductDetail/Hirose-Connector/ZX62M-B-5P30?qs=sGAEpiMZZMulM8LPOQ%252Byk6r3VmhUEyMLimdKXdfWrrNRRlB4HSh6yw%3D%3D] | ||
+ | |||
+ | * Résistances, condensateurs et bobines : | ||
+ | ** 1 x Résistance 12K 1%[https://www.mouser.fr/ProductDetail/Bourns/CG0603MLC-05E?qs=%2Fha2pyFaduj8GWc5RpRwWsoz%252BsBNDfM0b%2FMwO0m8cAS%252B28tb9AwLWQ%3D%3D] | ||
+ | ** 4 x Condensateurs 16V 100uF[https://www.mouser.fr/ProductDetail/AVX/TPSD107K016R0125?qs=sGAEpiMZZMuEN2agSAc2pqveSFvydLQ7ik6YjlyIzQo%3D] | ||
+ | ** 8 x Condensateurs 35V 10uF[https://www.mouser.fr/ProductDetail/AVX/TPSD106K035R0300?qs=sGAEpiMZZMuEN2agSAc2ppuCqld%2FwCt%252BOApjrPeQd6g%3D] | ||
+ | ** 2 x Condensateurs boost[https://www.mouser.fr/ProductDetail/Murata-Electronics/GCD188R71H103MA01D?qs=sGAEpiMZZMs0AnBnWHyRQAsAWwhBCY7b%252B77FlE32PMN7F%252BRHKRmclw%3D%3D] | ||
+ | ** 2 x Condensateurs 16V 330uF[https://www.mouser.fr/ProductDetail/Panasonic/EEE-FK1C331P?qs=sGAEpiMZZMtZ1n0r9vR22cS6GEbW2ftoFVv4q4nccM4%3D] | ||
+ | ** 2 x Condensateurs 50V 100uF[https://www.mouser.fr/ProductDetail/Panasonic/EEE-1HA101P?qs=sGAEpiMZZMsh%252B1woXyUXj5yjySvXixb0CONJI3EGMEo%3D] | ||
+ | ** 2 x Condensateurs moteurs[https://www.mouser.fr/ProductDetail/KEMET/EDK107M035A9HAA?qs=sGAEpiMZZMvwFf0viD3Y3W%252BPOYTcRClY2B4%252Ba0qgyd0%3D] | ||
+ | ** 1 x Condensateur 3pF[https://www.mouser.fr/ProductDetail/Vishay-Vitramon/VJ0603D3R0VXPAJ?qs=sGAEpiMZZMs0AnBnWHyRQN7%2FAA2D2lPPVBi26rLrBGydzf2K4O2XXQ%3D%3D] | ||
+ | ** 1 x Condensateur 2.4pF[https://www.mouser.fr/ProductDetail/Vishay-Vitramon/VJ0603D2R4VXPAJ?qs=nmF%252BdLtsfhVGItz1vB22Hw%3D%3D] | ||
+ | ** 2 x Bobines 22uH[https://www.mouser.fr/ProductDetail/Pulse-Electronics/P0841SNLT?qs=sGAEpiMZZMs5ceO8zL%252BTxxqZEJDNZmvf] | ||
+ | ** 2 x Bobines 330uH[https://www.mouser.fr/ProductDetail/Sumida/CDRH127-LDNP-331MC?qs=kscY5kd6HYg7UBpkU407iA%3D%3D] | ||
+ | ** 1 x Bobine 2.2nH[https://www.mouser.fr/ProductDetail/Murata-Electronics/LQW15AN2N2G80D?qs=sGAEpiMZZMsg%252By3WlYCkU%2Fi8HWXG0QqMNWB8mPoFwBU%3D] | ||
+ | |||
+ | Toutes les résistances et tous les condensateurs ne sont pas listés, néanmoins il s'agit de composants simples à trouver (du moins je l'espère). | ||
+ | |||
+ | ==Etat actuel du projet== | ||
+ | La carte est entièrement réalisée et est prête à partir en impression. <br> | ||
+ | Les composants ont été reçus et sont prêt à être soudés. <br> | ||
+ | Il est possible de trouver dans la page des documents rendus la liste des datasheets utiilisées pour la conception de la carte ainsi que les fichiers du projet Altium. <br> | ||
+ | Sera contenu dans le dossier altium les schematics, la réalisation du PCB et les fichiers gerbers déjà exportés et prêt à être envoyé au fabricant. <br> | ||
+ | Je ne recommande pas l'utilisation de la graveuse PCB de l'école pour réaliser la carte car cela userait énormément les forets permettant la découpe des pistes. <br> | ||
+ | Je préconise à la place l'utilisation d'un typon et d'une méthode chimique (UV + solvant) pour réaliser la carte soi-même. <br> | ||
+ | Bien que plus longue, je pense que les résultats seront de meilleure qualité et éviteront de gâcher des composants, vu le prix du panier pour réaliser cette carte. <br> | ||
=Documents Rendus= | =Documents Rendus= | ||
+ | |||
+ | [[Fichier:Projet_p44_2018_2019.zip]] | ||
+ | |||
+ | [[Fichier:Rapport_Projet44_2018_2019.pdf]] | ||
+ | |||
+ | [[Fichier:Projet_44_presentation_2018_2019.pdf]] | ||
+ | |||
+ | [[Fichier:Datasheets_Projet44_2018_2019.zip]] | ||
+ | |||
+ | [https://www.espressif.com/sites/default/files/documentation/esp8266_hardware_design_guidelines_en.pdf Datasheet ESP8266 Design guide] |
Version actuelle datée du 9 mai 2019 à 13:15
Sommaire
- 1 Présentation générale
- 2 Analyse du projet
- 3 Préparation du projet
- 4 Réalisation du Projet
- 5 Documents Rendus
Présentation générale
Création d'une platine programmable basée sur un Atmega 2560 à destination de l'association Robotech
Description
Le club Robotech de Polytech Lille conçoit et programme comme leur nom le suggère des robots sous diverses formes (bras, automates, robots sur roue, etc.). Afin de répondre à leurs besoins, une plateforme de programmation basée sur un atmega2560 leur est nécessaire afin de simplifier la commande et l'intégration des robots.
Objectifs
La plateforme possède un cahier des charges stricte, elle peut être alimentée via une batterie 24V (ou équivalent lipo, soit 22,2V ou 26V, c'est-à-dire une batterie 6S ou 7S), elle est programmable par USB, elle possède à minima deux contrôleurs moteurs à courant continu et une connexion sans fil afin de la reprogrammer et de communiquer, elle possède également les entrées/sorties inhérentes à ce microcontrôleur.
Une documentation doit accompagner la carte quant à ses limites en termes de tensions et de puissances admissibles.
Elle doit être fabriquée entièrement à partir de composants CMS.
Bien qu'aucune limite de taille n'ait été prononcée, elle doit bien évidemment rester dans un format suffisamment compact pour être embarquée.
Fonctions
La carte regroupant différentes fonctions, nous devrons gérer efficacement les différents étages d'alimentations, ainsi que faire attention à la consommation générale pour garantir une autonomie correcte. Nous utiliserons donc différents chipsets et composants passifs importants:
- bien évidemment, un microcontrôleur Atmega 2560,
- un module de type ESP82XX pour la partie sans-fil,
- un module FTDI pour la connexion USB,
- différents transistors FET pour le contrôle des moteurs
- OU
- un contrôleur moteur courant continu de type L298 ou équivalent,
- quelques circuits logiques pour gérer les interruptions d'alimentation et éviter les conflits,
- quelques DELs de contrôles (alimentation, émission/réception de données, etc.),
- (conflits du type plusieurs sorties voulant piloter une unique entrée ou retour d'alimentation)
- plusieurs régulateurs de tensions dont :
- des régulateurs de 5V supportant 1A (ou plus) en sortie pour alimenter le microcontrôleur,
- un régulateur de tension 24V (ou tension proche) en sortie pour les moteurs,
- éventuellement un ou plusieurs régulateurs 3V3 pour les différents modules comme le FTDI, ou le module sans-fil,
Ces derniers n'interviendront que si les modules nécessitent une alimentation plus faible.
Dans ce cas, il peut être intéressant d'alimenter l'ensemble du système de contrôle à cette tension.
Ces régulateurs devront accepter une grande plage de tensions,
idéalement allant de 10V à 30V, en cas d'utilisation sur une alimentation de laboratoire lors de tests.
Contraintes
Comme la carte peut se programmer via USB, une attention toute particulière doit être porter quant à l'alimentation de celle-ci.
En effet, il faut éviter toute surtension lors du branchement à l'ordinateur en désactivant l'alimentation de la batterie si jamais celle-ci est connectée.
De plus, les pistes doivent être bien dimensionnées afin d'éviter la surchauffe des pistes et, par conséquent, celle de la carte.
Ce matériel étant amené à piloter des puissances relativement importantes (jusqu'à 50W par moteur), il est également judicieux de faire attention à sa température et aux effets joules présents.
Également, il faudra faire attention aux tensions d'alimentations, aux courants et leurs sens, et les niveaux d'alimentations pour abîmer ni la batterie ni la carte. Pour cela, un ensemble de diodes judicieusement choisies sera connecté à chacune des fonctions. Par exemple, des diodes zener en série sur la batterie pour s'assurer d'avoir une tension minimale et/ou ajouter également un circuit logique désactivant la carte si l'alimentation est trop basse.
Les E/S (entrées/sorties) doivent également être facilement accessibles. Ainsi, pour connecter les moteurs, j'ai décidé d'utiliser des borniers à vis, cela permettant de connecter et déconnecter à volonté et facilement les moteurs. Pour l'alimentation, il peut être judicieux d'adapter directement une connexion XT(30 par exemple) pour brancher directement dans un format standard des batteries lipo. Ce point pourra être revu avec Robotech et les encadrants. Pour le reste des E/S, des headers seront utilisés.
Analyse du projet
Positionnement par rapport à l'existant
Cette carte n'a en soit rien de nouveau. En effet il existe déjà quelques cartes de ce type, par exemple à destination des imprimantes 3D, ou encore différents modules (shield) Arduino qu'il suffit alors d'empiler les uns sur les autres.
Pour l'analyse des concurrents, j'utiliserai donc ces deux exemples.
Cependant, il existe un réel avantage à ce que Polytech Lille possède sa propre carte de développement. Il sera possible :
- d'améliorer la carte au gré des besoins des différents étudiants et du club Robotech,
- de fournir une base d'étude solide pour différents modules d'enseignements (microprocesseur, temps réel, systèmes, etc, conception de circuit électronique, parmi d'autres),
- de la réaliser à l'école, offrant l'occasion d'améliorer ses compétences pratiques pour l'utilisation des machines spécifiques à ce type de projets tels que les fers à souder, les fours CMS et les appareils de gravure PCB.
- et ainsi d'être répliquée "à l'infini".
Et c'est quand même plus fun et plus sympa de réaliser ce genre de carte de A à Z plutôt que de jouer aux Lego ou de commander une carte entière qui ne sera pas forcément adaptée à tous nos besoins.
Analyse du premier concurrent
- Shield arduino basé sur un L298
Une première solution pour réaliser ce projet relève bien un peu du bricolage. Il est possible de commander chacune des pièces qui seraient nécessaire au projet.
Il existe pour cela des contrôleurs moteurs courant continu tel que celui-ci. Il suffit par la suite de le fixer sur un arduino uno ou mega.
Ce shield est basé sur un L298, un contrôleur moteur dont l'architecture repose sur un pont en H contrôlé par un circuit logique OU Exclusif. Bien que le chipset soit assez vieux, sa conception robuste le rend encore d'actualité.
Il permet de piloter deux moteurs jusqu'à 46V à un courant de 2A par voie. La puissance totale pouvant être dissipée est de l'ordre de 50W.
Ce sera d'ailleurs probablement l'un des contrôleur adopté sur la carte.
Cependant, comme le circuit est assez simple à mettre en oeuvre, il peut être intéressant à la place de construire un pont en H utilisant des transistors FET doté d'un circuit logique équivalent.
Cela permettrait d'utiliser des transistors supportant une plus grande puissance ou possédant un meilleur rendement.
Analyse du second concurrent
- Carte basée sur un atmega 2560 à destination d'une imprimante 3D de type RAMPS
Cela pourrait être Tevo, comme Anet, ou pour citer des plus acteurs plus connus, Ultimaker ou encore Dagoma, il existe beaucoup de points communs entre la carte que je souhaite réaliser et ce type de matériel.
Tous deux disposent de contrôleurs moteurs, même s'il s'agit de moteurs pas à pas, d'une alimentation continue pouvant être importante et de plusieurs E/S possibles supplémentaires.
Bien que basée sur un système d'exploitation (nommé Marlin pour les différentes cartes opensource), rien n'empêche de programmer ces cartes manuellement.
Il existe deux grandes versions :
- Une carte Arduino Mega couplée à un shield RAMPS :
Ce shield se fixe sur l'arduino Mega et contient alors toutes les E/S découplées aux fonctions que proposent le RAMPS. Ce projet étant opensource, il est suffisamment documenté pour s'en servir à ses besoins. Il pourrait donc offrir une solution alternative en ajoutant un module d'alimentation pour gérer la batterie.
Le coût total de revient est de 110€ pour une solution officielle comprenant également les contrôleurs moteurs.
Plutôt cher pour une solution qui ne répond pas complètement à nos besoins, et qui est vraiment un "second" choix.
- Une carte basée sur un Atmega 2560 de type MKS :
Cette carte reprend les fonctionnalités du couple précédent, à la différence que celui-ci est intégré sur une seule carte.
Également opensource, le prix est souvent plus faible du fait de l'intégration de tous les composants, empêchant alors toute modification si jamais une fausse manipulation est opérée dessus.
A un tarif d'environ 40€, cette carte est plus accessible, mais comme la précédente ne répond pas tout à fait aux besoins du projet actuel.
Scénario d'usage du produit ou du concept envisagé
Premier scénario : Projet CREP
Le projet de Pierre et Thibault est de participer à la Coupe Robotique des Ecoles Primaires (CREP), et de montrer aux enfants ce qu'il est possible de faire à "haut niveau" lorsqu'on souhaite s'amuser avec des robots.
Leur sujet repose sur la programmation d'un robot utilisant un microcontrôleur communiquant avec divers capteurs installés sur la piste.
Ce robot doit se rapprocher du fonctionnement d'un Lego MindStorm et se base sur le cahier des charges fourni par la CREP aux écoles primaires.
Ils choisissent d'utiliser une carte contenant plusieurs E/S et également capable de piloter deux moteurs à courant continu. Cette carte, alimentée par une batterie lipo 6S, s'adapte bien à leur problématique de conception et est programmable en C, un langage qu'ils maîtrisent.
Ébahis par les possibilités de ce robot et son apparente simplicité, les enfants décident alors tous de s'inscrire à Polytech Lille après leur bac et presque tous de poursuivre leur cursus en IMA.
A chaque difficulté rencontrée, ils se rappelleront avec émotion la merveilleuse journée passée dans cette école qu'ils ont maintenant intégrée et découvriront à leur tour les envers du métier d'ingénieur en Informatique, Micro-électronique et Automatique avec un plaisir sans pareil.
Second scénario : Projet Robotech
Ça y est, Juliette est décidée. Membre à part entière de Robotech, elle se lance aujourd'hui dans la programmation d'un robot en vue de participer à une compétition. Mais Polytech Lille a un avantage par rapport aux autres écoles, elle possède une plateforme facile à intégrer et à programmer qui contient déjà tout ce dont elle a besoin : une alimentation par batterie, une connexion sans-fil, deux contrôleurs moteurs et une multitude d'E/S faciles à utiliser car toutes connectées à des headers.
Elle n'a plus qu'à ajouter les différents capteurs qui lui manquent et éventuellement d'autres contrôleurs. Gagnant un précieux temps, car n'ayant plus besoin de s'inquiéter des contraintes d'intégration, elle peut s'attaquer tout de suite la programmation du robot tout en testant son code au fur à et mesure sur une platine documentée. Sa seule inquiétude est maintenant de finir à la première place de ce concours !
Réponse à la question difficile
- La démarche vis à vis des contraintes spécifiques à la gestion de courants devrait être précisé.
La contrainte de taille apparaît secondaire par rapport aux autres mais comment faire en sorte de l’optimiser.
Ces deux questions se rejoignent, on pourrait se poser alors la question suivante : Quels compromis faut-il mettre en oeuvre pour ne pas avoir de contraintes de courants, tout en gardant une taille de carte raisonnable ?
La carte possédera en soit plusieurs "circuits" distincts. Ils sont au nombre de 3 :
- le circuit d'alimentation de la carte,
- le circuit micro-contrôleur,
- le circuit de gestion et d'alimentation des moteurs.
J'expliquerai d'abord quelles sont les contraintes auxquelles les circuits seront soumis au niveau des courants, puis comment ce problème est relié à la taille de la carte et quelles solutions ou attentions sont nécessaires.
Les courants
Nous analyserons les trois circuits présents et décrierons les contraintes de courants appliquées à chacun des circuits. Nous détaillerons dans la prochaine partie sur la taille de la carte les réponses aux différentes contraintes.
- Le circuit d'alimentation
Il s'agit de la partie qui sera amenée à piloter les plus grands courants et les plus grandes tensions. En conséquence, c'est ici que les effets joules seront les plus importants. Les moteurs seront amenés à utiliser des courants de 2A à 4A à une tension de 25V environ, ce qui nous amène parfois jusqu'à 100W en continu : il faudra donc que le circuit puisse transporter cette puissance et résister le moins possible à son passage. Cette partie devra être analysée attentivement afin d'éviter tout problème, et devra être légèrement surdimensionnée. De plus l'insertion d'un fusible me semble crucial pour garantir une certaine sécurité
- Le circuit micro-contrôleur
La consommation en courant du micro-contrôleur ne dépassera normalement pas la limite des 1 ampère, une attention toute particulière sera apportée à isoler correctement cette partie de la carte, étant la partie la plus fragile.
Deux pistes devront être taillées afin de pouvoir supporter cette charge de courant : l'alimentation VCC et la masse GND. Par la suite, le reste du circuit possédera uniquement des E/S et les connexions aux différentes fonctions du micro-contrôleur, soit le FTDI, l'horloge et la connexion sans-fil. Ces parties ne nécessitent pas de précautions particulières quant à leur courant, sauf leur alimentation éventuelle, bien entendu.
Comme dit précédemment, le point important est d'éviter tout retour de courant dans le port USB afin d'éviter un problème si la carte est connectée à l'ordinateur en même temps que la batterie est branchée sur la carte. Cette situation sera nécessaire pour tester la mise en fonction des moteurs.
- Le circuit de gestion des moteurs
Comme pour le circuit d'alimentation, celui-ci sera amené également à piloter de forts courants et de fortes puissances, environ 50W par piste de contrôle de moteur. Ainsi tout comme l'alimentation, il est nécessaire de prêter attention aux dimensionnements des différents éléments.
Comme cette partie est amenée à communiquer avec le circuit micro-contrôleur, il peut être intéressant de proposer une isolation avec ce dernier. Si un problème se présente sur ce circuit, cela n'impactera pas le micro-contrôleur et seul le composant incriminé pourra être changé. Je pense par exemple à l'utilisation de photocoupleur.
Taille de la carte
Maintenant que nous connaissons les différentes contraintes de la carte, nous pouvons voir les précautions à prendre et les solutions possibles pour les différents circuits.
- Le circuit d'alimentation
Bien qu'il s'agisse d'un point crucial de la carte, ce n'est pas le circuit nécessitant le plus de place. Dans cet optique, les pistes pourront être larges et courtes. Il sera également nécessaire de faire attention à laisser suffisamment de place entre les pistes pour éviter tout problème de court-circuit, Ainsi du côté proche du circuit micro-contrôleur, nous trouverons le circuit de conversion et d'alimentation de ce dernier, en bas nous trouverons la partie permettant l'alimentation des moteurs. Ainsi de larges pistes pourront être acheminées jusqu'à celui-ci.
- Le circuit micro-contrôleur
A l'inverse du précédent circuit, ce sera le plus volumineux. En cause, le nombre de fonctions et le nombre de connexions à établir sera largement supérieur, ainsi la quasi-totalité de ce circuit sera occupé par les pistes entre les différentes fonctions. Fort heureusement, comme elles sont destinées à la communication, elle pourront être bien plus fines que pour les autres circuits. L'élément important sera donc la gestion des voies d'alimentations, qui seront légèrement plus importante que pour les autres pistes.
- Le circuit de gestion des moteurs
Deuxième circuit de puissance, les pistes devront également être légèrement surdimensionnées pour qu'aucun effet joule intervienne. De plus ce sera également ce circuit qui déterminera la taille de la carte : comme il est souhaitable d'avoir deux ponts en H pour contrôler les moteurs, les transistors FET occuperont la majeure partie de la place disponible. Comme ce sont des éléments actifs, il faudra également veiller à leur refroidissement. Ils devront être par conséquent dans la mesure du possible alignés, même si ce sont des éléments possédant un excellent rendement. Ils devront être suffisamment éloignés les uns des autres pour éviter l'augmentation de la chaleur de chacun des composants.
- En conclusion
Finalement, la taille de la carte sera déterminée majoritairement par le circuit du micro-contrôleur et le circuit de gestion des moteurs, nous pouvons donc imaginer que nous nous retrouverons avec une carte correspondant environ à 2 Arduino MEGA mis côte à côte, donc d'un carré de 12cm par 12cm environ. Il s'agit en tout cas d'une taille limite que nous pouvons raisonnablement nous fixer et même essayer de réduire au maximum par la suite.
Préparation du projet
Cahier des charges
Après les différentes informations détaillées précédemment, nous pouvons élaborer le cahier des charges suivant :
- La carte possède 3 fonctions :
- une partie alimentation, cette partie doit pouvoir utiliser une batterie lipo comme source d'alimentation,
- une partie gestion de moteurs qui doit être en mesure de piloter des moteurs à courant continu,
- une partie micro-contrôleur basée sur l'utilisation d'un atmega 2560.
- La carte doit être programmable via USB.
- Elle peut également communiquer via une connexion sans-fil.
- Elle doit respecter posséder les E/S caractéristiques de l'atmega2560.
- Elle doit être d'une taille raisonnable mais être correctement dimensionnée pour ne pas souffrir de problème d'échauffement et de fragilité des pistes.
- Il peut être intéressant de posséder un modèle à intégrer à l'Arduino IDE pour faciliter son intégration.
Ses limites de tensions et de courants devront être documentées (qu'on ne s'en serve pas pour piloter un moteur à courant continu digne d'une grosse usine).
Choix techniques : matériel et logiciel
Pour concevoir la carte, j'ai fait le choix d'utiliser le logiciel Altium, connu et utilisé en cours régulièrement pour diverses projets. Pour programmer la carte, le logiciel Arduino IDE se prête bien à l'exercice, de par sa flexibilité et ses librairies existantes pour l'atmega2560.
En terme de matériel, une liste non exhaustive peut être établie, mais elle sera bien sûr incomplète.
pour chaque carte, nous avons besoin :
- un atmega2560,
- un atmega16u2 pour s'occuper de la gestion FTDI,
- un esp8266 pour la connexion sans-fil,
- 8 MOSFETs pouvant gérer une puissance de 60W minimum (en continu),
- 4 photocoupleurs pour piloter 2 à 2 les différents MOSFETs,
- un circuit logique XOR pour exclure les mauvaises utilisations des MOSFETs,
- Un convertisseur 5V 1A en sortie pour alimenter l'ensemble du circuit micro-contrôleur,
- Différentes diodes (de puissances et zener) pour s'assurer du niveau de la batterie.
Le matériel nécessaire pour la fabrication de la carte est une machine capable de concevoir le PCB, un four CMS et un fer à souder.
Liste des tâches à effectuer
do{ Design de la carte sous altium; Conception de la carte grâce à la graveuse PCB; Soudure des composants; Programmation et tests des fonctions de la carte; } while(!(carte fonctionnelle et respectant tout le cahier des charges))
Calendrier prévisionnel
Mois 1 :
- Conception et assemblage du prototype 1 de la carte :
- Chaque circuit construit de façon indépendante (sauf alimentation)
- Test des cartes
Mois 2:
- Conception et assemblage du prototype 2 de la carte :
- Une seule carte contenant tous les circuits
- Test des cartes
Mois 3:
- Elaboration d'une datasheet
- Toujours plus de tests
- Création d'un robot type pour l'exemple ?
Réalisation du Projet
Feuille d'heures
Tâche | Prélude | Heures S1 | Heures S2 | Heures S3 | Heures S4 | Heures S5 | Heures S6 | Heures S7 | Heures S8 | Heures S9 | Heures S10 | Total |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Analyse du projet | 0 |
Prologue
Ouh là, qu'on se le dise tout de suite, ce projet a l'air simple, cependant, il n'en a pas la chanson ! L'association de deux micro-contrôleurs et d'une partie de puissance tout de même conséquente me pose quelques problèmes de conception de par le nombre de composants : il y en a beaucoup ! Le choix des composants adéquats, le dimensionnement des composants passifs, puis leurs recherches se sont avérés beaucoup plus chronophage que prévu, j'ai malheureusement en conséquence accumulé du retard. En effet, je n'en suis encore qu'aux schematics du projet... Cependant, ce retard n'est pas vain car je crois que le modèle mis en place permettra d'accélérer grandement la soudure des composants et d'assurer à coup sûr leur fonctionnement (notamment en ce qui concerne leurs empreintes, loin d'être standards pour la plupart).
Comme il est difficile pour moi de faire le point semaine par semaine sur l'avancement du projet du fait qu'il y a des semaines où je passe mon temps sur mouser et farnell à faire défiler les composants, je vais faire le point pour cette huitième semaine sur l'état actuel de chacun des modules.
Semaine actuelle : 8
Module micro-contrôleur principal : atmega2560
Afin de pouvoir garder une certaine souplesse lors de l'utilisation, je souhaitais garder la même disposition que celle d'un Arduino Mega pour les pins et les headers, au détriment peut-être d'un agencement plus laborieux des autres composants.
Cependant, cela deviendrait une carte avec un module de puissance à laquelle on pourra adjoindre n'importe quel Shield Arduino standard. Ainsi quasiment tout est relié sur cette partie et ne reste que les points un peu laborieux à finaliser : le bouton reset à mettre en place et les pins non connectés par défaut sur l'Arduino Mega.
Avancement de la partie estimé : 85%
Module USB-Série 16U2
Finalement, après hésitation et discussion, nous avons décidé avec Mathieu, membre de Robotech, de garder l'atmega16u2 pour le charme indéniable qu'il possède : il est programmable ! Fort heureusement, sur cette partie, il ne reste plus grand chose à faire : en effet, toute la partie numérique est prête à être lancée. Il ne reste à regarder de plus près que la partie alimentation issue de l'USB en rajoutant une diode, un fusible réarmable et la logique "de puissance" permettant d'éteindre l'alimentation USB lors de la connexion à la batterie. Cette partie est délicate car j'ai encore du mal à visualiser comment faire lors de la conversion du 5V en 3V3 pour alimenter le module wifi par la suite et ressortir le 3V3 sur les ports de notre clone d'Arduino Mega. Cependant, il ne s'agit pas là de la partie la plus compliquée et devrait se résoudre assez rapidement une fois la mise en place des alimentations 5V et 3V3 par batterie.
Avancement de la partie estimé : 95%
Module Wifi ESP8266
Aïe, c'est là que le bât blesse... Il s'agit peut-être de la fonction la plus importante de cette carte et pourtant, j'ai beaucoup de difficulté à la faire avancer !
Pourquoi n'aie-je pas choisi la solution de facilité et commander directement le module ? Parce que j'aime avoir le choix dans les composants et que d'après la doc technique il ne s'agissait que d'une dizaine de condensateurs et résistances ! Mais quelles résistances, et quels condensateurs ! En effet d'après la doc technique, chaque choix de valeur de composant est "critique" pour un fonctionnement optimal du réseau wifi par la suite. Et chaque composant se basent sur des formules obscures que je cherche encore à comprendre, notamment en ce qui concerne l'antenne.
Je poste la doc technique concernant le schéma électronique ici, dans un soucis de gain de temps par la suite.
Comme on peut le voir sur le schematic je souhaite utiliser un système de jumper pour choisir soit de reprogrammer l'esp8266 à partir de l'atmega16u2 en mettant le 2560 en défaut (pull-down sur la broche reset du 2560), ce qui impose d'être à côté de la carte et qu'elle soit accessible dans ce cas précis, ou bien de communiquer avec l'atmega2560 par défaut, en ayant la possibilité de le reprogrammer. J'ai cependant peur qu'il puisse y avoir conflit entre le 16U2 et l'ESP8266 lors de la reprogrammation via wifi et qu'au final il ne se passe rien de bon. A voir dans la pratique.
Il reste également comme pour la partie 16U2 à implanter la tension 3V3 qu'il ne faut en aucun cas dépasser sous peine de griller l'ESP, il faudra donc faire attention lors du routage à bien mettre de côté cette partie du circuit.
Je n'ai aucune stricte idée de comment réaliser l'antenne proprement, cela se fera sûrement lors du routage et on copiera bêtement ce qui a déjà été fait ailleurs...
Avancement de la partie estimé : 50%
Module contrôleur moteur
Il s'agit d'une des partie qui m'a donné le plus de fil à retordre à l'heure actuelle (quasi ex-aequo avec l'ESP8266). En cause, le choix des composants, la prise de décision, le changement de fournisseur (digikey -> mouser;farnell) qui ont changé à quelques reprises en cours de route.
Pourquoi le même circuit est-il présent deux fois ? Car chacun des contrôleurs moteurs sera alimenté indépendamment. Cela crée plusieurs soucis à priori : augmentation du prix, peut-être instabilité électrique lors d'appels de courant et augmentation de la complexité du circuit. Mais les avantages sont là : je n'ai pas trouvé de convertisseur buck permettant de débiter 10A pour contrôler les deux moteurs qui soit dans des tailles raisonnables et intégrable sur la carte. Mais après tout, si des circuits de carte graphique possèdent plusieurs étages d'alimentation pour le même composant, pourquoi pas cette carte pour deux composants qui ne sont pas liés intrinsèquement ?
Je m'étais tout d'abord orienté sur des convertisseurs buck ajustables afin de pouvoir proposer plusieurs gammes de tensions de 6V à 12V tout d'abord à l'aide d'un potentiomètre double voies(comme utilisé sur les ampli audio). Mais vu la taille et la spécialité de ces potentiomètres, j'ai choisi après coup un système de jumpers comme pour l'ESP8266 et la reprogrammation(soit 6V, soit 12V). Cependant après calculs théoriques pour le choix des résistances en vu de sélectionner la tension, le choix des condensateurs de puissance et le choix des bobines de lissages des convertisseurs, je me suis rendu compte de l'impossibilité de combiner ces deux tensions. En cause, les différences de design trop importantes en fonction de la tension (au niveau des bobines et des condensateurs). J'ai donc décidé finalement d'abandonner les convertisseurs ajustables et me suis exclusivement orienté sur des convertisseurs 12V de la même famille. Cette partie possède des condensateurs et des bobines spécifiques aux empreintes tout aussi spécifiques, comme pour les borniers de batterie et des moteurs.
Nous pouvons remarquer l'ajout d'un comparateur (d'ailleurs monté à l'envers sur le schematic) et d'un FET type P afin de bloquer l'alimentation des moteurs quand le niveau des batteries est trop bas (que ce soit pour les batteries 4S ou 5S, cela coupe à environ 3,3V par cellule). Mais aussi d'un porte-fusible automobile ! Il faudra par conséquent utiliser des fusibles auto de 10A ou 12A pour assurer le bon fonctionnement de la carte. L'autre partie de l'AOP servira très certainement à activer ou désactiver l'alimentation USB sur le même fonctionnement.
Quant aux fameux contrôleurs moteurs, ils paraissent assez simple, et bien c'est parce qu'ils le sont, c'est ni plus ni moins que des ponts en H tel que décrit plus haut. Je jetterai tout de même un oeil attentif avant impression sur ces composants, au cas où il faudrait adjoindre plus de composants passifs.
Avancement de la partie estimé : 95%
Module alimentation
Dernière partie et malheureusement, je n'ai pas de schematic à montrer... Je n'ai pas encore eu le temps de le réaliser, néanmoins les composants sont tous sélectionnés et cette dernière partie est prête à démarrer. La carte possédera en plus 3 autres modules d'alimentations :
- Un 3V3 1A pour alimenter l'ESP8266 et d'autres modules éventuels de type LM2575 buck
- Un 5V 1A pour alimenter le reste des microcontrôleurs et également d'autres modules, également de type LM2575 buck
- Des condensateurs aluminium, deux bobines de 330uH et deux diodes Schottky seront utilisés pour ces contrôleurs
- Un 3V3 500mA LDO de type TPS73633 qui possède un bon rendement pour ce type de composant (chute de tension visible d'uniquement 75mV et résistance de sortie à 0.25ohm à 400mA) pour fournir du 3V3 à partir de l'USB
- la liste des composants est encore à établir, mais à priori il n'utilise que 2/3 condensateurs optionnels, ce ne sera donc pas un problème.
Avancement de la partie estimé : 35%
Mi-Bilan
L'objectif des prochains jours sera de finir cette partie et bien sûr toutes les autres d'ici la semaine prochaine pour commencer le routage au plus vite et commander les composants.
D'ailleurs, la liste des composant est à ce titre quasi prête mais j'ai malgré tout fait le choix de ne la poster qu'une fois qu'elle sera complétée, à tort ou à raison, sûrement à tort, mais il ne manque quasiment rien et permettra dans le même temps de chiffrer le projet.
Bien qu'ayant fait attention à chaque instant aux prix des composants, certains s'avèrent chers (notamment les convertisseurs). Cependant, ces technologies étant amenées à toujours plus évoluer, nous pouvons espérer une baisse des prix dans les prochaines années et rendre le projet abordable pour Robotech lors de la réalisation de ces cartes.
Semaine 9
Il ne reste que la partie ESP8266 et la partie alimentation 5V et 3v3 à compléter, ainsi qu'un peu de logique pour couper les alimentations aux bons niveaux. La liste de matériel est enfin prête, du moins en ce qui concerne les éléments les plus importants (les chipsets et les composants de puissance).
Par conséquent la voici :
Liste de matériel:
- Chipsets et quartz :
- Diodes, transistors et autres :
- 2 x Diodes Schottky 5A 40V[13]
- 2 x Diodes Schottky 1A[14]
- 2 x Diodes ESD[15]
- 1 x MOSFET P Protection batterie[16]
- 1 x MOSFET 9 Alimentation USB[17]
- 1 x Fusible USB[18]
- 2 x Fusible 10A[19]
- 1 x Support Fusible[20]
- 3 x Borniers à vis[21]
- 5 x Headers 8-pins[22]
- 1 x Header 10-pins[23]
- 1 x Header 2x18-pins[24]
- 1 x Header 2x4-pins[25]
- 1 x Connecteur micro-USB[26]
- Résistances, condensateurs et bobines :
- 1 x Résistance 12K 1%[27]
- 4 x Condensateurs 16V 100uF[28]
- 8 x Condensateurs 35V 10uF[29]
- 2 x Condensateurs boost[30]
- 2 x Condensateurs 16V 330uF[31]
- 2 x Condensateurs 50V 100uF[32]
- 2 x Condensateurs moteurs[33]
- 1 x Condensateur 3pF[34]
- 1 x Condensateur 2.4pF[35]
- 2 x Bobines 22uH[36]
- 2 x Bobines 330uH[37]
- 1 x Bobine 2.2nH[38]
Toutes les résistances et tous les condensateurs ne sont pas listés, néanmoins il s'agit de composants simples à trouver (du moins je l'espère).
Etat actuel du projet
La carte est entièrement réalisée et est prête à partir en impression.
Les composants ont été reçus et sont prêt à être soudés.
Il est possible de trouver dans la page des documents rendus la liste des datasheets utiilisées pour la conception de la carte ainsi que les fichiers du projet Altium.
Sera contenu dans le dossier altium les schematics, la réalisation du PCB et les fichiers gerbers déjà exportés et prêt à être envoyé au fabricant.
Je ne recommande pas l'utilisation de la graveuse PCB de l'école pour réaliser la carte car cela userait énormément les forets permettant la découpe des pistes.
Je préconise à la place l'utilisation d'un typon et d'une méthode chimique (UV + solvant) pour réaliser la carte soi-même.
Bien que plus longue, je pense que les résultats seront de meilleure qualité et éviteront de gâcher des composants, vu le prix du panier pour réaliser cette carte.
Documents Rendus
Fichier:Projet p44 2018 2019.zip
Fichier:Rapport Projet44 2018 2019.pdf
Fichier:Projet 44 presentation 2018 2019.pdf