(重庆大学 物理学院,重庆 401331)
择要:为了提高电荷耦合器件(CCD)一维尺度非打仗丈量系统的集成性和便携程度,设计了以STM32为核心的丈量系统。利用3.7 V锂电池供电,用STM32产生线阵CCD驱动旗子暗记,内嵌边缘检测算法并设计了LCD液晶触摸屏操作界面,实现了一款高精度便携式非打仗丈量仪。系统功能完全、操作方便、可靠性高。
0弁言

电荷耦合器件CCD(ChargeCoupled Device)[1]自上世纪60年代出身以来,由于其具有精度高、功耗低、尺寸小、寿命长等优点,被广泛地运用于自动丈量、图像获取等方面。随着CCD运用市场的扩大,CCD丈量系统的实现方法也曾出不穷。现有的CCD丈量系统多采取单片机或FPGA驱动,用串口或USB进行数据传输,用电脑上位机完成数据的处理和显示,供电办法则多采取5 V电压转换器或USB供电。这样的设计使得CCD丈量系统的利用灵巧程度、便携性、实时性都受到限定。
为办理以上问题,设计了一款基于STM32便携式线阵CCD丈量系统。系统驱动办法采取ARM驱动,选用意法半导体公司的STM32F103作为主控芯片完成驱动旗子暗记的天生和掌握功能。采取中值滤波和基于梯度算子的直线拟合边缘提取算法[2]处理数据,设计了LCD触摸屏操作界面实时显示数据波形和丈量结果。供电办法采取3.7 V锂电池供电,并设计了USB充电电路。如此设计战胜了现有CCD丈量系统开拓本钱高、连线繁芜、便携性差等问题。
1系统构造
系统紧张由ARM处理器、电平转换、线阵CCD、A/D转换、LCD液晶触摸显示及SD存储卡等部分组成。
系统事情过程如下:ARM处理器产生驱动脉冲,通过电平转换之后驱动线阵CCD事情,线阵CCD的光敏单元受光的引发产生电旗子暗记,并在驱动脉冲的浸染下输出离散的仿照旗子暗记,此旗子暗记经由0.1 μF的隔直耦合电容后传入A/D转换电路,A/D转换后的数字旗子暗记经由ARM内部的DMA快速数据传输通道送入片内RAM。在吸收完一帧CCD数据之后,对数据进行打算,并通过LCD液晶屏显示旗子暗记波形和丈量结果。通过LCD触摸屏按键可以选择性地保存原始数据和屏幕截图到SD卡。系统框架如图1所示。
2系统硬件组成
2.1电源模块
本系统选用的电池为单节3.7 V锂电池,电池容量6 000 mWh。该电池电量在5%以上时电压范围3.45 V~4.2 V。根据系统需求设计了3.3 V降压电路和5 V、12 V升压电路。芯片选型和电路设计中紧张考虑了输入电压范围、电源转换效率、输出功率、静态电流、电路繁芜程度和本钱等问题。
2.2掌握模块
系统主控芯片选用STM32F103ZET6,其为意法半导体公司推出的一款基于Cortex-M3内核的32位微处理器。该处理器最大时钟频率可达到72 MHz,具有64 KB静态RAM,516 KB闪存,完备知足系统对实时性以及存储空间的哀求。具备3个SPI通信接口和FSMC灵巧的静态存储器管理系统,方便对SD卡和LCD屏幕的操作。 带有2个高等定时器和6个通用定时器,为CCD驱动和AD驱动时序的设计供应了支持,有112个GPIO口,可根据需求对引脚的功能进行复用,方便对系统进行扩展。
2.3旗子暗记采集和A/D转换模块
本设计选用的线阵CCD传感器为东芝公司生产的TCD1209,这款CCD灵敏度高、暗旗子暗记电压小、动态范围比较大,适用于丈量系统。它有2 048个有效像元,像元尺寸为14 μm×14 μm,光敏区总长度为28.4 mm。 TCD1209事情须要6路5 V电平的驱动时序,这些旗子暗记的时序关系在驱动旗子暗记设计部分先容。
选用AD公司生产的AD9945对线阵CCD输出的仿照旗子暗记进行模数转换。它是一款适宜本系统CCD运用的完全仿照旗子暗记处理器[3]。该芯片最高采样频率为40 MHz,其旗子暗记链包括CDS(干系双采样器)、VGA(数字掌握增益放大器)、AD(12位模数转换器)以及暗电平钳位。其干系双采样器CDS可以减小系统的复位噪声、热噪声等,有效提高旗子暗记质量。数字掌握增益放大器VGA可以通过一个10位的串行数字接口编程配置,设置CCD的旗子暗记增益,增益范围为6~40 dB,增益调度的公式为VGA Gain(dB)=(VGA Code×0.035 dB)+5.3 dB。12位的A/D转换器将仿照旗子暗记转换为12 bit数字旗子暗记,实现并行输出。
2.4LCD显示模块
本设计中显示器选用分辨率为800×480的4.3英寸TFTLCD电容触摸屏模块,该模块16位真彩色显示,采取NT35510驱动,该芯片自带GRAM,无需外加驱动器。TFTLCD模块与STM32的连接采取FSMC(灵巧的静态存储掌握器),16位8080并行数据端口用于传输数据,5个掌握端口用于驱动液晶屏,这样的驱动模式可以实现快速读写,写周期只须要33 ns,理论上最大速率可以达到每秒3 030万像素,即刷屏速率每秒78.9帧。
3驱动旗子暗记设计
3.1CCD驱动时序产生
CCD事情须要的6路驱动时序包括移位脉冲φ1、φ2,旗子暗记输出脉冲φ2b,转移脉冲SH,复位脉冲RS,箝位脉冲CP。在这六路驱动旗子暗记协同事情下,CCD完成光的积分和转移输出。SH为低电平时,CCD进行光积分,此阶段不发生电荷转移。SH为高电平时,CCD将光积分旗子暗记转移至移位寄存器,移位寄存器在φ1、φ2的浸染下将电荷逐位转移至输出端,末了由φ2b输出。不才一个旗子暗记到来前,RS和CP对相元中的残余旗子暗记进行打消。CCD六路驱动旗子暗记须要知足严格的时序关系,时序图如图2所示。
φ1由STM32的高等定时器TIM1_Channel2产生。STM32时钟主频为72 MHz,TIM1事情在PWM1模式,设置TIM1 自动重装载寄存器的值为71,输出比较值为35,输出比较极性为高,便可以产生频率为1 MHz、占空比1∶1的时序波形。TIM1_Channel2的输出旗子暗记经反相器SN74LVC3G04取反并转换为5 V电平后即得到驱动旗子暗记φ1,φ1再次经由反相器即得到φ2和φ2b。
RS和CP分别由STM32定时器3的Channel1、 Channel2和Channel3、 Channel4产生。由CCD驱动时序图可以看出,以φ1的旗子暗记周期为标准,在一个旗子暗记周期内RS和CP旗子暗记要先上升后低落,也便是须要在一个周期内产生低—高—低电平,而STM32定时器在一个周期内只能产生高—低电平或者低—高电平。因此本设计用定时器的两个通道输出两个有相位差的高—低电平,经由异或门SN74LVC2G86来天生所需旗子暗记。TIM3事情在PWM3模式,设置TIM3 自动重装载寄存器的值为71,4个通道输出比较值分别为36、42、46、52, Channel1和Channel2经由SN74LVC2G86取异或得到旗子暗记RS,Channel3和Channel4经由SN74LVC2G86取异或得到旗子暗记CP。
SH配置到PA_10,由TIM2中断掌握产生,TIM2事情在TIM1触发模式,TIM1计数器满则触发TIM2计数器加1,TIM2预装载寄存器的值设置为3 000,TIM2计数器溢出进入中断函数。关闭所有定时器,将PA_10置0,延时3 μs,将PA_10置1,打开所有定时器,退出中断。PA_10输出旗子暗记经SN74LVC3G04取反并转换为5 V电平后即得到驱动旗子暗记SH。
3.2A/D驱动事情掌握
AD9945事情包括数字掌握增益放大器的配置、干系双采样和12位AD转换。配置VGA(数字掌握增益放大器)须要三路时序旗子暗记SL、SCK、SDATA,这三路旗子暗记知足SPI协议,以是利用STM32的SPI2接口来为SL、SCK、SDATA供应时序脉冲。
AD9945的干系双采样功能的实现和暗电平钳位功能的实现须要驱动旗子暗记SHP、SHD、DATACLK和PBCLK、CLPOB。SHP和SHD的采样频率该当与CCD的频率同等,才能担保各个旗子暗记被有效采集。在本系统中,SHP、SHD和SDATA分别由STM32 TIM4的Chanel1、Chanel2和Chanel3掌握。TIM4事情在PWM2输出模式,预装载寄存器的值为71,3个通道输出比较值分别为38、60、20,即得到知足时序关系的SHP、SHD和SDATA旗子暗记,这三路旗子暗记经由SN74LVC3G04电平转换增强驱动能力。
PBCLK、CLPOB分别由定时器2的Channel1、Channel2和Channel3、Channel4产生,TIM2事情在PWM2模式,预装载寄存器的值为3 000,4个通道的输出比较值分别为14、28、14、2 088,旗子暗记CLPOB由定时器2的Channel1、Channel2两路输出旗子暗记经SN74LVC2G86取异或得到,旗子暗记PBCLK由定时器2的Channel2、Channel3两路输出旗子暗记经SN74LVC2G86取异或得到。
4图像处理和LCD显示
本系统用于丈量缝宽的光路图如图3所示。用均匀光源照射待测物体,物体反射光经镜头在CCD光敏面成像,CCD采集到的数据图像在像的位置形成凹槽,只要检测出凹槽的两个边缘位置,即可得到像的宽度。镜头在某个物像位置下的放大倍数通过定标和曲线拟合的方法得到,待测缝宽可由像宽乘以放大倍数得到。
4.1数据预处理
CCD采集的数据中常日带有高频噪声,这些噪声的存在会影响算法的实行效率。中值滤波是最常用的处理高频旗子暗记的方法,它能够在撤除高频噪声的同时保留图像边缘细节。因此须要先对原始数据进行中值滤波处理。
4.2边缘提取
空想的边缘旗子暗记是一阶跃函数[4],而CCD采集到的实际边缘旗子暗记是一个渐变旗子暗记,为准确地提取边缘旗子暗记,采取基于梯度算子的直线拟合法[5]。算法经由简化处理后实现步骤如下:
(1)选取拟合窗口,由于实际丈量光照强度的不愿定性,采纳浮动阈值法,即先探求一帧数据中的最大值Vmax与最小值Vmin,由此设定窗口阈值:
Vh=Vmin+0.8(Vmax-Vmin)
Vl=Vmin+0.2(Vmax-Vmin)
(2)边缘粗定位,根据边缘成像的事理,线阵CCD图像的边缘即为过渡区中灰度变革斜率最大值所在位置。线阵CCD采集得到的数字图像是离散量,其梯度幅值为 R(i)=|V(i)-V(i-1)|,在窗口区域内,利用梯度算子探求出梯度最大值,对应的位置即为图像边缘粗定位所在位置。
(3)确定边缘,在原窗口内,以梯度最大值点的灰度V(i)为中央,向两边按步长m扩展,确定拟合值:
Vl=V(i)-m(Vmax-Vmin),Vl>Vmin
Vh=V(i-1)+m(Vmax-Vmin),Vh<Vmax
从i开始向左搜索找出第一个大于Vl的点n1,从i-1开始向右搜索找出第一个小于Vh的点n2,点(n1,Vl)与点(n2,Vh)所连直线的中点位置X1作为图像边缘。
(4)重复步骤(3)3次,得到5个边缘值X0、X1、X2、X3、X4,将5个边缘值按顺序排列取中值作为终极确定的边缘X。
4.3LCD显示
LCD选用ALINTAK 4.3英寸电容触摸屏模块,模块自带底层驱动,供应了丰富的操作函数,包括画点、读点、显示字符、触屏读点等。此屏幕分辨率为800480,将屏幕分为波形显示区和按键区两部分。
4.3.1波形显示的实现
首先用画点函数LCD_DrawPoint( px[i], py[i]) 绘制网格并显示坐标。接着绘制数据波形,CCD输出的一帧有效数据为2 048个,每个数据都是12 bit,即范围在0~4 096。在600×400的点阵范围显示旗子暗记波形,把长度方向作为线阵CCD的像素序号横坐标,宽度方向作为纵坐标,对应像元灰度值。横坐标方向上数据抽样显示,纵坐标方向对灰度值进行压缩。详细实现如下:
for(i=0;i<600;i++)
{
px[i]=i+Left;
py[i]=( ccd_data [i2048/600]400)>>12;
}
LCD_DrawPoint( px[i], py[i]);
为实现波形实时显示,须要完成波形的自动擦除和重绘[6]。定义了一个数组 iTemp[600]={0} 用于存储上一帧数据,定义一个8 bit变量Py_Used用于标志屏幕上是否有波形显示。在绘制波形前先检讨Py_Used是否为1,若为1则用背景色绘制iTemp[600]存储的数据并将Py_Used置0。绘完一帧波形后将当前的数据存入iTemp[600],以备下一次擦除波形利用。
用背景色绘制上一帧数据擦除波形的方法简便快捷,但是擦除波形的同时,会擦除一部分网格线。为理解决这个问题,利用定时器中断,每隔0.5 s重绘网格。终极得到了很好的波形显示效果。
4.3.2触摸屏按键的实现
通过丈量触摸点电压经由A/D转换的值得到触摸点的横纵坐标。通过判断触摸点位置所在的按键区域,实行相应操作,触摸屏操作程序流程如图4所示。
5结论
基于STM32设计的便携式CCD丈量仪,取代了以往设计中依赖固定电源和电脑上位机的丈量系统。利用STM32的多种上风,提高了系统的集成度和便携性,内嵌边缘检测算法的设计提高了系统的实时性和丈量精度。如图5所示为系统丈量5 cm标准缝宽,LCD显示结果为4.98 cm,丈量相对偏差为0.4%。本系统还可以拓展到其他运用中,例如丈量位移、衍射法丈量细丝直径、振动丈量等,将数据进行灰度阈值划分并以灰度颜色显示还可以用于扫描图像。
参考文献
[1] 王庆有. CCD运用技能[M]. 天津:天津大学出版社,2000.
[2] 翟青涌,黄建国,程玉华. 基于梯度算子的线阵CCD图像边缘检测方法研究[J].电子质量,2009(10):12.
[3] 刘奋飞,赵辉,陶卫,等. 改进的直线拟合线阵CCD图像边缘检测方法[J].光电工程,2005,32(3):4043.
[4] 杜昕,汪小澄. 线阵CCD数据采集及LCD显示[J].自动化仪表,2007,28(12):3639.
[5] 余皓,刘秉琦,王海宽,等. 线阵CCD图像两种直线拟合边缘检测方法比较研究[J].光学仪器,2015,37(3):268271.
[6] 马超,高鹏,杨白芹,等. 基于STM32和uC/OSII的嵌入式数字示波器设计 [J].电子技能,2013(12):7375.