基于激光测距的船舶吃水深度检测系统设计
基于激光测距的船舶吃水深度检测系统设计
作者:王智;陈甜;李玉乐;
随着经济的不断深入发展,我国船舶吞吐量与日俱增,同时由于船舶运输具有运量大、价格低的特点,大宗散货占总运输量很大比重。针对散货船货物计量难的问题,前人发明了水尺计重的方法。水尺计重法类似于“曹冲称象”,在散货船的船艏、舯、艉舷外分别设置水尺,通过水尺读数可以计算出船舶排水量,而装载货物前后各读一次水尺并减去前后船舶压载变化,即可计算出装载前后船舶排水量差,忽略装载前后水文条件变化即可得出装载的货物量。这种方法一直延续至今,现今一般在装载前后雇佣第三方水尺计量员读水尺得出平均吃水, 并监督船方测量压载水位,然后通过对照船舶吃水载重表得出装载量。水尺测重直接决定了货物的交割量,因此对水尺的准确读数直接影响了船东与装货方的商业利益。而船舶体量巨大,对水尺的读数往往是“失之毫厘,差之千里”,因此对船舶水尺的读数往往是装载过程中易引起船方货方争议的焦点。而现行的人工读水尺的方法往往伴随着水尺计量员的主观误差,并且在水文条件恶劣、可视性不良的情况下难以准确地读出水尺。往往因此导致船方货方有争议,由此耽误船期,延误生产,造成经济损失。自从20世纪末期微型计算机被发明以来,微型计算机经过了几十年的飞速发展,性能不断提升,现代微型计算机已经可以取代人类进行很多工作。计算机没有人为主观因素的影响,可以进行人类难以进行的复杂运算,可靠性高。基于激光测距仪设计船舶吃水自动检测系统可以对船舶吃水进行实时检测、实时显示,在水文条件恶劣的情况下可以多次检测消除误差,可以与水尺计量员进行互补甚至替代人工操作,适合推广发展。
1硬件部分设计
本文设计的设备主要基于AT89S52制作而成,水位信息依次通过激光测距传感器,经过I/V转换、模数转换器到达AT89S52单片机,单片机经过运算输出到八位共阳极显示屏上。
1.1数据采集传感器DLS-A15传感器及其辅助电路
激光测距最早在20世纪60年代被发明,最早主要应用于军用领域,曾被用来测量过地月距离。经过50余年的商业发展,曾经可望而不可及的技术早已进入了民用领域。激光测距传感器具有测量准确、抗干扰强、非接触式的特点,在高准确度的测量中应用广泛。其原理是利用激光发生器对待测物体发出一束脉冲光束,当这束激光束照射到待测物体表面并反射回到激光测距传感器内置的光敏元件上时,记录下这个过程所消耗的时间t,忽略光速c在空气中的误差,可得待测距离为L=ct/2。然后通过多个脉冲光束多次测量得到平均值,经过一定换算以标准电流的形式输出。
DLS-A15是由德国公司Dimetix生产的激光传感器, 测量距离在20 cm到300 m之间,标准精度是依1.5 mm。DLS-A15支持数字信号输出与模拟信号输出两种输出方式,数字信号输出方式包括TTL与串行接口输出,模拟信号输出方式包括0~20 mA与4~20 mA两种输出方式。因大多传感器使用模拟信号输出,为了可兼容其他激光传感器,本文使用0~20 mA的模拟信号。
模数转换器是一种将模拟量转换为数字量的设备, 原因是通常传感器传出测量数据都是模拟量,即将被测几何量转换成与其变化规律类似的其他量。例如本文中将待测距离转换成0~20 mA的标准电流,虽然又经过I/V 转换电路转换成0~5 V的标准电压,但还是模拟信号。因为模拟量难以直接进行运算,所以一般将模拟信号转换为数字信号,即计算机可以利用的二进制数字。这时候就需要用到ADC0804电子元件。
单片机与ADC0804的连接如图2所示,ADC0804CS引脚为选择引脚,当CS为低电平时ADC0804才有效,一般用于选择多个模数转换器时使用,因为在本文中只使用了一个ADC0804模数转换器,因而直接接地。RD引脚接AT89S52的P3.7端口,当ADC0804完成转换时可以通过P3.7端口通知单片机将转换后的数据通过DB0~DB7端口取走。WR 端口接单片机P3.6 端口, 当单片机需要ADC0804开始转换时将P3.6口赋低电平,ADC0804即可开始转换。VREF/2端口为参考电压端口,为待转换电压最大值的0.5倍,通过一个高电平、一个低电平与两个电阻可以得到该电压值。VIN+端口为待转换电压的输入端口, 实际电路中应该连接I/V转换电路的出口,在模拟调试中为替代电路的出口。ADC0804的DB0~DB7端口连接单片机的P0.0~P0.7端口,当模数转换器完成转换时单片机从P0提取结果。
本文设计的设备将DLS-A15激光测距传感器设置在干舷甲板边线上缘测量到水面的高度得到干舷高度,并输出标准电流模拟信号。
2软件部分设计
2.1主函数设计
主函数是单片机软件部分的入口,负责调度子函数从而完成设备的工作。本文设计的设备中单片机的工作流程是读取AD转换器的转换结果,将读取的结果通过一定算法计算出船舶吃水数值,将吃水数值输出到显示器。
2.2转换子函数与计算子函数设计
转换子函数用于控制ADC0804,读取ADC0804读数并送入内存,设计中将AT89S52P3.2口与模数转换器INT0 口连接,WR、RD端口分别相连即可控制模数转换器进行转换,当P3.2收到一个高电平时可以将模数转换器中的数值读取到寄存器中。
计算子函数是负责将寄存器中储存的数字信号通过内置的算法计算成吃水,并按显示子函数要求的方式将吃水数值存到寄存器中的函数。因为AT89S52只能进行0~255的四则运算,也无法进行小数运算,无法满足本设计计算要求,所以把所有参与运算的数字都扩大了1000 倍,消除小数点,转化成16位2进制整数,将小数运算转化为大数运算,这样进行的0~65 535间的四则运算,实际为0~65.535之间的小数运算,已经满足本设计的要求。到输出时依次除以“10000”、“1000”、“100”、“10”直接得到各位数码。
当开始计算时根据公式首先用31乘以模数转换器送来的X,再用11 000减去这个数,得到的就是乘以1000倍的吃水数值,并且这个数值以16位二进制数的形式存放在R3R4中。然后除以“10 000”就可以得到吃水的十位数,以此类推得到个位数、小数第一位、小数第二位,并把这些数存放在71H~74H地址等待输出子函数输出。除以上主要关键程序外,还需要编写输出显示的子函数和支援子函数等。
3、仿真调试
基于激光测距传感器DLS-A15和单片机AT89S52的船舶吃水自动测量系统,提供了完整的接线方式图与内部固件程序,粗略描述了各硬件部分的工作原理,并完成了该系统的硬件工作流程设计,在Proteus中绘制出电路的设计图。其中传感器选用了德国公司Dimetix生产的DLS-A15激光测距传感器,经过一个I/V转换电路将传感器输出的标准电流信号转换为标准电压信号,在Proteus 中这两部分由一个滑动变阻器与一个高电平、一个低电平构成的模拟电路代替。然后利用ADC0804模数转换器转换为八位二进制数字信号,然后经过AT89S52单片机内部程序计算出待输出的型吃水值,最后通过扫描法输出显示在四位LED显示器上。在Proteus中完成了电路图的绘制并在keil中完成程序固件的编译后,打开Proteus, 可以看到当滑动变阻器置于最下端时显示器上显示“11.00”,当拖动滑动变阻器置于最上端时显示器上显示为“03.00”。
4、结 语
基于激光测距传感器DLS-A15和嵌入式芯片的船舶吃水自动测量系统,可直接在LED数码管上显示,该设备不需人工,可以排除人工读取水尺的主观误差,而激光测距传感器精度高,设备的客观误差低,适宜实际生产,也方便自动存储和备案。该系统也存在不足之处,例如未考虑实际船舶在港口风浪较大或温度较低的情况对传感器实际输出的影响,还有待通过实践进一步验证和改进。
本文章转自爱学术(aixueshu.com),如有侵权,请联系删除