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

An Arduino controlled JDSU ion laser

vk2fro

0
Joined
Nov 30, 2009
Messages
1,304
Points
63
This is just a place holder at the moment. I am organising with Daguin to buy a JDSU ion laser (of the type with the 25 pin remote control). Once I have the laser and have written the code and created the circuit, I'll post the rest up here on how to build a fancy pants controller for your JDSU ion. You must be willing to run your laser at full power for a short period of time to assist in calibrating the controller, however this only needs to be done once - values are stored for this information in the controllers memory. Likewise the laser must be run at idle to configure the low end of the scale.

This project will give you the ability to have push button control of the laser and monitor its statistics as you go. Press buttons are provided for up and down (in light and current mode), and mode selection. A key switch enables emission. There will also be a start/stop button to turn on/off the laser. The display will have a bar graph for immediate recognition of how much current is going through your tube, as well as the mw out. At the same time these values are also displayed in text. You will have close to 100 steps of resolution to control the laser (digipot limitation), and 1024 steps of accuracy on the text readouts. The bargraph will be 100 step resolution (limitation of a 20x4 LCD).

You will need these parts:
An arduino

A 4 x 20 LCD (serial/3 wire is preferred - We're going overkill on IO pins!). 1 IO Line + 5V and ground - very easy to drive. We'll have the arduino talk to it from pin 2.

2 x Digipots (this controls the Light and Current modes of the gas laser. 1K should be fine. We talk to them over 2 io lines (a communications protocol). Pins 12+13 are our control pins, and we use pin 10+11 to enable/lock the digipots. We control which pot we are controlling (light or current) in software. To increase resistance, we pull pin 13 high, to decrease, we pull it low. We pulse pin 12 to step the pots wiper one increment at a time until we reach our target.

http://www.digikey.com/product-detail/en/CAT5113LI-01-G/CAT5113LI-01-G-ND/1755332

Each digital pot is non-volatile; however for saftey reasons the arduino will reset them each boot to the idle current/lowest mw settings during initialization. I have once again chosen a different digipot, as we want a dip packacge - the previous was an SOIC, and a bit more difficult to solder. The dip package we can also use with an IC socket. They are 8 pin devices.

A Primer on digital pots. (I still cannot decide which design of digipot to go for - the easiest to solder are the hardest to control, and vice versa!)

Just like their analog cousins, digital pots are a variable resistor, but with one huge difference - they're a damn IC! As well as being an IC, they can be controlled by our arduino! So we get digital control of our laser power supply!

2 5k multiturn trim pots. We'll limit the max current to 10.5A with these. these will be used to form hard stops so we cannot over drive our tube. Before fitting, wind these to maximum resistance. We will also use one to calibrate the 0-8v light feedback loop, so it is within the 0-5v range of the arduino.

7 more resistors - we will need these to form voltage dividers so we can read out the values from the remote port on the laser. These fixed resistors will be determined as I go along. A few more of these will also be used to make voltage dividers again to run the pushbutton matrix, so it only chews up one IO pin. The switch matrix uses 22K, 56K, 98K and 150K resistors. This provides a great variation between each button so the controller makes no mistake that of which button was pressed... "NO DAMN IT - SHUT OFF THE BEAM, NOT GO TO FULL POWER". You understand what I mean :)

Some press buttons. (takes 1 IO lines) : Mode, Inc, Dec, Run/Idle - Pin 8

A Mushroom switch (E-Stop). DO NOT SKIP THIS. This switch breaks the interlock chain and shuts down the laser - should the arduino lock up you have a means to stop emission with this. This is not wired to the arduino at all. Its our hardware E-Stop and sits between the 25DB connector either across the interlock pins, or in series with the interlock relay contacts, both it and those contacts must be closed to satisfy the interlock chain.

4 small signal relays and one Mains rated relay if you want fan control. The signal relays are for "Light/Current mode, Emission control, Idle/Run, Interlock" - we'll stick two of these on pins 7 (Light/Current toggle) and 6 (emission enable), and the other two on pins 5 (Idle/run), and 9 (interlock). If you want to control the fan and laser PSU remotely, the last relay (15A contacts, mains rated) will be wired to pin 4.

A key switch (it takes an IO Line) hereby labelled "Emission enable" (pin 3). It controls the emission enable relay

A DB25 socket and DB25 male to female cable (to interface the laser to the controller)

A 6pin DIN socket and plug (a breakout to calibrate the controller, and remote control of the cooling fan/laser PSU).

A nice cabinet to put the project in.

A smaller cabinet (to house the relay to control the cooling fan, and mains to the laser power box. We want to shut off the mains remotely so the lasers cathode is not left heating by mistake).

Some strip board - the circuit for the power controls is very VERY simple - its mainly wiring. I may choose to make a PCB; However, if I choose not to it should be an easy circuit to build - a bit of stripboard is all you need to hold the digipots, the voltage dividers and the trim resistors.

A JDS Uniphase argon ion gas laser with a 25pin remote port (duh!).
(you can use a different laser but you'll need to modify the interface and voltage divider resistors yourself).

Hook up wire, both signal size and mains rated. At least enough signal length wire to run the length of your laser umbilical and then some; up to the fan connector.

Heat shrink tubing


Tools needed:
Soldering Iron *Electronics type, like we all have from building pointers
Wire nippers
Heat gun (or a ciggy lighter - to shrink heatshrink tubing)
Screw Drivers
Something to program your arduino with if it doesnt have a usb port
A Dremel (to cut out holes in the cabinet for the DB25 and the LCD)
A Drill
A Digital Multimeter
A PC/Mac computer (to burn the code into the arduino with)
The arduino IDE.
Optionally, an LPM


Functions include:
Maintenance mode - This will run your laser for 110 minutes starting at idle for 10 minutes, ramping up to 7-8 amps, and run your laser for its monthly maintenance burn. At 100 minutes it'll throttle the laser back to idle for 10 minutes then completely shut it down automatically. You can jump out of this mode at any time and go back to normal mode.

Normal mode - this is the mode you'll spend most of your time in - its the mode you use when you're "playing" with your laser. Once the controller powers up in this mode it'll automatically set the power control to "idle" and await your order to enable emission. In this mode, the unit ignores the light/current switch for the first minute, and only allows the laser to run at up to half power in current mode, to allow the laser psu to settle and avoid plasma oscillations. Once this timer has expired (warming up disappears from the screen) you'll be free to do whatever you like with the laser.

Each of the above two modes is entered with a toggle switch on the controller

Calibration:

To calibrate the controller in current mode first load the main routine into the arduino. We're going to set the laser to a maximum current of 10.5 amps (lower if your more cautious - I plan to set mine at 9.5). Once the code is loaded, and the arduino is running (it'll do a short intro of what it is, and then beep twice, with "interlock open" on the display), turn it off, check to ensure you wound the current adjust trimpot to maximum resistance, and connect the db 25 cable to the laser and the controller you've just made. Start the arduino again, and select Normal mode. Turn on your laser if it does not automatically do so, select a power level of 50%, and turn the key. After the preheat delay expires, the laser will start at 50% power approximatly in current mode. Adjust the 5k trimpot to see exactly 5 amps of tube current. Next increase the power to 100% while watching the current meter closely or as sam would say "like a hawk" - this will take you to 10.5A. If you want to lower the limit, choose a different value for one the following line near the top of the program - INT FULL if limiting with the uC, or INT OFFSETFULL if limiting by increasing the resistance of the current set trim pot:


INT FULL=100 ##<--- change this guy if you want to limit the max tube I to a lower than 10.5A value in software
INT OFFSETFULL=0 <-- take 10.5 and subtract your preferred hard full power current limit from this, and enter the result here. This offset ensure current readings are correct if you are enforcing a hard limit with the pot rather than the arduino


and re-burn the main code into the arduino

We're safe to run in current mode, but will not yet get proper milliwatt readings as we still havent calibrated light mode yet!! To calibrate light mode, set the laser power to idle using our controller, and measure the output on the lasers PSU. Doing the math or using your LPM, see if the mw's out matches whats on the screen. If not, adjust the "Light" feedback trimpot until it matches. Now, increase the power to full one last time, and read the value on the screen. It should be VERY close, if not equal to doing the math on the multimeter or whats on your LPM; and what your laser is rated at. Now you have calibrated light mode, and can effectivly read out the laser output power as well as tube current at the same time!

You can change the following settings in the code.

INT MAXI=10.5 <-- maximum laser tube current.
INT MINI=4.2 <-- minimum laser tube (idle) current.
INT FIDLE=0 <-- change this to 1 to force an idle power condition on each laser start
INT PREHEAT=60 <-- Set this to how long your laser takes to fire from a cold start, in seconds. This way you get a nice progress bar as the laser warms up.
INT MAINT=90 <-- Change this value to reflect how long you'd like a maintenance mode burn to run (in minutes)
INT MAINTB=10 <-- Change this to reflect how long the laser runs at idle during a maintenance burn start and finish (in minutes)
INT LOCK=1 <-- change this to 0 to bypass the need to wire the interlock. If this is set to 1, pin 9 of the arduino controls the interlock of the laser. Otherwise you are only relying on your mushroom switch.
INT FAN=1 <-- Change this to 0 if you don't want to control the fan with a remote relay.
INT HARDPOT=1 <---- change this to 0 to indicate you'd rather not use a hardware pot in addition to the digipots to control current - this is not advised as it'll take away the full range of 256 steps to control your laser. You'll need to set INT FULL to a lower than 256 value :(

I have NOT elimenated the need for a battery in the controller, however we all should have 18650 batts, and I have located an inexpensive resolution to the power problem. You'll stick two cells into the solution and that will run the laser controller for quite a while. Simply charge the controller every second weekend, or when the low battery light comes on. For even longer runtimes between charges, you can add up to 4 18650 batteries.

To be continued, once I get the laser.
 
Last edited:





Joined
Dec 11, 2011
Messages
4,364
Points
83
Just hope you get a "normal" unit and not one like mine where breaking the interlock does *NOT* turn off the beam once it has been established. Likewise the keyswitch doesn't do a damn thing once it has been enabled. If you leave the unit powered with the keyswitch disabled the tube continually fires start pulses (bad!) every 45sec or so. Also, idle mode disables all other functions including beam enable/disable.
 
Joined
Feb 1, 2008
Messages
2,894
Points
0
This looks like an interesting project. There are lots of words and things to read above.

But unfortunately, the culture I live in has forced a short attention span upon my brain.

I cannot comprehend anything without a schematic or a program.

(fingers being crossed for it being written in C)
 

vk2fro

0
Joined
Nov 30, 2009
Messages
1,304
Points
63
I'm hoping mine will be a "normal one". Have not done any further work on the design yet until the laser arrives. First I'll build a basic remote (with simple voltmeter etc) and get to the more elaborate model once I can verify that its a "normal" psu and not a schizophrenic one like the one you have :)

I also just bought a 1000 line diffraction grating :p
 

vk2fro

0
Joined
Nov 30, 2009
Messages
1,304
Points
63
This looks like an interesting project. There are lots of words and things to read above.

But unfortunately, the culture I live in has forced a short attention span upon my brain.

I cannot comprehend anything without a schematic or a program.

(fingers being crossed for it being written in C)

Schematic will come as soon as I get the laser and start experimenting. I've just been lazy and not bothered to draw anything. From what I have written I can remind myself what I wanted to accomplish with the arduino, and therefore very quickly have a schematic up on the first post as soon as I get the laser and have time to tinker. It'll be hand drawn, but I'll try to be neat. What program is everyone using for those nice schematics like in sigurthr's ion laser thread about his laser?
 
Last edited:

vk2fro

0
Joined
Nov 30, 2009
Messages
1,304
Points
63
hehe well in your thread yours seemed to be ass backwards and all over the place in regards to the connections - mabye its been internally modified, and a quick kiss with the soldering iron can put it back to normal?
 

vk2fro

0
Joined
Nov 30, 2009
Messages
1,304
Points
63
Ok well I just whipped up a schematic for the basic controller. Kim is bringing over her spare scanner during the week so I can scan it - its VERY basic and uses an 0-20V meter for the readout, two LEDS, 4 switches and two pots. You can use a DMM in leiu of the panel meter, and it basically allows you to power up your laser, get values and set limits on the more advanced arduino one I plan on making. Do we really want an advanced arduino controlled with LCD and bells and whistles controller? Let me know :)

It was funny - last night I was tired, fired up eaglecad, and placed one part - the DB25 connector and thought "its all too hard" and went to bed. Woke up this morning, and had it finished in an hour - its amazing what a good nights sleep can do for you :)

I am using the schematic in the attachment on this post as a reference - I hope its the correct diagram :)
 

Attachments

  • kccucp1.pdf
    15.9 KB · Views: 229
Joined
Feb 1, 2008
Messages
2,894
Points
0
Yeah, I think Eagle is best.

So is there a UART function to take in serial commands for setting max current, or set current? It would be nice to just type in a "legal" value and let the board update the digipot accordingly.
 

vk2fro

0
Joined
Nov 30, 2009
Messages
1,304
Points
63
I hadn't thought of controlling the controller via uart or usb, however, this would be pretty tricky as we are already using serial (hardware) to talk to our LCD.

Bluetooth on the other hand... if you want to add that to the unit. I haven't yet investigated.

edit AHHH meatball - I get what you mean - nah the basic controller is just for ME to work out what my laser idles at, what resistance values give me 9.5A etc - but could also be handy for others to do the same as each JDSU supply is different. Its also pretty dumb - in the fact that even if the display is stuffed, once I finalize it, turning the current pot all the way on it WONT take me over 9.5A. But I posted it here as I like to share my designs so others can benefit. Some may not wan't a super duper bells and whistles design with bargraphs and stuff, this may suit them fine. Its also a tonne less expensive, and some of use (me included) will have most of the parts in their junkbox.

With the arduino one; I'm using hardware trimmers in series with the digipots so if the arduino crashes, or goes crazy, and zeros the current pot, it'll just send your laser to full power, not 12.5A and blow both the tube and/or the supply. You get to set the hard limit with the internal trim resistors. I might... scrub that... WILL also include a watchdog circuit that hears a pulse from the arduino every 2 or so seconds and if it goes AWOL (aka the arduino decides to take a holiday or a nap, it opens the interlock and discharge enable relay. Simple to do with a 555 timer and an AND gate. This could also sound an alarm, light a fault led or even reset the arduino.

edit: a super simple testing ion laser controller... :p

attachment.php


Setting this one up is easy. Set current ADJ to full CW position and current limit to full CCW.

Set the following switch conditions:

Meter power: on
Light/current switch: Current
Meter Mode switch: Current
Keyswitch: doesnt matter
Run/Idle switch: doesnt matter
Beam on/off switch: doesnt matter
JP1: to suit your meter (2 or 20V)
VR2: mid range.
Multimeter across TP1, volts range
A variable power supply set to 15 volts that *HAS* current limiting! (it MUST be current limited - nothing would make you cry more than watching all your wires and stuff go up in smoke because of a wiring error. I was lucky - my test supply was a 7AH 12V gel cell, and had it not been for the pot set midway, well... you can imagine. I can tell you my clip lead got rather toasty! :p) Set a VERY low current like 10ma and connect it + to pin 13, - to pin 11.

Adjust VR1 until you see 0.950v across the multimeter (for 9.5 amps max of tube current - 1.050 if you want 10.5 amps and so on). The meter on the controller should be reading 0 as its not hooked up to the laser and thus not getting a feedback signal. Once you have set your maximum current preference, connect it to your laser after verifying all other functions work. To test these:

For these test, turn off the controller and take out the batteries. Have a multimeter handy that beeps when on ohms range, or has a continuity beeper.

Beam On/Off: , pin 11 to pin 2 - should beep when beam is off, and stop beeping when on. Move probe from 11 to pin 13, and it should beep when on, and not beep when off

Run/Idle: same as Beam On/Off, but instead of pin 2, connect to pin 4

Current/Light: Pin 11 and 5 should beep with the current mode selected, and not beep when switch is moved to light mode. While still on light mode, there will be a beep when you move the probe from pin 11 to pin 13.

Controller Display Readout:
Take your power source, set it to 10V and connect its -ve to pin 11 or any convenient ground. Connect the other side of the supply to pin 9. Select current mode on the light/current display switch (SW4) and turn the current pot fully CCW. Turn on the power source, and the controller, note the reading. Turn the pot slowly CW and see if the reading increases. If so, current feedback is working. You do not have to turn it all the way CW.

Repeat the above step in light mode, with the +ve of the supply connected to pin 8. Its at this point that users with a 2V meter and the jumper correctly set, should adjust their power supply to 2.0 volts, or use a AA battery in its place, and calibrate the meter reading by adjusting VR2 until it matches the battery/psu's voltage.

The unit is now calibrated and set up with your preferred current limit. Time for the smoke test! connect to the JDSU laser, power the unit on and start enjoying your creation!

Once its set, the current will never rise above your set limit, even if the current ADJ pot is turned wide open. Assuming these power supples are designed correctly, a failure of the VR should result in the laser going to idle.

If you want to use Alkaline batteries, add a 1n4004 diode to the battery + line to drop the voltage a touch for the 5V meter. Some dont like running at 5.5V+

Note that SW4 is a 3PDT switch.

edit: fixed schematic - now two common DPM's can be used with the basic controller - 2V and 20V - the 2V gives higher accuracy, but 20V ones are more common :)

Accuracy Ranges are:
20V meter: 1mw accuracy, 1 decimal point current accuracy
2V meter : 0.1mw accuracy, 2 decimal point current accuracy

As you can see, the 2V meter is the preferred model. I happen have have a 20V one. :(

edit again: been to jaycar to get the parts - time to build this controller and "simulate" the laser :) Will correct calibration instructions once I'm done (need to simulate various tube currents and light levels with my variable SMPS.

edit: so far so good :)

edit: oh crap the darn thing is all boxed up and wont turn on :(

edit another time. Finished. You know Ben, its not going to light up because you REMOVED A BATTERY WHILE FINISHING WIRING *facepalm*

all set up now and calibrated for 9.5 amperes of max tube current. :D



:D
 

Attachments

  • ION Laser Controller2.jpg
    ION Laser Controller2.jpg
    46.5 KB · Views: 1,098
Last edited:




Top