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

【程序】STM32 读取光栅_编码器_光栅传感器_7针OLED

文章目录

  • 源代码工程
  • 编码器基础程序
  • 参考资料

源代码工程

源代码工程打开获取:

http://dt2.8tupian.net/2/28880a55b6666.pg3

这里做了四倍细分,在屏幕上显示 速度、路程、方向。

在这里插入图片描述

在这里插入图片描述

接线方法:

单片机--------------串口模块
单片机的5V---------串口模块的5V
单片机的GND---------串口模块的GND
单片机的PA9---------串口模块的RX (这个是为了串口看数据,可以不接)
单片机的PA10---------串口模块的TX(这个是为了串口看数据,可以不接)

单片机--------------编码器模块
PC6--------------A相
PC7--------------B相
GND--------------GND

编码器基础程序

直接打开我这篇博客查看:https://qq742971636.blog.csdn.net/article/details/131446830

参考资料

文档1. 光栅传感器实验模块介绍(参考文献)
光栅传感器的基本结构如图12.11所示:由栅距W相同的主光栅(标尺光栅)和短光栅(指示光栅)相对叠合而成,两个光栅的栅线保持一个夹角θ,使两光栅尺上的线纹相互交叉。在光源的照射下,交叉点附近的小区域内由于黑色线纹重叠,因而遮光面积最小,挡光效应最弱,光的累积作用使得这个区域出现亮带。相反,距交叉点较远的距离,因两光栅尺不透明的黑色条纹的重叠部分变得越来越少,不透明区域面积逐渐变大,即遮光面积逐渐变大,使得挡光效应变强,只有较少的光线能通过这个区域透过光栅,使这个区域出现暗带。这些与栅线几乎垂直,明、暗相间的条纹就是莫尔条纹,相邻的亮条纹与暗条纹的间距为BH,当被测位移x带动标尺光栅(或指示光栅)沿栅线垂直方向左/右移动一个栅距W时,莫尔条纹上/下移动一个条纹间距BH,莫尔条纹上的光强变化近似正弦波,用光电元件接收莫尔条纹光强的变化即可将光信号转换为电信号,再将电信号放大、整形为方波后,即可用测量电路计数方波的脉冲数和频率,则被测位移的大小为
x=N*W。 (12.1)
式中,N为脉冲个数。

    图12.11 光栅传感器基本结构                     图12.12 光栅传感器测位移原理

使用光栅传感器测量直线位移的原理如图12.12所示:使用两个相距1/4BH的光电元件接收莫尔条纹的光强信号,当主光栅向A方向移动时,莫尔条纹向B方向移动,此时光电元件2输出的方波信号U2在相位上滞后光电元件1输出的方波信号U190º,其波形如图12.13所示;相反,当主光栅向A′方向移动时,莫尔条纹向B′方向移动,此时光电元件2输出的方波信号U2在相位上超前U190º。
使用MCU(如单片机、DSP、ARM等微控制器)测量光栅脉冲波形时,典型的方法如图12.14所示:将U1脉冲连接MCU的外部中断INT0端(设置为上升沿触发),U2脉冲连接至MCU的数字I/O端,当光栅在初始位置时,重置计数器初值。被测位移x带动指示光栅移动时,U1和U2端口会输出脉冲信号,在U1脉冲上升沿时触发MCU中断,在中断程序中读取U2脉冲的电平,若U2脉冲为低电平,则计数器计数值N+1,若U2脉冲为高电平,则计数器计数值N-1,则计数器的值N表示了x的大小,N的符号表示了x的方向,脉冲的频率表示了x的速度。
实验所用光栅为50线/mm,则其位移分辨率为0.02mm,即每移动0.02mm产生一个脉冲信号。

图12.13 主光栅向A方向移动时脉冲波形 图12.14 使用MCU测量光栅脉冲信号原理

文档2.设计性实验要求(必须完成)
验证性实验使用实验室现成控制器(NI数据采集卡)来进行实验,而且实验要求较为简单,无法培养同学们的设计开发能力,所以,将验证性实验进行改造,升级为综合设计性实验(2个同学为一组进行,自行组合)。
设计性实验的要求:
1、光栅传感器模块(如图12.14右边所示)使用实验室现成模块。
2、使用口袋实验室单片机的计数器功能,采样光栅传感器输出的两路正交脉冲信号的频率、相位、脉冲个数,编写相应的程序,根据测量数据计算出光栅的位移、速度和方向,并用LED/LCD显示。
3、使用VC/VB/LabVIEW等软件开发上位机,接收单片机通过串口/蓝牙/WIFI/ZigBee上传的测量数据,开发动画/曲线显示、数据库等功能。
4、光栅四分频细分功能
实验室中的光栅是50线/mm的规格,栅距W=0.02mm,即传感器每移动0.02mm输出1个脉冲信号(其实是两路正交脉冲),位移分辨率较低,为了提高位移分辨率,可采用如下细分电路(因为实验室光栅输出的信号已经整形为方波,下图中的整形电路可以不用):

其中,S和C是光栅传感器输出的两路相位相差90度的正交脉冲信号。
Z1和Z2分别接到单片机的2个外部中断口,Z1上每产生1个脉冲,代表光栅正向移动1/4个栅距。Z2上每产生1个脉冲,代表光栅反向移动1/4个栅距。即可实现位移分辨率=0.02mm/4。
5、评分依据见文档4(“基于数字光栅的位移测量装置设计”课程实验报告模板),主要从设计报告内容、测量精度、稳定性、功能性、成本等方面进行考虑。

相关文章:

【程序】STM32 读取光栅_编码器_光栅传感器_7针OLED

文章目录 源代码工程编码器基础程序参考资料 源代码工程 源代码工程打开获取: http://dt2.8tupian.net/2/28880a55b6666.pg3这里做了四倍细分,在屏幕上显示 速度、路程、方向。 接线方法: 单片机--------------串口模块 单片机的5V-------…...

TestSSLServer4.exe工具使用方法简单介绍(查SSL的加密版本SSL3或是TLS1.2)

一、工具使用方法介绍 工具使用方法参照:http://www.bolet.org/TestSSLServer/ 全篇英文看不懂,翻译了下,能用到的简单介绍如下: 将下载的TestSSLServer4.exe工具放到桌面上,CMD命令行进入到桌面目录,执…...

新年跨年烟花超酷炫合集【内含十八个烟花酷炫效果源码】

❤️以下展示为全部烟花特效效果 ❤️下方仅展示部分代码 ❤️源码获取见文末 🎀HTML5烟花喷泉 <style> * {padding:0;margin:0; } html,body {positi...

计算机网络考研辨析(后续整理入笔记)

文章目录 体系结构物理层速率辨析交换方式辨析编码调制辨析 链路层链路层功能介质访问控制&#xff08;MAC&#xff09;信道划分控制之——CDMA随机访问控制轮询访问控制 扩展以太网交换机 网络层网络层功能IPv4协议IP地址IP数据报分析ICMP 网络拓扑与转发分析&#xff08;重点…...

JMESPath语言

JMESPath&#xff08;JSON Matching Expression Path&#xff09; 一种查询语言。 主要用于从JSON文档中检索和过滤数据。 通过写表达式提取和处理JSON数据&#xff0c;而无需编写复杂的代码。 功能&#xff1a;数据提取、过滤、转换、排序。 场景&#xff1a;处理API响应…...

【C++高阶(七)】C++异常处理的方式

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 异常处理的方式 1. 前言2. C语言处理异常的方式…...

在Idea中创建基于工件的本地服务

目录 1、创建基于工件的Tomcat服务器&#xff1a; 2、修改名称&#xff1a; 3、修改服务器项&#xff1a; 4、部署项 5、最后记得点右下角的【应用】和【确定】保存。 1、创建基于工件的Tomcat服务器&#xff1a; 运行->编辑配置->【Tomcat服务器】->本地 2、修…...

十六、YARN和MapReduce配置

1、部署前提 &#xff08;1&#xff09;配置前提 已经配置好Hadoop集群。 配置内容&#xff1a; &#xff08;2&#xff09;部署说明 &#xff08;3&#xff09;集群规划 2、修改配置文件 MapReduce &#xff08;1&#xff09;修改mapred-env.sh配置文件 export JAVA_HOM…...

自己动手写编译器:语法解析的基本原理

在前面系列章节中我们完成了词法解析。词法解析的基本任务就是判断给定字符串是否符合特定规则&#xff0c;如果符合那么就给这个字符串分配一个标签(token)。词法解析完成后接下来的工作就要分配给语法解析&#xff0c;后者的任务就是判断一系列标签的组合是否符合特定规范。 …...

VS Code解决乱码

在上边搜索栏输入“>Change File Encoding”&#xff0c;更改编码格式&#xff0c;解决乱码格式。 VS Code会帮助确认编码格式&#xff0c;然后选择就好。 最后完成如下&#xff1a;...

宝塔Linux:部署His医疗项目通过jar包的方式

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有…...

Vim命令大全(超详细,适合反复阅读学习)

Vim命令大全 Vim简介Vim中的模式光标移动命令滚屏与跳转文本插入操作文本删除操作文本复制、剪切与粘贴文本的修改与替换文本的查找与替换撤销修改、重做与保存编辑多个文件标签页与折叠栏多窗口操作总结 Vim是一款文本编辑器&#xff0c;是Vi编辑器的增强版。Vim的特点是快速、…...

爬虫持久化保存

## open方法- 方法名称及参数markdown **open(file, moder, bufferingNone, encodingNone, errorsNone, newlineNone, closefdTrue)****file** 文件的路径&#xff0c;需要带上文件名包括文件后缀&#xff08;c:\\1.txt&#xff09;**mode** 打开的方式&#xff08;r,w,a,x,b,t…...

统一大语言模型和知识图谱:如何解决医学大模型-问诊不充分、检查不准确、诊断不完整、治疗方案不全面?

统一大语言模型和知识图谱&#xff1a;如何解决医学大模型问诊不充分、检查不准确、诊断不完整、治疗方案不全面&#xff1f; 医学大模型问题如何使用知识图谱加强和补足专业能力&#xff1f;大模型结构知识图谱增强大模型的方法 医学大模型问题 问诊。偏离主诉和没抓住核心。…...

读写分离之同步延迟测试

背景 读写分离是快速提高数据库性能的手段&#xff0c;主库只负责写入&#xff0c;从库负责查询。但在性能得到提升的同时&#xff0c;编程的复杂度就会提升。由其碰到主从同步延迟的情况&#xff0c;在数据写入后&#xff0c;在从库无法读取到最新数据&#xff0c;会对业务逻…...

SpringBoot+OCR 实现PDF 内容识别

一、SpringBootOCR对pdf文件内容识别提取 1、在 Spring Boot 中&#xff0c;您可以结合 OCR&#xff08;Optical Character Recognition&#xff09;库来实现对 PDF 文件内容的识别和提取。 一种常用的 OCR 库是 Tesseract&#xff0c;而 pdf2image 是一个用于将 PDF 转换为图…...

Go和Java实现抽象工厂模式

Go和Java实现抽象工厂模式 本文通过简单数据库操作案例来说明抽象工厂模式的使用&#xff0c;使用Go语言和Java语言实现。 1、抽象工厂模式 抽象工厂模式是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创 建型模式&#xff0c;它…...

深入理解Java虚拟机---内存分配

深入理解Java虚拟机---内存分配 GC日志内存分配与回收策略对象优先在Eden分配大对象直接进入老年代长期存活的对象将进入老年代动态对象年龄判定空间分配担保 GC日志 以下两段典型的GC日志&#xff1a; 33.125: [GC [DefNew: 3324K->152K(3712K), 0.0025925 secs] 3324K-&…...

计算机网络2

OSI参考模型七层&#xff1a; 1.应用层 2.表示层 3.会话层 4.传输层 5.网络层 6.数据链路层 7.物理层 TCP/IP模型 5层参考模型...

jenkins-Generic Webhook Trigger指定分支构建

文章目录 1 需求分析1.1 关键词 : 2、webhooks 是什么&#xff1f;3、配置步骤3.1 github 里需要的仓库配置&#xff1a;3.2 jenkins 的主要配置3.3 option filter配置用于匹配目标分支 实现指定分支构建 1 需求分析 一个项目一般会开多个分支进行开发&#xff0c;测试&#x…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...