IMA4 2018/2019 P44

De Wiki de Projets IMA
Révision datée du 14 janvier 2019 à 12:37 par Tmoinat (discussion | contributions) (Choix techniques : matériel et logiciel)


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 :

Shield RAMPS v1.4 destiné à l'Arduino Mega
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.

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.


MKS Base 1.0

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

Schéma de la carte envisagé
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

Semaine 1

Semaine 2

Documents Rendus