基于STM32单片机的分光光度计改装系统设计
2025-02-21黄利强
摘要:设计了一款以STM32F103C8T6单片机为核心的分光光度计改装系统,建立了一种为普通手动式分光光度计增加数据输出、光谱图显示等功能的改装方法。使用STM32单片机对分光光度计的光电电压信号进行采集、模-数转换、串口发送等数字化处理,将分光光度计输出的模拟信号转变为数字信号,并实现电脑端的数据处理、谱图显示、结果保存等功能。改装方案技术简单、成本低廉,可极大地扩展普通分光光度计的功能。
关键词:STM32;分光光度计;光谱图;改装
一、前言
紫外—可见分光光度计是测试物质在紫外—可见光波段内的吸光度、透光率等光谱参数的通用光学分析仪器,可用于物质的定量、定性分析,广泛应用于化学、生物、医药、环境等诸多领域。国产721/722等型号的手动型分光光度计由于性能稳定、使用简单且价格低廉,目前仍在学校、工厂、研究机构等许多部门中广泛使用。这些光度计大多采用三棱镜/光栅为分光器件,手动转动波长刻度盘选择测量波长进行测试,设计成熟,工作可靠,性能稳定,但是通常不具备连接电脑、发送数据、显示光谱图等功能,只能手动操作和手动记录,因此对它们的升级和改造屡有报道[1-3]。本文研究了一种基于STM32单片机控制手动型分光光度计的方法,对这类光度计进行数字化改造,使其具备数据自动处理和输出、光谱图显示等新功能。
二、系统总体设计
721/722系列的分光光度计均使用光电池/光电管等光电器件来接收测量样品时产生的光信号,进行光电转化后产生电压/电流等模拟信号,仪器内部的电路对模拟信号进行处理后得到吸光度、透光率等信号,再使用指针、数码管、液晶屏等器件来显示测量结果,需要操作者人工读数和记录,一般不具备输出数据到电脑的功能。本系统使用采样电路采集分光光度计光电检测器件上的光电电压,送入STM32单片机进行模—数转换,将检测结果进行数字化处理后,即可通过串行口发送到电脑端进行后续的处理。系统的组成方框图如图1所示,由STM32核心板、采样模块、控制模块、串口连接线等部分组成。系统核心处理器采用STM32F103C8T6芯片,具有外设丰富、功能全面、价格低廉等优点[4-5],能充分地满足开发工作的要求。系统工作流程为在STM32核心板的控制下,采样模块采集光度计检测样品时得到的光电信号,送入STM32核心板进行A/D转换、滤波、运算等处理,得到测量样品时产生的光谱数据。光谱数据在控制模块的控制下,通过串口连接线同步发送至电脑端。电脑端使用VS2019编写的软件,接收串口发来的数据,处理后得到吸光度、测量波长等数值,并在电脑上显示测量结果和光谱图,如图1所示。
采样模块使用简单的电阻分压电路如图2所示,从分光光度计机器内部的光电传感器或电压放大器,用导线接出检测试样时产生的光电电压,分压后送到STM32单片机PA0口进行采集,并由STM32单片机对采集到的信号进行模—数转换,将模拟电压信号转换为数字信号。STM32F103系列的单片机内部自带12位AD转换模块,可转换0~3.3V的模拟电压信号,转换速度最大可达14MHz,具有良好的AD处理性能[6-7]。控制模块由光纤传感器和光纤放大器构成[8]。光纤传感器固定于分光光度计的波长刻度盘上方,其探头对准刻度线,操作者转动波长刻度盘时,每当光纤传感器发射的光束经过一条波长刻度线,光纤放大器即可产生1个开关信号,将此开关信号送至STM32单片机PB0端口,并控制STM32单片机的数据发送,即可实现波长信号和光谱检测信号的同步,用于绘制样品的光谱图。
三、系统软件设计
STM32单片机的处理程序使用Keil uVision5软件进行编写。分光光度计检测试样时,其光电传感器或电压放大器会产生相应的光电电压信号,STM32单片机利用采样模块采集此光电信号并进行AD模—数转换处理,AD转换处理的部分代码如下:
/* ADC1 configuration */
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; " " " " " " " " " "// ADC接口独立工作
ADC_InitStructure.ADC_ScanConvMode = ENABLE; // 扫描模式
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; " " " "// 连续进行转换
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; " " " "// 使用软件触发
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; " " " " " // 数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 1; // 只转换规则序列1
ADC_Init(ADC1, amp;ADC_InitStructure);
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5); //采样周期55.5个时钟周期
由于分光光度计每次测定时需要一段时间读数才能稳定,在采集信号时,若每个波长只选取1个数据点发送至上位机,容易造成数据漂移和噪音干扰,如图3所示。为了滤除随机信号的干扰,提高测量精度,STM32单片机在使用中常采用均值滤波、加权滤波等软件滤波的方式处理采集数据[9]。本系统采用去极值平均滤波的方式减小干扰,具体方法为,在每个测量波长处都进行15次测量,得到15个数据点。然后使用软件排序,去除最大值、次最大值、最小值和次最小值4个极值后,对剩余的11个数值取平均值,再发送到上位机。实验结果表明,经滤波处理后,系统的抗干扰能力和数据稳定性显著提高,所得谱图明显变得更加平滑,如图4所示。 滤波处理的部分代码如下:
for(n=0; nlt;=14; n++)
{ " AD_value_temp[n]= ADC_ConvertedValue; " " " // 读取15次AD转换值,存入AD_value_temp [ ]
Delay(1); " " " " " }
for (i=0; ilt;=13; i++) " " " " " " " " " " " " " " " " // 排序
{ "for (j=0; jlt;=(13-i); j++)
{ if (AD_value_temp[j] gt; AD_value_temp[j+1]) " " // 比较法排序
{ "temp = AD_value_temp[j];
AD_value_temp[j] = AD_value_temp[j+1];
AD_value_temp[j+1] = temp; " " " " " "//将15个数据按大小顺序依次存入数组
} " "} " "}
temp = 0;
for (n=2; nlt;=12; n++) " " " " " " " " " " " "// 去除最大、最小的4个值,只取中间11个点
{ temp += AD_value_temp[n]; " "} " " " " "// 中间的11个点相加
AD_value_Average = temp/11; " " " " " // 总和除以11即可得到11次的平均值,完成滤波。
滤波后的平均测量数据AD_value_Average 按照式(1)进行计算:
AD_value = 3300000/4096*AD_value_Average/1000 (1)
即可得到实际电压值AD_value。经过对比,AD_value的数值与分光光度计上采样电路的输入点位置用电压表测得的原始电压值基本一致,证实系统可以正确地采集测量样品时光度计光电检测元件上的光电信号,并进行准确的A-D转换。
AD_value 值由STM32单片机通过CH340转USB数据线发送到电脑端,使用VS2019设计的软件对数据进行处理,根据朗伯—比尔定律,按照式(2)进行转换,最终计算得到吸光度、透光率等光谱数据,并在电脑屏幕上显示吸光度的数值。
A= -lg(Vb - Vs ) / Vb (2)
式中,Vb为空白样品产生的电压值,Vs为待测样品产生的电压值。
要绘制样品的吸收光谱图,不仅需要获得样品在某一时刻测得的吸光度信号,而且需要获得测量时所处波长的数值,波长和吸光度二者需保持测量时间点一致,才能得到正确的光谱图。本文采用光纤传感器探测波长刻度线、产生开关信号控制吸光度数据发送的方法,实现了波长信号和吸光度信号的同步。系统使用光纤传感器来探测波长刻度盘转动时产生的信号,每当光纤传感器的探头下方有一条波长刻度线转过时,就可产生一个开关信号,此开关信号即可控制STM32单片机发送一次当前的光谱测量信号。电脑端对开关信号进行计数,并按照式(3)计算当前的波长λi:
λi = λ0 + n * Δλ (3)
式中,λi为当前光度计所用的波长,λ0为起始波长,由操作者根据需要在电脑上手动输入。Δλ为波长间隔,即光度计波长刻度盘上刻度线之间的间隔,721/722分光光度计的波长间隔通常为2nm。n为计数次数,STM32下位机每发送一次数据,电脑端就将n值自动加1进行计数,并据此计算当前测量所用的波长λi。得到某一时刻的测量波长λi、吸光度Ai的数据后,即可使用绘图函数series1.Points.AddXY(λi, Ai)绘制出波长—吸光度的光谱图,如图5所示。
四、测试与结果
使用本系统对舜宇721、仪电722G等多种不同型号的分光光度计进行了改装,并对样品进行了实际测试,结果表明,几种光度计上本系统均可以顺利运行。原来的仪器只能通过查看波长刻度指针来读取波长数据,观看数码管的数字来人工记录结果。经过改装后,不仅可以顺利地在电脑上正确地自动显示样品的波长、吸光度等光谱参数,而且可以在电脑上显示出样品的波长—吸光度光谱图。测量时得到的全部数据信息还可自动保存在电脑硬盘上,方便以后进行查看和处理,如图5所示。
五、结语
本文设计了一款基于STM32单片机的分光光度计改装系统,通过对系统的测试,验证了系统可以使手动型分光光度计在改装后成功实现测量数据的数字化处理和自动传输,增加高档仪器才具备的连接电脑、输出和记录数据、绘制光谱图等多项功能,且改装成本低廉,适用性强,可用于对国内多种传统型号的手动式紫外—可见分光光度计进行改装,拓展这些仪器的功能和使用范围。
参考文献
[1]陈玉清,陈双雯,姬媛媛.紫外-可见分光光度计的改造及其在实验教学中的应用[J].大学化学,2021,36(02):160-164.
[2]杨慧.分光光度计数据处理系统的改造分析[J].化工管理,2015(02):54.
[3]安艳波,陈焕文,丁健桦,等.721型分光光度计的改进及应用研究[J].电子测量与仪器学报,2012,26(12):1113-1117.
[4]吕杨,安厚儒,李蓓茹,等.基于STM32F103C8T6的智能车载安全系统设计[J].传感器与微系统,2022,41(09):95-98.
[5]黄山,吉磊,马福.基于STM32技术的太阳能LED路灯自动控制系统的设计与应用[J].自动化应用,2024,65(18):96-98.
[6]刘云,柳浩.基于STM32的心率体温检测系统设计[J].机电工程技术,2021,50(08):135-137+207.
[7]聂茹.基于STM32F103C8T6的植保无人机设计[J].自动化技术与应用,2020,39(08):20-24.
[8]黄利强.722型分光光度计的改造研究[J].广东化工,2023,50(20):74-76.
[9]谭强,李俊,薄翠梅,等.基于电化学酶传感器的葡萄糖分析仪的设计[J].电子器件,2022,45(01):239-243.
基金项目:福建省自然科学基金项目“亚甲基蓝介导光动力法杀伤水产病原菌研究”(项目编号:2022J01802)
作者单位:集美大学水产学院
责任编辑:王颖振 郑凯津