Sortie de KiCad 4.0

45
30
nov.
2015
Matériel

Le 29 novembre 2015, la quatrième version du projet KiCad a été publiée.

Commençons par une courte présentation, tirée de l'article Wikipédia:

KiCad est un ensemble de logiciels libres de conception pour l'électronique pour le dessin de schémas électroniques et la conception de circuits imprimés.

Logo de Kicad

Cet ensemble offre principalement un gestionnaire de projet, un éditeur de schémas, un éditeur de circuits imprimés gérant jusqu'à 32 couches de cuivre, une visionneuse de fichier gerber et une calculatrice d'aide à la conception. Le logiciel a été créé en 1992 par Jean-Pierre Charras, professeur à l'IUT de Saint-Martin-d'Hères.

Les sources ont été publiées sous licence GPL dans le début des années 2000 et ont été depuis constamment améliorées par une équipe de développement bénévole. Depuis 2013, le CERN s'investit dans le développement du logiciel, en récoltant des dons et en mettant à disposition des développeurs.

Côté technique, le cœur du logiciel est codé en C++ et utilise la bibliothèque wxWidget 3. Il est également possible d'écrire des extensions en Python.

Sommaire

Présentation des différents composants Kicad

Eeschema, l'éditeur de schémas

Eeschema

La première étape dans la conception d'un circuit électronique est d'en dessiner le schéma électrique.

Eeschema, l'éditeur de schémas de Kicad, permet donc de représenter les différents composants électroniques utilisés dans le projet et leurs connexions.

Le logiciel propose deux paradigmes différents pour la représentation d'un circuit :

  1. Schéma simple-page
  2. Schéma hiérarchique

Un schéma simple-page tient dans une seule page et n'utilise pas de sous-circuits.

Un schéma hiérarchique est composé de plusieurs pages, représentant des sous-circuits, qui peuvent ensuite être réutilisés facilement. Un peu à l'image de la séparation d'un code source en plusieurs fichiers.

La capture d'eeschema ci-dessus nous montre un schéma hiérarchique. En effet, si on regarde attentivement, on aperçoit sur la droite un bloc « Sheet pic_socket » qui renvoie vers le fichier « pic_socket.sch ».

Création de bus

L'outil permet aussi de créer des bus, fonctionnalité qui permet de regrouper plusieurs équipotentielles en un seul et même fil. Cette fonction permet aussi de rendre le schéma plus clair et donc plus simple à lire.

Génération de liste de composants

Une fois la carte conçue et fabriquée, il faut alors commander puis souder les composants sur la carte. Pour une petite carte avec quelques composants un traitement manuel suffit amplement. Cependant, pour une carte avec plusieurs centaines de composants, cette tâche peut vite devenir fastidieuse. Kicad permet de générer une liste de pièces, appelée BOM (Bill Of Material), qui est la liste des composants présents sur la carte. Ceci facilite grandement la commande des composants et le câblage (soudage des composants sur la carte) de la carte. Cette BOM peut être générée sous plusieurs formes différentes grâce à un système de greffon écrit en XML.

Éditeur circuits imprimés (layout)—pcbnew

Pcbnew

L'éditeur de circuit imprimé ou layout en anglais permet d'éditer des cartes jusqu'à 32 couches de cuivre et sans limite de dimension. Le CERN qui contribue désormais de manière très active au développement du logiciel a apporté des fonctionnalités très importantes comme la longueur contrôlée des équipotentielles (length matching), le routage différentiel ou le routage assisté (push and shove).

Visionneuse de films de fabrication—GerbView

GerbView
KiCad permet l'export au format Gerber, le format standard pour la transmission de donnée à une usine de fabrication de circuit imprimé. L’outil GerbView permet de visionner les fichiers produit, afin d'y détecter les erreurs éventuelles avant l'envoi en fabrication du circuit.

Calculatrice d'aide à la conception

Pcb Calculator

Visualisateur 3D

Kicad intègre un module de visualisation, permettant d'inspecter un circuit en 3D.

Kicad 3D Viewer

Nouveautés de la version 4

PcbNew

Durant le développement de cette nouvelle version, les développeurs de KiCad se sont concentrés sur « pcbnew », le module de création et de routage de circuits imprimés.

Nouveaux formats de fichiers

Le format de fichier pour les empreintes de composants et pour les circuits imprimés a été remplacé par un format maison basé sur la syntaxe S-expression.

(module R_0805 (layer F.Cu) (tedit 5415CDEB)
  (descr "Resistor SMD 0805, reflow soldering, Vishay (see dcrcw.pdf)")
  (tags "resistor 0805")
  (attr smd)
  (fp_text reference R_0805 (at 0 -2.1) (layer F.SilkS)
    (effects (font (size 1 1) (thickness 0.15)))
  )
  (fp_text value VAL** (at 0 2.1) (layer F.SilkS)
    (effects (font (size 1 1) (thickness 0.15)))
  )
  (fp_line (start -1.6 -1) (end 1.6 -1) (layer F.CrtYd) (width 0.05))
  (fp_line (start -1.6 1) (end 1.6 1) (layer F.CrtYd) (width 0.05))
  (fp_line (start -1.6 -1) (end -1.6 1) (layer F.CrtYd) (width 0.05))
  (fp_line (start 1.6 -1) (end 1.6 1) (layer F.CrtYd) (width 0.05))
  (fp_line (start 0.6 0.875) (end -0.6 0.875) (layer F.SilkS) (width 0.15))
  (fp_line (start -0.6 -0.875) (end 0.6 -0.875) (layer F.SilkS) (width 0.15))
  (pad 1 smd rect (at -0.95 0) (size 0.7 1.3) (layers F.Cu F.Paste F.Mask))
  (pad 2 smd rect (at 0.95 0) (size 0.7 1.3) (layers F.Cu F.Paste F.Mask))
  (model Resistors_SMD/R_0805.wrl
    (at (xyz 0 0 0))
    (scale (xyz 1 1 1))
    (rotate (xyz 0 0 0))
  )
)

L'exemple ci-dessus représente une résistance SMD de type 0805 :

Rendu 2D Rendu 3D
Rendu 2D Rendu 3D

Nouveau moteur de rendu 2D

L'équipe du CERN a aidé à développer un nouveau moteur de rendu pour PcbNew, destiné à remplacer l'ancien.

Le nouveau moteur n'implémente pas encore toutes les fonctionnalités de l'ancien, et donc les deux modes restent accessibles pour cette version 4. À noter que les nouveaux outils pour l'aide au routage présentés ci-dessous sont uniquement disponibles dans le nouveau mode.

Routeur « Push and Shove »

Le routeur en action
Ce mode de routage déplace automatiquement les pistes gênantes pour la connexion en cours.

Routage de paire différentielle

Routeur en action
Permet de router deux pistes en gardant une largeur fixe entre elles. Utile pour les transmissions différentielles.

Piste à longueur contrôlée « length matching »

Le routeur en action
Cette fonction permet de définir une longueur souhaitée à un fil et de voir en temps réel, pendant le routage si on s'approche ou si on s'éloigne de cette valeur. Lorsqu'un concepteur route un bus analogique rapide, il est particulièrement important que toutes ses pistes mesurent bien la même longueur afin d'éviter les problèmes de désynchronisation, c’est-à-dire une différence de temps de transmission sur deux lignes parallèles.

Prise en charge de Mac OS X

Dans la version précédente, la prise en charge de Mac OS X était notée comme expérimentale. Avec cette nouvelle version, Mac OS X est devenu un citoyen de première classe :

  • Image d'installation simple « glisser déposer »

Installateur OSX

  • Prise en compte des trackpads modernes pour le défilement horizontal et vertical à deux doigts, ainsi que le « pinch to zoom ».

Bibliothèques

Un effort particulier a été effectué sur les bibliothèques, avec notamment la création d'une convention pour la création de composants schémas et d'empreintes. Voir KiCad Library Convention.

Et pour les prochaines versions?

La prochaine version devrait amener plusieurs améliorations intéressantes, notamment :

  • Nouveaux formats basés sur la syntaxe S-expression pour les schémas et les composants schémas
  • Amélioration et ajout des fonctionnalités manquantes dans le nouveau moteur de rendu de Pcbnew, permettant de supprimer l'ancien moteur
  • Réécriture du moteur 3D.

Référence

  • # Conception de fonction vs conception de pcb

    Posté par . Évalué à 9.

    J'ai toujours un problème bête avec ce genre d'outil : il faut toujours connaitre la référence d'un composant pour l'utiliser.

    Par exemple, si vous voulez faire un circuit à base de ampli-op, vous êtes censé donner une référence. Or, selon le circuit, beaucoup de références peuvent fonctionner. Au pire, on sait si il faut un composant chère (genre très rapide, ayant peu de fuite) ou pas (741). Pour simuler et créer un circuit, quelques caractéristiques de base sont souvent suffisantes.

    En gros, il faudrait pouvoir instancier des composants avec des paramètres de bases pour la simu, avant de spécifier une référence pour un pcb.

    Est-ce que kicad permet de faire ça ?

    "La première sécurité est la liberté"

    • [^] # Re: Conception de fonction vs conception de pcb

      Posté par . Évalué à 5.

      Pour l'instant, KiCad ne supporte pas la simulation de manière direct. Il est possible avec un peu d'effort d'exporter le schéma pour l'utiliser avec Spice, mais le plus simple reste de refaire la partie de schémas à simuler sur le simulateur.

      • [^] # Re: Conception de fonction vs conception de pcb

        Posté par . Évalué à 4.

        Cela fait faire 2 fois le boulot. Et Spice a aussi le même problème : il faut connaitre les références précises que l'on veut utiliser et celles-ci doivent être présentes dans les bibliothèques. Cela fait 2 problèmes a gérer qui n'existerait pas avec des "composants génériques" paramétrables au moins un petit peu (rdson et temps de commutation pour un cmos, slew rate d'AOP,…).

        "La première sécurité est la liberté"

        • [^] # Re: Conception de fonction vs conception de pcb

          Posté par . Évalué à 2.

          Comme dit au dessus, KiCad ne gère pas la simulation (de mon point de vue, ce n'est pas son rôle mais c'est tout un débat ;) ).

          En revanche certains dérivés de Spice (comme LTSpice) ont des AOP (opamp/UniversalOpamp2) et portes génériques fournis à l'installation où l'on peut sélectionner (sur certains) le niveau de simulation. Personnellement je trouve ça plus compliqué et dangereux (car il faut un peu paramétrer) que prendre une version "réelle" d'un composant, mais je peux comprendre l'envie.

          • [^] # Re: Conception de fonction vs conception de pcb

            Posté par . Évalué à 2.

            Un composant réelle n'est pas être pas dispo, ou trop chère ou osbolète, alors que le design ne l'est pas.

            Il faudrait pouvoir "dériver" une schéma et que l'outil vérifie que le composant choisi est au moins aussi bon que le générique paramétré. Par contre, il faut que le générique paramétré n'est pas 50 paramètres, sinon, cela devient n'importe quoi.

            "La première sécurité est la liberté"

            • [^] # Re: Conception de fonction vs conception de pcb

              Posté par . Évalué à 2.

              Il faudrait pouvoir "dériver" une schéma et que l'outil vérifie que le composant choisi est au moins aussi bon que le générique paramétré.

              Ça me parait compliqué de définir le "aussi bon" car très dépendant du montage.

              • [^] # Re: Conception de fonction vs conception de pcb

                Posté par . Évalué à 2.

                A moins de faire un gros hack, on a toujours une très bonne idée d'un meilleur MOS, ou d'un meilleur ampliOP. Et le gros hack va complètement merder le jour ou il y a une dispersion dans les performances du composant "judicieusement" choisi.

                "La première sécurité est la liberté"

          • [^] # Re: Conception de fonction vs conception de pcb

            Posté par . Évalué à 2.

            En matière de simu existe-t'il quelque chose de conviviale et fonctionnel sous linux ?
            J'avais essayé ngspice mais j'avais bien galéré.
            J'entends souvent parler de LTSpice mais il n'y a pas de version linux.

            • [^] # Re: Conception de fonction vs conception de pcb

              Posté par . Évalué à 4.

              J'ai bricolé pour mes besoins personnels une interface Python pour NgSpice dénommé PySpice. Python et ses modules scientifiques offrent une alternative moderne à TCLspice et compétitive avec Matlab. C'est utilisable pour l'enseignement ou le diy, mais pas pour l’industrie au vue de la qualité de ngspice.

              J'ai ajouté récemment un parser pour lire les netlist générés par Kicad afin d'en faciliter l'écriture. Par contre je ne suis pas favorable à un environnement très intégré comme Qucs, je pense que c'est trop ambitieux pour un projet libre et non financé.

              Le dépôt est ici https://github.com/FabriceSalvaire/PySpice et la doc là http://fabricesalvaire.github.io/PySpice/

  • # Du beau boulot !

    Posté par . Évalué à 6. Dernière modification le 01/12/15 à 07:34.

    J'utilise Kicad pour des développements personnel. Après trois cartes routées, les seuls problèmes rencontrés ont été de ma faute.
    Je bute toujours sur la possibilité d'ajouter une forme quelconque en cuivre "shape" sur une empreinte mais c'est un détail.
    Deux choses qui lui manque :
    La possibilité d'importer des empreintes directement chez les fabricants. Via un autre format et une moulinette, par exemple.
    Un lien direct vers un ou des outils de simulation.

    Petit lien vers ma dernière réalisation.
    http://forum.pinguino.cc/showthread.php?tid=4718

    • [^] # Re: Du beau boulot !

      Posté par . Évalué à 1.

      Pour du personnel, je trouve KiCad très bien aussi. Par contre il n'est pas dépourvu de petits défauts/bugs ou de petits manques, j'aurais du mal à m'en servir au travail.

      Souvent le format .bxl de "Ultra Librarian" est utilisé par les constructeurs pour donner des empreintes indépendamment du logiciel de CAO mais le format n'est à ma connaissance pas ouvert. Du coup faire une moulinette n'est pas si facile.

      • [^] # Re: Du beau boulot !

        Posté par . Évalué à 1.

        Jusqu'à maintenant pour des petits trucs perso j'utilise Eagle (version gratuite) qui possède pas mal de librairies de composants.
        Comment se situe KiCad par rapport à ce dernier en terme de fonctionnalités et exhaustivité des librairies de composants ?

        • [^] # Re: Du beau boulot !

          Posté par . Évalué à 2.

          J'ai utilisé pendant longtemps eagle pour les projets perso. En terme de fonctionnalités, et grâce principalement au routeur "Push and Shove" (qui fait gagner tellement de temps de routage !), je trouve KiCad meilleur.

          Au niveau bibliothèque de composant, ce n'est pas très fourni. Il me semble par contre que l'import de fichiers eagle est possible (jamais testé, à confirmer donc), donc ça ne devrait pas être un frein.

          • [^] # Re: Du beau boulot !

            Posté par . Évalué à 2.

            Pour ce qui est des libs, on en trouve pas mal (symboles et empreintes) sur le github de upverter.
            Pour la plupart, ce sont des libs eagle converties (qu'on trouve aussi , d'ailleurs), donc pas toujours super à utiliser avec kicad, mais dans l'ensemble ça dépanne bien (et ça fait une bonne base pour créer ses propres libs, au besoin).

            On trouve aussi pas mal de libs intéressantes et créées pour kicad ici.

            • [^] # Re: Du beau boulot !

              Posté par . Évalué à 1.

              […] donc pas toujours super à utiliser avec kicad, […]

              ça pose quoi comme problème avec Kicad ?

              • [^] # Re: Du beau boulot !

                Posté par . Évalué à 1.

                Dans le cas de l'éditeur de schémas, certains symboles ne s'alignent jamais totalement sur la grille (à moins de choisir un pas ridiculement petit), ce qui ne permet pas de les connecter correctement. Du coup il faut les modifier pour les redessiner avec des pads mieux positionnés.
                Bref, rien d'insurmontable, mais ça peut vite saouler…

                Au niveau des empreintes par contre, je n'ai jamais eu de problème.

          • [^] # Re: Du beau boulot !

            Posté par . Évalué à 1.

            Si effectivement (pas vu dans la doc ?) on peut importer les fichiers eagle ça devient intéressant parce que je n'ai pas envie de tout recommencer.

    • [^] # Re: Du beau boulot !

      Posté par (page perso) . Évalué à 2.

      @xavier
      Bonjour,
      sur le post que tu mets en lien, tu dis que la carte coûte une dizaine d'euros. Cela correspond au prix unitaire pour l'achat de plusieurs cartes ou au prix pour l'achat d'une carte unique…?
      Je suppose que c'est la première solution…

      Même si ca se démocratise de plus en plus, je trouve que la fabrication de carte coûte encore un tout petit peu cher. J'aimerai vraiment voir du 100x80 sans finition pour moins de 20€ en europe…

      Olivier

      - Dans la vie, il faut toujours se fier aux apparences. Quand un homme a un bec de canard, des ailes de canard et des pattes de canards, c’est un canard. C’est vrai aussi pour les petits merdeux.

  • # Commentaire supprimé

    Posté par . Évalué à 0. Dernière modification le 01/12/15 à 10:26.

    Ce commentaire a été supprimé par l'équipe de modération.

    • [^] # spam

      Posté par (page perso) . Évalué à 3.

      Supprimé pour spam

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

  • # Retour d'utilisation

    Posté par . Évalué à 7. Dernière modification le 02/12/15 à 11:31.

    Il y a quelques temps j'avais à nouveau testé KiCad, je m'en étais détourné. Je trouvais que

    • L'éditeur de schéma était buggé, avec des problèmes d'affichage.
    • Que certains choix de l'éditeur de schéma étaient discutables, par exemple quand on déplace un symbole, les fils ne suivent pas.
    • La gestion des symboles étaient un vrai bordel.
    • L'éditeur de pcb était pas pratique.

    J'avais choisi d'utiliser la suite gEDA, bien qu'ayant un nombre de symboles plus faible que KiCad, il y a un bon point d'entrée sur les libs des utilisateurs, et la création de symboles plus facile. De plus c'est pas un vrai foutoir. L'éditeur de pcb de gEDA, plus joli, plus pratique.

    Toutefois, le routage push and shove de KiCad m'a fait réver à la lecture de ce journal.

    Ayant dessiné un circuit samedi, assez simple, un xmega à 64 pattes, un crystal, 8 capas, une résistance, un régulateur, 6 headers 1x8 (les ports de l'xmega), un header 1x3 (les alims), un header 2x5 (JTAG), un header 2x3 (PDI). Bref un truc tout simple qui se route en 5cm×5cm (pas besoin de faire moins, le prix du pcb est le même), avec plein de pistes, que j'ai envoyé dimanche en fabrication.

    Pour tester, j'ai refait la même schématique sous KiCad, l'association des footprints, et le routage du PCB. Mes conclusions au niveau de l'éditeur de schéma ne changent pas, je reste sur la même impression au niveau des libs. Par contre j'ai été littéralement bluffé par l'éditeur de PCB. Alors, l'édituer de PCB propose trois mode de rendu, le vieux, OpenGL et cairo. Chez moi, les trois fonctionnent, par contre cairo est inutilisable, car trop lent (oui je travaille sur un machin de 7 ans d'âge), par contre le rendu OpenGL tourne au poil. Il est necessaire de jongler entre les deux rendus, certaines fonctionnalités ne sont pas présentes sur les nouveaux rendus (comme le remplissage des surfaces), mais les nouvelles fonctionnalités ne sont pas présentes sur l'ancien moteur. Comme on peut faire le changement de moteur on the fly, tout va bien, roulez-jeunesse.

    Le routage push and shove est vraiment cool, il permet de tracer de nouvelles pistes qui vont bouger les anciennes pour passer, bouger les vias, bref un bonheur. On travaille beaucoup plus vite. Je n'ai que deux remarques négatives à ce propos:

    • Il est pour moi necessaire de travailler sur un écran plus grand qu'un 1024x1280, ce que j'ai utilisé. On a besoin d'avoir une vision plus large des pistes que l'on va bouger. Travailler à un niveau de zoom inférieur n'est pas pratique.

    • Il faut une souris. Jusqu'à maintenant je routais au trackpoint (oui le machin rouge au milieu de clavier), ça marchait bien, si on allait trop loin on revient. Sauf qu'avec le routage push and shove quand on va trop loin il bouge trop les pistes, et elles reviennent des fois ailleurs que leur position initiale. Bref un pointage avec trajectoire précise est necessaire, et le trackpoint fourni un pointage précis avec trajectoire imprécise. Ça fait plusieurs années que je n'utilise plus de souris ou de trackpad sur mon laptop au profit du trackpoint, et c'est la première fois que je trouve un cas où le trackpoint n'est pas adapté.

    Si j'ôte le temps passé à changer les raccourcis clavier (et c'est très facile dans KiCad) pour avoir mes automatismes (Undo c'est U, si je trouve l'idiot qui a eu l'idée du CTRL+Z, je le brûle), j'ai été vraiment très rapide avec l'éditeur de PCB de KiCad comparé à l'éditeur de PCB de gEDA. Alors oui, je savais comment placer mes composants, mais le gain est nettement supérieur.

    L'éditeur de schéma est toujours aussi faible, mais je suis prêt à l'utiliser si c'est pour, par la suite, utiliser facilement l'éditeur de PCB.

    Bref, pour mon prochain circuit, je passe à KiCad.

    • [^] # Re: Retour d'utilisation

      Posté par . Évalué à 2. Dernière modification le 02/12/15 à 13:21.

      Que certains choix de l'éditeur de schéma étaient discutables, par exemple quand on déplace un symbole, les fils ne suivent pas.

      Est-ce toujours le cas ?
      Dans un des tutoriels vidéos j'ai l'impression qu'il y a un mode où l'on peut déplacer avec les fils qui suivent ?

      • [^] # Re: Retour d'utilisation

        Posté par . Évalué à 3.

        C'est possible. Je n'ai pas suivi de tutoriel, j'y ai été à l'aveugle. Toutefois, si ce mode existe, il n'est pas activé par défaut. Je regarderai.

        • [^] # Re: Retour d'utilisation

          Posté par . Évalué à 5.

          En fait KiCad fait une différence entre "move" (raccourci M) et "drag" (raccourci G). Ce ne sont pas des modes à choisir mais juste une action différente !

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.