一、引言:随着科技的进步,消费者对产品的质量要求越来越吹毛求疵,比如某产品,国家规定的最大偏差是50um,而买方却提取不大于40um的要求,你不做总有别家做,竞争如此强烈。扯远了,就某产品平坦度的测量,咱今天了设计一款平坦度测量工具。
二、系统论证:
对于平坦度测量,目前有两种方法:一是接触式测量,这样的工具有百分表、千分表等;另一种就是非接触式测量,有超声波测距、激光测距、以及图像处理等。
1、接触式测量:
接触式测量,一般是由机械臂和编码器组成,当然还有别的结构形式,比如压力传感等,就这种方式而言,最大的好处是几乎没什么信号干扰,而且对于产品表面要求低,可以有液体或灰尘等,采用固定支架测量的话,只要一次标定完成,将可以测量很多次,但需要重新标定的周期短,这种设备适用于生产周期长,测量磨损小、人工测量强度低的生产场合。
2、非接触式测量:
非接触式测量,其是以声波或光波反射等方式来测距的,和光波相比,超声波辐射角太大,测量精度低。而对于光信号测量,有两种方式,一种是直接用激光三点测距的原理进行测距,另一种是图像处理的方式来判断,但两者的应用范围不一样,激光测距是通过直接反馈回来的光强来反映距离信息的,而图像处理的方式是以照片灰度来反映的。其优点是方向性好,精度高,算法成熟,设备生命长,适合人工工作强度大的场合,其缺点是抗干扰能力低,受周围环境质量影响大,成本高。
总上所述,该设计采用激光测距的方式来测量平坦度。
三、 测量原理及设计:
1、三角测距原理:
图1初始标定位置
如图1,已知激光器P1至相机透镜P2的距离D1,以及透镜至光敏半导体阵列的距离h2,由几何关系可知,Da=D1*tan(A2),tan (A2)=h1/h2,即Da=D1* h1/h2,所以只要计算出h1就可得到目标到激光器的距离Da,而h1是在整列上所测光信号强度最大点至标定位置的距离,所以只要判断出该信号主瓣落在那个或那几个像素点上,便可计算出h1,以及Da。
图2像素光强或光信号分布
根据光电效应和跃迁理论知,当感光介质捕获一个特定频率的光子时,原子价带电子将产生低能级向高能级的越前,当大于电离能时,将产生光电效应,而产生的光电流和产生的电子数成正比,即和光强成正比,那么将电流换压后,其电压信号分布也如图3,由图3可知一个相机或感光传感器生产出来后,其光学分辨率将固定不变,而目前市场所用工业CCD或CMOS相机的光学分别率在0.05mm左右,若要或等更高分辨率将受半导体工艺制约,为了增大测量精度,只能用软件的方式处理,而事实证明是可行的,现有MCU、DSP等专用IC ADC位数能达到16位,所以两个像素之间的电压就能被量化成很多等级,例如12位ADC就能量化成4096个数字信号,所以一般说光学测距仪的分辨率均指软件分辨率。
2、CCD与CMOS光敏传感器异同:
两者均是光敏二极管原理,但工艺和扫描方法不同。
〈1〉 CCD是连续扫描完所有像素后,统一输出信号,而CMOS可以输出单个像素点的信号,是异步的。
〈2〉 CCD的特殊工艺可保证数据在传送时不会失真,因此各个像素的数据可汇聚至边缘再进行放大处理;而CMOS工艺的数据在传送距离较长时会产生噪声,因此,必须先放大,再整合各个像素的数据。
〈3〉 下面是DIY常用线阵列CCD传感器TLS1401的相关资料图。
图3 TLS1401功能框图
图4 TLS1401典型特征
图5 TLS1401时序波形
其128个像素点扫描完成后,放大统一输出,另外其对800nm的近红外波段响应更大,而且其特性受温度影响较大,不管是CCD、还是CMOS,温度带来的热噪声是不可避免的,所以要做好冷却系统,另外由于量子噪声的存在,对信号ADC前应先进行放大、滤波、比例运放至合适的模拟转化信号。
3、简化设计:
一套一般精度的激光、相机,且包括DSP的系统,价格在千元以上,自己开发这种烧钱的成熟技术没多大意义,如果单纯的是兴趣爱好,那么有两种方案,一是自制系统,这个成本更高,二是简化设计,熟悉一下测量原理和信号处理方法,此处采用简化设计。
〈1〉 系统组成:
本设计基于SensorTile套件,采用蓝牙协议和上位机通信,测距模块采用ST的VL53L0X激光测距传感器,而机械部分由横纵扫描支架,以及测距调平模块组成。测量过程中,测距模块是否水平,靠SensorTile上集成的加速度传感器进行判断。
图6系统框图
〈2〉系统工作过程:
1〉上电初始化:
先给MCU上电,然后给执行系统上电,程序内部初始化。
2〉水平校准:
打开手机APP,搜索蓝牙设备,并连接配对,之后选择主画面上的水平校准按钮,其界面会显示实的sensortile加速传感器加速度的值,以及换算出来的XYZ角度值,待角度计算稳定后,点击确认效准按钮,此时手机将效准的角度值传至sensortile,其接收到后,通过串口发送调节值到ATmega2560,该单片机将通过驱动板调节步进电机,此时sensortile加速传感器将相应变化,然后由sensortile程序做反馈判断,然后将差值再次发送至Ardunio单片机,即sensortile、ATmega2560、驱动、电机做成了负反馈调节环。
3〉测距:
与校准相似,sensortile负责通信,而测距由ATmega2560单片机来完成。首先打开APP中的实时测量模块,然后选择监听。表面平坦度测量采用行列扫描的形式,即有两个自由度,先让测距模块沿横向扫描测距,步进距每秒1度,测到边缘时,再次沿该点纵向扫描,边缘的判断只能从距离上去考虑,同时将数据以帧的形式通过串口发送至sersortile,由其整理后通过蓝牙传给手机,如此反复,测完后选择保存数据,此时由手机来完成图像的合成,所以此过程的数据要有一定的格式,方便统一处理,最后的图像信息可在历史数据中查看,并带有平坦度报表,当然这个数据可以传到web上,由web查看,及打印报表。
四、 总结:
由系统设计可以看出该系统比较复杂,确实,但由于sensortile自身IO资源没留多少,而且手头正好有3D打印机相关模块,所以就采用上述方案了,但由于3月、4月出差平平,工作太忙就做了点前期工作,比如42步进电机调试、VL53L0X激光测距传感器调试、APP蓝牙通信调试、及固件简化,后面两项也是做了一点,所以这次算是失败了,望坛友及论坛工作人员见谅,套件可以随时返还,无缺损。
很抱歉,谢谢
等以后有时间了做出来,当然坛友也能开发哦,这篇设计文档是可行的。
以下是这次大赛相关发帖:
(已解决)单步调试能亮灭,run就不行
本帖最后由 wugx 于 2017-4-26 12:19 编辑