OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 297|回复: 1

求助,STM32编码器读取光栅尺的问题

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-12-27
在线时间
7 小时
发表于 2024-10-9 11:06:29 | 显示全部楼层 |阅读模式
30金钱
光栅尺:尼康MF-501
单片机:STM32F411CEU6
定时器:TIM1/TIM2/TIM3
比较器:LM393DT

手上有个尼康的MF-501的高度计,实际上里面也就是一个光栅尺
参数如下:
MF-501.png
原理图和光栅尺的接口定义如下:
原理图.png
定时器配置如下:
定时器配置.png
程序如下:
程序.png
实现现象:
一:
单片机主频100M,定时器时钟不分频。
使用TIM2或者TIM3编码器模式进行读数:
①将光栅尺测量头移动到原点,然后运行程序,缓慢移动到极限位置进行读数,显示脉冲25000个左右。
②将光栅尺测量头移动到原点,然后运行程序,快速移动到极限位置进行读数,显示脉冲相比之前测量数据相差较大,分析原因,速度过快,时钟速度较低,导致丢步。
③将光栅尺测量头移动到原点,然后运行程序,快速做往复运动,回到原点时,显示脉冲相比原点差距较大,分析原因,速度过快,丢步。
二:
单片机主频100M,定时器时钟不分频。
使用TIM1定时器编码器模式进行读数:
①将光栅尺测量头移动到原点,然后运行程序,缓慢移动到极限位置进行读数,显示脉冲25000个左右。
②将光栅尺测量头移动到原点,然后运行程序,快速移动到极限位置进行读数,显示脉冲25000个左右。
③将光栅尺测量头移动到原点,然后运行程序,快速做往复运动,回到原点时,显示脉冲为0(证明未出现丢步的现象)
求助问题:
①从尼康的产品说明上面来看,它的测量精度为1um,50mm的量程,我这边用单片机也就读到25000个脉冲,换算成长度的话,也就0.2um的精度,他的产品0.1um的精度是如何做到的?
②尼康的说明上,显示的最小读数为0.1um,既然测量精度只是做到了1um,那么它的最小读数的意义何在,又是怎么做到了原来分辨率的10倍呢?

我对编码器模式以及光栅尺测量的原理不太懂,还希望各位大佬能为小弟解答,十分感谢

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3281

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8206
金钱
8206
注册时间
2020-5-11
在线时间
3700 小时
发表于 2024-10-9 12:46:01 | 显示全部楼层
本帖最后由 LcwSwust 于 2024-10-9 13:59 编辑

不了解HAL,所以建议楼主自己检查下寄存器的值,看是否“仅在 TI1 或 TI2 边沿处计数,还是同时在 TI1 和 TI2 处计数”;
以及是否配置了滤波、捕获预分频;
再用示波器看下比较器输出波形,看是否在某些情况下方波变成了三角波。
专治疑难杂症
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 06:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表