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

Buy Site Supporter Role (remove some ads) | LPF Donations

Links below open in new window

FrozenGate by Avery

Introducing the Delta Isis

ARG

0
Joined
Feb 27, 2011
Messages
6,772
Points
113
Introducing the Delta Isis

5Dcbpm0.png


Background

Trevor and I have been working side by side to bring another project into the line of Delta laser power meters.
Today we present to you the first Open Source project in the Delta line; the Isis, a data logging add on for analog laser power meters.

The design ideas were originally under the old ARGMeter project, but now will be released under the Delta project.

Features

The Isis was made for laser power meters that output 1V per 1W, and has a maximum input voltage input of -4V to 4V. Although it was made with 1V/1W LPM's in mind the firmware can be changed to support other calibration ratios. It uses 16-bit A/D conversion, allowing a resolution of 0.1mW. The sampling speed is a quick 15Hz, faster than any other data logger out there!
There are two optional LED's to show the status of the datalogger, one that shows when it has power, and one that blinks every time data is sent to the data logging program.

The analog laser power meters that are compatible with this add on include
  • Radiant Alpha
  • LaserBee A/AX
  • NoSpin
  • Kenometer
  • Kenometer lite
  • DIY TEC based LPM's
  • DIY Ophir head based LPM's

Schematic

The main IC is the Atmega32U4, the same IC used in the Arduino Leonardo. This IC was chosen because it doesn't require an expensive ICSP to upload the code after it has been flashed with the Arduino Micro bootloader.
The Atmega32U4 has on board USBSerial which means it uses direct USB conversion and you don't have to use a USB Serial adapter with it!

ZSVNThA.png


Board

The Isis PCB has a very light footprint - only 30.5mm x 30.5mm. This means that is can fit into almost any laser power meter, even when space is limited.

k5wrBX5.png



BoM

There's not a lot of parts in the Isis, and the whole system can be built for under 20$ :D
Everything can be bought from Digikey, with the exception of the PCB which I recommend you buy at OSHPark.


Prices are approximate.

If you would like a stencil for assembly, I recommend OSHStencils. It will cost around 5$.

Also not included in the materials are the screws to mount the Isis, the holes are sized for M2 screws.

Trevor will continue this with the next post.
 

Attachments

Last edited:





Now, onto the firmware side of the Isis. :D

The firmware is, of course, stripped down in order to allow for the highest possible sample rate. The actual sample rate is configurable in the firmware; it can read at up to ~55Hz using single ADC samples. With the stock configuration, it reads at approximately 15Hz.

There are three different firmware versions available, for ease of use.

One is a version that uses the OpenLPM protocol, one uses the simple datastream protocol, and the last one streams output using the LaserBee format.

At this time, the LaserBee interface software cannot communicate with ATMega32u4-based devices due to a limitation in the software's serial communication.

To interface with the Isis, you can use Peregrine: http://laserpointerforums.com/f70/peregrine-free-open-source-lpm-interface-80589.html

Or any other datalogging software that you like. :)

License

The Isis firmware source is under the GNU GPLv3. The simple English version of Wikipedia gives a rather nice, concise explanation of what this license means.
There are two main terms to the license. Both apply to giving the program away or selling it.
  • A copy of the source code or written instructions about how to get a copy must be included with the software. If the software is able to be downloaded from the internet, the source code must also be available for downloading.
  • The license of the software cannot be changed or removed. It must always use the GPL.
If the user does not agree to follow the GPL, they can still use the software under copyright laws. They can use it and make copies or changes to it for themselves, but they cannot give it away or sell it. They also cannot change the license.
So, even if you’re giving away a modified copy of the Isis firmware, the recipient must be given the source code or instructions on where to download it – and it also must carry the GPL license.

If you’re selling a product, any recipient of the product must be given the source code, because a compiled binary must always be accompanied by its source code.

Any derivative of the Isis firmware must be under GNU GPLv3.

Downloads

Simple - https://dl.dropboxusercontent.com/u/6083542/Delta/Isis_Simple_1_1.zip
OpenLPM - https://dl.dropboxusercontent.com/u/6083542/Delta/Isis_OpenLPM_1_1.zip
LaserBee - https://dl.dropboxusercontent.com/u/6083542/Delta/Isis_LaserBee_1_1.zip

Support

If you find this useful, please consider contributing a small amount. It takes time to maintain these projects, and every bit helps.



Conclusion

In 2011 introduced OpenLPM as the first open-source datalogging option for non-datalogging LPM's. The Isis has what OpenLPM never had - specific hardware. With it, we've taken the open-source datalogger to the next level using stripped-down code targeted specifically to this configuration.

We can't wait to see what's done with it!

Trevor
 
Last edited:
Sweet. Good job guys! Was afraid that you just came out with a better line of the Rubicon!
 
Please make it a while......my wallet doesnt like you right now but Im super happy with the Rubicon :D
 
Great work guys you both really keep at it +1 when the system allows it
 
Nice job guys, I might build one sometime and since i do plan on making a DIY Tec-based lpm just for the shits and giggles! :D
 
  • Like
Reactions: ARG
Thanks!
There won't be a rival for the Rubicon any time soon. I've already started work on the next project to be released under the Delta project :shhh:

Any spoilers? The next one would measure up to 20W? :eg:
 
Took a look at the code and I have a few questions.

Why implement your own floating point printing routines instead of using Serial.println( reading, numberOfDigits )?

Code:
power += (((float)readADC() - (float)32767 - (float)zeroLevel) / (float)32767) * 4000.0;

Shouldn't the zero be 32768 and the divisor be 32767 (for a total range of 0-65535)?
Also I think it'd be more accurate to keep it to integer math as long as possible and isolate the constant math so the compiler can optimize it out (not sure if Arduino does but I hope it does).
 
Thanks everyone! :)



Any spoilers? The next one would measure up to 20W? :eg:

Only one spoiler, it will be open source ;)

Took a look at the code and I have a few questions.

Why implement your own floating point printing routines instead of using Serial.println( reading, numberOfDigits )?

Code:
power += (((float)readADC() - (float)32767 - (float)zeroLevel) / (float)32767) * 4000.0;

Shouldn't the zero be 32768 and the divisor be 32767 (for a total range of 0-65535)?
Also I think it'd be more accurate to keep it to integer math as long as possible and isolate the constant math so the compiler can optimize it out (not sure if Arduino does but I hope it does).

Good question, Trevor will have to answer this one.
 
Took a look at the code and I have a few questions.

Why implement your own floating point printing routines instead of using Serial.println( reading, numberOfDigits )?

I wrote that little utility function back when I was working on LumenOS P1 in 2010. I needed to print a value for use in writing text on the LCD screen. Obviously it would have been silly to use sprintf() in a lot of places, because it takes oodles of space.

Back in the day, if I remember correctly, Arduino didn't have the option of setting how many decimal places printed over serial; so that utility function also gave me control over that.

Today, I just haven't phased it out. It's probably also faster owing to the fact that it's not a built-in Arduino function. :p

Shouldn't the zero be 32768 and the divisor be 32767 (for a total range of 0-65535)?
Also I think it'd be more accurate to keep it to integer math as long as possible and isolate the constant math so the compiler can optimize it out (not sure if Arduino does but I hope it does).

Yes, it should be. Good catch. :p

I'll get a fixed copy up ASAP.

Trevor
 





Back
Top