Welcome to Laser Pointer Forums - discuss green laser pointers, blue laser pointers, and all types of lasers

LPF Donation via Stripe | LPF Donation - Other Methods

Links below open in new window

ArcticMyst Security by Avery

Galvo specs and driving voltages

Joined
Jan 6, 2008
Messages
68
Points
8
Hi,

I'm working on a project for a class, it's pretty much a laser scanner. I'm trying to interface the galvos (I got the speclas 20k ones) with this dev board i've got. It's an Actel Smartfusion board with 2 1bit delta sigma DACs. I'm trying to figure out if those will be sufficient to drive the galvo drivers with, or if I need something else.

Where can I find a spec sheet on this galvo set? The only documentation I have is rather short, and assumed you have some sort of premade driver, instead of making your own. I'd like to know what sort of impedance these have on the inputs.

I'd also like to test alignment and speed before I start working on the software side, can I hook the driver inputs up to function generators?

Lastly, where can I find more information on the ILDA spec itself, as in how images are encoded. I'd like to possibly interface with a parallel port and have an ILDA passthrough mode so I can use typical ilda software.


Cheers.
 





Things

0
Joined
May 1, 2007
Messages
7,517
Points
0
The input of typical galvanometers is 10V differential, ie -5V to +5V swing. Their impedance is usually a few K Ohms.

You may hook it up to your function generator if it's output is 5V or less, however you will only get 1/2 the deflection (Unless your generator is differential too).
 

Benm

0
Joined
Aug 16, 2007
Messages
7,896
Points
113
You'll probably need an opamp circuit to go from the DACs output voltage to the 10 volt differential required by the galvo driver boards, but this is pretty trivial.

I suppose the limiting factor is the speed of the DACs... they should be able to swing from minimum to maximum in a timeframe of 50 microseconds to drive a 20kpps scanner - most audio dacs are more or less able to do that for practical purposes.
 
Joined
Jan 6, 2008
Messages
68
Points
8
For the 10v differential: the -5v rail is just the inverse of the 5v rail, correct?

Driving those rails directly from the output of the op amp, will I need any sort of filter or load resistor?

How do I tell if I need a filter on the output of the DAC?
 

Benm

0
Joined
Aug 16, 2007
Messages
7,896
Points
113
The rails are actually +10 and -10 volts, and just the inverse signal indeed.

You can drive them directly from the opamp output - i usually drive one output directly from the correction opamps output, and use another opamp to make an inverter do drive the other signal - very simple.

I'm not sure about your dacs however: do they come with a lowpass filter by default? With DACs from soundcards no extra filtering is needed.
 

LSRFAQ

0
Joined
May 8, 2009
Messages
1,155
Points
83
To drive single ended. Ground the inverting (-) input to each galvo amp. Drive the noninverting input with +/-5 volts. This will get you 1/2 deflection. Start with this, as its safer for the galvos until you get your code done.

Then build a inverting buffer opamp circuit with a gain of -1 for both X and Y. This will need +/- 12 to +/- 15 volts or so to power it, the opamps have losses in their circuits. This will make the needed "mirror" signal from the single ended signal you used to get started with. You will then have full delfection and can drive long cables.

Avoid trying pwm as your digital to analog converter if you want any speed or accuracy from the galvos. Use a real SPI or Microwire driven D to A converter. (dac CHIP) Costs a whopping 10$ counting shipping, and a 30 more minutes of initial programming time, but is worth it.

It is always good to add a 10K potentiometer to the inputs of the galvo amps when experimenting single ended. This gives you a image size control withoud adjusting the calibrated "input gain" potentiometer on the amp board.

Steve
 
Last edited:
Joined
Jan 6, 2008
Messages
68
Points
8
My DACs have an on chip lowpass filter, but it may not be good enough. The manual talks about an optional external capacitor to make it a better filter. We'll see how it works without a filter, and if needed I'll add one.

For the software side, does ILDA just drive specific points at a set interval, i.e. if it has a long line to draw it will draw some points in the middle (so the image files have points defined in them that are not required to define the image, but are there to simplify the software)? This way the software would just go through a list and move the galvos and set the blanking, and it could be done with a regular timer interrupt; as opposed to something more complicated.
 
Joined
Jan 6, 2008
Messages
68
Points
8
To drive single ended. Ground the inverting (-) input to each galvo amp. Drive the noninverting input with +/-5 volts. This will get you 1/2 deflection. Start with this, as its safer for the galvos until you get your code done.

±5v on just the positive? so 0v offset and 10v ppk? My DAC is 0 to 2.56v, so it looks like I need to do a noninverting summer and add -1.25v to the output and have a gain of ~4 to get -5v to 5v range.

Out of curiosity, why is it safer to drive the galvos single ended until the code is done?

I was probably gonna get some bigger op amps and drive with the ±24v galvo supply. I have some LM675 ( LM675 - Power Operational Amplifier ) power op amps left over from another project, I was thinking I'd just use those for this and not have to worry about another power supply (don't wanna find one that'll do -12 or -15v).


The DACs you mention, got a specific part number you'd suggest? The board I'm using has 2 sigma delta DACs onboard (which sounds similar to what sound cards use), and I think those will be good enough, but in case they aren't I'd rather have a backup plan ready.


also to everyone: thanks for all the help so far, things are significantly clearer now.
 

Benm

0
Joined
Aug 16, 2007
Messages
7,896
Points
113
For the software side, does ILDA just drive specific points at a set interval, i.e. if it has a long line to draw it will draw some points in the middle (so the image files have points defined in them that are not required to define the image, but are there to simplify the software)?

Thats a bit of a problem: It depends. Frames can have points within continous lines, but they aren't really required to. You should not count on the frames themselves providing a constant sample rate, but most software used to display them does - they just drive the connected DAC at a fixed frequency.
 
Joined
Jan 6, 2008
Messages
68
Points
8
Last question:
20kpps, what exactly is a point? like what distance? I can drive my galvos at a lot more than 20kpps if the points are all close (I sweep over the range of each axis in 128 points, and it seems happy enough to do that at 80KHz.
This is like doing 64 steps from rail to rail at 40KHz, or 32 steps at 20KHz, it just has more points in between, and results in more detail.

Is that 20kpps like from rail to rail, from center to rail, or something else?

Is there an easy way to tell if what I'm doing is going to harm the galvos?
How about sounds, is it normal for them to be kinda loud? (especially since they are being driven at audio frequencies)
 
Last edited:
Joined
Oct 26, 2007
Messages
5,438
Points
83
Unfortunately, "points per second" is defined as the number of points your hardware can produce while correctly rendering the ILDA test pattern. It's not tied to a notion of absolute speed or system response like you'd probably expect from a rate definition, or even something like hertz with respect to your laser's modulation speed.

Make sure your galvos aren't "clicking", i.e. hitting their maximum scan angle. The clicking is the sound of the paddle in the feed back sensor area (the big cylinder at the end) hitting the sides because of too much amplitude.

For your testing, bring up the ILDA test pattern and push the galvos until you can't correctly render it. That's your maximum PPS for your galvos unless you do further tuning.
 

LSRFAQ

0
Joined
May 8, 2009
Messages
1,155
Points
83
The circle in the square on the ILDA test pattern is a measure of the 3dB small signal bandwidth of a galvo. You scan the ILDA pattern at 8 degrees angle and increase your point or vector rate until the circle collapses to just inside the square. The points per second update rate at that point is your galvo's speed rating for that combination of galvo, mirror size, and amplifier tuning.

As for the 80 Khz, your modern galvos have a low pass filter/integrator and or notch filter as part of the analog servo loop. Its rolling off the parts of your waveform it does not like. Be thankful for not all of them do that. A 30K galvo at 8' has a typical small jump bandwidth of 2.5 Khz or so. The large jump bandwidth is much less then this. Jump speed is determined by the shaft inertia and the mirror inertia and inductance limits in the coil, so by basic physics, it takes a long time to move on a larger angle.

Single ended is safer because it keeps the scan magnitude down. Its best when creating new hardware to have a potentiometer to set the image size smaller to prevent "slamming or oscillations". Some Chinese clone galvos have the power limiter circuits that US made galvo amps have, some dont. The power limiter will "shrink" the image if the galvo core is getting hot. Its a not really a sensor, its a "coil temperature calculator" that is a analog averaging circuit, and it looks at the feedback signal.

Galvo damage happens when you "Slam" against the stops or cause the galvo driver to oscilliate with a resonant excitation. Its possible to tune a galvo amp to a critical point with poles and zeros in the feedback that resonate. Some cheaper galvo amps are very susceptible to this. The closer your signals are to a sine wave or a trapazodial ramp, the happier and faster the galvos will be.

From basic physics, the quickest way to make a small jump is to accelerate linearly to max drive for 1/2 the time, then to apply a equal and opposite linear deceleration. (when you take the class, its defined as slam to slam, no linear... However this gets you high order harmonics in your signal, which is bad for galvos)

For large jumps, keep in mind it is wise to add (in software) evenly spaced "guide points" in between image points with large spacing.

Anchor and blanking points are added for sharp corners and for black spaces in the images, as needed. Ie at a 90' turn you might add 3 extra points to the image at that point.

Anchor/Blanking/Guide points are usually a user selectable setting in software, so users have a small amount of compensation for different types of galvo.

If you have a true oscilloscope with at least a 1 Megohm input impedance, it is wise to carefully connect it to the galvo feedback signal, which a lot of Asian amps bring out as two white, unconnected, wires. You can then see the settling time, and small position oscillations (ringing) that occur as the servo system tries to stop on a dime. Good, well tuned, galvo amps show about two or three cycles of a decaying, ringing, waveform in response to a sharp step input. The ILDA pattern shows that at the corners of the outer and inner boxes.

If your going to distribute your software, it is wise to have it checked by some one with Galvo tuning experience, as while not easy, it is possible to damage lower cost galvos or some older systems with bad waveforms. Random, fast, square waves with no anchor/guide points are something to avoid in this regard. Software RNGs/Digital Noise sources/Fast PWM are great at making that dangerous waveform.

The ILDA test pattern was carefully designed by a bunch of now retired scanner engineers, artists, and programmers, it is not ideal, it is a compromise, but it is one that has worked well for 20+ years.

Good software systems offer about 10 different tuning test patterns. Grids, and the "Laser Media" pattern are also critical for tuning. The LM pattern lets you match your X and Y galvo speeds, it has diagonal lines that "bow" if the speeds are different. It has corners designed to show overshoot/undershoot.

Laser Show Systems - Scanning Systems - www.LaserFX.com

Since you sound like a good engineer, here is optional reading:

While Mini_Sax is not a typical laser show galvo amp, chapter 10, "Tuning Stratagies" is a good read for advanced students.

http://www.camtech.com/archive/176-25016_MiniSAX_Manual_G.pdf

Dont expect users to retune their galvos to match your system, not many people can handle 6 dimensional problems without some training.
Thats not to insult users, but the truth is a "first tune" for a beginner can take hours. Unless you have Pangolin/LSX or some other"KNOWN GOOD" package to create the various patterns, getting back to good images is difficult.


I went to classes for this, its not "hidden" knowledge, its just that tuning classes are rare beasts, only happening at conferences/LEMS. When entertainment was still a large market for Cambridge, they came and gave classes and handed out study guides, based on factory initial tuning using 50 Hz square waves and a dual trace oscilloscope.

PS, whatever you do, stay away from the "Scale factor" potentiometers for the position sensors. That is a "factory only" adjustment.

Just about any "double buffered" dac will do, ie a dac that both x and y update at the same time. At 30 K, you can see it in the image if they dont. 12 Bits is great, 16 is fine, anything more then that is OVERKILL. 8 Bit is a horrid mistake these days.

As for using the LM675s, skip em. The ilda standard only specs the amps for +/- 10V DIFFERENTIAL, which is peak to peak. Most galvos are set up so +8 on one line and -8 on the other is full scale delection to one side. 24V from a circuit error would easily kill the TL084 clone used as the average galvo input amp, the clipping zeners that would protect the inputs are just not installed on the Asian clones. Use some TL084s with their inherent 20 mA output limit and use 12 or 15 volt rails, this is for "common mode" limitations on the differential inputs.

Steve
 
Last edited:
Joined
Jan 6, 2008
Messages
68
Points
8
Wow, thanks for all the great info. I'll check out the optional reading when I get some free time.

Since you sound like a good engineer

Haha I'm flattered, but I am just a senior in college (1 semester left, finally!).

As for my project (it's for a class), it's about finished. The spec sheet says my galvos are tuned for 20º deflection at 20Kpps. I haven't messed with any tuning, and as soon as I (my TA actually) found out how to get rid of the low pass filter on one of my DACs (the documentation for this board is rather terrible, shame on Actel), everything lined up great. I have a little bending at one corner of the range, but it's not a big deal.

Unfortunately I don't have an easy way to get the ILDA test pattern drawn with my setup, so I had to wing it a bit. It's just for a class project, and not anything that's going to be sold, so it shouldn't be anything to worry about.

I chose to use 16 bits (it's just a software flag / setting to select between 8/16/24 bits), because 8 would've been terrible. This still gives us enough memory to fit 8000 points in memory, which seems to be enough for our project (and enough that memory isn't our biggest issue). We limit in software the distance between points to be 200 (of a possible 65536), so that's 0.3051% of maximum deflection. Pretty small. I had the galvos set up for 20K, but after a few points (maybe 100, just a guess though) the image got rather flashy. I upped the speed to 96Kpps, and they seem to do just fine. We are nowhere near hitting anything (it seem like the maximum range of movement of the galvos is around 170º when powered off, and our overshoot would have to be pretty ridiculous to hit that. (our overshoot is not noticeable, although there is some distortion in an corner of our image; that could be a DAC issue though). Our galvos actually hum along quite nicely at 96KHz. I tried faster, but our board is only running at 96MHz, so at 96kpps, we only have 1k instructions per point (it shouldn't take that much though). We also have another interrupt that polls a wii nunchuck at 100Hz, and that's a lot more complex (it adds points and fixes the return path) and polls the nunchuck over ic. I tried setting the timer to occur every cycle, so it'd be limited by the code speed, and the galvos didn't seem to mind that, but it really wasn't a significant improvement unless the drawing was really complicated.

We're actually more limited by 96Kpps being too slow, because when our drawing gets large, the image starts to flicker because it's being drawn too slow. It's an edge case though, and not a huge issue.

For the correction amp, I ended up using 2 lm741s for each galvo (so double ended drive), and a 7812 and a 7912 to regulate the ±24v to ±12v for the 741s (their limit was ±22v; so close yet so far away). If I later decide to so USB soundcard DAC, I could probably reuse this DAC board, just swapping some resistors.

The only issue we have is a blanking timing one, since our board only has 2 DACs that can be updated simultaneously, and the GPIO pin for the laser blanking has to be done in a separate line of code (probably a few instructions later). It really only shows up at the beginning of the drawing (i'll upload a video when the project is done, maybe a build log as well. We have to write a report about it too.). I didn't think to add blanking points, I'll look into that if I have time (doesn't seem to complicated since it's only the one spot that's an issue).

Thanks everyone for all the help and useful info, it really helped make this project a success.
 

LSRFAQ

0
Joined
May 8, 2009
Messages
1,155
Points
83
I suggest you take a long, hard, look at your waveform repeat period on a scope. I assure you your not getting 96 KPPS from the galvos.

There is no galvo on the planet that can handle a 8000 point image.

Some place, some where, some part of the system is undersampling or filtering.

It sounds like your using a sound card type chip to make your waveforms, in which place your getting a reconstructed point rate of about 20-30 KPPS at best. That would explain the under/over sampling.

Steve
 
Last edited:
Joined
Jan 6, 2008
Messages
68
Points
8
I'm using an actel development board (A2F-EVAL-KIT), which has 2 sigma delta DACs. There is, internal to the chip, a 3 pole low pass filter at 300KHz. So getting 96KHz out of those isn't a problem.


I'm using cheap 20k galvos from ebay, they're Phenix brand. I highly doubt they're pushing the limits of what is possible with high end galvos. I don't even think I'm pushing them near their limit. I can also tell a difference between when I set the galvos to run at 96Kpps vs. faster speeds. Right now I'm limited by the speed of the processor. If I set it to 192Kpps, then the processor takes too much time just outputting the points (so at least 400 cycles per point, maybe more than 500 so the rate would be slower than 192k), and has no time for our other interrupt which reads in controller data. With a faster processor, I could probably drive these faster.


as for 96Kpps, I don't see why that would be impossible on galvos. 96Kpps for the test pattern, sure. But I'm driving my galvos a little differently than typical scanners do. As I said, there's only a 0.3% of full scale maximum change between 2 points (which I gather is quite small compared to a typical setup).

Imagine drawing a circle: with a 20Kpps scanner, to draw the circle once per second, you could use the following array:

cpoint output[20000];
for(int i=0;i<20000;i++){
output.x = cos(2 * pi / i);
output.y = sin(2 * pi / i);
}

That gives you a nice circle with 20k points. now at 96K:

cpoint output[96000];
for(int i=0;i<96000;i++){
output.x = cos(2 * pi / i);
output.y = sin(2 * pi / i);
}

same circle, but with 96k points. Now why wouldn't I be able to draw that second circle on the same galvos as the first? they should have no problem, because the points added are very close (almost exactly in between) the other points, and both are drawing the complete circle in one second.

Also, my galvos start to struggle around 6 or 7k points, (but again those points are very close), the image starts to flicker significantly.

Here's a rough conversion to other Kpps values: 96Kpps * 0.3% max travel between points = constant k = 292.96875. If I drew at 20Kpps, this would be equivalent to a maximum travel between points of k / 20K = 0.0146484375 or 1.4% of maximum deflection. Still pretty low. I could go edge to edge (in theory, a lot more likely to have inertia issues doing this) at k / 1.00 = 292.96 points per second.

Does it make sense how 96Kpps is not unreasonable now?


I'll also check it out on the scope tomorrow, and see if I can capture the scope data. I'll try to draw something large and have it be a long waveform. I'll also do a small drawing as well.

I'll also try to get some video of changing speeds, from 96Kpps to faster than that, and we will see if the difference shows up on video.
 

LSRFAQ

0
Joined
May 8, 2009
Messages
1,155
Points
83
96Kpps/8000 points = 12 scans per second at VERY small angle. That sorta works.

96 Kpps/20,000 points = 4.8 scans per second.

So your TOTAL IMAGE update rates are actually very slow.

30Kpps/~800 XY points in a nornal laser show image = 37.5 scans per second.

Ok, I can understand that.

Assuming you can see the beam, how much flicker do you have? :thinking:

Flicker fusion rate is about 15-20 scans per second with most people's eyes.

So you are effectively not using many full angle jumps, and I easily can accept your results for a very, very small angle. In a way your undersamping because of the huge data files. I take it this is not a display system?

To learn why I questioned you, hook a sine wave generator (even the sound card type) to the galvo at about 10 degrees of deflection at 50 Hz, and slowly crank it up in frequency.
You'll see the response fall off nicely and a few resonances on the way up. Some place around 3Khz things will really start to shrink. (or do something else, degrading, depending on the amps) Then do the same with a "SHARP" square wave.

OK, I can buy what your saying. Again, this is confusion between the laser show definition of KPPS, and what your doing.

If you look at a GALVO data sheet, the more honest galvo manufacturers spec around 400us for the jump times, for small angle. They just cheat and dont tell you what the angle is.

1/RATED GALVO KPPS should be the very small angle jump time for a given galvo with +/- ~3% settling to final position, settling is defined by the internal position sensor output, not the customers feedback system, nor at the scan target.

The galvo manufacturers ONLY use KPPS when dealing with entertainment customers.

Looking at a 6215 data sheet at Cambridge should show you the average state of the art for non marking galvos. Then go look at a 1/4" shaft model like a 6850 or 6230.

The specialized, not so disclosed, marking galvos with DSP amps are always a little faster then what is advertised.

See, your DI/DT in the coil is very small, so things can keep up (just) with what your doing.

Look at the position sensor resolution on the data sheet. If your making such small changes, you may be either below the resolution or down in the noise. Oh wait, the Ebay guys usually do not spec the sensor, but the industrial folks do. A email to China may get you a sensor spec, as the Chinese are now starting to sell outside the entertainment market and have to improve their data.

Its been a few years, so I may have made a few minor errors in the numbers, the books are at home, and I'm at work.

It makes sense now. BTW, good defense technique in your last post.

More reading for you, this is a 12K 1980s cheap amp for the legacy G120 series, and a 1990s 6580X amp for the now legacy 6800s.
Its laser show oriented, but it may give you more insight. A friend hosts it for me, because I often encounter these amps on the road and on Forums :)

http://www.skywise711.com/lasers/scanner/scanner.html

The Asians loved to copy the 6580 amp. What you have on your bench is one generation later, with the modern filters. Parts values shown are for 6800's, a lot of parts change for slower industrial units.

When you look at the schematic,
Note it is very much P-I-I and not as much P-I-D, if you've had control theory. The sensor is two photodiodes in the galvo, and "AGC" is a legacy term, its really a constant current source for the the LED that illuminates the sensor vane in the base of the galvo. Position sensors once truely needed automatic gain control, but not any more. But they kept the name for the temperature compensated current source for the LED. (20 mV 'C gain change for a typical silicon photo transistor in this service, when uncompensated) The Pos sensors output about 100 nanoamps per degree of deflection.

For a very big change in position, it would ram 4 amps or more peak current into the galvo coil, Your no where near that.

Good luck with your career. You'll do well.

Steve
 
Last edited:




Top