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

news2024/9/22 3:55:07

文章目录

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

源代码工程

源代码工程打开获取:

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(“基于数字光栅的位移测量装置设计”课程实验报告模板),主要从设计报告内容、测量精度、稳定性、功能性、成本等方面进行考虑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1316371.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

渗透实验基础教程(完整版):

#江南的江 #每日鸡汤:影响我们人生的绝不仅仅是环境,其实是心态在控制个人的行动和思想。同时,心态也决定了一个人的视野事业和成就,甚至一生。 #初心和目标:成为网络安全达人。。。 渗透实验基础教程(完整…

STM32-HAL库11-SPI通讯(F103C6T6做主机,F103C8T6做从机)

STM32-HAL库11-SPI通讯(F103C6T6做主机,F103C8T6做从机) 一、所用材料 STM32F103C6T6最小系统板-主机 STM32F103C8T6最小系统板-从机 串口调试助手X-COM 二、所学内容 主要为实现SPI的轮询发送功能,在DSP280049C初学&#xff…

行政前台快递管理教程

行政前台快递管理,成了企业前台工作人员不可逃避的话题。看似简单的几个字,却难倒了不少人。身边有从事行政前台工作的朋友,应该或多或少都会听其抱怨过...... 为什么公司寄件管理这么难? 为什么员工不能按规定寄件?…

【算法刷题】每日打卡——动态规划(1)

背包问题 例题一 有 N件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数…

nlp与cv的发展

Transformer的出现,促进了更高容量模型的建立,为大模型的出现奠定基础. 🧐大模型通常具有十亿个以上参数(仅供参考) 😮左边的蓝色是CV领域、右下绿色是NLP、右上蓝色是多模态😃基础模型(Foundational Models)首次由Bommasani等人在《Stanford…

Quartus 18.1软件及支持包安装教程

安装前最好关闭电脑的杀毒软件和防火墙 安装包可以到Quartus官网下载需要的版本,注意选择操作系统 Quartus官网:FPGA 设计软件 - 英特尔 Quartus Prime (intel.cn) 下载解压后以管理员的身份运行 QuartusSetup-18.1.0.625.exe文件,版本不同…

openGauss学习笔记-162 openGauss 数据库运维-备份与恢复-导入数据-通过INSERT语句直接写入数据

文章目录 openGauss学习笔记-162 openGauss 数据库运维-备份与恢复-导入数据-通过INSERT语句直接写入数据162.1 使用openGauss数据库提供的客户端工具向openGauss数据库写入数据162.2 通过JDBC/ODBC驱动连接数据库执行INSERT语句向openGauss数据库写入数据162.2.1 函数原型162.…

【JavaWeb学习笔记】10 - 手写Tomcat底层,Maven的初步使用

一、Maven 1.Maven示意图 类似Java访问数据库 2.创建Maven案例演示 配置阿里镜像 找到setting目录 但一开始配置不存在该文件 需要去Maven主目录下的conf拿到settings拷贝到上述目录 拷贝到admin/.m2后打开该settings 在<mirrors>内输入镜像地址 <mirror> …

根文件系统(一):基础

本文主要探讨210根文件系统相关知识。 根文件系统 存储设备(flash等)是分块(扇区),访问存储设备是按块号 (扇区号)来访问,文件系统(软件)对存储设备扇区进行管理,将对扇区的访问变成对目录和文件名的访问 根文件系统init进程的应用程序和其他应用程序,提供根目…

【docker】部署minio对象存储并用rclone同步

docker部署minio对象存储并用rclone同步 本文首发于 ❄️慕雪的寒舍 1.什么是minio&#xff1f; minio是一个开源的对象存储服务器&#xff0c;兼容S3协议。 官网&#xff1a;https://min.io/ 官方在开源的基础上也提供云端S3服务&#xff0c;分为个人和企业&#xff0c;有不…

Linux的权限(二)

目录 前言 文件类型和访问权限&#xff08;事物属性&#xff09; 补充知识 文件类型 文件操作权限 修改文件权限 chmod指令 文件权限值的表示方法 字符表示方法 8进制数值表示方法 权限有无带来的影响 修改文件角色 chown与chgrp指令 目录的rwx权限 补充知识 …

TensorFlow神经网络中间层的可视化

TensorFlow神经网络中间层的可视化 TensorFlow神经网络中间层的可视化1. 训练网络并保存为.h5文件2. 通过.h5文件导入网络3. 可视化网络中间层结果&#xff08;1&#xff09;索引取层可视化&#xff08;2&#xff09;通过名字取层可视化 TensorFlow神经网络中间层的可视化 1. …

nodejs+vue+微信小程序+python+PHP技术下的音乐推送系统-计算机毕业设计推荐

3.2.1前台用户功能 前台注册用户的功能如下&#xff1a; 注册登录&#xff1a;用户填写个人信息&#xff0c;并验证手机号码进行账户注册&#xff0c;注册成功后方可登录系统。 歌手介绍&#xff1a;用户可以在线进行歌手介绍信息查看等。 音乐库&#xff1a;用户可以在音乐库查…

Flink的处理函数

之前的流处理API&#xff0c;无论是基本的转换、聚合&#xff0c;还是更为复杂的窗口操作&#xff0c;其实都是基于DataStream进行转换的&#xff0c;所以可以统称为DataStream API。 在Flink更底层&#xff0c;我们可以不定义任何具体的算子&#xff08;比如map&#xff0c;f…

Arrays.asList()方法:陷阱与解决之道

在Java编程中&#xff0c;Arrays类提供了一系列用于操作数组的实用方法。其中&#xff0c;​Arrays.asList()​方法是一个常用的方法&#xff0c;用于快速将数组转换为List集合。然而&#xff0c;这个方法存在一些潜在的陷阱&#xff0c;可能导致出现意外的行为。本文将介绍​A…

智能优化算法应用:基于和声算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于和声算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于和声算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.和声算法4.实验参数设定5.算法结果6.参考文献7.MA…

管理类联考——数学——真题篇——按知识分类——几何——解析几何

文章目录 解析几何2023真题&#xff08;2023-07&#xff09;-几何-解析几何-最值-画图求最值-两线相减求最大-联想三角形的“两边差小于第三边”&#xff0c;当为第三边为最大真题&#xff08;2023-19&#xff09;-几何-解析几何-最值-画图求最值-圆方程画出圆的形状-两点间距离…

Mr. Cappuccino的第67杯咖啡——MacOS通过PD安装Win11

MacOS通过PD安装Win11 下载ParallelsDesktop安装ParallelsDesktop激活ParallelsDesktop下载Windows11安装Windows11激活Windows11 下载ParallelsDesktop ParallelsDesktop下载地址 安装ParallelsDesktop 关闭上面的窗口&#xff0c;继续操作 激活ParallelsDesktop 关闭上面的…

在官网免费创建一个云mongoDB数据库

MongoDB的设计目标是提供高性能、高可用性、可扩展性和易用性。它采用了文档存储模型&#xff0c;将数据以类似JSON的BSON&#xff08;Binary JSON&#xff09;格式存储&#xff0c;并且支持动态模式&#xff0c;允许应用程序更灵活地存储和查询数据。MongoDB还支持水平扩展&am…

Postman接口测试工具使用总结

一、前言 在前后端分离开发时&#xff0c;后端工作人员完成系统接口开发后&#xff0c;需要与前端人员对接&#xff0c;测试调试接口&#xff0c;验证接口的正确性可用性。而这要求前端开发进度和后端进度保持基本一致&#xff0c;任何一方的进度跟不上&#xff0c;都无法及时…