当前位置: 首页 > news >正文

基于单片机光纤测距系统的设计与实现

摘要 光纤由于其频带宽 损耗低及抗干扰能力强等优点已被广泛地应用在通信 电子及电力方面 是我们生产生活中必不可少的媒介。 在实际的光纤实验 安装 运营和维护工作中 一种精准 轻便和易操作的光纤测距系统显得尤为重要 设计中采用基于单片机的激光测距系统, 以相位式激光测距法为核心 包括显示模块 模式选择模块 按键输入模块 该系统具有激光测距、 复位 模式选择 校准 数值输入与显示功能 整个系统与传统的光纤测距仪相比有着低成本 轻便 功能人性化、 便于操作等优点
关键词 光纤 相位式激光测距 单片机 便携式
Abstract :Optical fiber has been widely used in communications,electronics and power due to its advantages of frequency bandwidth,low loss and strong anti-interference ability.It is an indispensable medium in our production and life.In the actual optical fiber experiment,installation,operation and maintenance work,a precise,lightweight and easy -to -operate optical fiber ranging system is particularly important.In this design,a laser ranging system based on a single chip microcomputer is used,with the phase laser ranging method as the core.Including display module,mode selection module,key input module.The system has functions of laser ranging,reset,mode selection,calibration,numerical input and display.
Keywords :optical fiber,phase laser ranging,single chip computer,portable
在实际的生产生活中 在光纤测试 安装维护中 如何快速便捷地得知该段光纤长度显得尤为重要。 目前有多种光纤测距方法, 包括光时域反射仪 OTDR )、 光频域反射仪 OFDR )、 光低相干反射仪( OLCR   本设计基于单片机 以相位式测距法为核心, 加入多种个性化功能 使得该系统具有低成本 轻便 功能人性化、 便于操作等优点

1 相位式激光测距

相位式激光测距是用调制信号将发射激光进行调制 通过测量连续的被调制的光波信号在被测距离上往返所产生的相位差, 间接得测定激光的传播时间 从而计算出待测距离 原理图如图 1 2 所示

假设调制光波为频率为 f 的正弦波 根据波动方程可知 光在空气传播过程中产生的相位位移与待测距离 L 的关系如公式所示
其中 f 为正弦波频练 L 为待测距离 c 为光在空气中的传 播速度
因此通过计算可得待测距离 L
光在介质中传播频率不变 光在空气中折射率为 1 在光纤传播中, 光纤的折射率大于空气的折射率 与在空气中不同 因此在光纤测距中需要关注光纤自身的折射率。
相位式激光测距法在大多数情况下适应于中短距离的测距, 其精度可达毫米 微米级 是目前测距精度最高的一种方式

2 总体设计方案

为实现基于单片机的光纤测距系统 采用 STC89C52 单片机为处理器, 激光模块以相位式激光测距法为核心与单片机进行数据交互, 按键部分包括测距按键 复位按键 模式选择按键 、校准按键及方便用户自定义输入的 4 * 4 键盘输入矩阵 实现多种功能便于用户选择操作, LCD1602 显示模块可以显示光纤测距结果及用户操作选择, 如图 3 所示 用户通过该系统可以实现激光测距、 系统复位 光纤波长选择 对待测光纤进行系统校准等功能。
激光模块与待测光纤采用自制的双端光纤连接头 为双端 FC 圆型带螺纹接口 , 光纤双端分别与激光模块的发射端与接收端对接, 连接卡口的设计主要目的是为了让激光模块与光纤精准对接, 使激光的发射与接收损失降低 提高光纤测距的灵敏度与准确性。

3 硬件电路设计

3.1 电源模块

基于 LM317 的电源模块可稳定为激光模块 STC89C52 模块以及 LCD1602 模块供电 激光模块需要提供 3.3V 电 源 ,STC89C52 单片机需要提供 5V 电源 LCD1602 模块需要提供5V 电源

3.2 激光模块

测距系统所需要的激光模块采用 SK80 工业级高精度激光测距传感器。 采用相位测距原理 利用激光在空气中的传播速度一定的原则, 进而得到与被测物之间的距离值 激光测距传感器测量范围为 0.03~80m 测量精度 标准差 ±1mm 激光波长为 635nm 我们采用双端测量的方式 用双端光纤连接头直接将光纤两端与激光模块的发射端和接收端相连。

3.3 STC89C52 单片机处理器

采用 STC89C52 的原因是该款单片机足够实现需要的功能, 并且该款单片机与 STM32 相比成本更低 耗能更低   单片机主要是接收按键的控制信息, 与激光模块进行数据的交互 包括指定发送以及返回数据的接收, 内部进行返回数据的计算及格式转换, 同时控制显示模块进行数据的显示

3.4 LCD1602 显示模块

LCD1602 显示屏是目前广泛使用的一种字符型液晶显示模块。 由字符型液晶显示屏 LCD )、 控制驱动主电路 HD44780及其扩展驱动电路 HD44100 以及少量电阻 电容元件和结构件等组成。 LCD1602 与单片机采用直接控制的方式 用以显示所测得的光纤长度和用户按键选择模式。

3.5 按键模块

按键模块包括独立按键与 4 * 4 键盘矩阵 分为测距按键 、复位按键、 模式选择按键 校准按键和 4 * 4 用户输入键盘矩阵 。测距按键实现的功能为开始激光测长, 通过单片机给激光模块发送测量指令, 测量指令包括单次测量与多次测量 为了模块的测长稳定, 目前采用多次测量的方式 持续测量 。复位按键主要的作用是, 控制激光模块的关机与开机 并重置 LCD1602 显示信息 以达到复位重新测量的目的 。模式选择按键的设置主要是为了针对不同折射率的光纤进行不同的测量计算, 模式选择按键采用循环设置的方式 我们设置了四种不同的设定, 包括 1.477 1.4719 1.4680 1.4685 。校准按键设置的目的是在用户不知道光纤折射率的情况下进行初步的校准, 我们在测量之前先用一根同款短的光纤进行校准, 再进行待测光纤的测长 我们按下校准按键后 可通过 4*4 按键矩阵进行实际校准光纤的长度输入 确认后单片机可进行折射率的计算。

4 软件编程实现

基于 C 语言进行系统的功能软件实现 主要包括系统初始化、 LCD 显示功能 I / O 通信 独立按键与矩阵键盘输入功能以及计算功能。 系统初始化包括单片机自身的寄存器 时钟与串口等的初始化, LCD1602 显示屏的初始化 同时包括对计算使用的参数进行初始化。 LCD1602 显示部分包括指针移动 字符显示和字符串显示等功能。 按键部分包括了独立按键与矩阵键盘输入, 当按下独立功能按键时 对应的单片机 I / O 被置于低电平, 程序选择对应的功能 测距按键 I / O 口置于低电平后 单片机向激光测距模块发送持续测量指令, 同时持续接收串口返回信息, 将返回的信息进行解析 与初始化的折射率等参数计算后得到具体的距离数值, 这时通过 LCD1602 显示出来 模式选择功能, 程序采用循环的方式进行多种不同的参数设定 更新计算使用的参数。 对于校准功能 当我们按下校准按键后 程序进入用户输入部分, 此时其他按键失效 用户使用矩阵键盘进行数字输入, 程序检测输入 当用户按下确认键后 程序将用户的输入更新到计算参数中。 软件实现框图如图 4 所示

5 结束语

本文基于 STC89C52 单片机实现了激光测距 模式参数选择、 系统复位 用户自定义校准 数值解析计算 结果显示等功能 ,使用户可以快速便捷地进行光纤测距。 本系统的设计与实现为光纤测距提供了一种低成本、 轻便 功能人性化 便于操作的方法

相关文章:

基于单片机光纤测距系统的设计与实现

摘要 : 光纤由于其频带宽 、 损耗低及抗干扰能力强等优点已被广泛地应用在通信 、 电子及电力方面 , 是我们生产生活中必不可少的媒介。 在实际的光纤实验 、 安装 、 运营和维护工作中 , 一种精准 、 轻便和易操作的光纤测距系统显得尤为重…...

python项目实战——人生重开模拟器

文章目录 1.菜单栏的编写2.玩家确定颜值、体质、智力、家境3.生成性别4.设定角色出生点5.各个年龄段的变化5.1 幼年阶段5.2 青年阶段5.3中年阶段5.4 晚年阶段 6.整体代码 人生重开模拟器是一款文字类小游戏. 玩家可根据提示输入角色的初始属性之后, 就可以开启不同的人生经历. …...

小时候的子弹击中了现在的我-hive进阶:案例解析(第18天)

系列文章目录 一、Hive表操作 二、数据导入和导出 三、分区表 四、官方文档(了解) 五、分桶表(熟悉) 六、复杂类型(熟悉) 七、Hive乱码解决(操作。可以不做,不影响) 八、…...

电影票房预测管理系统设计

电影票房预测管理系统的开发涉及多个层面的设计,包括但不限于数据收集、数据分析、预测模型构建、用户界面设计和系统集成。以下是一个基本的系统设计框架: 1. 数据收集模块:这是整个系统的基础。需要收集的数据可能包括历史票房数据、上映电…...

正则表达式与Pyhton

一、正则表达式的规则 1、支持普通字符匹配 2、元字符,一个符号匹配一堆字符 \d 匹配数字 \w 匹配数字、字母、下划线 \D \d的取反,除了数字全部匹配 \W \w的取反 [abc] 匹配字母a、b、c [^abc] [abc]的取反&#xf…...

Transformer常见面试题

目录 1.Transformer为何使用多头注意力机制?(为什么不使用一个头) 2.Transformer为什么Q和K使用不同的权重矩阵生成,为何不能使用同一个值进行自身的点乘? (注意和第一个问题的区别) 3.Transf…...

Linux——vim的配置文件+异常处理

vim的配置文件: [rootserver ~]# vim /etc/vimrc # 输入以下内容 set nu # 永久设置行号 shell [rootserver ~]# vim /etc/vimrc 或者 vim ~/.vimrc set hlsearch "高亮度反白 set backspace2 "可随时用退格键删除 set autoindent…...

node mySql 实现数据的导入导出,以及导入批量插入的sql语句

node 实现导出, 在导出excel中包含图片(附件) node 实现导出, 在导出excel中包含图片(附件)-CSDN博客https://blog.csdn.net/snows_l/article/details/139999392?spm1001.2014.3001.5502 一、效果 如图: 二、导入 …...

Webpack: 底层配置逻辑

概述 Webpack 5 提供了非常强大、灵活的模块打包功能,配合其成熟生态下数量庞大的插件、Loader 资源,已经能够满足大多数前端项目的工程化需求,但代价则是日益复杂、晦涩的使用方法,开发者通常需要根据项目环境、资源类型、编译目…...

数字图像处理期末复习题1

个人名片: 🎓作者简介:嵌入式领域优质创作者🌐个人主页:妄北y 📞个人QQ:2061314755 💌个人邮箱:[mailto:2061314755qq.com] 📱个人微信:Vir2025WB…...

poi-tl 生成 word 文件(插入文字、图片、表格、图表)

文章说明 本篇文章主要通过代码案例的方式,展示 poi-tl 生成 docx 文件的一些常用操作,主要涵盖以下内容 : 插入文本字符(含样式、超链接)插入图片插入表格引入标签(通过可选文字的方式,这种方…...

centos上部署Ollama平台,实现语言大模型本地部署

网上有很多大模型,很多都是远程在线调用ChatGPT的api来实现的,自己本地是没有大模型的,这里和大家分享一个大模型平台,可以实现本地快速部署大模型。 Ollama是一个开源项目,它提供了一个平台和工具集,用于部…...

Java学习 - Redis Redigo简单介绍

Redigo 驱动下载 go get github.com/garyburd/redigo/redis获取redis服务器连接 c, err : redis.Dial("tcp", "127.0.0.1:6379")if err ! nil {panic(err) }defer c.Close()命令使用 v, err : c.Do("SET","hello","world&quo…...

【鸿蒙学习笔记】ArkTS组件 Blank

官方文档:Blank 目录标题...

如何使用Spring Boot进行单元测试

如何使用Spring Boot进行单元测试 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Spring Boot项目中进行单元测试,确保代码质量…...

2024steam夏促商店打不开、steam活动加载不了解决方法一览

今年的夏促终于开始了!目前可以看到很多精品小游戏在促销列表内,活动正式开启后还不知道又会是怎样的一幅场景。因为每年夏促都会有不少刚高考完的新手加入,遇到常见的steam商店打不开、活动页面不加载等问题不知道怎么解决。所以这里给大家准备了几种常…...

IPC进程通信:QNX

引言 在现代操作系统中,进程间通信(IPC)机制是实现进程间数据交换和同步的关键技术。IPC允许多个进程共享信息和资源,从而协同工作完成复杂任务。在QNX Neutrino系统中,IPC尤为重要,因为QNX主要面向实时系…...

OpenCV学习之cv2.imshow()函数

OpenCV学习之cv2.imshow()函数 一、简介 cv2.imshow 是 OpenCV 库中用于显示图像的基本函数之一。在图像处理和计算机视觉的过程中,使用该函数可以快速预览处理后的图像,便于调试和结果展示。 二、基本语法 cv2.imshow(WindowName, Imgmat)三、参数说…...

Oracle、MySQL、PostGreSQL、SQL Server-空值

Oracle、MySQL、PostGreSQL、SQL Server-null value 最近几年数据库市场百花齐放,在做跨数据库迁移的数据库选型时,除了性能、稳定、安全、运维、功能、可扩展外,像开发中对于值的处理往往容易被人忽视, 之前写过一篇关于PG区别O…...

python pip详解1

一、简介 pip是python的一个软件包管理工具,同yum,apt作用一致,pip有两种使用方式:pip模块和pip命令,示例如下: python -m pip install package pip install package二、命令行详解 python -m pip --hel…...

idea大量爆红问题解决

问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

uniapp中使用aixos 报错

问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...