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

相关文章:

  • 基于ASF-YOLO融合空间特征和尺度特征的新型注意力尺度序列融合模型开发构建医学场景下细胞分割检测识别系统,以【BCC、DSB2018数据集为基准】
  • wpf TelerikUI使用DragDropManager
  • Kotlin ArrayList类型toTypedArray转换Array
  • RHEL8_Linux使用podman管理容器
  • 贝蒂详解<string.h>哦~(用法与实现)
  • KubeKey 离线部署 KubeSphere v3.4.1 和 K8s v1.26 实战指南
  • JVM 调优
  • 大华 DSS 数字监控系统 itcBulletin SQL 注入漏洞复现
  • 软件测试计划文档
  • 论文写作☞结论怎么写?
  • maui中实现加载更多 RefreshView跟ListView(1)
  • LVS-DR模式
  • ssm基于MVC的舞蹈网站的设计与实现论文
  • C#中的封装、继承和多态
  • 深入理解JVM设计的精髓与独特之处
  • ----------
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [译] React v16.8: 含有Hooks的版本
  • 【mysql】环境安装、服务启动、密码设置
  • C++类中的特殊成员函数
  • Laravel 实践之路: 数据库迁移与数据填充
  • log4j2输出到kafka
  • Map集合、散列表、红黑树介绍
  • React as a UI Runtime(五、列表)
  • 从零开始的无人驾驶 1
  • 欢迎参加第二届中国游戏开发者大会
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 计算机常识 - 收藏集 - 掘金
  • 区块链分支循环
  • 使用Gradle第一次构建Java程序
  • 中文输入法与React文本输入框的问题与解决方案
  • 【干货分享】dos命令大全
  • Java总结 - String - 这篇请使劲喷我
  • #pragma data_seg 共享数据区(转)
  • (1)SpringCloud 整合Python
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (vue)页面文件上传获取:action地址
  • (windows2012共享文件夹和防火墙设置
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (剑指Offer)面试题34:丑数
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (四)Controller接口控制器详解(三)
  • (一一四)第九章编程练习
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)winform之ListView
  • .NET 解决重复提交问题
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • :如何用SQL脚本保存存储过程返回的结果集
  • @31省区市高考时间表来了,祝考试成功
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [3D基础]理解计算机3D图形学中的坐标系变换