发现波长和CCD线数存在非线性,增加了多项式波长校准。
一:选择lines/lamda checkbox,显示线数。
二:将线数和波长输入excel,插入平滑散点图。
选择趋势线格式为二阶多项式,并将趋势线标签的数字显示位数增加。
三:将excel计算出的多项式系数C2,C1,C0输入XXXXXXXXXXXXXi文件。
重新打开程序,不选择lines/lamda 选项。此时显示校准后的波长值。
可执行程序和ini文件下载:
收到一台光纤光谱仪,找不到PC端软件。
通过对比管脚,符合ilx554b管脚定义。
在github上找到一篇用ESP32驱动ilx554b的arduino代码,将CCD信号通过串口传到上位机。
于是买来ESP32 wroom开发板,下载arduino,代码稍作修订。
修订包括:编译报错,曝光时间修改,ROG、CLK管脚输出取反等。
修改后代码如下:
串口命令解析如下:
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
接口可根据连线便利修改。
找到一个串口通讯+dialog作图的VC++工程,稍作修改
使用方法如下:
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上没试过。
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号根据设备管理器中查询值修改
实测如下:
测氩离子激光:
两支红激光
蓝光LED
发现波长和CCD线数存在非线性,增加了多项式波长校准。
一:选择lines/lamda checkbox,显示线数。
二:将线数和波长输入excel,插入平滑散点图。
选择趋势线格式为二阶多项式,并将趋势线标签的数字显示位数增加。
三:将excel计算出的多项式系数C2,C1,C0输入XXXXXXXXXXXXXi文件。
重新打开程序,不选择lines/lamda 选项。此时显示校准后的波长值。
可执行程序和ini文件下载:
ilx554b不同波长感光度不同:
将手册上的数据以图像格式导入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);
将补偿数据生成c文件,加入工程。
补偿前光谱
补偿后光谱
可执行文件
ilx554b不同波长感光度不同:将手册上的数据以图像格式导入matlab,通过ginput函数描点...
这样只对传感器响应进行了补偿,光栅效率还没能考虑进去,也许用已知色温的白炽灯来校准更好。
200字以内,仅用于支线交流,主线讨论请采用回复功能。