Controlling Laser - Galvanometerscanhead with LinuxCNC - Ideas appreciated.

16 Feb 2018 09:58 #106007 by AuricGoldfinger
Hi over there,
I´m just "brainstorming" for a private project how to control an existing (surplus- analog control) Galvanometer Laser Scan head with LinuxCNC. I would like to archive scanning speeds of up to 1,5m/s and think about an update rate of the needed analog control signals of 30 to 50microseconds. (20 to 50kHz) with an resolution of 16Bit (12 Bit effective was worst).
Additional some linear axes with integrated drives and other peripherials have to be controlled als well - probably with RS485/RS422 control. A lens correction for the laser would have to be implemented as well.

Having electonics experience as professional anlog systems, RF and PCB develepment engineer, done some fpgas as well, but not so happy about programming controllers. Tinkering around with everything which has a power cord or power in in ;). So I could adapt also not from the shelf driver concepts and would make me some PCBs if necessary.

I would be happy to hear about any ideas or known projects. I don`t want to invent the wheel again.
What is the maximum update rate Linuxcnc could do with such fast scanner drives?
I just have a normal stepper Isel mill running here on linuxcnc and so the motors have been the limit for me previously.

P.S. I still have a bounch of mesacards from an never realized Deckel Mill project somewhere around, but remember that they used some kind of PWM for output. So probably to slow.

Best regards


Please Log in or Create an account to join the conversation.

16 Feb 2018 10:21 #106010 by rodw
The default servo thread in Linuxcnc is called 1000 times per second (1 kHz) so 20-50 Khz is pretty easy. it is possible to go faster but you need low latency hardware.

halcompile allows you to write your own components in C that are called with every invocation of the servo thread

You'd need to consult the Mesa documentation about their speed. They run at up to 10 Mhz but remember that they cannot update LinuxCNC any faster than the servo thread.

16 bit resolution should not be an issue as floating point is supported on the servo thread. Linuxcnc has a default S32 datatype which I believe is a 32 bit integer. There is a component called halsampler and a companion realtime program that allows you to stream data to the console or a file at the servo thread frequency for testing.

I'm not aware of any similar projects. There was some discussion recently about rasterising for a laser engraver that concluded the 1 kHz servo thread was not fast enough to provide the resolution required but your timings appear to be more relaxed.

Hope that helps.
The following user(s) said Thank You: AuricGoldfinger

Please Log in or Create an account to join the conversation.

16 Feb 2018 17:05 #106029 by PCW
One thing to consider is that most galvanometers do not have a greater than couple KHz bandwidth
so a 1 or 2 KHz update rate of waypoints may be adequate, IF the low level hardware driving the A-D
interpolates between waypoints ( the way old time vector displays worked )

Please Log in or Create an account to join the conversation.

Moderators: snowgoer540
Time to create page: 0.128 seconds
Powered by Kunena Forum