Skip to the content
4 layers67 × 15 mmGBB15, the printed circuit board in 3D

A gantry-mounted CAN stepper driver board for 15mm aluminum beams (mostly for PrintersForAnts printers). This is heavily work in progress.

Size
67 × 15 mm
Copper layers
4
Thickness
1.6 mm
Parts
76
Nets
88
Pads
322
Tracks, vias
692, 182
Pours
31
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
7 Jun 2023
Updated
8 Jul 2024

Overview

GBB15 is an open-source printed circuit board by skuep, from the skuep/GBB15 repository on GitHub, published under the MIT licence. It is a 4-layer board of 67 × 15 mm with 76 parts on 88 nets, routed with 692 tracks and 182 vias.

It is built around the STM32G0B1CEU6, MAX3051EKA+T and TMC2209-LA-T. Its parts include 26 capacitors, 22 resistors, 9 connectors, 5 ICs and 2 switches. It belongs with the robots and motor control boards and the STM32 boards of this library.

Main components

3

README

README.md

GBB15

A gantry-mounted CAN stepper driver board for 15mm aluminum beams (mostly for PrintersForAnts printers).

This board can be used e.g. for the Micron to have A/B motor controllers directly at the gantry. This reduces the number of wires required to be routed to the gantry.

Additionally, this board can be used for Voron-0 or Tridents as a USB to CAN converter (using the Klipper CAN bridge option) with included A/B motor controllers.

GBB15 Photo

PCB front side PCB back side Micron Gantry

JLCPCB Specifications

  1. Upload GERBER-GBB15.zip
  2. Select Qty
  3. PCB Thickness 1.6mm
  4. LeadFree HASL
  5. Enable PCB Assembly
  6. Choose Economic
  7. Select Assembly Side Bottom Side
  8. Tooling holes: Added by Customer
  9. Press Confirm
  10. Upload BOM-GBB15.csvand CPL-GBB15.csv
  11. Check that all parts are in stock and click NEXT
  12. Look for odd placement in the preview, select NEXT

Additionally needed LCSC parts

You can order these on LCSC

PartQuantityNotesLCSC Part NumberLink
100u/35V/105°C capacitor2C3035369https://www.lcsc.com/product-detail/Aluminum-Electrolytic-Capacitors-Leaded_Rubycon-35YXJ100MFFCT1-6-3X11_C3035369.html
MicroFit 3.0 connector2Tin or GoldC277721 or C563821https://www.lcsc.com/product-detail/Wire-To-Board-Wire-To-Wire-Connector_MOLEX-430450412_C277721.html or https://www.lcsc.com/product-detail/Pre-ordered-Connectors_MOLEX-430450413_C563821.html
JST PH 2.0mm 2-Pin conn.4Endstop/ThermistorsC131337https://www.lcsc.com/product-detail/Wire-To-Board-Wire-To-Wire-Connector_JST-Sales-America-B2B-PH-K-S-LF-SN_C131337.html
JST XH 2.5mm 4-Pin conn.2SteppersC144395https://www.lcsc.com/product-detail/Wire-To-Board-Wire-To-Wire-Connector_JST-Sales-America-B4B-XH-A-LF-SN_C144395.html
Vertical THT USB-C conn.1C3151747https://www.lcsc.com/product-detail/USB-Connectors_SHOU-HAN-TYPE-C-16PLC-H10-0_C3151747.html
CAN termination resistor1Optional!C17909https://www.lcsc.com/product-detail/Chip-Resistor-Surface-Mount_UNI-ROYAL-Uniroyal-Elec-1206W4F1200T5E_C17909.html
Tactile Switches2Boot/ResetC255802https://www.lcsc.com/product-detail/Tactile-Switches_HYP-Hongyuan-Precision-1TS002E-2500-2501-CT_C255802.html
Heat Sink2Standard TMC2209 heatsinkC5250902 or C5250879https://www.lcsc.com/product-detail/Heat-sink-heatsink_wenhaoyongshun-D11-01-02_C5250902.html or https://www.lcsc.com/product-detail/Heat-sink-heatsink_wenhaoyongshun-F12-04-05_C5250879.html
1.5mm M.2 Thermal pad1Cut to size 67x15mm--https://www.amazon.de/-/en/Assorted-Thickness-Conductive-Silicone-Conductivity/dp/B07X38254H (DE) or https://www.amazon.com/ADWITS-12-Pack-Conductive-Silicone-Conductivity/dp/B07X81PRK7 (US)

Quick Guide

  1. Solder top components (order: 120R resistor (if required), switches, 4x JST PH 2.0mm, 2x JST XH2.5mm, 2x MicroFit 3.0 2x2, USB connector, Capacitors & attach heatsinks)
  2. Attach 1.5mm heat gap filler pad to bottom, cut to size if required using a sharp knife
  3. Poke screw holes into the gap filler pads
  4. Use M3x8mm screws to attach to bottom of gantry frame (see above)

Note that thermal connection to the 15mm beam is required! Otherwise the Stepper motor controllers might overheat.

Firmware

  1. Plug in USB cable and connect 24V power, the green LED on the bottom side (Rev. B and up) must light up. Hold BOOT pushbutton, while tapping the RESET pushbutton and release all buttons. This is the sequence to set the GBB15 into DFU mode.

    IMPORTANT: STMicro decided on the entire STM32G0 series to set the nBOOT_SEL option bit and thus disable the BOOT0 pin by default. This means you would have only one shot at uploading a bootloader, while the flash is empty. If you choose to re-program the bootloader (e.g. other CAN speed), you cannot get into the DFU mode anymore. For enabling the "legacy" BOOT0 pin functionality, you have two options.

    1. You can use STMicro's STM32CubeProgrammer software to disable the nBOOT_SEL option bit by following the screenshot here.

    2. Or if you prefer dfu-util, which is included (or easily installed) in major linux distros (e.g. Raspberry Pi OS), you can run the enable_boot.hex firmware from here. It will clear the nBOOT_SEL option bit from within the firmware, if it is not yet cleared. Use the following commands to upload the file.

      text
          objcopy --input-target=ihex --output-target=binary enable_boot0.hex enable_boot0.bin # Convert hex to binary
          sudo dfu-util -a 0 -d 0483:df11 --dfuse-address 0x08000000:leave -D enable_boot0.bin

      After waiting for a second, the BOOT0 pin is now enabled again and you can continue normally.

      NOTE: Before continuing, remember to set the GBB15 into DFU mode again using the BOOT/RESET pushbuttons (see above).

  2. Build CanBoot according the instructions on the CanBoot github page. See this image for CanBoot menuconfig settings to use.

  3. Build the Klipper firmware according to the instructions on the Klipper github page. See this image for Klipper menuconfig settings to use.

  4. Upload CanBoot to the GBB15 using either STM32CubeProgrammer (if you have it installed) or using dfu-util with these commands.

    text
        sudo dfu-util -a 0 -d 0483:df11 --dfuse-address 0x08000000:leave -D out/canboot.bin

    The device is now booted into CanBoot mode and can be accessed using the CanBoot tools.

  5. Upload the Klipper firmware to the GBB15 using either CanBoot's flashtool.py as described here or Klipper's make flash (uses dfu-util).

    1. Using flashtool.py via CAN. Run these commands from the CanBoot/scripts directory

      text
          python3 flashtool.py -i can0 -q # Check the UUID of the GBB15 board
          python3 flashtool.py -i can0 -f ~/klipper/out/klipper.bin -u <uuid> # Insert UUID here
    2. Using make flash via Klipper Makefile. Run this command from the klipper directory.

      NOTE: For this, you need to set the GBB15 into DFU mode again using the BOOT/RESET pushbuttons (see above).

      text
          make flash FLASH_DEVICE=0483:df11

Pinout

This image shows the pinout of the GBB15 PCB. The CAN connector layout is compatible to the BigTreeTech EBB36 board (among others). GBB15 Pinout

Klipper configuration

text
[mcu gantry_mcu]
canbus_interface: can0
canbus_uuid: f7b6d9f26b4a

...

[temperature_sensor chamber]
sensor_type: Generic 3950
sensor_pin: gantry_mcu:PA1 # SMD thermistor on GBB15 PCB
#sensor_pin: gantry_mcu:PA3 # Alternatively, this is STOP1 connector if it is not used otherwise
#sensor_pin: gantry_mcu:PA2 # Alternatively, this is STOP2 connector if it is not used otherwise (for Rev. B and up) 
pullup_resistor: 4700

[temperature_sensor Motor_A]
sensor_type: Generic 3950
sensor_pin: gantry_mcu:PB11 # TH_A on GBB15 PCB
pullup_resistor: 4700

[temperature_sensor Motor_B]
sensor_type: Generic 3950
sensor_pin: gantry_mcu:PB12 # TH_B on GBB15 PCB
pullup_resistor: 4700

[temperature_sensor gantry_temp]

"Chamber" thermistor in this configuration is a SMD thermistor on the PCB. It reads probably 15-20°C above the actual chamber temperature, when the stepper motors are enabled and running.

  • To get better chamber temp readings, you can use TH_A or TH_B to connect a remote thermistor (in case you don't need those for monitoring the motor temperatures).
  • Alternatively you can (mis-)use the STOP1 (All revisions) and STOP2 (Rev. B and up) pins for analog readings. Easiest is a through-hole 100K B3950 NTC crimped into a JST PH2.0 and connected to one of the mentioned header pins.

Parts

76
QtyValueFootprintReferences
11100n/X5R/50VCapacitor_SMD:C_0603_1608MetricC2, C6, C7, C11, C16, C18, C21, C24, C26, C27, C28
104.7KResistor_SMD:R_0603_1608MetricR5, R6, R11, R12, R14, R17, R20, R21, R22, R23
510KResistor_SMD:R_0603_1608MetricR3, R4, R7, R8, R16
51u/X5R/50VCapacitor_SMD:C_0805_2012MetricC8, C9, C12, C15, C29
40R11Resistor_SMD:R_1206_3216MetricR1, R2, R9, R10
44.7u/X5R/10VCapacitor_SMD:C_0603_1608MetricC10, C14, C22, C30
2100u/35V/105°CCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC1, C17
222n/X5R/50VCapacitor_SMD:C_0603_1608MetricC5, C13
222p/NP0Capacitor_SMD:C_0603_1608MetricC3, C4
25.1KResistor_SMD:R_0603_1608MetricR13, R15
2FiducialProject:TOOLING-HOLEFID1, FID2
2HeatsinkProject:TMC2209-HeatsinkHS1, HS2
2MountingHoleProject:MountingHole_3.2mm_M3H1, H2
2TMC2209-LA-TProject:QFN-28-1EP_5x5mm_P0.5mm_EP3.35x3.35mmU1, U3
2TestPointTestPoint:TestPoint_Pad_1.5x1.5mmTP1, TP2
1600R@100MHzInductor_SMD:L_0603_1608MetricFB1
1BOOTButton_Switch_SMD:SW_SPST_CK_RS282G05A3SW1
1CAN_INProject:Molex_Micro-Fit_3.0_43045-0412_2x02_P3.00mm_VerticalJ1
1CAN_OUTProject:Molex_Micro-Fit_3.0_43045-0412_2x02_P3.00mm_VerticalJ2
1Crystal_GND24Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1ENDSTOP1Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ7
1ENDSTOP2Connector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ8
1LEDLED_SMD:LED_0603_1608MetricD1
1MAConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ5
1MAX3051EKA+TPackage_TO_SOT_SMD:SOT-23-8U4
1MA_THERMConnector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ3
1MBConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ6
1MB_THERMConnector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ4
1N.M. (120R)Resistor_SMD:R_1206_3216MetricR19
1NCP730BMT330TBGPackage_DFN_QFN:DFN-6-1EP_2x2mm_P0.65mm_EP1x1.6mmU5
1RESETButton_Switch_SMD:SW_SPST_CK_RS282G05A3SW2
1STM32G0B1CEU6Package_DFN_QFN:QFN-48-1EP_7x7mm_P0.5mm_EP5.6x5.6mmU2
1ThermistorResistor_SMD:R_0603_1608MetricTH1
1USB-CProject:TYPE-C 16PLC-H10.0J10

Similar boards

  • 2 layers51 × 18.5 mmEntree, the printed circuit board in 3D

    Entree

    tuna-f1sh/entree

    Entree is a USB-C CAN interface designed to fully support CANnectivity - gets the CAN party started!

    78 parts89
  • 2 layers42 × 38 mmL103 DRV8316C, the printed circuit board in 3D

    L103 DRV8316C

    bjthemost-hub/l103-drv8316c-joint

    Joint motor driver: CH32L103 + DRV8316C + MT6701. KiCad hardware, FOC firmware, 2-stage planetary gearbox (J, 25:1). MIT.

    82 partsMIT
  • 2 layers70 × 85 mmStm main, the printed circuit board in 3D

    Stm main

    hcmos/kicad-2024

    101 parts
  • 2 layers189.5 × 204.9 mmSmartSpin2k Panelized, the printed circuit board in 3D

    SmartSpin2k Panelized

    doudar/SmartSpin2k

    Transform your spin bike into a Smart Trainer!

    749 parts292GPL-2.0
  • 4 layers170 × 100 mmLeviathan V1.3, the printed circuit board in 3D

    Leviathan V1.3

    MotorDynamicsLab/Leviathan

    Leviathan Main Controller for Voron 2 / Trident 3D Printers

    420 parts124GPL-3.0
  • 4 layers187.9 × 60.2 mmMotionModuleSTM32F103R8, the printed circuit board in 3D

    MotionModuleSTM32F103R8

    griffotron/MotionModuleSTM32R8

    PCB design and code for the STM32 powered Motion Module that controls 14 stepper motors

    246 parts13MIT
  • 4 layers88.4 × 63.6 mmCompute, the printed circuit board in 3D

    Compute

    hstarmans/firestarter

    Kicad design files for prism laser direct imager using up5k FPGA and ESP32

    125 parts13

Questions

How big is the GBB15 PCB?

It measures 67 × 15 mm and has 4 copper layers, 1.6 mm thick.

What parts does the GBB15 use?

76 parts, built around the STM32G0B1CEU6, MAX3051EKA+T and TMC2209-LA-T. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the GBB15 KiCad files?

From the skuep/GBB15 repository on GitHub, at the commit this page was made from: the board is kicad/GBB15/GBB15.kicad_pcb and its schematic kicad/GBB15/GBB15.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the GBB15 design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).