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



B&W-tech Spectrometer & 473 module: Setup+Mods+Info

Richard A

Member
Joined
Jan 29, 2018
Messages
42
Points
8
Once you go ocean optics you’ll never look back
I've got six older Ocean Optics spectrometers and their spectral readouts definitely look much better.
They have narrower slits as well.
For what paid I for the B&Ws , I'm not disappointed, and I should be able to tweak them in, hopefully.
They're fairly compact with my PCB.
 



kecked

Active member
Joined
Jun 18, 2012
Messages
440
Points
43
I've got six older Ocean Optics spectrometers and their spectral readouts definitely look much better.
They have narrower slits as well.
For what paid I for the B&Ws , I'm not disappointed, and I should be able to tweak them in, hopefully.
They're fairly compact with my PCB.
Oh heck yea. I just got tired of messing around and needed something that worked everytime. For the money you can't go wrong.
 

chloderic

Active member
Joined
Jan 21, 2018
Messages
319
Points
43
Oh heck yea. I just got tired of messing around and needed something that worked everytime. For the money you can't go wrong.
Yes kecked, the ocean optics are very good devices, but here in this threat there are already people who want to talk about this old b&w-tek and they are not tired to play a little bit with also some results here ... ?
 

Richard A

Member
Joined
Jan 29, 2018
Messages
42
Points
8
Hi all,

The slits look ok. They might be slightly off. It's hard to tell.
I think my makeshift diffuser isn't good enough and I'm getting a top hat to doughnut profile coming out of the fiber in some cases.
A gaussian profile entering the slit would be ideal.
An integrating sphere or cosine corrector should help.
 

Richard A

Member
Joined
Jan 29, 2018
Messages
42
Points
8
Hi,

I made an integrating sphere out of some cheap aluminum cake pans and a collimating lens from a bar code scanner.
This definitely improved the results. Tweaking the bench and finding a better cable is the only way I'm going to further improve it at this point.
Noise is about the same as the stock unit.
I had to crank the argon way down. 100 mW is too much.
The sensitivity is down enough at 632.8 nm that I didn't have to attenuate the 39 mW from the 127.
The yellow HeNe is doing 4.5 mW, and the green, 3 mW.
I plan on posting the project files this month.

64165

64166

64167

64168

64169

64170
 

Richard A

Member
Joined
Jan 29, 2018
Messages
42
Points
8
Very interesting ! Thanks for showing.

Hi chloderic,

Thanks.
Would you rather go by Bernd?
I realize I should have used dark frame subtraction for the noise test.
I'm mostly seeing pixel variation. In the future, I might install a peltier cooler to bring the dark current noise down.
 

Richard A

Member
Joined
Jan 29, 2018
Messages
42
Points
8
Here are pixels 1 - 300 with dark frame subtraction.
Reduced fixed pattern noise.
Not seen are a couple of hot pixels between 300 and 2048 which are of course nulled by DFS.
On the stock spectrometer, it appears that the optical black pixels are scanned, and as a result, several pixels are lost on the red end.
I assume this is used as a reference by the computer software. I suppose I could add a command to allow scanning of all normal optical pixels.

6419164192
 

Richard A

Member
Joined
Jan 29, 2018
Messages
42
Points
8
Nice job. Look# good. Did you write the software?

Hi kecked,

Thanks.
I wrote a program in C that pipes data to gnuplot. Nothing fancy.
I just execute the program in a terminal and a spectrum pops up in gnuplot.
It also writes data to a file for manipulation in Octave.
This is all in Linux.
 

chloderic

Active member
Joined
Jan 21, 2018
Messages
319
Points
43
Here are pixels 1 - 300 with dark frame subtraction.
Reduced fixed pattern noise.
Not seen are a couple of hot pixels between 300 and 2048 which are of course nulled by DFS.
On the stock spectrometer, it appears that the optical black pixels are scanned, and as a result, several pixels are lost on the red end.
I assume this is used as a reference by the computer software. I suppose I could add a command to allow scanning of all normal optical pixels.

View attachment 64191View attachment 64192
Hi, maybe you could test this here ...20190410_181405.png
 

Richard A

Member
Joined
Jan 29, 2018
Messages
42
Points
8
I've been quite busy but I found little more time to work on this project.
I noticed that I'm consistently getting 2049 decompressed 16 bit words from the stock spectrometers rather than the 2048
stated in the command set manual. Can anyone confirm this?
With my replacement PCB, then number of words decompressed is exactly the same as then number of words compressed.

This is the decompression routine in my test program and the compression routine in the dspic program:
C:
int Decompress(signed char *din, unsigned short *dout, int n){

    unsigned short i;
    int pcount,x,y;
    signed char di;
    //n must be ≤ size of din
    
    pcount=0;
    y=0;
    i=0;
    for(x=0;x<n;x++){
        di=din[x];
        if(di==-128 && y==0)
            y=3;

        if(y==0){
            i+=di;
            dout[pcount++]=i;
        }

        if(y){
            if(y==1){
                i|=(unsigned char)di;
                dout[pcount++]=i;
            }
            if(y==2){
                i=(unsigned char)di;
                i=i<<8;
            }
            y--;
        }
    }
    
    return pcount; //return number of 16 bit words decompressed
}



Code:
.global _Compress ;Compresses n words at a time. Max bytes out is n*3;
    _Compress:
    ;w0 Pointer of input array. Also, return value for number of bytes written.
    ;w1 Pointer of output array.
    ;w2 Number of words to process.
    ;w3 Resets memory of previous word.
    
    
    push w1; save addr to stack
    cp0 w3
    bra z,skipclear
    clr PrevWord
    
    skipclear:
    
    mov w2,w3
    mov PrevWord,w2
    
    DO W3, CompLoop
    mov [w0++],w3
    sub w3,w2,w2;previous word - current word
    mov.b w2,[w1++];put lower half into output array. Will get overwritten if > |127|
    btsc W2,#15;could also check status reg for neg status
    neg w2,w2; abs value
    cp W2,#128
    bra ltu, Skip3byte
    mov.b #128,w2
    mov.b w2,[w1-1]
    swap w3
    mov.b w3,[w1++]
    swap w3
    mov.b w3,[w1++]
    
    Skip3byte:
    mov w3,w2
    CompLoop:
    nop
    
    mov w2,PrevWord
    Mov w1,w2;
    pop w1;get addr
    sub w2,w1,w0;get number of bytes written
    
    return
 

Richard A

Member
Joined
Jan 29, 2018
Messages
42
Points
8
Hi, maybe you could test this here ...

Hi Chloderic,

Whenever you get time, would you mind doing a coefficient query command (?C) on one of your units and post the result?
I can't seem to set the coefficients on my stock unit. It accepts the command, but noting changes when I check the results.
There are other things as well that don't behave as stated in the manual.
For instance, the integration time can't be set below 50 ms on my stock unit.
 




Top