Close
0%
0%

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; e.g. US10209226B2.

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.
Cyanotype paper is currently used as it can be developed with water. The current electronics provide the possibility to cut a PCB with a spindle.

Specifications

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 or the business case pitch.

  • wavelength: 405 nm
  • rotation frequency:  up to 21000 RPM, current 2400 RPM
  • line speed: up to 34 meters per second @ 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

Electronics

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

Status

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).

Acknowledgement
Special thanks go to Henner Zeller for his work on LDGraphy. The electronics and software in this project helped me a lot with constructing the laser scanner, see video.

Software
Hexastorm fork of LDGraphy
Optical design
old FPGA code

Electronics
PCB design

Hardware designs
CAD files
Cartesian frame was donated by FELIXprinters.

Literature Research
White paper @ Reprap

Other Links
Official website

analysts_presentation.pdf

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

Adobe Portable Document Format - 781.75 kB - 09/24/2019 at 08:39

Preview
Download

pcb_scanheadfixed.pdf

schema of the pcb for the scanhead

Adobe Portable Document Format - 45.07 kB - 09/23/2019 at 13:51

Preview
Download

bomlist.ods

bill of materials for the photodiode detector

spreadsheet - 13.26 kB - 09/23/2019 at 13:33

Download

scanheadpcb_bom.ods

bill of materials for the scanhead pcb

spreadsheet - 13.04 kB - 09/23/2019 at 13:33

Download

firestarterbase_bom.ods

bill of materials for the cape of the beaglebone

spreadsheet - 14.97 kB - 09/23/2019 at 13:32

Download

View all 8 files

  • 1 × prism, 30x30x2 mm edges parallel to < 1 arc minute 20pcs @ 48 USD per piece
  • 1 × Beaglebone Green 44 USD
  • 1 × BPW34-B (photodiode) 7 USD (works also without a blue enhanced photodiode)
  • 1 × Laser diode housing chrome with copper 4.9 USD
  • 1 × BDR-S06J 405nm, 500-600mW Blue-violet Cut-pin Laser Diode 30 USD

View all 11 components

  • Patent portfolio of Luminar Technologies

    Hexastorm10 hours ago 0 comments

    Mr. Russell has become the world's youngest self made billionaire at age 25. Mr. Russell founded Luminar Technologies, a company which builds lidar scanners for cars.
    Luminar's lidar scanners use a combination of a rotating polygon mirror with a galvo mirror. Luminar uses a wavelength of 1550 nm. This allows one to use a higher laser power without risking damaging the retina.
    Luminar seems to have a very good patent position in the US market and a very weak one in the European market.
    Pulsed laser for LIDAR system: US 10520602 B2, US10012732B2
    Group of patents which protect the laser source used in a LIDAR system. Luminar seems to have a monopoly on using laser sources between 1400-1600 nm and repetition rates up to 100 MHz.
    In Europe patents were filed under the numbers, EP3411660A1 up to A4. These have all been rejected due to lack of novelty.
    Low profile lidar scanner with polygon mirror: US10571567B2
    Patent which protects a certain embodiment which uses a rotating polygon mirror with a galvo mirror.
    This might be circumvented by using a prism, but you would still be blocked by the pulsed laser for LIDAR System (see above).
    No patent seems to have been filed in Europe.
    Group of software patents;
    There is a collection of US patents which protects scan patterns, adative pulse patterns and monitoring the vibration of the car to improve the scan patterns; US10627521B2, US10209359B2, US10254762B2
    Software is not directly patentable in Europe.
    US10267918B2
      Plurality of digital converters
    Still pending in europe under  EP3602128A4, search report requires amendment before april 2021.
    US10545240B2 Pulse Encoding 
    Still pending in Europe, search report of was not positive see EP3602112A1

    I will look more into this topic but so far, building your own car LIDAR scanner in Europe still seems possible :-).




  • Icestorm meets Hexastorm

    Hexastorm11/17/2020 at 16:22 0 comments

    Finished new controller board for laser scanner and can now stream data via a ringbuffer to prism scanner. No more micro-controllers from now on but only FPGAs :-). Thanks to Claire Wolf, Migen and Litex team. Code can be found here.

  • Dyeing textiles with lasers

    Hexastorm11/06/2020 at 10:41 0 comments

    On Tuesday 3 November 2020, I gave a talk on coloring textiles with lasers. Lasers allow you to locally tune the diffusion of a colorant into the textile by applying heat. My aim is to reduce waste and create a more sustainable world with this technology and promote my prism scanner :-). You can watch the video here.

    .

  • Dutch state fighting open-hardware

    Hexastorm10/19/2020 at 11:28 1 comment

    I created an open-hardware project and got part of my inspiration while working for the Dutch State (TNO). The core idea is that a laser bundle is moved by rotating a prism.  The Dutch state got a patent for a plurality of laser bundles but not for a single laser bundle. For the printed circuit board application, it founded LDI Systems in 2015. This failed and they wasted multiple million tax dollars. I only spent 10K dollars on a working system and paid taxes. I thought they would leave it there. But TNO requested another subsidy from the Dutch government (NWO) to pump 45K euro into a new company AM systems BV for the 3D printing application. I have contacted NWO in this regard as I don't see how the original issues can be solved.  I also wonder how much "own" money is brought in (company is largely owned by the Dutch State). A company is not subject to tender law but the government is.  As such the company might be use to circumvent it. I am also not aware of employees in this company and know they contacted an optical consultancy. My work is free within the constraints provided by the typical licenses MIT and GPL. But I think is strange the state is still sponsoring this project. Hackaday gave me 3K and the Dutch states gives a chosen business developer 45K to explore their failed project. That's not really fair and in that sense the state it is sponsoring "closed hardware".
    Often the government throws away the result if unsuccessful, if it was open source one could at least learn something. Anyhow, I filed an official complaint and have talked to NWO.

    Links are no longer online, you can still find it in Google Cache. NWO stated it updated its website.

  • Hackaday Prize 2020

    Hexastorm08/06/2020 at 13:40 0 comments

    Although, I do not plan to participate in the Hackaday Prize 2020. It is inspiring to look for sustainable applications of laser technology.
    In 2019, the United Nations set up a campaign for sustainable fashion. Most of the clothes are manufactured in Asia. This process requires a lot of water and produces toxic waste.
    Luckily, Dr. Laura Morgan, looked for ways to dye textile with lasers, see her extensive PhD thesis.

    She showed that lasers can be used to dye textiles. Results can be seen in the image below.

    The laser allows one to locally tune the diffusion of colorant into the textile.
    She points out multiple benefits for the environment. Production can be done locally,
    waste can be reduced and new colors can be added to existing products allowing reuse.

    In her laser experiments, Dr. Morgan uses 2 Joules per square centimeter. Results are improved with multiple passes, e.g. 15 passes. A carbon dioxide laser is used in her experiments.
    She also shows other applications; fading linen, increasing the absorption of wool and applying 3D texture via heat distortion.

    I think textile coloring could be a nice angle for the Hexastorm. If I have the time, I will do some experiments with a 450 nm laser at 10W. This is much safer than a carbon dioxide laser as infrared light is invisible. The process still requires a washing step but the chemicals involved are a lot less dangerous than the chemicals used for PCBs. The application I see is adding patterns to existing products. I think the process is too slow due to insufficient laser power for large scale production.

    Which brings me to an update of my current progress.
    At the moment, I am mostly busy with creating the FPGA electronics for the scanner.
    I have made a new board as I made a mistake in the previous board. It turned out that I couldn't use the SPI programming port for sending laser data to the FPGA.
    I also wrote new software, this has so far only been tested virtually.

  • FPGA Pi Hat blinky

    Hexastorm06/11/2020 at 15:38 0 comments

    Managed to make the LED blink on my custom FPGA board. It was quite a challenge and I am glad I didn't go for a BGA package.
    I placed the ICE40 chip on the board with drag soldering. The other components you can hand solder except for the oscillator which requires hot air ( used AYOUE 852) and paste. In the next iteration, I plan to use mainly hot air (it is much faster). Used TS100 as a soldering iron, the Loctice GC10  for paste, flux and some desoldering wire to get the solder on the TQ144 component right. Biggest headache is that I didn't realize I had to send a wake up packet to the flash ram. I tried the python script ice zero prog to flash the memory but it didn' t work; turns out the wake up packet is implemented in icezprog but not in the old python script (OMG!).
    Also found out the board has too many caps and resistors, icezero uses less see schema

  • FPGA pi hat

    Hexastorm05/17/2020 at 13:37 2 comments

    The current proof of concept module uses the programmable real time unit of the Beaglebone. This is a device similar to a microprocessor and runs at 200 MHz.
    In my next iteration, I plan to use a FPGA. FPGA can be faster and offer more tight control. The current model has a vendor lock to the AM355X ARM core of Texas instruments.
    I just finished routing the hat for the Raspberry Pi with uses the ICE40HX4K. This chip comes in a TQ144 package so is easy to solder. The chip is also quite cheap, around 5 euro's. I was able to reuse a lot of the design of the beaglewire and icecore. Information for the laser controller is streamed to the chip via SPI. Maybe in a later stage, I will use the SDIO connector which is faster. 

    Schematic is shown below, full design available here.

  • Rotor balancer

    Hexastorm04/13/2020 at 14:15 0 comments

    I build a rotor balancer for my prism scanner with an Arduino Nano 33 BLE and an infrared led sensor. I am able to reduce the unbalance of the prism by a factor 10 at a rotor frequency of 90 hertz.  Note that for this motor the rotor frequency does not equal the pulse frequency.
    The prism seems to have multiple plane unbalance so I was not able to perfectly balance it.
    A single measurement is shown below;

    Multiple measurements are taken. For each measurement the amplitude of the accelerometer signal and phase difference between the IR sensor and the accelerometer signal are determined. As the phase seems dependent on frequency, the prism seems to have multiple plane unbalance, What also seems to play a role is that the electric motor works in reverse. The spinning disk probably creates current in the motor which is turned off. In the future, I will try to substract the measurements of unbalanced prism with a balanced one... Maybe their difference will be more intuitive.

    The code, measurements and a brief discussion of the results are available on Github.

  • rotor stabilization experiments

    Hexastorm01/10/2020 at 14:54 0 comments

    One of the challenges still open is how to balance the prism. Earlier, I discussed the mechanics in a blog named prism balancing. In this blog, I want to give a practical example of how to determine the mass and position from measurements.
    Vibrations caused by a spinning rotor are measured with an accelerometer. As sensor, I used the MMA8452Q but would recommend the MMA8451Q or LIS3DH as they have better specs. I used the Raspberry Pi 3B to measure the signal and generated a signal for the polygon motor via hardware pwm using pigpiod.
    I pulsed the rotor at 20 Hertz and recorded the vibrations for 1 second at 800 Hertz sampling frequency.
    Sampling of the signal must be equidistant or otherwise the discrete Fourier transform can not be calculated. As mirror motor, I used the Panasonic AN4000A.
    The discrete Fourier transform of a balanced mirror, shipped with the motor, is shown below

    There is a peak around 100 Hertz. The discrete Fourier transform of one of the prism I use is shown below.

    An enormous peak close to 100 Hertz can be seen. This amplitude can be compared to the amplitude of a known balance weight to determine the required mass. As the centripetal force is linear proportional to mass. This procedure is only so simple for single plane balancing, in two plane balancing the procedure is more complicated.
    To determine the position of the mass, the position of the rotor must be measured. For example by using a photo tachometer. Earlier, I discussed how a camera can be used to measure the position of the rotor.  A camera is quite expensive and it would require some image analysis.
    The DT2234C+ photo tachometer only costs 18 dollars. It was also discussed widely on Hackaday.


      As a result, I bought one and did a couple of experiments with it and attached reflective tape to one of the corners of the prism. The photo tachometer measured a speed of 5750 rpm, i.e. 96 Hertz.
    This corresponds to my measurements as I can see a peak near 100 Hertz.
    This also explains why I have so many problems with this motor and recommend the Sharp 160.
    The Sharp 160 is able to spin at 2000 RPM. Also the relation between pulse frequency to the motor and the final RPM is direct. Pulsed at 20 Hertz the Sharp would spin at 1200 RPM and not 5750 RPM.
    The position of the peak in the cross-correlation of the accelerometer and photo tachometer will be an estimate of the phase difference.
    If I know the phase-difference with respect to the marking used by the photo-tachometer, I can use that to calculate the position of the balance weight.
    The code used for the measurements can be found on Github. I also did a successful experiment with an artificial signal to calculate the cross correlation.
    I still have to extract the signal from the photo tachometer and turn on the photo tachometer digitally instead of with a button. Also, I have to order balance weight. Ben Wishoshavich pointed out I could use armature balance putty.

  • FPGA: hexastorm + icestorm

    Hexastorm01/03/2020 at 12:26 2 comments

    The last weeks, I have been doing experiments to see if I can replace the programmable realtime unit on the Beaglebone with a FPGA. On the Beaglebone, there are two programmable real time units, which are very similar to micro-controllers, running at 200 MHZ with 8K byte memory per core and 12K byte shared between them. At the moment, I use one PRU and one memory of 8K byte which acts as a ring buffer.
    There are some challenges with the current design. I am locked into the AM335x processor which runs at 1 GHz and is single core. The latest Raspberry 4 runs at 1.5 GHz and is quad core.
    If I am able to build an extension for the Raspberry it would not be hard to use the scanner with other boards, e.g. the edge TPU or the NVidia nano.
    When I started this project, I actually tried to do this with the Spartan 6 FPGA, using the Xula-LX25.
    In the end, I managed to get something to work by writing the laser data to a sdram and then reading this data from the sdram. This was all written in MyHDL, see Github.
    MyHDL is converted to verilog and this can then be converted to a bitstream by the Xilinx Ise.
    In my latest experiments, I used the IceZero with the ICE40HX4K and Migen. The oscillator on the Icezero runs at 100 MHz and the ICE40HX4k has 81920 bits of memory. In practice, the memory is larger as the Icestorm toolchain is able to program the ICE40HX4k as a ICE40HX8k.
    The ICE40HX8k is a lot less powerful than the Spartan 6. It has 1/6 of the SRAM memory and 1/3 of the LUT. The main advantage for me is the open source icestorm toolchain which runs on linux.
    My current setup works as follows. Data is streamed to the FPGA via SPI and stored on the FPGA using the internal SRAM. The sram is used as a buffer before the data is placed on the substrate with the laser. My code can be found here, especially look at the spimemmap example.
    I did some experiments on the Raspberry 3 using Python and Spidev and I am able to get data rates up to 25 megabit per second.
    In my current laser head, the scan line is 8 mm long and a pixel is 10 micrometers. So there are roughly 800 pixels per line, i.e 100 byte per line.  At 20.000 RPM * 4 (facets)/ 60 = 1333 lines per second. This implies 133 kB/s or 1 megabit per second, much less than 25 megabit per second.
    Another problem, I am still working on is balancing the prism. I hope to report some progress on that soon.
    What might be of interest is that MIT recently released a press statement in which they show that they are working with lasers and ultrasound. The technology is very similar to my previous blog post. The only difference is that they use a laser to detect the vibrations.
    Another interesting was one by blog the drive. There apparently is a Dutch startup which use lasers to clean railway tracks.

View all 64 project logs

Enjoy this project?

Share

Discussions

Hexastorm wrote 12/30/2019 at 15:53 point

No it wouldn't work.. you need edges polished, not the top and the bottom.
I am not shipping out prism at the moment as they r not balanced yet (working on this). I am also working on a FPGA toolchain, will post an update on my progress here soon.

  Are you sure? yes | no

Ben Wishoshavich wrote 10/27/2019 at 04:56 point

Can you recommend a specific polygon motor module on alibaba? I don't know if there are any differences and I'd like to order one. THanks!

  Are you sure? yes | no

Hexastorm wrote 10/27/2019 at 13:37 point

Yes, you should buy exactly this motor https://nl.aliexpress.com/item/32824649951.html . It uses the NBC3111 chip. I had problems with other motors. Make sure you buy at least 2, although they are quite hard to break.

  Are you sure? yes | no

Ben Wishoshavich wrote 10/23/2019 at 21:59 point

Dude, this is some pretty awesome work. I'd love to help refine some of the manufacturing and board designs, let me know how I can best help

  Are you sure? yes | no

Hexastorm wrote 10/24/2019 at 17:55 point

Thanks! There are two other people who have shown interest. I need at least 10 people to do a run as I have to buy the prisms in bulk. Turn around time would be significant. Producing the prism takes at least a month.
I am fixing the low hanging fruits at the moment. It is hard to help with these as you don't have a laser head. I am building a new one but there is still only one in the world :-).
Things you could look in to;

- a better alignment system for the laser; this uses four screws and is over dimensioned --> see my free cad design files

- a better alignment system for the cylinder lenses; the screw system is not really comfortable --> see my freecad design files

-  how do i put my state machine on an fpga; I have been looking into https://github.com/m-labs/misoc as a replacer for the beaglebone.
This task seems rather complicated but I guess this knowledge could be really help full. The statemachine now runs on pru of the beaglebone and is limited at around 2 MHz.

- how do i balance the prism; i have done some preliminary experiments but still works needs to be done. You could also try to figure this out with a regular polygon motor. Add an imbalance and try to analyze this.

- the slicer or interpolater can only be run on a computer, as it overflows the ram of the beaglebone https://github.com/hstarmans/ldgraphy/blob/master/interpolator/interpolator.py . Remove this problem, optimize the code.

In the mean time, I am cleaning up the code, building a second head and still have to do more experiments.
I am also waiting for news on the hackaday prize. That's also why I have been quiet on the blog.

  Are you sure? yes | no

Ben Wishoshavich wrote 10/24/2019 at 22:57 point

I'm wondering if there isn't a BLDC motor that could be substituted for the polygon motor, hopefully something that is more available. And then I'd need an encoder. I'll take a look at this, although I suspect going greater than 20k rpm requries air bearings and a custom design.

The rectangular prism does seem to be a challenge. I'll let you worry about that. Out of curiosity, do you know how much it'd cost for a custom order?

An FPGA should be able to handle the state machine. I'm working on the FPGA that's in the Hackaday Superconference badge, and it's got an open toolchain. It might be overkill though. The ICE40 may be better(and cheaper). I might be in the minority in that I'm not sure this is a huge priority, as your electronics are pretty cheap. It's probably a pretty significant time sync to rewrite the assembly for the PRUs into a state machine. I'd probably focus on a command and control system to interact with GCODE or something else.

 I could jump into the MCAD, but I only know Solidworks. I suspect someone else might be better suited for that.
At work, we have specifications for balancing motors for EVs. The most relevant standard is ISO1940. Let me know if that's useful for you. Usually a balancing machine is used to detect vibrations while the part is rotated. They're pretty rare and fairly expensive though. They do make some simple ones for balancing quadcopter props you could look into. Usually you have to add or remove material in a specific spot to make it work.

I already have some of the parts you've used. Perhaps it won't be as hard to duplicate some version of this as I expect.(expect for that lens).

  Are you sure? yes | no

Hexastorm wrote 10/25/2019 at 17:13 point

-  i wouldn't substitute the motors; they have been used in this application for years by a large industry. Rotating polygon mirrors are produced in the tens of thousands. Motors can handle up to 21000 RPM.  This is more than what is needed at the moment, 2400 RPM, as the beaglebone can't go faster.
- custom order is around 500-600$ and MOQ is 10. for the prisms
- Henner zeller wrote a GCODE parser for the beaglebone called beagleg; my idea is that this used and you simply flip the machine between gcode mode and laser writing mode
- never heard of this standard good tip
- all parts are easy to obtain including lenses, motor etc; the only challenge is the prism and time. You will need time :-)

  Are you sure? yes | no

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 https://hackaday.io/project/21933-open-hardware-fast-high-resolution-laser/log/167433-how-to-be-transparent

  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 (https://www.alibaba.com/showroom/polygon-motor-ricoh.html) .  The system is a proof of concept; for desktop PCB prototyping 2400 RPM is fine. If you plan to compete with Kleo https://www.youtube.com/watch?v=7R464iHaTQU . 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 https://precisionlaserscanning.com/2016/03/road-runner-70000-rpm-polygon-scanner-solves-the-noise-problem/

  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 (https://www.xcore.com), examples (https://github.com/xcore/) 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 https://github.com/hexastorm/opticaldesign . 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