open hardware fast high resolution LASER

bringing additive manufacturing to the next level

Similar projects worth following
An open hardware fast high resolution LASER suited for Printed Circuit Board (PCB) manufacturing or 3D printing. The laser head uses a rotating prism instead of the industry standard rotating mirror circumventing patent US9079355 valid up to 2033 and many more.

The goal of this project is to develop a laser head for 3D printing or PCB manufacturing which uses a rotating prism and is easy to assemble.
The open hardware fast high resolution LASER is demonstrated by the manufacturing of PCBs. PCB is desirable from a technical point of view as it is 2D which makes exposure errors easily detectable. Cyanotype paper is currently used as it can be developed with water.  If the stitching problems are resolved, I will move to PCBs. The current electronics also provide the possibility to cut a PCB with a spindle.


Specifications were determined from the proof of concept model by exposure onto a camera without lens and OpenCV. More technical details are available in the whitepaper.

  • wavelength: 405 nm
  • rotation frequency:  up to 21000 RPM, current 2400 RPM
  • line speed: up to 34 meters per min @ 21000 RPM
  • spot size FWHM: circular, 25  micrometers diameter
  • cross scanner error: 40 micrometers  (error orthogonal to scan line)
  • stabilization accuracy scanning direction :  2.2 micrometers (disabling/enabling scan head)
  • jitter: 35 microns (error parallel to scan line)
  • duty cycle: 47%
  • laser driver frequency: 2.6 MHz
  • maximum scan line length: 24 mm
  • typical scan line length: 8 mm
  • optical power: 500 mW
  • facets: prism has 4 facets
  • prism dimensions: 30x30x2 mm


If users desire an FPGA, they can extend the Beaglebone with for example the Beaglewire.

  • Beaglebone green
  • Firestarter cape  (laser driver, 3x TMC2130 stepper drivers, PWM spindle and fan control)


An image can be uploaded to the scanner and exposed on a substrate. An exposure result on cyanotype paper is shown below.
Resolution looks to be around 100 microns. Stitching still needs to be fixed, results in white lanes.
The idea is that through holes are made with a spindle.  There is a project on Hackaday where a PCB is cut with an EDM.

An exposure goes as follows (for the result see above).

Hexastorm fork of LDGraphy
Hexastorm fork of BeagleG
Optical design
old FPGA code

PCB design

Hardware designs
CAD files
Cartesian frame was donated by FELIXprinters.

Literature Research
White paper @ Reprap

Other Links
Official website


Pitch intended for analysts who want to get a brief overview of the key markets prism scanning will disrupt.

Adobe Portable Document Format - 317.78 kB - 09/19/2019 at 08:14


calibration data of current scanhead

Zip Archive - 278.28 kB - 01/25/2019 at 18:50



measurements and algorithm used to determine stabilization accuracy, see blog

RAR Archive - 594.17 kB - 01/25/2019 at 14:50



bom ofthe old firestarter and overview of layout. This board is no longer in use.

Adobe Portable Document Format - 912.66 kB - 05/07/2018 at 21:30


  • 1 × prism, 30x30x2 mm edges parallel to < 1 arc minute 20pcs @ 48 USD per piece
  • 1 × Beaglebone Green 44 USD
  • 1 × 75 mm focal length, cylinder lens, 12.5 mm x 25 mm #48-355 57.5 USD
  • 1 × 4.0 mm focal length, collimating glass Lens, coated 7.5 USD
  • 1 × Firestarter cape, photodiode board, laser controller board

View all 11 components

  • Video of the alignment setup

    Hexastorm09/12/2019 at 19:48 0 comments

    I wanted to share a quick video of the alignment setup. The prism is running 2.5 times slower than in the proof of concept model. I have also removed the cylinder lenses for now as this simplifies alignment. The focus is on a robust setup for demonstrations and later quality.

    As always, lets generate some more prior art;

    non-planar 3D printing with prism scanner to avoid situation like the one with US10005126B2

    I can envision a liquid or viscous fluid is applied with an extrusion nozzle or inkjet head and is cured with the prism scanner. This could also be a viscous liquid applied with a blade.
    The patent talks of a correction factor that is calculated on basis of the slope. This is done to alter the extrusion. I claim that an optical measurement is done of the substrate to determine the correction factor (so it is done from life data during the experiment not from already existing cad data!!)
    I claim that the amount of liquid that is extruded is constant (this is not altered). The prism scanner decides which part of the liquid is solidified. The remainder is possibly sucked up with a squeegee and pump or applicator bar and pump.
    I can envision a similar process but then one were powder is blown and then sintered with a laser guided with the prism.

    I can envision this is done in a hospital setup to a human or in an operation or for inspection of mechanical parts. I also claim the area "food printing".  You can for instance cure egg whites with IR radiation to trigger or monitor a Maillard reaction.
    I claim belt like printing with prism scanner (so you print on a rotating belt, e.g. blackbelt 3D).
    I also claim that a prism scanner is used to check the indentation in a hardness tester, at the moment a lot of companies use a camera. I claim that a prism scanner is used to check the indentation, for example see the hardness testers by Innovatest Europe.

  • Hackaday prize semi-finalist!

    Hexastorm09/10/2019 at 20:47 0 comments

    Hey all,

    I made it to the Hackaday Prize 2019 semi-finals! I am really happy with the feedback from the community and the honor to be among these twenty amazing finalists out of these even more amazing applications. I have seen great projects on Hackaday; not only in this contest but in general.  The two most related to my project that were featured on this site are; OpenExposer and Ldgraphy.

    The best thing is that Hackaday gives me an even bigger excuse to work on the project.
    I aim to show once more that I have a working prototype and will try to create PCBs. These results can then hopefully be used for the final video. I will also try to make a brief technical presentation.
    In the 3D printing realms the most important patent I am able to circumvent is US9079355; the scanning mirror patent by Envisiontec which is valid up to 2033.
    I have mentioned others. Recently, I got informed that Apple Computers filed a patent for a Scanning Mirror Display Devices. It's a virtual reality set, like the Fiber Scanning Display I discussed earlier from Magic Leap.
    Obviously;  I claim everything, including the fancy pictures and sensors, Apple Computer claims but than for "Scanning Prism Display Devices" I call this prior art, see my earlier blog.

    but let's continue with that prototype now...

  • Current Status

    Hexastorm09/06/2019 at 13:40 0 comments

    Just a quick update; I have mounted the laser head back on the frame. All the electronics work and the machine is good for a few tests. As said, I have removed the cylinder lenses to increase ease of use. Due to a wiring error I blew up the polygon motor with chip NBC3111, I have replaced the polygon motor with motor with the chip Panasonic  AN4000A. This motor produces a lot more noise at the same speed. It can effect future measurement, I have ordered new ones but have to wait 2 weeks.
    The white paper placed on the build plate is to mark the area needed by the scanner. You can see a blue markings for that. A laser head has a greater height tolerance than a 3D printer nozzle, so leveling is not really an issue. The laser is far out of focus here, the head is typically closer to the paper.

  • Facet detection using facet times

    Hexastorm09/03/2019 at 10:41 0 comments

    In my previous logs, I outlined that the cross scan error is well understood and can be kept less than 40 micrometers. The solution is to keep the spot very close to the facet, so the deviation due to the prism wedge is minimal. In future versions, five times more accurate prisms are used so the deviation should be much less than 40 microns.
    In the log titled jitter, I outlined that the facet overlay in time can be a challenge. Although this was not the case for the proof of concept version. Let's present a solution;
    For each facet the microprocessor calculates using the photo-diode signal how many ticks it takes per facet. There are about 12500 ticks per facet, so ideally you would always get 12500 ticks.
    If i look at the a sequence of the first 16 facets I see;

    12468, 12590, 12579, 12347
    12473, 12591, 12581, 12349
    12472, 12591, 12581, 12348
    12472, 12591, 12580, 12348

    Here, I ordered the times already in groups of four. It is immediately clear that you can bin the facet by times. Especially, the fourth facet in each row seems suited for a bin.
    You can also calculate that the sum of the first group is is 49984, roughly 4X12500 = 5000.
    If I take the bin with lower limit 12340 and upper limit 1360, I get 200 items over 800 facets.
    The binning seems perfect; there are no outliers.

    One could think that setting the counter to zero and illuminating after a certain time should give zero jitter. In practice, there are limitations as the spot speed is not constant over a line and there might be other aberrations.
    You could also correct for the cross scan error once you have detected the facet but you might end up with a non-uniform dosage. This is quite critical if you are using multi-patterning techniques.

    *** experimental remark ***
    Too complicate stuff, a few days later I found out that I could get all the facet times equal. If make the jitter error very low, e.g. 1/3000,  I am not able to detect facets; their times are too close.
    I had to modify the code a bit for this to pass the hsync threshold. I didn't do this earlier so therefore didn't see this. This was needed when I blew up the polygon motor and replaced it with the panasonic one. I thought I could see jitter but will ignore this for now and use like 1/200 of period and continue with one facet

    Although, I could add an interpolation table to the algorithm. I will simply start with one facet and try to expose PCBs.

    What further might be of interest to the reader is that I have also created some prior art in the field of door detection systems. A good example of a scanning mirror patent is EP1470314B1.

    Claim one reads; " ... which operates according to the reflection principle and has the purpose of monitoring a region assigned to one of the approach areas, by means of a detector beam for obstructing objects ... ".
    Prior art is constructed by claiming the same claim but than on basis of the refraction principle. I also claim all the areas where the Belgian company Bea Sensors uses reflective polygon scanners, e.g. the LRZ-H100 and opening & safety sensor for barriers.

  • Jitter

    Hexastorm08/27/2019 at 21:12 0 comments

    The new box works quite well.

    At the moment, there is one key issue. The jitter is too large; as you can see below.
    I am also not happy about the glow to the right but that's a simple alignment issue due to reflections in the prism. I changed the offset and height of the diode. As long as the spot passes the diode in the middle, the pattern remains the same. My current algorithm of simply setting the counter to zero if the photo diode is passed might be too easy. The spot changes speed while scanning. This might alter measurements. In the coming days, I will try if i can detect different facet times for each facet. I could then label facets and fix it with a timing table.

    The cross scan error is low and comparable to earlier versions.
    The photo diode cap is no longer needed. This seems to be due to the op-amp, Schmitt trigger circuit.

    In the picture below a pixel is 4.8 micron.

    Earlier results were much nicer, see earlier blog jitter removed, but you can learn a lot from the “bad” ones too.

  • Prism balancing

    Hexastorm08/27/2019 at 14:10 0 comments

    Recently, I removed the technical presentation from 2017 as it is completely outdated.
    One of the things I haven't outlined so far is how to balance the prism.

    First let's recall the centripetal force; Unbalanced rotating masses or rotors have relatively high force effects on bearings. High level of unbalance can cause vibration and deformation.
    Two types of unbalance can be distinguished; static unbalance and coupled unbalance.
    In static unbalance, there is only an unbalance in a single plane

    Coupled unbalance occurs if there is a static balance in multiple planes but there still is a net force acting on the rod.

    In reality all unbalance is a combination of the two and therewith called dynamic unbalance.

    As the prism is quite thin and shaped like a disk, it is assumed there is only static unbalance.
    The prism can be statically balanced by placing a reference weight 180 degrees before or opposite to the center of weight which is causing the unbalance (see coupled unbalance and note that here they are assumed to be in the same plane).

    To measure the unbalance typically a setup as shown below is made;

    The rotor is spun and a reference weight is placed on top of the rotor. This will now be the primary unbalance. A trigger is recorded for each rotation. Also a signal from an accelerometer is recorded. The accelerometer signal can now be converted to the amount of mass needed in grams and the position in degrees.
    The residual weight is removed and the rotor is spun. This signal is used is to calculate the correct reference weight and position. 
    For a prism system, the top of the prism could be partly blackened. This would than block a laser if it shines through from the top while the prism is rotating. This signal could then be used to balance the prism.
    If multiple prisms are balanced, most likely the reference mass only has to be placed once. As all systems are quite similar.

       1. Vortex: Dynamic Balancer and Vibration analyzer of Dynex hobby
       2. Mechanics of Textile machinery NPTEL, in specific the chapter on Balancing of Machines (page 140)

  • Nearing minimum viable product

    Hexastorm08/21/2019 at 22:07 0 comments

    The laser module is nearing a stage of what I believe could be a minimum viable product. The customer has to decide on this though. The earlier design in Freecad was upgraded to a closed box using the Freecad LCInterlocking module.

    The copper laser module has been removed from the housing to safe cost and space. The laser was also not in the center of the black housing which is a problem with alignment.
    The MVP will be sold without two cylinder lenses, this saves space and reduces cost.
    A user can then upgrade afterwards. The cross scan error can be kept low by keeping the focus point near the exit of the box. The final version will also feature prism with edges parallel to <1 arcminutes instead of <5 arcminutes.

    A top front view of the system.

    A top view from the system from the reference point of the laser. A mirror can be seen that is used to redirect the laser to the photo-diode which is protected by a black cap.

    The module is quite small, 140x130x60 mm. The back has two connectors one plug for power; 12V, 5V and GND. The other plug is for a ribbon signal cable.

    In the front only a small opening is left for the laser bundle. The scan line is typically in the order of 8 mm. Possibly, in a future version an automated shutter is added so it can be protected from dust.

    The product shown is close the minimum viable product I plan to release. I am making a second module and will then demonstrate the technology by making a PCB.
    Hereafter, I intend to test market appetite for the technology and see if there is demand for 10 units. Another approach would be to measure metrics like likes or views of the video.

  • Hacking scanning mirrors in to scanning prisms

    Hexastorm08/21/2019 at 21:12 0 comments

    The process goes from right to left. First the clamping pin is removed so the mirror can be released.

    After removing the clamping pin, I removed part of the metal central axis so the first ring can act as reference substrate. I used a spinning mill, a DIY alternative is a hand drill like a Dremel.

    A TESA hite 700 is used to assure that the cut is deep enough, and the inner ring ring is lower than the outer ring. A DIY alternative would be to use a micrometer gauge.
    The polygon base is then placed back on the motor. UVacryl 2295 is deposited on the center ring and the prism is placed on top of it.  This can be done by gloves or a pen-vac. The distance with respect to a reference pin is measured while the prism is rotated. This assures the prism is centered.
    UV light is used to fix the prism in position. I used the blue point 2 from easy cure for 120 seconds. An UV led light at 375 nm suffices as well.

    In physics, it is easy to show that being reflective or a mirror has disadvantages. A mirror is four times more sensitive to the facet to datum error than a prism.  The facet to datum error is key as it results in the cross scan error which is hard to remove. Jitter can be removed via the photo diode.
    If a mirror has a facet to datum error of one degree, the total error is two degrees. If a prism with a refractive index of 1.5 has a facet to datum error of 1 degree, the total error is 0.5 degrees, see deviation angle prism on Wikipedia.

  • SX10: wide scan angles with prisms

    Hexastorm08/13/2019 at 20:36 0 comments

    I have found a commercial prism scanner in the field; the Trimble SX10 scanning total station.

    For more details see this  article on the big eye. They translate light by refracting it through two orthogonal prisms and then collimate it with a lens. The trick here is that they use it to scan over a wide angle, instead of  short angle. They have a sort of reverted setup.

    You can see they start from a point and then form a collimated, aka parallel, bundle.
    It turns out that this design was used in the AGA Thermovision System 680 in 1970.

    The challenge solved by this thermal imaging camera was how to scan [over a wide area] using a single, very expensive, and liquid nitrogen cooled infrared detector. The solution was to pass the beam through two rotating [octagonal] germanium prisms, one horizontal and one vertical.
    A picture is provided on page 114 from inverse problems in engineering mechanics.

    The germanium prism is shown here.

  • Module improvements

    Hexastorm08/10/2019 at 15:04 0 comments

    Changed the scanner and ported all designs to FreeCad. The scanner can be calibrated via set screws.
    The scan head passes all tests; laser can be turned on, polygon rotates and the photo diode can be read out via the circuit.

View all 47 project logs

Enjoy this project?



Robert Mateja wrote 07/31/2019 at 11:48 point

Congratulations on winning Hackaday Prize 2019!  (at least in my opinion)

  Are you sure? yes | no

Hexastorm wrote 08/01/2019 at 09:30 point

Robert, thank you for supporting me! Winning the prize would be amazing.  My current target is to get other people to try out the technology, I am really trying to make it more accessible. I hope I can show an improved prototype of the scan head soon.

  Are you sure? yes | no

Conny G wrote 05/27/2019 at 12:36 point

What material is the prism made from? How is it manufactured?
Can i make it in my "maker lab"?

  Are you sure? yes | no

Hexastorm wrote 05/29/2019 at 11:39 point

Prism has the following properties; 2 mm thick, 30x30 mm square,  faces 60/40 < 5 arc min, chamfers 0.10 – 0.30mm, edges Polished 60/40, top bottom polished 60/40.   You will have to discuss details with manufacturers in China over Alibaba. I made the first in a maker styled lab, a description of the process is in this log

  Are you sure? yes | no

Gravis wrote 02/03/2019 at 19:16 point

I'm also interested in the possibility of using a motor from a hard disk drive instead of a breaking down a polygon motor.  HDD motors are cheap to buy and (as I understand it,) contain an encoder and have screw holes which makes affixing things easier.

  Are you sure? yes | no

Hexastorm wrote 02/04/2019 at 08:48 point

HDD seem too slow.  They typically spin at 5400 or 7200 RPM.  At the moment, I can go up to 24000 RPM with polygon motor. For some applications, I would like 50000 RPM or 70.000 RPM, like the roadrunner sold by precision laser scanner. Also the motors are not too expensive, they are like 20 euros. I understand 20 euro's can still be a lot but if you look at total costs; you can better pay attention to other components.

  Are you sure? yes | no

Gravis wrote 02/05/2019 at 06:00 point

Oh, I had no idea you were planning on high speed.  Where can you get the motors in the 20 euros range?

  Are you sure? yes | no

Hexastorm wrote 02/06/2019 at 13:40 point

You can find polygon motors at alibaba ( .  The system is a proof of concept; for desktop PCB prototyping 2400 RPM is fine. If you plan to compete with Kleo . You will need at least 50K RPM.  An option would be to encase the prism and remove the air. This will reduce the drag. You could also fill the encasing with Helium as it has low drag and a high thermal conductivity.  Like the roadrunner the encasing windows would be tilted out of plane to minimize back reflections, see

  Are you sure? yes | no

Gravis wrote 02/03/2019 at 15:57 point

My suggestion for this project is to isolate the scanner from the 3 axis robot part so that the scanner could be made into a tool that can be changed out.  I would also ditch using BB's PRU and instead use a dedicated chip (and maybe a RAM buffer) and connect it via CAN bus.

  Are you sure? yes | no

Hexastorm wrote 02/04/2019 at 08:58 point

I intend to isolate the scanner, and design it for specific machines. I like the idea of having a dedicated chip. In the past I used a FPGA (Xula-LX25) with RAM as  bufffer. I can imagine there are even better options. The problem is that developing a dedicated board costs time, money and a lot of experience. Zeller made a very accessible code for the Beaglebone, so I went with that. You are looking at a proof of concept. It's a technology demonstrator. Anyway if you have recommendations; or some example code; feel free to share. 

  Are you sure? yes | no

Gravis wrote 02/05/2019 at 07:48 point

Considering this is a project where accurate timing is vital, I think an XMOS processor (e.g. XS1-L4A) would be a good fit.  Each 100MIPS processing unit is 100% deterministic with fast GPIOs.  I don't know the rate of data throughput you need but it may be easier to just cache to workload on a local FLASH chip than stream it.

  Are you sure? yes | no

Hexastorm wrote 02/05/2019 at 10:53 point

XS1-L4A is nice... but I rather like something with lot of support and examples... probably first gonna optimize the current code and balance my prism.

  Are you sure? yes | no

Gravis wrote 02/05/2019 at 20:37 point

XMOS stuff actually does have lot of support (, examples ( and even an IDE but I somehow missed the part where you wrote that didn't want to build a custom board.  Sorry about that.  XMOS chips make it easy to glue things together since it's 99% software so it doesn't take too much skill to make a board with them.  Consider enlisting help to make a board as there is a good chance it will alleviate timing related issues.  Good luck! :)

  Are you sure? yes | no

Paul wrote 11/05/2017 at 03:49 point

You've certainly done your homework very thoroughly, and I see that in your application with very small optical cone angles (large focal ratio), the optical aberrations and field curvature appear to be tolerable.  That's great.

One question: You say that previous scan techniques require a large (and therefore expensive, you argue) f-theta lens, which must have one dimension at least as wide as the scan line.  In your approach, your polygons must be larger than the scan line length, but in *two* dimensions, making the volume of your optical element much larger.  Since either shape would use identical materials and fabrication processes in volume production (i.e. injection molding), one would naively expect the smaller element (the f-theta lens) to be cheaper.   How is this line of reasoning flawed?

  Are you sure? yes | no

Hexastorm wrote 11/05/2017 at 10:51 point

A telecentric f-theta lens requires one dimension at least as wide as the scan line. A non-telecentric f-theta lens does not require that.  In my approach, the polygon must have one dimension longer than the scan line. The second dimension is 2 mm. An f-theta lens consists out of multiple lens elements, e.g. a 3 element f-theta lens. These elements have curved surfaces. The prism consists out of a single element with a flat surface. You can't make the f-theta lens out of plastic, so you would have to injection mold quartz. I am unfamiliar with the prizes for that. Besides most likely a higher price and the fact you have to use multiple elements, you also need to worry about patents. Envisiontec patented the usage of reflective polygons; US 9079355 B2 . Finally, you need a thick reflective polygon as thick polygons can deflect collimated bundles with a large diameter and these can be focused to smaller spots.  A transparent prism uses a focused bundle and therefore typically can be thinner, which keeps the price of the bearing lower.

  Are you sure? yes | no

Paul wrote 11/05/2017 at 15:55 point

You have clearly thought about this a great deal, and have your arguments worked out well.

I wasn't considering that you might be requiring quartz.  I would have guessed even BK7 would be overkill for this application.

I mention injection molding because I look around my offices and see several laser printers.  Each of them contain a laser scanning unit with a rotating (reflective) polygon and a f-theta lens arrangement, with the final element being very large (>200 mm long).  All the optical elements of the ones I have inspected appear to be injection-molded PMMA or similar plastic.  The entire laser scanning unit must cost considerably less than $50, given the prices of the printers (all less than $200, two less than $70).  Granted, these are produced in huge volumes, but they serve as existence proof that these scanning systems with large optical elements are not intrinsically costly.

  Are you sure? yes | no

Hexastorm wrote 11/05/2017 at 16:52 point

PMMA absorbs light at 405 nm. The laser printers at your office use 800 nm and low power lasers. I use 405 nm and high power lasers. So yes; there is concrete proof that PMMA injection molded systems are not intrinsically costly. There is no proof that quartz systems are not intrinsically costly.  It's unclear what the prices of these systems would be .

  Are you sure? yes | no

Paul wrote 11/03/2017 at 13:21 point

A good variation on the usual way.  I build a few instruments based on this and similar methods between 1985-1989.  A couple of important notes:  

1. The scanned field is NOT flat: The optical distance to the target plane *increases* as the polygon rotates away from normal.  Not only is it geometrically longer, some of the increased  path length is in the high-index polygon too, increasing the path length even more.  The result is a curved focal or scan plane.  One of my instruments actually depended on this: a rotating polygon was used to tune the optical path length inside an optical resonator cavity, to adjust a tunable laser that was phase-locked to that cavity. 

2. You get some significant spherical aberration when you focus through a thick window like that, for similar reasons: the light rays at the periphery of the optical cone take a longer path to the target plane than rays going through the middle of the cone, with the result that they focus at a different depth.  For a laser at f/50 (or whatever it is), this probably isn't significant, but in an imaging system at f/2, it seriously degrades focus. 

  Are you sure? yes | no

Hexastorm wrote 11/04/2017 at 22:09 point

Paul, thank you for your reply!
A transparent polygon scanner with a single laser bundle was first patented by Lindberg in 1962.  The scan field is not flat and you can get some significant optical aberrations. A full numerical model is available here . A description of this model is available in the technical presentation. The result shows that in practice the scan field is flat and the optical aberrations are not significant for the current spot size and line length.

  Are you sure? yes | no

Hexastorm wrote 11/03/2017 at 11:58 point

Well this is the first comment! If Hackers are interested in transparent polygon scanning let me know :P ..

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates