Stm32读取海德汉光栅尺(绝对位置)

利用Stm32定时器的比较和捕获功能,读取光栅尺的脉冲。光栅尺的接线端为+5、GND、A+、B+、RI+、RI-、A-、B-。这里我只用到前五个端口。Stm32的管脚能容忍5v电压,但是还是害怕长时间通电会烧坏,所以就在A+、B+、RI+这三个引脚上都串联了一个10k的电阻(心理安慰)。所用光栅尺为海德汉的LS 138,其每隔1cm左右就会有一个绝对位置标志,海德汉的说明书有公式用于解算绝对位置。但是害怕出错,所以就将所有的绝对位置的间隔都读出了:

#include "stm32f10x.h"	//ÔÚ¸ÃÍ·ÎļþÖÐĬÈ϶¨ÒåϵͳʱÖÓΪ72M
#include "delay.h"
#include "sys.h"
#include "usart.h"
//#include "led.h"
//#include "key.h"
#include "exti.h"
#include "encode.h"  
#include "nvic.h"
#include "math.h"

const u16 table[33]={39840,40240,39760,40320,39680,40400,39600,40480,39520,40560,39440,40640,39360,40720,39280,40800,39200,40880,39120,40960,39040,41040,38960,41120,38880,41200,38800,41280,38720,41360,38640,41440,38560};
const u32 table2[33]={39840,80080,119840,160160,199840,240240,279840,320320,359840,400400,439840,480480,519840,560560,599840,640640,679840,720720,759840,800800,839840,880880,919840,960960,999840,1041040,1079840,1121120,1159840,1201200,1239840,1281280,1319840};

其中table是代表从左到右每个间断点对应的增量脉冲数,尺子总共33个绝对位置标志。table2就是从左到右,每个标志点对应的绝对位置。如果测试其它尺子,请先读取间断点对应的脉冲增量:

void EXTI1_IRQHandler(void)
{
    u8 i;
	long distance; //
	if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1)	 	 
	{	
		if(initflag==0){
		    initflag=1;
		  	count = TIM4->CNT;
		    displacement1=breaktime*65536+count;
		}	
		else{
		     count = TIM4->CNT;//
		     displacement2=breaktime*65536+count;
	             MRR=displacement2-displacement1;
		     displacement1=displacement2;
 
 		     Show_32(MRR);
 		    
 		 }
		}	
	}
	EXTI_ClearITPendingBit(EXTI_Line1); //
}

整个工程文件,我已经上传到我的CSDN上了,大家可以下载试试。

http://download.csdn.net/download/fengyuzhe13/10195010

  • 1
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: 海德光栅尺是一种高精度测量设备,常用于机械加工行业。而SMT32是一款微控制器,用于控制和处理电子设备。海德光栅尺和SMT32是不同类型的设备,它们的应用和工作原理也不相同,因此不能直接使用SMT32读取海德光栅尺的数据。 海德光栅尺通过内部的光学传感器,通过读取光栅尺上的刻度信息来测量位置和位移。通常情况下,海德光栅尺与专用的数字显示装置或测量仪器连接,通过特定的信号传输方式来实现数据传输和读取。 如果需要通过SMT32来读取海德光栅尺的数据,可能需要通过适配器或接口将两者连接起来,然后编写相应的程序代码来实现数据的读取和处理。 总之,海德光栅尺和SMT32是不同类型的设备,不能直接使用SMT32读取海德光栅尺的数据。如果需要实现这样的功能,可能需要额外的硬件设备和程序编写工作。 ### 回答2: 海德光栅尺是一种高精度的测量装置,可实现对长度、角度等物理量的测量。而SMT32是一种微控制器,用于进行数字信号处理。根据所提供的信息,无法直接确定海德光栅尺能否与SMT32兼容,因为是否能够读取海德光栅尺还取决于光栅尺的接口和通信协议。 一般来说,光栅尺通常通过数字信号输出接口(如TTL、RS485等)将测量结果传输给外部设备。在这种情况下,如果SMT32具备相应的接口和通信协议,并能够解析和处理光栅尺信号输出,则可实现与海德光栅尺的兼容。 要确定光栅尺是否兼容SMT32,需要进一步了解光栅尺的接口类型和通信协议,并查阅SMT32的技术规格手册,以确定是否存在匹配的接口和协议。 另外,即使SMT32具备与光栅尺兼容的接口和协议,还需要编写适当的代码来实现数据的读取和处理。这需要一定的软件开发能力。 总而言之,海德光栅尺能否用SMT32读取,还需要考虑光栅尺的接口和通信协议是否与SMT32兼容,并具备合适的软件开发能力。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fengyuzhe13

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值