20
KiCAD & FreeCAD J.-M Friedt Introduction Sch´ ema Simulation SPICE Dessiner sa propre empreinte Routage ecanique – insertion dans FreeCAD Script Python Conclusion Outils libres de conception assist´ ee par ordinateur : KiCAD et FreeCAD J.-M Friedt FEMTO-ST/d´ epartement temps-fr´ equence,Besan¸con [email protected] transparents ` a jmfriedt.org/rezo_elec2019.pdf 15 octobre 2019 1 / 20

FreeCAD Outils libres de conception assist ee par ordinateur ...jmfriedt.org/rezo_elec2019.pdf.subckt opamp 1 2 3 rin 1 2 2meg e 3 0 1 2 100k.ends opamp e1-+ OUT 5= 10 R in 2 M 5.J.-M

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Outils libres de conception assistée parordinateur : KiCAD et FreeCAD

    J.-M Friedt

    FEMTO-ST/département temps-fréquence, Besançon

    [email protected]

    transparents à jmfriedt.org/rezo_elec2019.pdf

    15 octobre 2019

    1 / 20

    jmfriedt.org/rezo_elec2019.pdf

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Objectif : asservissementnumérique d’un oscillateur à

    quartz sur GPSContexte :• un oscillateur à quartz est stable sur le court terme mais dérive sur

    le long terme (>1 s)• GPS est un système de datation précis fournissant un signal (1 PPS)

    avec une exactitude de l’ordre de 100 ns toutes les secondes• Objectif : contrôle du quartz cadençant un microcontrôleur sur le

    1 PPS de GPS⇒

    1 architecture générale du système2 mise en œuvre du microcontrôleur et composants passifs

    périphériques (quartz, reset/programmation. communication)3 simulation du filtre (PWM → DAC)4 routage en respectant des contraintes mécaniques5 insertion du circuit dans FreeCAD, réalisation du bôıtier en

    impression additive6 script Python

    2 / 20

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Objectif : architecture du système

    récepteurGPS

    1.57 GHzAtmega

    projet

    1 PPS

    1 s

    32u{2,4}(Thalès AC12, Motorola Oncore)

    1 microcontrôleur + périphériques

    2 varicap en parallèle d’un condensateur de pieds pour tirer lafréquence du quartz

    3 mesure de l’intervalle entre deux impulsions 1 PPS par InputCapture

    4 pas de DAC ⇒ PWM (rapport cyclique) et filtre passe bas

    3 / 20

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Principe de KiCAD 2 3

    Debian/GNU Linux :apt-get install kicad kicad-packages3d kicad-footprints kicad-symbols kicad-templates︸ ︷︷ ︸

    kicad-librariesversion 5.1.4(354 MB de packages 3D !)aussi fonctionnel sous MS-Windows & MacOS XCréé en 1992 by J.-P. Charras (IUT de Grenoble), pris en main par leCERN en 2013, soutenu par Digikey 1 ... un outil spécifique par étape• schéma (Schematic Layout Editor) – Electrical Rules Check• assignation des bôıtiers à chaque composant• exporter netlist qui fait le lien avec le routeur• Pcbnew (printed circuit board) – Design Rules Check• export STEP/VRML (CAD) & Gerber/PDF• depuis la version 5 de KiCAD, importe les projets Eagle

    1. W. Stambaugh, KiCad Project Status, FOSDEM 2017 – rachat de CADSoft parAutodesk, à https://archive.fosdem.org/2017/schedule/event/kicad_status/

    2. W. Stambaugh, KiCad Version 5 New Feature Demo, FOSDEM 2018, àhttps://archive.fosdem.org/2018/schedule/event/cad_kicad_v5/

    3. W. Stambaugh, KiCad Project Status, FOSDEM 2019, àhttps://archive.fosdem.org/2019/schedule/event/kicad/

    4 / 20

    https://archive.fosdem.org/2017/schedule/event/kicad_status/https://archive.fosdem.org/2018/schedule/event/cad_kicad_v5/https://archive.fosdem.org/2019/schedule/event/kicad/

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Schéma

    • “M”ove pour déconnecter les fils, “G”rab pour conserver les fils connectés lorsdu déplacement

    • “R”otate déconnecte les fils• Not connected (“x”) pour valider Electrical Rule Check• “Coccinnelle” Electrical Rule Check : NC (“x”) et PWR FLAG sur masse pour

    éviter les warnings 5 / 20

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Simulation SPICE

    • Composant spécifique SPICE (Add → pspice → VSOURCE)• Définition des propriétés de la source dans sa valeur• Désactiver les composants qui ne font pas partie de la simulation

    (Edit → Edit Spice Model → Disable symbol for simulation)• Tools → Simulator → Simulation → Settings• Run/Stop Simulation → Probe pour sélectionner le point de mesure• Simulation → Show SPICE Netlist pour récupérer le fichier ngspice

    6 / 20

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Modélisation de l’amplificateuropérationnel

    Utilisation de SPICE (Simulation Program with Integrated CircuitEmphasis – Univ. Berkeley, CA) et sa version opensource ngspice 4

    • filtre passe-bas : modélisation d’un amplificateur opérationnel idéal• ampli-op idéal : source de tension commandée en tension avec fort

    gain, suivi de passe bas pour une bande passante finie (éviter oscillations)

    * +in (=1) -in (=2) out (=3) -- 100k=gain, rbw.cbw=LPF, eout=suiveur

    .subckt opamp 1 2 3

    e 3 0 1 2 100k

    .ends opamp

    e1

    -

    + OUT

    β = 105

    4. J.-M Friedt, Introduction à SPICE3 : simulation de circuits électroniques, etau-delà, OpenSilicum 1 (Janvier-Mars 2011) à jmfriedt.free.fr/lm_spice.pdf etcours de Rémy Brendel à http://jmfriedt.free.fr/Spice3.pdf

    7 / 20

    jmfriedt.free.fr/lm_spice.pdfhttp://jmfriedt.free.fr/Spice3.pdf

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Modélisation de l’amplificateuropérationnel

    Utilisation de SPICE (Simulation Program with Integrated CircuitEmphasis – Univ. Berkeley, CA) et sa version opensource ngspice 5

    • filtre passe-bas : modélisation d’un amplificateur opérationnel idéal• ampli-op idéal : source de tension commandée en tension avec fort

    gain, suivi de passe bas pour une bande passante finie (éviter oscillations)

    * +in (=1) -in (=2) out (=3) -- 100k=gain, rbw.cbw=LPF, eout=suiveur

    .subckt opamp 1 2 3

    rin 1 2 2meg

    e 3 0 1 2 100k

    .ends opamp

    e1

    -

    + OUT

    β = 105

    Rin

    =2

    MΩ

    5. J.-M Friedt, Introduction à SPICE3 : simulation de circuits électroniques, etau-delà, OpenSilicum 1 (Janvier-Mars 2011) à jmfriedt.free.fr/lm_spice.pdf etcours de Rémy Brendel à http://jmfriedt.free.fr/Spice3.pdf

    8 / 20

    jmfriedt.free.fr/lm_spice.pdfhttp://jmfriedt.free.fr/Spice3.pdf

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Modélisation de l’amplificateuropérationnel

    Utilisation de SPICE (Simulation Program with Integrated CircuitEmphasis – Univ. Berkeley, CA) et sa version opensource ngspice 6

    • filtre passe-bas : modélisation d’un amplificateur opérationnel idéal• ampli-op idéal : source de tension commandée en tension avec fort

    gain, suivi de passe bas pour une bande passante finie (éviter oscillations)

    * +in (=1) -in (=2) out (=3) -- 100k=gain, rbw.cbw=LPF, eout=suiveur

    .subckt opamp 1 2 3

    rin 1 2 2meg

    e 4 0 1 2 100k

    rbw 4 3 0.5meg

    cbw 3 0 31.85nf

    .ends opamp

    -

    + OUT

    e1

    β = 105

    Rin

    =2

    MΩ

    6. J.-M Friedt, Introduction à SPICE3 : simulation de circuits électroniques, etau-delà, OpenSilicum 1 (Janvier-Mars 2011) à jmfriedt.free.fr/lm_spice.pdf etcours de Rémy Brendel à http://jmfriedt.free.fr/Spice3.pdf

    9 / 20

    jmfriedt.free.fr/lm_spice.pdfhttp://jmfriedt.free.fr/Spice3.pdf

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Modélisation de l’amplificateuropérationnel

    Utilisation de SPICE (Simulation Program with Integrated CircuitEmphasis – Univ. Berkeley, CA) et sa version opensource ngspice 7

    • filtre passe-bas : modélisation d’un amplificateur opérationnel idéal• ampli-op idéal : source de tension commandée en tension avec fort

    gain, suivi de passe bas pour une bande passante finie (éviter oscillations)

    -

    + OUT

    β = 1

    e1

    β = 105Rin

    =2

    MΩ 1

    2

    4 5 36

    eout

    XAlternate node sequence: 3 2 6pour faire correspondre le modèle SPICEavec notre assignation de broches

    7. J.-M Friedt, Introduction à SPICE3 : simulation de circuits électroniques, etau-delà, OpenSilicum 1 (Janvier-Mars 2011) à jmfriedt.free.fr/lm_spice.pdf etcours de Rémy Brendel à http://jmfriedt.free.fr/Spice3.pdf

    10 / 20

    jmfriedt.free.fr/lm_spice.pdfhttp://jmfriedt.free.fr/Spice3.pdf

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Simulation SPICE (ngspice)• Charger un modèle : Edit Spice Model → Model → Library et charger fichier

    du sous-circuit (.lib rédigé avec son éditeur favori), sélectionner le Model etType=Subcircuit

    • Possibilité de charger des modèles “complexes”, e.g. pour le TL081 (maispolynôme de LTSpice) http://www.ti.com/product/TL081/toolssoftware

    • Alternate Node Sequence pour faire correspondre broches du modèle et ducomposant (3 2 7 4 6 avec modèle TL081, 3 2 6 avec modèle idéal sans alim.)

    • Tune pour balayer la valeur d’un composant et voir son impact sur la fonctionde transfert

    11 / 20

    http://www.ti.com/product/TL081/toolssoftware

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Simulation SPICE (ngspice)• Charger un modèle : Edit Spice Model → Model → Library et charger fichier

    du sous-circuit (.lib rédigé avec son éditeur favori), sélectionner le Model etType=Subcircuit

    • Possibilité de charger des modèles “complexes”, e.g. pour le TL081 (maispolynôme de LTSpice) http://www.ti.com/product/TL081/toolssoftware

    • Alternate Node Sequence pour faire correspondre broches du modèle et ducomposant (3 2 7 4 6 avec modèle TL081, 3 2 6 avec modèle idéal sans alim.)

    • Tune pour balayer la valeur d’un composant et voir son impact sur la fonctionde transfert

    12 / 20

    http://www.ti.com/product/TL081/toolssoftware

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Ajout d’une empreinte manquanteSymbol Editor Footprint Editor

    Pas de lien entre symbole 8 et empreinte : le projet assignera l’empreinteau symbole (CvPcb) 9

    8. https://techexplorations.com/blog_kicad-5-recipe-how-to-create-a-new-component-symbol/

    9. P. Dalmaris, Kicad Like a Pro. Learn the World’s Favourite Open Source PCBElectronic Design, Tech Explorations (2016) 13 / 20

    https://techexplorations.com/blog_kicad-5-recipe-how-to-create-a-new-component-symbol/https://techexplorations.com/blog_kicad-5-recipe-how-to-create-a-new-component-symbol/

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Routage• 2-couches (bottom = plan de

    masse)

    • se rappeler de la fonction dechaque composant dans leschéma lors du placement

    • quartz au plus près dumicrocontrôleur pour éviterl’inductance des pistes

    • condensateurs de pieds au plusprès du quartz

    • condensateurs de découplageau plus près des alimentations(coins)

    • surface = prix de fabrication /v.s. nombre de couches

    • matrice de vias : click droit survia et “Create Array”

    14 / 20

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Réalisation• “Coccinnelle” (Design RuleCheck) pour vérifier le respectdes contraintes de la classe ducircuit imprimé

    • Réalisation : gravure à l’anglaise• Fraisage des deux faces

    (gerber), perçage (excellon)

    www.cnc-routers.ie/wp-content/uploads/2010/08/milling pcb.jpg

    15 / 20

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Conceptionmécanique-électronique

    Est-ce que le circuit rentrera dans son bôıtier ?Vis : greffon Fasteners Workbench

    KiCAD exporte un fichier STEP (penser à définir lecontour du circuit en Edge.Cuts et Add Graphics Line) ou VRML ...,... FreeCAD importe un fichier STEP ou VRML :

    16 / 20

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Conceptionmécanique-électronique

    Est-ce que le circuit rentrera dans son bôıtier ?Vis : greffon Fasteners Workbench

    KiCAD exporte un fichier STEP (penser à définir lecontour du circuit en Edge.Cuts et Add Graphics Line) ou VRML ...,... FreeCAD importe un fichier STEP ou VRML :

    17 / 20

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Impression additive du bôıtier

    • Réalisation du circuit imprimé en gravure anglaise (Gerber)• Surface (STL) → commande de la tête d’impression et du plateau

    G-code par le logiciel CURA fourni par Ultimaker 10

    • taux de remplissage : 70%• durée d’impression : 2h41• masse de plastique : 20 g (2,55 m) ...• soit un coût de : < 0, 7 euro de matière

    10. https://github.com/Ultimaker/Cura18 / 20

    https://github.com/Ultimaker/Cura

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Interagir avec KiCAD en Python 11

    Les fichiers stockés par KiCAD sont en ASCII et limpides à lire

    (pad 29 smd rect (at 5.7 -0.8) (size 1.5 0.55) (layers F.Cu F.Paste F.Mask))

    ...

    (fp_line (start 1 0.6) (end -1 0.6) (layer F.Fab) (width 0.1))

    ...

    (via (at 37.1 32.2) (size 0.6) (drill 0.4) (layers F.Cu B.Cu) (net 2))

    (segment (start 37.1 32.2) (end 37.2 32.2) (width 0.25) (layer B.Cu) (net 2) (tstamp 59845870))

    ...

    et donc à éditer avec son outil favori (sed)apt-get install python3-wxgtk4.0 pourPCBNew → Tools → Scripting ConsoleExemple :i m p o r t pcbnewboard=pcbnew . GetBoard ( )newvia=pcbnew . VIA ( board )newvia . S e t L a y e r P a i r ( pcbnew . PCBNEW LAYER ID START , →

    ↪→pcbnew . PCBNEW LAYER ID START+31)newvia . S e t P o s i t i o n ( pcbnew . wxPoint (15000000 ,15000000) )newvia . SetViaType ( pcbnew . VIA THROUGH)newvia . SetWidth (1000000)board . Add ( newvia )pcbnew . R e f r e s h ( )

    t x t = pcbnew . TEXTE PCB( board )t x t . SetText ( "Hello" )t x t . S e t P o s i t i o n ( pcbnew . wxPoint (22000000 , 15000000) )t x t . S e t H o r i z J u s t i f y ( pcbnew . GR TEXT HJUSTIFY CENTER)t x t . S e t T e x t S i z e ( pcbnew . wxSize (1000000 , 1000000) )t x t . S e t T h i c k n e s s (200000)board . Add ( t x t )pcbnew . R e f r e s h ( )

    Unité : 10−6 mmhttp://docs.kicad-pcb.org/

    doxygen/layers__id__colors_

    _and__visibility_8h.html

    F_Cu = PCBNEW_LAYER_ID_START,

    B_Cu = PCBNEW_LAYER_ID_START+31

    11. https ://kicad.mmccoo.com/kicad-scripting-table-of-contents/ (pour KiCAD 4)19 / 20

    http://docs.kicad-pcb.org/doxygen/layers__id__colors__and__visibility_8h.htmlhttp://docs.kicad-pcb.org/doxygen/layers__id__colors__and__visibility_8h.htmlhttp://docs.kicad-pcb.org/doxygen/layers__id__colors__and__visibility_8h.html

  • KiCAD &FreeCAD

    J.-M Friedt

    Introduction

    Schéma

    Simulation SPICE

    Dessiner sapropre empreinte

    Routage

    Mécanique –insertion dansFreeCAD

    Script Python

    Conclusion

    Conclusionempowered by

    • KiCAD + FreeCAD (+CURA) : châıne complètede co-conception électronique/mécanique libre 12,incluant simulation SPICE (ngspice)• un outil par étape : Eeschema pour le circuit → CvPcb

    assigne les empreintes → PcbNew routage (→ 3DViewer, gerbview)• communication entre outils par la Netlist• formats lisibles et modifiables par scripts (sed)• échange avec FreeCAD en VRML ou STEP : modèle mécanique du

    circuit, incluant connecteurs et composants encombrants• API Python pour interagir avec schéma, board ou modèle

    mécanique (e.g. conception d’antennes 13)

    Transparents :jmfriedt.org/

    rezo_elec2019.pdf

    12. liberté de compiler sur la plateforme de son choix, de modifier/corriger les erreurs,distribuer les sources et installer légalement sur le nombre de postes nécessaire

    13. J.-M Friedt, É. Carry, O. Testault, Petites antennes réalisées par impressionadditive : de la conception à la visualisation des diagrammes de rayonnement (en vraiet en virtuel), Hackable 31, pp.80-96 (Oct-Nov. 2019) 20 / 20

    jmfriedt.org/rezo_elec2019.pdfjmfriedt.org/rezo_elec2019.pdf

    IntroductionSchémaSimulation SPICEDessiner sa propre empreinteRoutageMécanique – insertion dans FreeCADScript PythonConclusion