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
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