KiCad¶
Enlaces¶
- Creating A PCB In Everything: KiCad: Part 1, Part 2 y Part 3
- KiCad Best Practices: Library Management
- Desing Rules recomendadas para minimizar problemas en fabricación PCB's
- KiCad Templates for new projects: Plantillas con ajustes adecuados para distintos fabricantes de PCBs.
- Sizing Logos in KiCAD
- Librería de componentes de JLCPCB para Assembly Service
- Calculadoras de conversión en línea por DigiKey
- Svg2Shenzhen: Inkscape extension for exporting drawings into a KiCad PCB.
- Descarga de footprints y modelos 3D:
- Interactive HTML BOM plugin for KiCad
- Herramientas de Jan Mrázek:
- KiKit: Automation for KiCAD: panelization, automatic DRC check, generating assembly data.
- PcbDraw, Pinion: Making nice pinout diagrams for your boards
- JLCPars: Parametric search for electronics components
- YSpurGear, YBevelGear: Parametric generators for gears in Fusion 360 which allow you to edit the gear parameters in history.
- Uso de etiquetas en KiCad para la conexión de componentes
- Best practices and considerations when designing your PCB
- Solder-stencil.me: Aplicación/servicio para generar STLs a partir de los Gerber para imprimir stencils con una impresora 3D.
Gestión de librerías¶
-
Crear la siguiente estructura de directorios al crear un nuevo proyecto:
1 2 3 4 5 6 7 8
mi_proyecto ↳3d_models // .STEP and .WRL model files for all footprints ↳datasheets // data sheets for components used ↳gerber // final production files ↳images // SVG images and 3D board renders ↳lib_sch // schematic symbols ↳lib_fp.pretty // footprints ↳pdf // schematics, board layouts, dimension drawings
-
Conforme se va editando un esquemático, KiCad va incorporando todos los símbolos utilizados (procedentes de las librerías de la aplicación y de las creadas para el proyecto) a una librería de backup llamada "mi_proyecto-cache.lib". Una vez que el esquemático esté completo, copiar dicha librería al directorio
lib_sch
, renombrándola para quitar el sufijo-cache
del nombre, es decir quedandolib_sch/mi_proyecto.lib
. -
En el editor del esquemático abrir el comando de menú
Preferencias > Administrar librerías de símbolos...
, seleccionar la pestañaLibrerías específicas del proyecto
y añadir la librería que hemos copiado en el paso anterior por medio del botón con forma de carpeta (Add existing library to table
). De esta forma nunca perderemos los símbolos utilizados durante la creación del esquema (se podrían modificar al actualizar las librerías del programa):
Una alternativa a la forma de trabajar anterior es recoger todos los símbolos y footprints generados en una librería independiente que se pueda añadir a todos los proyectos, una especie de repositorio personal. La incorporaremos como un submódulo git. Para ello seguir estos pasos:
-
Inicializar un repositorio git para el proyecto:
$ cd mi_proyecto $ git init
-
Instalar la librería como un submódulo git en un directorio llamado
lib
:$ git submodule add git@github.com:eduardofilo/kicad_footprints.git lib
-
Añadir la librería de símbolos desde
Preferences > Manage Symbol Libraries... > Project Specific Libraries
: -
Y la librería de footprints desde
Preferences > Manage Footprint Libraries... > Project Specific Libraries
:
Workflow¶
En general KiCad se utiliza con atajos de teclado. Para obtener los atajos de teclado que sirven en una de las aplicaciones, pulsar Ctrl+F1
.
- Crear proyecto:
- Desde la ventana principal del programa,
File > FNew > Project...
- Desde la ventana principal del programa,
- Diseñar símbolo:
- Abrir el programa
Symbol Editor
. - Para mantener los ficheros del nuevo símbolo, escoger uno de estos caminos en función de si se quiere mantener el símbolo exclusivamente dentro del proyecto o de forma global:
- Crear una nueva librería con el comando
File > New Library...
en el directoriolib_sch
. En el popupAdd To Library Table
que aparece seleccionar la opciónProject
. - Instalar a nivel global (
Preferences > Manage Symbol Libraries...
) las que se mantienen en este repositorio.
- Crear una nueva librería con el comando
- Seleccionar la librería recien creada o importada y pulsar el botón
Create new symbol
. - Se nos preguntará por la librería donde incorporarlo. Seleccionar la que acabamos de crear (aparecerá al final).
- Rellenar el cuadro
Symbol Properties
. Fundamentalmente tenemos que dar un nombre para el componente. - Crear el símbolo del componente utilizando fundamentalmente los siguientes atajos de teclado:
M
: Mover objeto.P
: Crear pin. El círculo al final de la línea representa el punto donde se hará la conexión.Supr
: Eliminar objeto.
- Decorar el símbolo con las herramientas de dibujo.
- Guardar los cambios.
- Abrir el programa
- Diseñar esquemático:
- Abrir el programa
Schematic Layout Editor (eeschema)
. - Añadir los símbolos que van a componer el esquemático con la ayuda de los siguientes atajos:
A
: Añadir símbolo.P
: Añadir fuente de alimentación o masa.C
: Copiar símbolo.
- Una vez que tengamos todos los símbolos a la vista los reorganizaremos y cablearemos con los siguientes atajos de teclado:
M
: Mover objeto (rompe las conexiones).G
: Arrastrar objeto (mantiene las conexiones).R
: Rotar objeto.E
: Editar propiedades del objeto como Referencia (U
), Valor (V
) o Footprint (F
).W
: Conexión entre símbolos.K
: Terminar el trazado de una conexión.Q
: Añadir no conexión.L
: Añadir etiqueta de red.I
: Añadir polilínea.T
: Añadir texto.
- Dar valores a los componentes que lo necesiten (Resistencias, Condesadores, Diodos, etc.) con el atajo
V
oE
. - Dar nombre a los componentes. Se puede hacer automáticamente con la herramienta de anotación a la que se accede con el botón de la barra superior.
- Abrir el programa
- Asociar símbolos del esquemático con huellas PCB ejecutando CvPCB. . Aprovechar los botones de filtrado, sobre todo
Filter footprint list using a partial name or a pattern
. - Diseñar las huellas que no se encuentren en la librería:
- Abrir el programa
Footprint Editor
. - Para mantener los ficheros de la nueva huella, escoger uno de estos caminos en función de si se quiere mantener exclusivamente dentro del proyecto o de forma global:
- Crear una nueva librería con el comando
File > New Library...
en el directoriolib_fp.pretty
. En el popupSelect Library Table
que aparece seleccionar la opciónProject
. - Instalar a nivel global (
Preferences > Manage Footprint Libraries...
) las que se mantienen en este repositorio en el directorioeduardofilo_footprints.pretty
.
- Crear una nueva librería con el comando
- Seleccionar en la lista de librerías la que acabamos de crear o incorporar en el paso anterior. De esta forma la nueva huella que vamos a crear se creará dentro de esta librería.
- Pulsar el botón
New footprint
. - Darle nombre en el popup que aparece.
- Crear la huella utilizando fundamentalmente los siguientes atajos de teclado:
M
: Mover objeto.R
: Rotar objeto.- Add pad:
E
: Editar propiedad de objeto. Cuando se aplica sobre los pads es importante asignar correctamente el valor delPad number
ya que es como se enlazan los símbolos con las huellas.
- Decorar la huella con las herramientas de dibujo.
- Guardar los cambios.
- Abrir el programa
- Diseñar la PCB:
- En
Schematic Layout Editor (eeschema)
pulsar el botónGenerate netlist
. - En el popup que aparece pulsar el botón
Generate Netlist
. - Guardar el fichero que genera en la raíz del proyecto.
- Abrir el programa
PCB Layout Editor (pcbnew)
. - Importar el netlist utilizando el botón
Load netlist
. - En el popup que aparece seleccionar el fichero que hemos generado en el punto 3 anterior.
- Pulsar el botón
Update PCB
. - Cerrar el popup y hacer clic sobre la PCB para colocar las huellas.
- Utilizando los atajos
M
yR
recolocar todos los componentes como más convenga. - Ocultar las etiquetas que no interesen, pulsando
E
sobre ellas y desmarcando el checkVisible
. - Dibujar el perfil de la PCB con las herramientas de dibujo en la capa
Edge.Cuts
. - Rutear haciendo uso de los siguientes atajos de teclado:
X
: Añadir pista.V
: Añadir vía.M
: Mover componente.R
: Rotar componente.D
: Arrastrar pista.
- Crear las zonas rellenas de cobre (normalmente para las nets +5V y GND):
- Seleccionar la capa donde queremos crear la zona rellena de cobre (
F.Cu
oB.Cu
normalmente). - Seleccionar la herramienta
Add filled zones
. - Delimitar una superficie que englobe la parte de la PCB que queremos rellenar de cobre. Al pinchar el primer vértice aparecerá una ventana en la que tendremos que indicar las propiedades de la zona a rellenar donde indicaremos la net y la capa de cobre.
- En caso de modificar las pistas más adelante, pulsar
B
para recalcular las zonas rellenas de cobre.
- Seleccionar la capa donde queremos crear la zona rellena de cobre (
- Ejecutar las DRC pulsando el botón
Perform design rules check
.
- En
- Exportar Gerber:
- Pulsar el botón
Plot (HPGL, Postscript, or GERBER format)
. - En la ventana que aparece, seleccionar las capas que queremos incluir y las opciones que se ven a continuación e indicar el directorio
gerber
del proyecto (en esta página se muestran las opciones más recomendables para JLCPCB). - Pulsar el botón
Plot
. - Pulsar el botón
Generate Drill Files
y en la nueva ventana que aparece encima pulsar el botónGenerate Drill File
.
- Pulsar el botón
- Exportar BOM:
- Pulsar el botón
Generate bill of materials
. - De la lista
BOM plugins
que aparece seleccionarbom2grouped_csv
y pulsarGenerate
.
- Pulsar el botón
- Cambios en esquemático y propagación:
- Hacer el cambio en
Schematic Layout Editor (eeschema)
. - Dar nombre a los nuevos componentes. Se puede hacer automáticamente con la herramienta de anotación a la que se accede con el botón de la barra superior.
- Volver a
PCB Layout Editor (pcbnew)
y pulsar el botónUpdate PCB from schematic
. - En el popup que aparece pulsar el botón
Update PCB
. Nos hará un informe de los cambios. En caso de que los cambios impliquen componentes nuevos, cuando lo cerremos se nos cargarán en el cursor para incorporarlos al PCB.
- Hacer el cambio en
Las capas más importantes son:
F.Cu
: Capa superior de cobre. Atajo de teclado:RePag
.B.Cu
: Capa inferior de cobre. Atajo de teclado:AvPag
.Edge.Cuts
: Perfil de corte de la PCB.F.SilkS
: Silkscreen superior o capa donde se representan los símbolos y textos de los componentes habitualmente en blanco.B.SilkS
: Silkscreen inferior.F.Mask
: Máscara de soldado superior, habitualmente en verde.B.Mask
: Máscara de soldado inferior.
Generación modelo 3D de la placa¶
Es recomendable instalar los paquetes recomendados con apt cuando se instala KiCad. Se puede hacer con la siguiente opción en el comando de instalación:
$ sudo apt install --install-recommends kicad
En caso de no tener las librerías de paquetes 3D o querer forzar el tener la última versión de Github, se puede proceder como sigue:
-
Bajar el repositorio con los modelos de los componentes:
cd ~/git git clone git@gitlab.com:kicad/libraries/kicad-packages3D.git
-
Abrir el menú `Preferencias > Configure Paths...".
-
Configurar el repositorio recien bajado como la nueva ruta de la librería
KISYS3DMOD
(originalmente la ruta es/usr/share/kicad/modules/packages3d/
):)
-
En Pcbnew editar las propiedades de las huellas y en la solapa
Opciones 3D
añadir la ruta del modelo 3D o ajustarla si es que existe.)
-
Abrir el menú
Ver > Visor 3D
.
Designación de componentes¶
Referencia | Tipo de componente |
---|---|
A | Separable assembly or sub-assembly (e.g. printed circuit assembly) |
AT | Attenuator or isolator |
BR | Bridge Rectifier |
BT | Battery |
C | Capacitor |
CN | Capacitor network |
D | Diode (including zeners, thyristors and LEDs) |
DL | Delay line |
DS | Display |
F | Fuse |
FB or FEB | Ferrite bead |
FD | Fiducial |
FL | Filter |
G | Generator or oscillator |
GN | General network |
H | Hardware |
HY | Circulator or directional coupler |
J | Jack (least-movable connector of a connector pair) | Jack connector (connector may have "male" pin contacts and/or "female" socket contacts) |
JP | Link (Jumper) |
K | Relay or contactor |
L | Inductor or coil or ferrite bead |
LS | Loudspeaker or buzzer |
M | Motor |
MK | Microphone |
MP | Mechanical part (including screws and fasteners) |
P | Plug (most-movable connector of a connector pair) | Plug connector (connector may have "male" pin contacts and/or "female" socket contacts) |
PS | Power supply |
Q | Transistor (all types) |
R | Resistor |
RN | Resistor network |
RT | Thermistor |
RV | Varistor |
S | Switch (all types, including push-buttons) |
T | Transformer |
TC | Thermocouple |
TUN | Tuner |
TP | Test point |
U | Inseparable assembly (e.g., integrated circuit) |
V | Vacuum Tube |
VR | Variable Resistor (potentiometer or rheostat) |
X | Socket connector for another item not P or J, paired with the letter symbol for that item (XV for vacuum tube socket, XF for fuse holder, XA for printed circuit assembly connector, XU for integrated circuit connector, XDS for light socket, etc.) |
Y | Crystal or oscillator |
Z | Zener Diode |
Componentes¶
Tiendas¶
- LCSC
- Viinko Electronics HK Ltd: Acepta pedidos BOM.
Componentes interesantes, Símbolos y footprints propios KiCad¶
En este repositorio.
Antes de crear los símbolos o los footprints, tratar de buscarlos en sitios como SnapEDA.
Componente | Symbol | Footprint | Compra | Observaciones |
---|---|---|---|---|
Resistencia 1/4W P=10,16mm | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal |
Resistencia convencional | ||
Condensador cerámico 100nF P=2,54mm | Capacitors_ThroughHole:C_Disc_D3.0mm_W1.6mm_P2.50mm |
Bypass capacitor convencional | ||
LED D=5mm | LED_THT:LED_D5.0mm |
LED convencional 5mm | ||
USB micro-B | Connect:USB_Micro-B |
LCSC | Conector microUSB con terminales SMD y 4 agujeros para chasis | |
Lector microSD | Connector_Card:microSD_HC_Hirose_DM3AT-SD-PEJMS |
LCSC | Ranura microSD inserción lateral | |
Lector microSD | Connector_Card:microSD_HC_Wuerth_693072010801 |
LCSC | Ranura microSD inserción con portezuela superior | |
Lector microSD | LCSC | Ranura microSD inserción deslizante para interior | ||
Transistor TO-92 | Package_TO_SOT_THT:TO-92L_Inline_Wide o Package_TO_SOT_THT:TO-92L_HandSolder |
Transistor convencional, como NPN 2N3904 | ||
Tactile button 6mm | Buttons_Switches_ThroughHole:SW_PUSH_6mm |
LCSC | Tactile switch 6mm convencional | |
AY-8760 | eduardofilo_symbols.kicad_sym/AY-3-8760 | Package_DIP:DIP-28_W15.24mm_Socket_LongPads |
||
Portapilas 2xAA | eduardofilo_symbols.kicad_sym/Battery_Holder | eduardofilo_footprints.pretty/BatteryHolder_Keystone_1013.kicad_mod | LCSC | Keystone 1013 |
Portapilas CR2032 | eduardofilo_symbols.kicad_sym/BS-7 | eduardofilo_footprints.pretty/BAT_BS-7.kicad_mod | LCSC | |
Portapilas LR44 | Device:Battery_Cell |
eduardofilo_footprints.pretty/BatteryHolder_Keystone_2997_1x12mm.kicad_mod | Digikey | Keystone 2997 |
Cargador batería Li y regulador de tensión | eduardofilo_symbols.kicad_sym/DD05CVSA | eduardofilo_footprints.pretty/DD05CVSA.kicad_mod | Aliexpress | |
MicroSD holder | eduardofilo_symbols.kicad_sym/Micro_SD_Cd | eduardofilo_footprints.pretty/Micro_SD_Cd.kicad_mod | Aliexpress; LCSC | |
Pantalla OLED SSD1306-I2C | eduardofilo_symbols.kicad_sym/OLED-SSD1306-I2C | eduardofilo_footprints.pretty/OLED-SSD1306-I2C.kicad_mod | Aliexpress | |
Pantalla OLED SSD1306-SPI | eduardofilo_symbols.kicad_sym/OLED-SSD1306-SPI | eduardofilo_footprints.pretty/OLED-SSD1306-SPI.kicad_mod | Aliexpress 0,96"; Aliexpress 1,54" | |
Potenciómetro | Device:R_POT |
eduardofilo_footprints.pretty/Potentiometer_Alpha_RD901F-40-00D_Single_Vertical_mod.kicad_mod | LCSC | |
Raspberry Pi Pico | eduardofilo_symbols.kicad_sym/raspberrypi-pico-module | eduardofilo_footprints.pretty/raspberrypi-pico-module.kicad_mod | ||
Raspberry Pi Pico | Símbolo de ncarandini | Footprint de ncarandini | ||
SCART conector | Connector:SCART-F |
eduardofilo_symbols.kicad_sym/SCART.kicad_mod | Aliexpress | |
SNES conector | eduardofilo_symbols.kicad_sym/SNES_Connector | eduardofilo_symbols.kicad_sym/SNES.kicad_mod | Aliexpress | |
Switch horizontal | eduardofilo_symbols.kicad_sym/SK12D07VG4 | Button_Switch_THT:SW_CuK_OS102011MA1QN1_SPDT_Angled |
LCSC | Interruptor horizontal SPDT con 2mm de pitch |
Switch horizontal | eduardofilo_symbols.kicad_sym/SS-12F44-G5 | eduardofilo_footprints.pretty/SS-12F44-G5.kicad_mod | LCSC | Interruptor vertical SPDT con 3mm de pitch |
Switch horizontal | Switch:SW_SPDT |
eduardofilo_footprints.pretty/SW_SPDT_Angled.kicad_mod | LCSC | Interruptor horizontal SPDT con 2,5mm de pitch sin terminales de chasis |
Switch horizontal | Switch:SW_DPDT_x2 |
Button_Switch_THT:SW_E-Switch_EG1271_DPDT |
Digikey, Digikey, Digikey, Digikey | Interruptor horizontal DPDT con 2,5 de pitch sin terminales de chasis |
Switch tactile goma 8mm | Switch:SW_Push |
eduardofilo_footprints.pretty/SW_PUSH_8mm_2pin.kicad_mod | Aliexpress | |
Logo Niubit | eduardofilo_footprints.pretty/NiubitLogo.kicad_mod | |||
Vibrador | Motor:Motor_DC |
eduardofilo_footprints.pretty/Vibrator_Seeed_316040005.kicad_mod | Digikey | |
Barrel jack 2.3mm | Connector:Jack-DC |
eduardofilo_footprints.pretty/Barrel_jack_PJ1-023.kicad_mod | Digikey | También compatible con PJ1-022 |
Barrel jack 5.5mm | Connector:Jack-DC |
Connector_BarrelJack:BarrelJack_Wuerth_6941xx301002 |
LCSC | |
Zócalo 8 pin (ATtiny85) | Housings_DIP:DIP-8_W7.62mm |
Zócalo DIP-8 convencional |
Valores habituales de resistencias¶
A pesar de que se fabrican resistencias de prácticamente cualquier valor, como tienen una tolerancia de fabricación amplia (lo normal es utilizar resistencias de en torno al 1-5% de tolerancia), lo habitual es utilizar valores nominales que comiencen con los siguientes valores: 1.0, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9, 4.7, 5.6, 6.8, 8.2
Aquí puede verse una tabla donde se ven los valores normalizados en función de la tolerancia (a menor tolerancia mayor número de valores normalizados).
Panelización¶
Después de una mala experiencia con GerberTools descrita en este post, se encuentra el pack de utilidades KiKit que funciona mucho mejor.
En cuanto a la instalación, sobre la versión 1.7.10 de KiCad, no aparecia el plugin panelize
en el menú Tools > External Plugins...
, por lo que instalo la versión unstable:
$ pip3 install git+https://github.com/yaqwsx/KiKit@master
$ kikit-plugin enable --all
$ kikit-plugin registerlib
Aunque se puede parametrizar desde la utilidad que hay en el menú mencionado antes, es mejor utilizar directamente la utilidad de línea de comando, para lo que conviene consultar los siguientes documentos:
Un ejemplo sería:
kikit panelize \
--layout 'rows: 1; cols: 2; rotation: 180deg; alternation: cols;' \
--source 'tolerance: 50mm;' \
--post 'millradius: 0.5mm' \
--cuts vcuts \
--tabs 'type: fixed; hcount: 2; hwidth: 3mm;' \
vibrabot.kicad_pcb panel.kicad_pcb