• Stars
    star
    272
  • Rank 151,235 (Top 3 %)
  • Language PostScript
  • License
    GNU General Publi...
  • Created almost 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Simple Laser Direct Lithography / Laser Direct Imaging for PCB manufacturing

LDgraphy - Laser Direct Lithography

http://ldgraphy.org/

A process also known as Laser Direct Imaging.

First Test

Simple implementation of photo resist exposure using a 405nm laser. Goal is to have this Open Source/Open Hardware system easy to reproduce with commonly available parts. The BOM is in the order of $100 including the Beaglebone Green.

  • 500mW 405nm laser ($30ish)
  • Commonly available polygon mirror scanner (from laser printers) ($20ish)
  • Beaglebone Black/Green to control it all (using the PRU to generate precise timings for motors and laser) ($40ish)
  • Stepper motor for linear axis (plus end-stop switches) (scrap box)
  • Photo diode to determine start-of-line (as the polygon mirrors have slightly different long faces and also phase-drift over time) (SFH203P)
  • Local electronics: fast Laser diode driver and stepmotor driver (few $$)

Stay tuned for a putting-it-together video once the design is settled.

Here is some rough design outline in case you are interested in more details.

Work in Progress

Currently, the design is work in progress while testing various different types of commonly available polygon mirrors and lasers. The PCBs for the cape and the laser current driver are in their first iteration with more focus on easy measurements and removable parts (e.g. stepper driver and DC/DC converter are external modules) than compact design. This part of the hardware is likely to change in the short term; it turns out, for instance, that some polygon mirrors have not perfectly perpendicular faces. So an additional sensor is needed to correct for that.

And of course, the software would need a little more bells and whistles (e.g. a web-server to easily upload Gerber designs).

Having said that, the device is fully operational with a reliable resolution of ~0.15mm/6mil, which is right up there with basic fab-house offerings (goal: reliable 0.1mm (4mil) traces and clearance).

Resolution test

Compile

This compiles on a BeagleBone Green/Black; it requires the PRU on these computers for hard realtime-switching of the Laser.

git clone --recursive https://github.com/hzeller/ldgraphy.git

Install relevant packages. We are reading png-images as input, so we need the library that helps us with that (probably already installed on your system):

sudo apt-get update
sudo apt-get install libpng-dev -y

Then compile:

cd ldgraphy/src
make

To properly prepare the GPIOs and the PRU to be used, you have to install the device tree overlay on your Beaglebone:

cd ldgraphy/device-tree
sudo ./start-devicetree-overlay.sh LDGraphy.dts

The input is a PNG image. For converting Gerber files to PNG, see the gerber2png tool in the scripts/ directory.

Usage:

Usage:
./ldgraphy [options] <png-image-file>
Options:
        -d <val>   : Override DPI of input image. Default -1
        -i         : Inverse image: black becomes laser on
        -x<val>    : Exposure factor. Default 1.
        -o<val>    : Offset in sled direction in mm
        -R         : Quarter image turn left; can be given multiple times.
        -h         : This help
Mostly for testing or calibration:
        -S         : Skip sled loading; assume board already loaded.
        -E         : Skip eject at end.
        -F         : Run a focus round until Ctrl-C
        -M         : Testing: Inhibit sled move.
        -n         : Dryrun. Do not do any scanning; laser off.
        -j<exp>    : Mirror jitter test with given exposure repeat
        -D<line-width:start,step> : Laser Dot Diameter test chart. Creates a test-strip 10cm x 2cm with 10 samples.

Case

The current version is made out of laser-cut acrylic parts to have it easily and cheaply build for everyone who has access to a laser cutter (hint: your local Hackerspace might have one).

Here, all electronics is mounted on the top for easier measurements and such. The final version will fit everything inside.

Case

Above is current status of the case, which went through some refinements (here an earlier case which better shows the internal arrangement).

This was the first experiment

First Light

Setup Result

The first test-device was put together with extruded aluminum. Somewhat crappy first result, but had potential. Exposure time for this 30 mm long patch was around 90 seconds (for reference: on the right is how the geometry should look like).

As you can see, the early stages had some issues, e.g. you can't trust the "PLL" of the mirror to properly lock - it has a phase drift over time (hence the warped square). The current design has a HSync line sensor. Overall the progress after that improved various issues seen up to the point where it starts to be usable for PCB work.

More Repositories

1

rpi-rgb-led-matrix

Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO
C++
3,229
star
2

timg

A terminal image and video viewer.
C++
1,889
star
3

gmrender-resurrect

Resource efficient UPnP/DLNA renderer, optimal for Raspberry Pi, CuBox or a general MediaServer. Fork of GMediaRenderer to add some features to make it usable.
C
841
star
4

txtempus

A DCF77, WWVB, JJY and MSF clock LF-band signal transmitter using the Raspberry Pi
C++
416
star
5

rpi-gpio-dma-demo

Performance writing to GPIO with CPU and DMA on the Raspberry Pi
C
196
star
6

flaschen-taschen

Noisebridge Flaschen Taschen display
C++
193
star
7

rpi-matrix-pixelpusher

PixelPusher protocol for LED matrix.
C++
160
star
8

beagleg

G-code interpreter and stepmotor controller for crazy fast coordinated moves of up to 8 steppers. Uses the Programmable Realtime Unit (PRU) of the Beaglebone.
C++
114
star
9

augenmass

Measure relative sizes on background image.
JavaScript
93
star
10

upnp-display

Display state of UPnP/DNLA renderer in the network with a 16x2 LCD display (or 24x2, 40x2 ..) connected to the Raspberry Pi. Unicode support (UTF-8).
C++
69
star
11

gcode-cli

Simple command line tool to send gcode to serial 3D printer/CNC machine.
C++
39
star
12

spixels

Spixels - 16-SPI LED Raspberry Pi adapter with library (SPI - Pixels).
C++
39
star
13

rpt2pnp

Solder paste dispensing and Pick'n Placing
C++
34
star
14

stuff-org

Organize electronic components. Or other stuff.
Go
33
star
15

postscript-hacks

A collection of some useful PostScript programs.
PostScript
31
star
16

folve

Folve - seamlessly FIR convolving audio file fuse filesystem with gapless support.
C++
30
star
17

trs80-100-schematic

A transcript of the TRS80 Model 100 schematic
Nix
28
star
18

rpt2paste

Convert KiCAD rpt files to G-Code to dispense solder paste
C++
24
star
19

bumps

BeagleBone Universal Multi Pololu Steppers
KiCad Layout
21
star
20

blisplay

A tactile display for the blind.
OpenSCAD
19
star
21

pixelpusher-server

A simple library that allows to receive pixels via the PixelPusher protocol.
C++
17
star
22

otp-image

Optical One-Time Pad XOR encoding of images
C++
17
star
23

digi-spherometer

A digital spherometer, reading data from digital dial indicator and converting it to radius, displaying on OLED display.
C++
14
star
24

RedPitaya-Case

A case for the Red Pitaya scope/function generator
OpenSCAD
12
star
25

joystick-gcode-jog

Jogging a machine such as a 3D printer or CNC machine with a gampad. Mostly proof of concept.
C
12
star
26

gds2vec

A simple program to convert gdsII files to vector output formats. Currently used to create laser-cut models of standard cells.
C++
12
star
27

openscad-things

Things made with OpenSCAD. Mostly experimental right now.
OpenSCAD
9
star
28

quadrigotion

TMC2660 Four stepper motor drivers on a stick.
Python
9
star
29

tmc2660-breakout

Little breakout board to play with the TMC2660 stepper driver
Python
9
star
30

precise-pitch

Instrument tuner app. Mostly my playground to learn Android development.
Java
8
star
31

symbiflow-simple-sample

Using Symbiflow arch defs to get BASYS3 board entertained with logic
Makefile
8
star
32

bant

Bazel/Build Analysis and Navigation Tool
C++
8
star
33

bare-lsp

A language server protocol implementation
C++
6
star
34

jcxxgen

A schema compiler generating c++ structs with boilerplate to be serialized easily with nlohmann/json
C++
6
star
35

spixels-pixelpusher

A PixelPusher implementation using the Spixels hardware to control LED strips.
C++
6
star
36

bdfont.data

Generate C-structs from BDF fonts to be compiled into embedded programs.
C++
5
star
37

sound-cam

Simulation of using Microphones to pick up sound locations.
C++
5
star
38

pi-registerplex

GPIO multiplexer for Raspberry Pi
Python
3
star
39

makerspace-tag

Simple app keeping track of makerspace users and their capabilities
Go
3
star
40

ziplain

A plain, no-frills ZIP file writer.
C++
3
star
41

hot-snipper

A Hot-Knife cutting machine
OpenSCAD
3
star
42

simple-fasm

A simple parser for the FPGA Assembly format
C++
3
star
43

DerKnopf

Simple IR remote control of a volume knob
KiCad Layout
3
star
44

eda-tools

Small useful tools I use while doing stuff with electronics.
3
star
45

pitch-hero

C++
2
star
46

simple-spherometer

A simple analog spherometer made from simple hardware-store materials, laser cut acrylic and 3D printed parts.
PostScript
2
star
47

air-filter-box

Quad AirFilter using standard box-fan and standard aircon/furnace filters
OpenSCAD
2
star
48

microorb

A USB controlled 2.5W RGB LED
C++
2
star
49

FlaschenTaschen-PixelPusher-bridge

Receives FlaschenTaschen protocol and sends to a PixelPusher installation.
C++
2
star
50

rp2040-nix-template

Minimal rp2040 c++ template
Makefile
2
star
51

gaggia-pid

PID controller, useful for e.g. coffee machines.
C++
1
star
52

golang-pgp-test

Experiments with the golang OpenPGP implementation.
Go
1
star
53

cogsworth-viz

Visualization of data generated from Project-COGSWORTH
C
1
star
54

sneeze-guard

Sneeze-guard on working tables for reduced Viral spread.
G-code
1
star
55

flaschen-taschen-avr

Quick hack to make first FlaschenTaschen crates work.
C++
1
star
56

bidi-tee

A bidrectional `tee` program that passes through stdin/stdout/stderr and copies them colored coded to a file
C++
1
star
57

ear-saver

A laser-cuttable ear-saver for face masks.
OpenSCAD
1
star
58

threadless-server

select() event API experiment with c++11 closures.
C++
1
star
59

gstreamer-gapless-test

Sample source code to demonstrate a gstreamer issue.
C
1
star
60

din-rail-clip-mount

3D printed Din-Rail mount for PCB and other components
OpenSCAD
1
star
61

glowxels

Glow-in-the-dark canvas
C++
1
star