Skip to the content
2 layers149.6 × 73.9 mmPortableLIBS, the printed circuit board in 3D

Github repository for hardware and software interfacing of the smart system used by the Hussein Ultrafast Plasma Science group at the University of Alberta for experiments LIBS and high-repetition-rate, femtosecond…

Size
149.6 × 73.9 mm
Copper layers
2
Thickness
1.6 mm
Parts
33
Nets
25
Pads
92
Tracks, vias
82, 0
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
4 May 2022
Updated
18 Aug 2026

Overview

PortableLIBS is an open-source printed circuit board by nfbeier, from the nfbeier/HusseinLab_UltrafastPlasmaScience repository on GitHub. It is a 2-layer board of 149.6 × 73.9 mm with 33 parts on 25 nets, routed with 82 tracks and 0 vias.

It is built around the SN74HC00DR(LX). Its parts include 12 connectors, 6 resistors, 6 diodes, 6 transistors and 1 capacitor.

Main components

1

README

README.md

Repository Description: 'Last Edited: July 29, 2025'

python

Overview

Github repository for hardware and software interfacing of the smart system used by the Hussein Ultrafast Plasma Science group at the University of Alberta for experiments LIBS and high-repetition-rate, femtosecond laser experiments.

The smart system aims to interface a collection of hardware components necessary to perform high intensity laser-plasma interactions including FLIR Blackfly CCD, Newport XPS-D8 Motion Controller, Agilent XGS-600 Vacuum Controller, Andor iKon-M Vacuum X-ray CCD, and more. The various equipment will be controlled using Python code, and be designed in a modular structure to allow for quick changes in experimental setups.

Python Version

We are standardized on Python 3.10 for all software in this repo. However, usage of the LIBS code with Stellarnet spectrometers requires Python 3.8

Importing Driver Code

This project aims to provide a consistent and reliable way to handle relative imports across various modules. By including a default pathing block at the top of the main programs, we ensure that all relative imports are correctly resolved, preventing potential import errors.

Default Pathing Block

To maintain consistent relative imports, we include the following default pathing block at the top of our main programs:

text
import os
import sys

cwd = os.getcwd()
if "HusseinLab_UltrafastPlasmaScience" not in cwd.split(os.path.sep):
    raise ValueError("The directory does not contain 'HusseinLab_UltrafastPlasmaScience' folder.")
# Rebuild the directory string up to and including 'HusseinLab_UltrafastPlasmaScience', prevent import errors
cwd = os.path.sep.join(
    cwd.split(os.path.sep)[: cwd.split(os.path.sep).index("HusseinLab_UltrafastPlasmaScience") + 1]
)
sys.path.insert(0, cwd)

Contributing

  • Branches
    • Branches must change or implement one feature
    • Branches created from branches must be merged in the order they are created
  • Branch Naming
    • Branches are named as follows: <name_of_author>/<branch_type>/<description_of_branch>
    • Branch types may be one of the following: {hotfix,bugfix,experimental,feature}
  • Commit Messages
    • Do not assume your code is self explanatory
    • Do not assume everyone else knows what you are working on
    • Use the imperative mood in the subject line
    • When in doubt, use the KISS method: Keep It Simple, Silly

Converting PyQt5 Designer Files

To convert PyQt5 Designer .ui files to Python .py files that can be imported into your software, you can use the pyuic5 tool. This tool is part of the PyQt5 package and allows you to generate Python code from the .ui files created using the Qt Designer.

Command

The basic command to convert a .ui file to a .py file is:

text
pyuic5 -x ui_file.ui -o out_file.py

Parts

33
QtyValueFootprintReferences
61kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1, R2, R3, R4, R5, R6
6BS107Package_TO_SOT_THT:TO-92_InlineQ1, Q2, Q3, Q4, Q5, Q6
5REDTerminalBlock:TerminalBlock_Altech_AK300-2_P5.00mmD1, D2, D4, D5, D6
4Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ7, J8, J9, J10
2PWR/GNDTerminalBlock:TerminalBlock_Altech_AK300-2_P5.00mmJ11, J12
142 uFCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC1
1AMBERTerminalBlock:TerminalBlock_Altech_AK300-2_P5.00mmD3
1DRAWER_ILKportableLIBS:CONN_CONBN_LNXJ2
1ILK_3portableLIBS:CONN_CONBN_LNXJ3
1ILK_4portableLIBS:CONN_CONBN_LNXJ4
1LASER_FAULTportableLIBS:CONN_CONBN_LNXJ5
1LID_ILKportableLIBS:CONN_CONBN_LNXJ1
1LOGOLOGOG***
1Laser Emission INTerminalBlock:TerminalBlock_Altech_AK300-2_P5.00mmJ6
1SN74HC00DRPackage_DIP:DIP-14_W7.62mm_LongPadsU1

Similar boards

  • 2 layers56 × 49.5 mmGb devcart, the printed circuit board in 3D

    Gb devcart

    fabPlane/gb-devcart

    A simple, original Game Boy (DMG) / ModRetro Chromatic homebrew development cartridge. 512 KB of rewritable NOR flash, 8 KB of battery-free F-RAM, and an MBC5-subset mapper built from discrete 74HC logic.

    26 parts
  • 2 layers82.5 × 85.3 mmBSPD-27, the printed circuit board in 3D

    BSPD-27

    Full-Blue-Racing/BSPD-27

    BSPD for the fbr27 car

    108 parts
  • 2 layers97.8 × 97.2 mmTR4org, the printed circuit board in 3D

    TR4org

    nanamitm/td4-kicad

    TD4 4-bit CPU (from the book CPUの創りかた) as a KiCad 10 hierarchical schematic

    136 parts
  • 4 layers180 × 67 mmTbc, the printed circuit board in 3D

    Tbc

    philmcm/tbc

    130 parts
  • 6 layers310 × 284 mmOsc core, the printed circuit board in 3D

    Osc core

    Takazudo/zudo-osc-hole-field

    This directory retains the rejected #38 nine-board-era schematic, PCB and route receipts at base commit 1fc6e5347308fe5e8166d5828ba3ba6fa8e101c7. It is excluded from the current ten-board manifest.

    3,986 parts
  • 2 layers65 × 30 mmRgb to hdmi, the printed circuit board in 3D

    Rgb to hdmi

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    33 parts1kGPL-3.0
  • 2 layers127 × 96 mmAmiga gfxcard, the printed circuit board in 3D

    Amiga gfxcard

    mntmn/amiga2000-gfxcard

    MNT VA2000, an Open Source Amiga 2/3/4000 Graphics Card (Zorro II/III), written in Verilog

    33 parts1k

Questions

How big is the PortableLIBS PCB?

It measures 149.6 × 73.9 mm and has 2 copper layers, 1.6 mm thick.

What parts does the PortableLIBS use?

33 parts, built around the SN74HC00DR(LX). 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 PortableLIBS KiCad files?

From the nfbeier/HusseinLab_UltrafastPlasmaScience repository on GitHub, at the commit this page was made from: the board is Hardware/portableLIBS/pcb/portableLIBS/portableLIBS.kicad_pcb and its schematic Hardware/portableLIBS/pcb/portableLIBS/demo.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the PortableLIBS design in my own project?

Its repository states no licence, so its author keeps all rights: ask nfbeier before reusing the design.