PCB panelization with KiCad & Kikit

Hi there ! :waving_hand:

I’m starting a new project with a custom rotary encoder PCB… A tiny one for a specific use in a control panel :

I’m using KiCad 9 with the (excellent) Kikit plugin to make a “PCB panelization” :

I add 2mm tabs and space but I’m not sure if it is possible to AISLER to build this PCB panel, any tips or advices ?

Big thanks, have a good week :smiling_face_with_sunglasses:
Michael

Do you nedd the PCB panalized? Otherwise load up the single board and order the number of boards you need (modulo 3).

Hi @uwe,

It’s easier for me, for soldering SMD resistors and other components. :palms_up_together: :wrench:

I tried to checkout : (one board) x 9 and (2x2 boards) x 3, this last result price/quantity for 12 boards (with stencil) is good for me :grin:

Thanks

Here my final result : 2x2 boards with a shell script to easily generate panels… :laughing:

#!/bin/bash
# TinyRotaryPCB with KiCad and KiKit plugin for PCB panelization
# KiCad documentation : https://www.kicad.org
# KiKit plugin documentation : https://github.com/yaqwsx/KiKit

# Input and output files
INPUT_FILE="TinyRotaryPCB.kicad_pcb"
OUTPUT_DIR="panel"
OUTPUT_FILE="${OUTPUT_DIR}/TinyRotaryPCB_panel.kicad_pcb"

# Layout parameters, by default 2x2 -> panelize.sh <rows> <cols> parameters
LAYOUT_ROWS=${1:-2}
LAYOUT_COLS=${2:-2}
LAYOUT_SPACE="2mm"

# Tab parameters
TAB_TYPE="fixed"
TAB_HWIDTH="2mm"
TAB_VWIDTH="1mm"
TAB_VCOUNT="2"

# Framing parameters
FRAME_TYPE="railstb"
FRAME_WIDTH="2mm"
FRAME_SPACE="2mm"

# Text parameters
TEXT_HEIGHT="0.8mm"
TEXT_VOFFSET_POS="1mm"
TEXT_VOFFSET_NEG="-1mm"
TEXT_JUSTIFY="hjustify: center; vjustify: center;"
POST_MILLRADIUS="1mm"

# Ensure output directory exist
mkdir -p "$OUTPUT_DIR"

# Kikit command with all parameters
kikit panelize \
    --layout "grid; rows: ${LAYOUT_ROWS}; cols: ${LAYOUT_COLS}; space: ${LAYOUT_SPACE}" \
    --tabs "${TAB_TYPE}; hwidth: ${TAB_HWIDTH}; vwidth: ${TAB_VWIDTH}; vcount: ${TAB_VCOUNT}" \
    --cuts vcuts \
    --framing "${FRAME_TYPE}; width: ${FRAME_WIDTH}; space: ${FRAME_SPACE};" \
    --text "simple; text: {boardTitle} {boardRevision} ${LAYOUT_COLS}x${LAYOUT_ROWS}; anchor: mt; voffset: ${TEXT_VOFFSET_POS}; height: ${TEXT_HEIGHT}; ${TEXT_JUSTIFY}" \
    --text2 "simple; text: Created on {boardDate}; anchor: mb; voffset: ${TEXT_VOFFSET_NEG}; height: ${TEXT_HEIGHT}; ${TEXT_JUSTIFY}" \
    --post "millradius: ${POST_MILLRADIUS}" \
    "$INPUT_FILE" "$OUTPUT_FILE"

# Check if the command succeeded
if [ $? -eq 0 ]; then
    echo "Panelization successful : $OUTPUT_FILE"
else
    echo "Error : Panelization failed"
    exit 1
fi

Cheers !