« Articles/Nathael/Domotab et elec Libre partie3 » : différence entre les versions
(Page créée avec « {{DISPLAYTITLE:Électronique et domotique libre - partie 3 : Routage - du schéma au PCB}} <div style="float:left; margin-right: 2.5em;">__TOC__</div> Image:DomoTab.png... ») |
|||
(2 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 133 : | Ligne 133 : | ||
Lorsque vous commencez à dépiler les modules, cela ressemble assez vite à une immense toile d'araignée, mais en faisant un peu attention on peut limiter cet effet en groupant les éléments qui doivent être connectés ensemble. KiCad nous aide lorsque l'on sélectionne un module pour le déplacer en n'affichant que les connexions du module en cours de déplacement, ce qui permet de le placer proche des autres modules auxquels il devra être connecté. Vous remarquerez que pour certains composants, les indications changent au cours du déplacement. C'est normal car KiCad nous indique la connexion la plus courte, et certains composants comme les condensateurs de découplage peuvent être reliés à de nombreux endroits. Il est donc important d'avoir le schéma à disposition pour rester cohérent et placer les bons condensateurs au bon endroit. D'ailleurs, lors de la sélection d'un composant sous Pcbnew, Eeschema change sa vue pour nous montrer le composant, avec une petite croix dessus, ce qui est bien pratique. | Lorsque vous commencez à dépiler les modules, cela ressemble assez vite à une immense toile d'araignée, mais en faisant un peu attention on peut limiter cet effet en groupant les éléments qui doivent être connectés ensemble. KiCad nous aide lorsque l'on sélectionne un module pour le déplacer en n'affichant que les connexions du module en cours de déplacement, ce qui permet de le placer proche des autres modules auxquels il devra être connecté. Vous remarquerez que pour certains composants, les indications changent au cours du déplacement. C'est normal car KiCad nous indique la connexion la plus courte, et certains composants comme les condensateurs de découplage peuvent être reliés à de nombreux endroits. Il est donc important d'avoir le schéma à disposition pour rester cohérent et placer les bons condensateurs au bon endroit. D'ailleurs, lors de la sélection d'un composant sous Pcbnew, Eeschema change sa vue pour nous montrer le composant, avec une petite croix dessus, ce qui est bien pratique. | ||
Vous devriez rapidement obtenir quelque chose de ressemblant à la figure | Vous devriez rapidement obtenir quelque chose de ressemblant à la figure de gauche. | ||
<div style="clear:both"> </div> | |||
=== Placement === | === Placement === | ||
[[Image:05-Pcbnew-04_Pre-placement.png|250px|right]] | [[Image:05-Pcbnew-04_Pre-placement.png|250px|right]] | ||
Il existe des fonctionnalités de placement et routage automatiques intégrées à KiCad et des outils externes. La version intégrée n'a pas passé les quelques tests que j'ai fait, incapable de router des pistes en ligne droite entre deux connecteurs après plusieurs heures de calcul. Je n'ai pas testé les versions "en ligne", ni les outils externes proposés dans la FAQ de KiCad : | Il existe des fonctionnalités de placement et routage automatiques intégrées à KiCad et des outils externes. La version intégrée n'a pas passé les quelques tests que j'ai fait, incapable de router des pistes en ligne droite entre deux connecteurs après plusieurs heures de calcul. Je n'ai pas testé les versions "en ligne", ni les outils externes proposés dans la FAQ de KiCad comme [http://apt.cs.man.ac.uk/projects/tools/mucs-pcb/ MUSC-PCB]. | ||
J'ai choisi de faire le placement et le routage à la main, cela simplifie le respect de certaines contraintes, comme la position du connecteur UEXT (voir le document [Contraintes mécaniques des modules pour le DomoTab] | J'ai choisi de faire le placement et le routage à la main, cela simplifie le respect de certaines contraintes, comme la position du connecteur UEXT (voir le document [Contraintes mécaniques des modules pour le DomoTab] (voir figure en fin de page), ou l'écartement des connecteurs utilisés pour les GPIO pour permettre l'utilisation sur les plaques de prototypage, ou encore le placement des condensateurs de découplage qui doivent se trouver le plus proche possible des pattes d'alimentation du micro-contrôleur ou du convertisseur USB vers UART. | ||
Le premier module à placer est le connecteur UEXT, dont la position est imposée si on veut respecter le format des modules du projet DomoTab. Il doit être centré dans la largeur, et son centre placé à 49.5mm d'un des bords dans la longueur. Pour le faire simplement, utilisez le dialogue d'édition du module [RefCard-5.7] qui permet de spécifier la position en X et Y. | Le premier module à placer est le connecteur UEXT, dont la position est imposée si on veut respecter le format des modules du projet DomoTab. Il doit être centré dans la largeur, et son centre placé à 49.5mm d'un des bords dans la longueur. Pour le faire simplement, utilisez le dialogue d'édition du module [RefCard-5.7] qui permet de spécifier la position en X et Y. | ||
Ligne 154 : | Ligne 155 : | ||
Les premiers positionnement sont approximatifs, et aucune piste n'est tracée, le but est uniquement de regrouper les différents éléments par bloc pour y voir plus clair. | Les premiers positionnement sont approximatifs, et aucune piste n'est tracée, le but est uniquement de regrouper les différents éléments par bloc pour y voir plus clair. | ||
On obtient quelque chose qui ressemble à la figure | On obtient quelque chose qui ressemble à la figure qui se trouve sur la droite. | ||
=== Plans de masse === | === Plans de masse === | ||
Ligne 224 : | Ligne 225 : | ||
[[Image:04-Pcbnew-step07.png|300px|left]] | [[Image:04-Pcbnew-step07.png|300px|left]] | ||
Une fois fini le résultat devrait ressembler à | Une fois fini le résultat devrait ressembler à l'image présentée à gauche (à gauche avec le plan de masse visible, à droite sans le plan de masse et avec la couche de dessin en bleu clair), à une différence près. J'ai choisi de superposer les deux connecteurs USB, qui ne peuvent de toutes façon pas être utilisés en même temps. Pour ce faire, j'ai modifié le contour du PCB, tout en respectant les contraintes des modules du projet DomoTab, et cette excroissance doit être découpée lors de l'utilisation du connecteur USB type A mâle. Cependant, cela permet de ne produire q'un type de PCB pour les deux configurations, et donc de réduire les coûts. | ||
Nous verrons dans le prochain article comment passer de la conception à la réalité. A suivre ... | Nous verrons dans le prochain article comment passer de la conception à la réalité. A suivre ... |
Dernière version du 2 septembre 2020 à 21:50
Dans les deux articles précédents nous avons créé le schéma électronique d'un module de développement pour la plateforme DomoTab. Ce n'est cependant que la première étape pour obtenir un module fonctionnel. Nous allons désormais dérouler les étapes suivantes, jusqu'à obtention des documents de fabrication nécessaires à la réalisation du PCB (Printed Circuit Board, le circuit imprimé).
Bien entendu, nous continuerons à utiliser KiCad, dont nous n'avons exploré qu'une partie des fonctionnalités.
Paru dans le numéro 8 du magazine Open Silicium.
Préliminaires
Nous nous étions arrêtés juste après avoir réalisé l'annotation automatique et la vérification des règles de conception.
Vous avez normalement profité de l'interlude pour tester le circuit , ou au moins certaines parties. Bon, d'accord, notre circuit est à la fois trop simple, et composé d'éléments trop complexes à tester. Passons.
Libre association
L'étape suivante, impérative avant de passer au routage, est l'association d'une empreinte à chaque composant. Pour permettre cette association il faut créer un document appelé "netliste", qui sert de lien entre les différents logiciels de la suite KiCad.
Rassurez vous, la génération de la netliste est entièrement automatisée. Elle se fait à partir de l'outil correspondant sous Eeschema [RefCard-2.24], et il suffit de cliquer sur "Netliste" dans la boite de dialogue, en restant bien dans l'onglet "Pcbnew" qui est l'outil intégré à Kicad pour le routage du PCB.
Notez que cette netliste devra être re-générée à chaque modification du schéma, puis relue depuis Pcbnew pour prendre en compte les modifications (il n'y a pas de mise à jour automatique, et heureusement !).
Nous pouvons maintenant utiliser CvPcb [RefCard-1.4], pour associer une empreinte (définition de l'espace physique occupé et de la position des pattes) à chaque composant du schéma. Le message d'avertissement est normal puisque le fichier d'association (*.cmp) n'existe pas encore, on valide et les deux colonnes de la fenêtre de CvPcb se remplissent de lignes obscures.
La colonne de gauche, sur fond bleu, contient tous les composants utilisés, tandis que celle de droite contient la liste des empreintes existantes dans les bibliothèques associées au projet.
Grâce à notre travail continu de sélection des modules et boîtiers, un bon nombre des composants semblent avoir une empreinte associée. Il y en a tout de même plusieurs sans empreinte, et malheureusement les noms que nous avons utilisé ne correspondent pas forcément aux noms des empreintes dans les bibliothèques. Nous devons donc reprendre chaque composant pour vérifier que l'empreinte corresponde bien.
Pour faciliter cette étape, CvPcb fournit un outil [RefCard-4.1] qui nous permet de visualiser l'empreinte sélectionnée, ainsi qu'une fonctionnalité très intéressante de visualisation du composant sur notre schéma. En effet, si vous avez laissé Eeschema ouvert, la sélection d'un composant dans la colonne de gauche de CvPcb change la portion de schéma affichée (si besoin) et positionne une petite croix au dessus du composant.
Note : cette deuxième fonctionnalité n'est disponible que lors de l'affichage de la liste filtrée des modules pour le composant courant [RefCard-4.2], [hint dev kicad] ce qui est un peu dommage [/hint].
Commençons par la vérification des empreintes sélectionnées automatiquement. Si tout va bien, toutes nos résistances doivent utiliser des empreintes "0603" et les condensateurs utilisent des empreintes "0603" et "0402". Cependant les noms des empreintes correspondantes en bibliothèque sont "SM0402" et "SM0603". Il faut donc changer chaque association par le bon nom, simplement en double cliquant sur le nom dans la colonne de droite. Si la liste affichée à droite est restreinte et ne contient pas l'empreinte que vous souhaitez affecter, pas de panique, affichez la liste complète [RefCard-4.3].
Faites de même pour les leds de l'USB et la perle de ferrite, qui utilisent aussi des boîtiers "0603".
Il devrait vous rester une vingtaine de composants à vérifier sur les 39 composants du schéma (43 pour la version avec le logo et les mires de positionnement)
A partir de là les choses se compliquent, car les bibliothèques d'empreintes ne sont pas exhaustives, et parfois trompeuses (l'ordre des pattes n'est pas forcément le bon). Je vous rassure, il en va de même pour les bibliothèques de composants des autres suites logicielles, et pour cause, il doit exister plusieurs milliers d'empreintes différentes.
La solution simple est d'utiliser la bibliothèque d'empreintes du projet DomoTab (domotab.mod) qui est inclue dans l'archive Lib_DomoTab.tar.bz2. L'ajout d'une nouvelle bibliothèque d'empreintes se fait de la même façon que pour les bibliothèques de composants pour Eeschema, et restera active pour Pcbnew. Si vous choisissez d'utiliser notre bibliothèque, la seule autre bibliothèque nécessaire est la bibliothèque "pin_array", et je vous conseille de supprimer les autres de la liste des bibliothèques du projet pour faciliter la recherche des empreintes.
N'oubliez pas de sauvegarder le fichier d'association des empreintes, sinon Pcbnew ne saura pas quels empreintes (modules) utiliser !
Note : Pour bien différencier les jumpers de sélection de la liaison série des broches utilisées pour les GPIO j'ai décidé d'utiliser des connecteurs au pas de 2mm au lieu de 2.54mm, mais vous pouvez choisir uniquement des connecteurs au pas de 2.54mm pour éviter d'avoir deux références différentes.
Créer l'empreinte
Pour les courageux et pour ceux qui auront utilisé des composants additionnels je vais tout de même présenter l'outil de création des empreintes.
Cet outil n'est pas accessible depuis CvPcb. Il faut ouvrir l'éditeur de circuits imprimés Pcbnew [RefCard-1.5], puis ouvrir l'éditeur de modules [RefCard-5.1].
Nous allons donc créer le module (l'empreinte) pour le connecteur micro-USB sélectionné (voir nomenclature). D'une part, très peu de connecteurs sont disponibles dans les bibliothèques Kicad, mais c'est aussi un composant suffisamment complexe pour que l'on passe en revue plusieurs fonctionnalités. Ce nouveau module aura le nom "USB_micro_AB_Picots".
Après avoir déplacé les textes de sérigraphie pour dégager l'origine du repère [RefCard-6.2], nous allons commencer par placer les 5 pastilles non traversantes pour les signaux USB du connecteur, en centrant la troisième sur l'origine du repère. Placez une première pastille [RefCard-6.3] et éditez ses caractéristiques [RefCard-6.4] : changez son type pour "CMS", sa forme (shape) pour rectangulaire (Rect) et ses dimensions : 0.4mm x 1.35mm. Vous pouvez aussi positionner précisément la pastille : centrée sur 0 en Y, et à -1.3mm en X. Validez, et placez les pastilles suivantes : elles conservent les même caractéristiques, seuls changent la position, et le numéro qui s'incrémente. Éditez les nouvelles pastilles pour les positionner avec précision conformément au dessin technique fourni par le fabriquant.
Si vous aviez déjà positionné les cinq pastilles, sachez qu'il est possible d'exporter les caractéristiques d'une pastille [RefCard-6.6] puis d'appliquer ces caractéristiques à une autre [RefCard-6.7].
Note 1 : Vous l'aurez remarqué, les pastilles rouges correspondent aux pastilles non traversantes, et les pastilles marron clair aux pastilles CMS. Ces deux types de pastilles ont un trait fin autour, de la même couleur que la pastille. Ce trait délimite une zone d'isolation, dans laquelle il ne sera pas possible de faire passer un autre signal. Ces zones peuvent se chevaucher, mais ne doivent pas entrer en contact avec une autre pastille. La taille par défaut de ces zones convient dans la majorité des cas, mais elle peut être changée dans le dialogue d'édition des caractéristiques, dans le champ "Net pad clearance".
Note 2 : le fabriquant demande de placer deux pastilles de 1.8mm x 1.9mm sous le connecteur, certainement destinés à la fixation du connecteur au PCB. J'ai choisi un connecteur disposant de picots traversants, ne nécessitant pas forcément de pastilles sous le connecteur, principalement parce-que j'ai déjà eu des problèmes avec la quantité d'étain déposé sur ces pastilles. Si il y en a trop, lors de soudure du composant l'étain se déplace vers les bords, et vient souder ensemble les pattes des signaux USB, rendant la carte inutilisable. J'ai donc placé une unique pastille de 1mm x 2mm, pour limiter les risques de fuite de l'étain. Il est aussi possible de définir la taille du masque pour l'étain pour cette pastille comme devant être plus petit que la pastille dans l'interface d'édition de la pastille, dans la case "Marge masque pâte des pads".
Note 3 : La colonne de droite de l'interface d'édition de la pastille définit les couches concernées par la pastille. Il est ainsi possible d'exclure une pastille du masque de soudure (SoldP_*). Attention, le masque de soudure est utilisé pour définir les zones sans vernis, qui permettront de souder les composants (couches Masque_*), il ne faut pas le confondre avec le masque de pâte.
Nous allons ensuite ajouter les quatre pastilles pour les picots de fixation du connecteur. Il faut cette fois utiliser des pastilles traversantes (Standard) circulaires (la doc donne des pastilles ovales, mais des pastilles rondes conviennent parfaitement). Attention, la doc donne le rayon des trous, et KiCad attends les diamètres des trous.
Note 4 : Il existe aussi une fonctionnalité d'édition globale des pastilles, qui permet d'appliquer des modifications à toutes les pastilles, ou à celles ayant une forme ou une orientation identique, ce qui est très pratique lorsque l'on créé une nouvelle empreinte à partir d'une empreinte existante.
Maintenant que les trous sont en place, nous allons positionner les contours. Le positionnement des contours est important pour l'étape de placement des composants car il définit l'enveloppe du composant, à l'intérieur de laquelle il ne faudra pas positionner d'autres composants. Il est donc important de bien respecter les dimensions données dans la documentation technique pour ne pas avoir de mauvaise surprise lors de l'assemblage. Les coordonnées actuelles du pointeur sont indiquées en bas à droite de la fenêtre, en valeur absolue dans le repère, et en valeur relative à la dernière position que vous avez sauvegardée en appuyant sur la barre espace.
En plus des limites physiques du connecteur, j'ai ajouté un trait pour représenter le bord du PCB sur lequel le connecteur doit être aligné pour permettre une utilisation correcte. Cela simplifie grandement l'étape de placement.
Et l'inclure dans le projet
Vous allez désormais pouvoir enregistrer votre nouvelle empreinte dans une bibliothèque de votre choix, ou en profiter pour créer une nouvelle bibliothèque. Dans ce cas n'utilisez pas le nom par défaut (le nom de l'empreinte que vous venez de créer), et donnez lui plutôt le nom du projet, ou un autre non plus générique.
Si vous créez une nouvelle bibliothèque, il faut l'ajouter à la liste des bibliothèques d'empreintes du projet (comme avec Eeschema, mais cette fois soit avec CvPcb, soit avec Pcbnew), et si vous ajoutez le module à une bibliothèque existante, il vous faudra fermer puis rouvrir CvPcb pour prendre en compte la nouvelle empreinte. Autant donc créer toutes les empreintes nécessaires avant de relancer CvPcb.
Dans tous les cas, après l'ajout d'une bibliothèque d'empreintes au projet par l'un des deux logiciels (CvPcb ou Pcbnew), il faudra enregistrer les modifications en cours sous l'autre, le fermer, puis le rouvrir, pour que les changements sur le projet soient pris en compte.
Ne pas lâcher l'affaire
Les condensateurs et résistances CMS ont beau représenter 50% des composants utilisés (voir plus), l'association de leurs empreintes ne représente que 10% du travail. Hormis certaines diodes et quelques autre composants pour lesquels vous trouverez facilement les empreintes, il faut le plus souvent créer les empreintes de chacun des composants restants, ou dans tous les cas, bien vérifier les empreintes disponibles. Une empreinte carrée avec 12 pattes par côté n'est pas forcément adaptée à notre micro-contrôleur, même si le nom est identique.
Pour chaque empreinte il y a quatre choses à vérifier en priorité. L'espacement entre les pads, la taille des pads, la position des pads, et la numérotation des pads. Le reste n'est cependant pas accessoire. Si l'encombrement défini n'est pas le bon, vous ne pourrez pas souder vos composants, la présence d'un détrompeur visible sur la sérigraphie facilite le montage, et il est préférable que les empreintes incluent les bonnes découpes pour le pochoir CMS si vous voulez pouvoir utiliser un pochoir pour l'application de l'étain en pâte (voir article suivant).
Toutes les informations sont normalement présentes dans les documentations des composants, qui donnent même souvent une empreinte "conseillée" avec toutes les dimensions nécessaires à la création de l'empreinte. Quand ce n'est pas le cas, il faut bien faire attention à se baser sur les valeurs min/max des dimensions données, pour ne pas avoir de surprises, et ajouter une marge pour la taille des pads, surtout dans le sens de la longueur. Vous constaterez aussi qu'il existe pour chaque pad des informations de "Couches Cuivre" et "Couches techniques". Veillez à ce que toutes les pastilles non traversantes soient sur la même couche de cuivre, et que les couches "SoldP" et "Masque" correspondant à la couche cuivre sélectionnée (dessous ou dessus) soient bien cochés, car ce sont les informations qui seront utilisées lors de la fabrication du PCB pour la création du masque de soudure CMS et la pose du vernis épargne.
Note : certains des composants utilisés dans le schéma ont des noms de pad au lieu des numéros de pad. Pour ces composants il faudra avoir une version de l'empreinte qui utilise ces noms (ou modifier la définition du composant dans la bibliothèque de composants).
Cette étape est critique, car si vous n'avez pas le bon positionnement pour les pastilles, au mieux vous perdrez beaucoup de temps lors de l'assemblage de votre module pour souder chaque patte si c'est encore possible, au pire, le PCB sera bon pour la poubelle. N'hésitez donc pas à supprimer les bibliothèques non utilisées de la liste des bibliothèques du projet, et à créer votre propre bibliothèque.
Retour vers le futur
Une fois que vous en avez fini avec les associations, il est possible d'exporter celles-ci dans un fichier qui pourra être lu par Eeschema pour remplir automatiquement les champs "Module" des composants du schéma. Je vous laisse trouver l'icône, et réaliser l'autre moitié du travail sous Eeschema comme des grands car cela n'a pas d'influence sur la suite des réjouissances :)
Nomenclature
Avant de passer au routage avec Pcbnew je voulais aborder un dernier point important dans un projet électronique, celui de la nomenclature (BOM). La nomenclature est un document important, qui liste les composants utilisés dans un système, et donc dans notre cas, sur notre circuit électronique. Il permet de référencer les informations importantes (leur liste est propre à chaque projet) concernant chaque élément du système.
Kicad inclut un outil pour générer une nomenclature qui permet de lister les composants utilisés sur le schéma et associer à ces composants par exemple une référence chez un fournisseur, un coût, ou d'autres informations. Si nous avions fait les choses correctement, nous aurions pu utiliser les champs utilisateur de chaque composant pour stocker ces informations, et obtenir ainsi une nomenclature très simplement.
Pour ma part, je fonctionne avec un tableur (celui de Libre Office) pour cette étape, et ce dès les premières recherche de composants. Cela me permet de garder une trace des différentes options que j'ai pu trouver pour chaque composant, de comparer facilement plusieurs fournisseurs (même si cette fois je me suis volontairement limité à un unique fournisseur pour limiter les frais de ports pour ceux qui ne voudront pas profiter de notre offre de kits de composants) et de garder un œil sur le prix du module complet en fonction du volume de production.
PCB : Placement et routage
Puisque tous les composants de notre schéma ont désormais une empreinte associée nous allons pouvoir les placer sur notre PCB et tracer les pistes qui les relieront.
Lors de l'ouverture de Pcbnew on se retrouve devant une grande feuille vide. Avant d'entrer dans le vif du sujet, donnez un tire à la feuille (entre autres options) sur le même principe que sous Eeschema [RefCard-5.2].
Continuez en effectuant quelques réglages généraux [RefCard-5.3] qui vous permettent par exemple d'autoriser la rotation des modules à 45°, ou le tracé des pistes avec des angles quelconques (j'ai laissé les choix par défaut).
Il faut ensuite lire la netliste [RefCard-5.4] pour que la feuille soit un peu moins vide. Dans la boite de dialogue choisissez simplement "Lire Netliste Courante" puis "Fermer". Tous les composants se retrouvent empilés au point d'origine de la feuille, il faudra être patient pour les dépiler un par un (sélectionner les traits (bleus) définissant l'encombrement des modules évite l'apparition du menu demandant de préciser la sélection).
Vous pouvez aussi désactiver l'affichage du "texte invisible" [RefCard-5.5], voir de tout le texte, pour y voir un peu plus clair et éviter de le déplacer à la place des modules.
Contours
Il y a deux solutions possibles pour continuer en fonction des contraintes imposées par le projet. Si vous n'avez pas de contraintes de taille du module, ou si il faut que le module soit "le plus petit possible", vous pouvez alors attaquer par le placement et le routage du module, et procéder au tracé des contours du PCB une fois satisfait du résultat.
Dans notre cas, la taille maximum que notre module pourra occuper est définie par la disposition des connecteurs UEXT dans le DTPlug et le DomoTab. La taille standard des modules du projet DomoTab est de 22.5mm x 62mm pour les modules avec connectique, et 22.5mm x 55mm pour les modules "sans fil".
Nous allons donc commencer par tracer les contours du PCB avec l'outil de tracé de lignes [RefCard-5.6] en sélectionnant la couche "Contours_PCB" dans la colonne de droite (un petit curseur bleu indique la couche active). Encore une fois, les indications de déplacement (dx/dy) sont relative à la position du curseur lors du dernier appui sur la barre espace. Attention, le point d'origine est en haut à gauche.
Des cheveux en pagaille
Pour vous aider à effectuer le routage, Pcbnew affiche ce que l'on appelle le "chevelu", et qui n'est autre que des traits blancs qui relient les éléments qui devront être reliés par des fils.
Lorsque vous commencez à dépiler les modules, cela ressemble assez vite à une immense toile d'araignée, mais en faisant un peu attention on peut limiter cet effet en groupant les éléments qui doivent être connectés ensemble. KiCad nous aide lorsque l'on sélectionne un module pour le déplacer en n'affichant que les connexions du module en cours de déplacement, ce qui permet de le placer proche des autres modules auxquels il devra être connecté. Vous remarquerez que pour certains composants, les indications changent au cours du déplacement. C'est normal car KiCad nous indique la connexion la plus courte, et certains composants comme les condensateurs de découplage peuvent être reliés à de nombreux endroits. Il est donc important d'avoir le schéma à disposition pour rester cohérent et placer les bons condensateurs au bon endroit. D'ailleurs, lors de la sélection d'un composant sous Pcbnew, Eeschema change sa vue pour nous montrer le composant, avec une petite croix dessus, ce qui est bien pratique.
Vous devriez rapidement obtenir quelque chose de ressemblant à la figure de gauche.
Placement
Il existe des fonctionnalités de placement et routage automatiques intégrées à KiCad et des outils externes. La version intégrée n'a pas passé les quelques tests que j'ai fait, incapable de router des pistes en ligne droite entre deux connecteurs après plusieurs heures de calcul. Je n'ai pas testé les versions "en ligne", ni les outils externes proposés dans la FAQ de KiCad comme MUSC-PCB.
J'ai choisi de faire le placement et le routage à la main, cela simplifie le respect de certaines contraintes, comme la position du connecteur UEXT (voir le document [Contraintes mécaniques des modules pour le DomoTab] (voir figure en fin de page), ou l'écartement des connecteurs utilisés pour les GPIO pour permettre l'utilisation sur les plaques de prototypage, ou encore le placement des condensateurs de découplage qui doivent se trouver le plus proche possible des pattes d'alimentation du micro-contrôleur ou du convertisseur USB vers UART.
Le premier module à placer est le connecteur UEXT, dont la position est imposée si on veut respecter le format des modules du projet DomoTab. Il doit être centré dans la largeur, et son centre placé à 49.5mm d'un des bords dans la longueur. Pour le faire simplement, utilisez le dialogue d'édition du module [RefCard-5.7] qui permet de spécifier la position en X et Y.
La suite se fait par essais successifs, mais voici la démarche que j'ai suivie.
- Positionnement du micro-contrôleur proche du connecteur UEXT, avec ses deux condensateurs de découplage
- Positionnement du connecteur USB (à choisir parmi les deux connecteurs, l'autre pouvant être supprimé) à l'autre bout du module, avec le convertisseur USB vers UART, et les condensateurs, résistances, leds, et la perle de ferrite.
- Positionnement des connecteurs pour les GPIO le long des bords du module, avec un espacement entre les connecteurs qui soit un multiple de 2.54mm.
- Positionnement de tout ce qui concerne l'I2C (identification du module et capteur de température) en dessous du connecteur UEXT.
- Positionnement de la led double et de ses deux résistances sur la droite du module.
- Positionnement des boutons Reset et ISP sur la gauche du module.
Bien entendu, pendant le déplacement d'un module [RefCard-5.8] il est possible de changer son orientation [RefCard-5.9], par pas de 45° ou 90° selon votre configuration. Pour obtenir une orientation différente, vous pouvez utiliser le dialogue d'édition du module. Les premiers positionnement sont approximatifs, et aucune piste n'est tracée, le but est uniquement de regrouper les différents éléments par bloc pour y voir plus clair.
On obtient quelque chose qui ressemble à la figure qui se trouve sur la droite.
Plans de masse
Avant d'aller plus loin, nous allons placer un plan de masse sur la couche "Dessous", pour simplifier le raccord des différents éléments à la masse et obtenir un raccord automatique pour les broches des connecteurs traversants et lors de la création de Vias (Une via est un trou métalisé qui traverse le PCB de part en part, permet de faire passer des pistes d'un côté à l'autre du circuit).
La création du plan de masse ce fait avec l'outil d'ajout de zones [RefCard-5.11]. Il faut ensuite sélectionner une des couches de cuivre ("Dessus" ou "Dessous" dans notre cas) et cliquer dans un angle. Dans la boite de dialogue qui s'ouvre il y a plusieurs réglages possibles, les plus important étant de sélectionner la couche du "Dessous" et le Net "DGND" qui correspond au nom de la masse de notre circuit. Pour la connexion des pads, j'utilise "Solide", mais l'option "Frein thermique" permet de faciliter la soudure.
Validez, puis placez deux autre sommets par un simple clic aux autres coins du PCB, et fermez le polygone en double-cliquant pour placer le dernier point dans le dernier angle.
Cette opération n'a fait que définir le contour du plan de masse, il faut ensuite recalculer les zones pour que les connexions soient effectuées et que le plan de masse soit correctement rempli.
Note : la création du plan de masse n'entravera pas la création de pistes sur la couche "Dessous", même si le plan de masse semblera se superposer à la piste. Il faudra recalculer les zones pour que le plan de masse prenne en compte les nouvelles pistes.
Enfin, désactivez l'affichage des zones [RefCard-5.12] pour rendre le schéma lisible.
Attention, il faudra bien veiller à ne pas couper le plan de masse en deux en traçant les pistes, sans quoi il ne jouera plus son rôle. Il est conseillé de limiter au maximum le nombre de pistes à travers le plan de masse ainsi que leur longueur.
NetClass
Encore un dernier point technique avant de commencer à tracer les pistes. Toutes les pistes et les vias n'ont pas besoin d'avoir la même largeur. En utilisant des pistes plus étroites pour les signaux le routage est plus simple. Il est aussi parfois nécessaire d'utiliser des pistes plus fines pour atteindre les pattes des composants CMS tout en respectant les distances d'isolation entre les pistes, représentées par un trait fin comme pour les pastilles des composants.
Ces réglages sont effectués dans le dialogue des règles de conception [RefCard-5.13]. Commencez par changer les valeurs minimales autorisées dans l'onglet "Règles Générales". Pour le module j'ai utilisé une largeur minimale de piste de 0.2032mm, et un diamètre de via minimal de 0.5080mm pour un perçage minimal de 0.3810mm.
Note : Ces valeurs minimales dépendent en fait de ce que le fabriquant de circuits imprimés que vous choisirez accepte comme valeurs minimales. Bien souvent, ils proposent une taille minimale standard, et peuvent faire plus petit si besoin, mais plus cher.
Retournez ensuite sur l'onglet précédent, et éditez la classe "Default" pour réduire la taille des pistes et des vias pour les signaux en utilisant les valeurs minimales, avec une isolation de 0.1930mm, et ajoutez une classe "Alimentations" qui aura une largeur de piste plus importante (0.3048mm) et des vias plus grosses (0.8890mm avec perçage à 0.5080mm), et la même largeur pour l'isolation.
Il faut ensuite ajouter les signaux d'alimentation à cette nouvelle classe en utilisant le tableau en dessous : "+3.3V", "DGND", et "+5V", mais aussi potentiellement certains "Nets" qui n'ont pas de nom particulier mais un numéro. Pour notre module, seul le "Net" correspondant à la broche 1 des connecteur USB est concerné. Dans mon cas il a le nom "N-000046", mais il y a très peu de chance qu'il en soit de même pour votre schéma.
Note : Pour ceux qui désirent imprimer eux même leurs PCB, faites attention à la taille des vias (taille et diamètre de perçage), qui devront correspondre au diamètre de perçage dont vous disposez et avoir une marge suffisamment grande pour que la pastille ne soit pas arrachée lors du perçage.
Routage
Arrive enfin cette étape longue et fastidieuse, faite de multiples essais successifs, et pour laquelle je n'ai pas de solution miracle. Je ne peux que vous donner quelques conseils, et quelques précisions sur le fonctionnement de KiCad.
Commencez par placer approximativement les plus gros composants, et utilisez le chevelu pour vous donner une idée du nombre de pistes qu'il faudra croiser en fonction de la position des différents composants. Déplacez et changez l'orientation des composants pour minimiser le nombre de pistes et leur longueur. Puis commencez à tracer quelques pistes [RefCard-5.14] et vias [RefCard-5.15] pour vous habituer à leur largeur et aux possibilités de routage. Ne vous inquiétez pas si vous devez effacer des pistes.
Sachez qu'il est possible de n'effacer qu'un segment d'une piste ou une via [RefCard-5.16], mais que la suppression par défaut [RefCard-5.17] supprimera toute la piste. Il est aussi possible de déplacer des segments de piste [RefCard-5.18], soit de façon libre, mais les pistes liées auront alors des orientations quelconques, soit en conservant l'orientation, mais il faudra alors que le segment visible ne soit pas en fait composé de plusieurs segments. Si c'est le cas, il est possible de "compacter les segments" [RefCard-5.19] pour résoudre le problème.
Encore une fois, faites attention à couper le moins possible le plan de masse, et donc à minimiser le nombre et la longueur des pistes sur la face inférieure du PCB. Et en parlant de plan de masse, les pattes devant être reliées au plan de masse ont juste besoin d'une courte piste terminée par une via, et la liaison est faite automatiquement.
Attention, lorsque vous placez une via, le gestionnaire de couche change automatiquement la couche de tracé courante pour vous permettre de continuer le tracé de votre piste sur l'autre face. Si vous avez arrêté votre tracé avec la pose de la via, il faut revenir sur la couche précédente [RefCard-5.20]. Dans le cas d'un circuit avec plus de deux couches, il est possible de définir les deux couches de travail actuelles pour le basculement [RefCard-5.21].
Limitez le nombre de composants sur la face inférieure, voir évitez les complètement lorsque c'est possible, car l'assemblage est beaucoup plus compliqué si vous avez des composants des deux côtés.
Modifications du schéma
Il arrive que lors du routage on se rende compte que l'ordre des signaux sur un connecteur ne soit pas le plus judicieux, et que l'on veuille le changer. Cette opération est parfaitement possible. Il faut tout d'abord corriger le schéma avec Eeshema, puis générer à nouveau la "netliste", et enfin lire la "netliste" courante sous Pcbnew.
Cette méthode pose tout de même un problème (assez simple à résoudre). Lorsque vous modifiez le schéma, le numéro des "nets" peut changer, et les classes de pistes définies précédemment peuvent ne plus contenir les bons signaux. Ce problème à deux solutions. Soit vous vérifiez systématiquement les classes de pistes après la lecture de la "netliste", soit vous donnez un nom au signal, qui ne changera plus. Pour donner un nom au signal, il suffit de le connecter à un label sous Eeschema.
Ajouts graphiques
Logo et texte pour impression sur PCB final
Un logo est un élément visuel intéressant, qui permettra d'identifier facilement vos créations. L'ajout de texte permet de donner un nom et un numéro de version au PCB. Et puisqu'il est possible de créer ces éléments sur n'importe quelle couche, dont les couches de cuivre, ils n'auront pas d'impact sur le coût final du PCB car ils ne vous obligent pas à avoir une couche de sérigraphie (si vous avez suffisamment de place disponible sur la couche de cuivre).
Pour la partie texte, il suffit d'utiliser l'outil texte [RefCard-5.23] et de placer le texte à l'endroit voulu. rien de compliqué.
Pour un logo, la première étape se fait avec l'outil "Bitmap2Component" qui accepte plus d'une dizaine de formats d'images en entrée. Ce n'est cependant pas un logiciel de traitement d'images, et il est donc fortement conseillé de travailler l'image avec un logiciel adapté pour créer une image en noir et blanc et de petite taille (135x89 pixels pour la mascotte "tibug" utilisée sur nos modules).
La suite est assez simple et les options peu nombreuses. Il est généralement nécessaire de passer en négatif, et si votre image n'est pas en noir et blanc, vous pouvez modifier le seuil qui définit ce qui est noir et ce qui est blanc. Si vous n'obtenez pas ce que vous voulez, travaillez sur l'image de départ et recommencez.
Lorsque vous avez trouvé un réglage qui vous satisfait, vous pouvez exporter le logo pour Eeschema et Pcbnew. L'export crée une bibliothèque qu'il vous faudra ajouter à votre projet. Vous pouvez alors inclure le module manuellement sous Pcbnew, ou bien l'inclure sous Eeschema, lui associer l'empreinte que vous venez de créer (sous CvPcb), et l'inclusion sera automatique sous Pcbnew.
Pour obtenir une version d'un logo qui se place sur une couche de cuivre, il suffit d'éditer le fichier de bibliothèque généré par Bitmap2Component (fichier ".mod"), de copier toutes les lignes correspondant au module (de $MODULE ... à $EndMODULE ..., en pensant bien à changer le nom du module qui se trouve sur ces deux lignes, mais aussi sur la ligne qui commence par Li, et normalement sur celle qui commence par T1), et de remplacer le "21" final par un "15" sur toutes les lignes commençant par DP pour le module que vous venez de copier. Ce dernier nombre correspond au numéro de la couche du dessin, "21" pour la couche de sérigraphie de dessus, "15" pour la couche de cuivre de dessus.
Ajout de commentaires
Encore une fois, il est toujours conseillé de commenter son travail. Pcbnew propose quatre couches “Auxiliaires” (Eco1, Eco2, Commentaires et Dessins) qui permettent l'ajout de texte, de tracés, mais aussi de côtes [RefCard-5.24], comme pour un dessin technique, qui ne seront pas sur le PCB final.
Ces couches s'activent (ou se désactivent) dans le menu d'option des couches [RefCard-5.25].
Vérification Finale
Une fois satisfait de votre travail, n'oubliez pas d'effectuer le contrôle automatique des règles de conception (DRC) [RefCard-5.22]. Si vous n'avez pas déplacé de module par dessus une piste (ou trop près) ni oublié de connexions, il ne devrait pas y avoir d'erreurs.
Une fois fini le résultat devrait ressembler à l'image présentée à gauche (à gauche avec le plan de masse visible, à droite sans le plan de masse et avec la couche de dessin en bleu clair), à une différence près. J'ai choisi de superposer les deux connecteurs USB, qui ne peuvent de toutes façon pas être utilisés en même temps. Pour ce faire, j'ai modifié le contour du PCB, tout en respectant les contraintes des modules du projet DomoTab, et cette excroissance doit être découpée lors de l'utilisation du connecteur USB type A mâle. Cependant, cela permet de ne produire q'un type de PCB pour les deux configurations, et donc de réduire les coûts.
Nous verrons dans le prochain article comment passer de la conception à la réalité. A suivre ...
Glossaire et Liens
- CMS : Composant Monté en Surface
- PCB : Printed Circuit Board : Circuit imprimé
- BOM : Bill Of Materials : Nomenclature
- ----
- UEXT : https://www.olimex.com/Products/Modules/UEXT/
- KiCad : http://www.kicad-pcb.org/
- MUCS-PCB : http://apt.cs.man.ac.uk/projects/tools/mucs-pcb/
- Techno-Innov : http://www.techno-innov.fr/
- Bibliothèque de composants du projet DomoTab : http://techdata.techno-innov.fr/Modules/GPIO_Demo/Lib_DomoTab.tar.bz2
- Contraintes mécaniques des modules pour le DomoTab : http://techdata.techno-innov.fr/Modules/Constraints_DomoTab_Modules.pdf
- ----