无软件或驱动板损坏的ilx554b光谱仪,简单再利用方法。
fleefly2024/11/09仪器仪表 IP:天津
关键词
光纤光谱仪
ilx554b

收到一台光纤光谱仪,找不到PC端软件。

通过对比管脚,符合ilx554b管脚定义。

554b_2.png

在github上找到一篇用ESP32驱动ilx554b的arduino代码,将CCD信号通过串口传到上位机。

于是买来ESP32 wroom开发板,下载arduino,代码稍作修订。

修订包括:编译报错,曝光时间修改,ROG、CLK管脚输出取反等。

arduino.png

修改后代码如下:

attachment icon ilx554_inv.ino 2.54KB INO 2次下载

串口命令解析如下:

      if (n=='m'){ //m读数据
        leitura();
      }
      
      if (n=='x'){
        for (int j=0;j<10;j++) {//x 连读数据十次
          leitura();
          delay(tint);
        }
      }
      if (n=='t') {
        XXXXXXXXXintln(tint/1000);
      }
      
      if (n=='w') {//曝光时间增加10ms
        integra += 10;
      }
      
      if (n=='s') {//曝光时间减少10ms 

       integra -= 10;
      }
      
      if (n=='d') {//曝光时间加1ms

        integra += 1;
      }
      
      if (n=='a') {//曝光时间减少1ms

        integra -= 1;
      }
      
      n=' ';

连接ESP32开发板,只需连接ROG、CLK、VOUT三根线。利用原板上的6反相器作3.3~5V电平转换。

unsigned int CLK = 15;     //Verde
unsigned int ROG = 2;     //Azul
接口可根据连线便利修改。
wire.jpg

找到一个串口通讯+dialog作图的VC++工程,稍作修改

spectrum app.png

使用方法如下:

1.发送按键,串口发m使令,将esp32上数据在dialog上显示。

2.timer,启动和停止定时发送。

3.xmin,xmax:显示区域的X轴对应CCD的像素范围。

4.ymin,ymax: 显示区域的Y轴对应ADC转换的值范围。

XXXXltiline:搜索除主峰值之外多少个峰值。

XXXXartnm:像素0对应的光波波长。

7.endnm:像素2047对应的光波波长。


上传的release 文件,在WIN7 上运行没问题。WIN10上没试过。

attachment icon Releasev3.zip 208.30KB ZIP 2次下载

XXXXXXXXXXXXXi文 件可以配置串口号和波特率,以及startnm,endnm初始值。

[config]
波特率=115200
com口=com3
nodeid=1234
startnm=980.1
endnm=246.2

更改startnm和endnm值以适配你的CCD,例如用绿光激光器作为校准源,在对话框editbox中修改startnm和endnm值,使显示的波长532nm和808nm.

将startnm和endnm值写入ini文件,下次打开应用就可以自动载入了。

com号根据设备管理器中查询值修改

ccom3.png


实测如下:

测氩离子激光:

氩离子激光.png

两支红激光

redlaser.png

蓝光LED

blueLED.png


来自:仪器与装备 / 仪器仪表动手实践:实验报导
5
 
5
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
fleefly 作者
1个月6天前 IP:天津
939476

发现波长和CCD线数存在非线性,增加了多项式波长校准。

一:选择lines/lamda checkbox,显示线数。

calib0.png

二:将线数和波长输入excel,插入平滑散点图。

选择趋势线格式为二阶多项式,并将趋势线标签的数字显示位数增加。

calib1.png

三:将excel计算出的多项式系数C2,C1,C0输入XXXXXXXXXXXXXi文件。

calib2.png

重新打开程序,不选择lines/lamda 选项。此时显示校准后的波长值。

calib3.png

可执行程序和ini文件下载:

attachment icon Release_poly.zip 208.31KB ZIP 1次下载


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
qiuzheru1
1个月5天前 IP:瑞士
939490
挺好,看上去用的是ESP32内置的ADC?如果有条件使用外置ADC的话,可以实现高不少的读出速度和/或动态范围。


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
fleefly作者
1个月1天前 IP:天津
939616

ilx554b不同波长感光度不同:

ilx554b_1.png

将手册上的数据以图像格式导入matlab,通过ginput函数描点取出数据,

img = imread('e:\ilx554 XXXXXg');
min_x = 400;
max_x = 1000;
min_y = 0;
max_y = 1.0;
imagesc([min_x max_x], [min_y max_y], flipdim(img,1));
ii = 1;
while 1
    pause(0.1);
    [xdata,ydata,button] = ginput(1);
    if button == 3
        break;
    end
    if button == 1
        listx(ii) = xdata;
        listy(ii) = ydata;
        ii = ii + 1;
    end
end

figure;
plot(listx,listy);

matlab_1.png

matlab_2.png

将补偿数据生成c文件,加入工程。

attachment icon listx.h 2.11KB H 0次下载

attachment icon listy.h 2.11KB H 0次下载

补偿前光谱

spectrum0.png

补偿后光谱

spectrum1.png

可执行文件

attachment icon Release_comp.zip 208.31KB ZIP 0次下载


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
qiuzheru1
1个月1天前 IP:瑞士
939619
引用fleefly发表于3楼的内容
ilx554b不同波长感光度不同:将手册上的数据以图像格式导入matlab,通过ginput函数描点...

这样只对传感器响应进行了补偿,光栅效率还没能考虑进去,也许用已知色温的白炽灯来校准更好。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
fleefly作者
1个月0天前 IP:天津
939635
引用qiuzheru1发表于4楼的内容
这样只对传感器响应进行了补偿,光栅效率还没能考虑进去,也许用已知色温的白炽灯来校准更好。

有道理,什么时候用正午阳光校一下。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
fleefly
进士 机友 笔友
文章
12
回复
183
学术分
0
2007/04/18注册,15时52分前活动

爱好广泛

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}