TI中文支持网
TI专业的中文技术问题搜集分享网站

TM4C123GH6PM: qei无法正常识别方向

Part Number:TM4C123GH6PM

麻烦大佬解答疑问。

电机实际方向没有改变但是读出来的方向一直在改变

尝试了一些方法,调用改变方向触发中断的中断服务函数发现一直在变化方向,

1.将连接线改短,

2.光电编码器和霍尔编码器都试了下 

3.打开qei自带的滤波器

都没效果

/resized-image/__size/640×480/__key/communityserver-discussions-components-files/96/BGTJ_5F00_Q_4000_0IOCR_7E005F005B007D00_3_5D00_O_7E00_LKE.png

void QEI0_IRQHandler(void)
{
	if(QEIIntStatus(QEI0_BASE,true) == QEI_INTTIMER)
	{
		QEIIntClear(QEI0_BASE,QEI_INTTIMER);
		left_speed_pid.Current = motor_speed_get(left);
	}
//	else if(QEIIntStatus(QEI0_BASE,true) == QEI_INTDIR)
//	{
//		QEIIntClear(QEI0_BASE,QEI_INTDIR);
//		//UARTprintf("error\r\n");
//	}
}
int16_t motor_speed_get(int8_t channel)
{
	int16_t speed;
	
		if(channel == left)
		{
			speed = (QEIVelocityGet(QEI0_BASE)*time_freq*60)/(freq_number*reduction*line_number);
				number_1 = speed;
			if(QEIDirectionGet(QEI0_BASE)==1)
			{
			
				//speed = speed;
				number_1 = number_1;
				UARTprintf("up:%d\r\n",number_1);
			}else if(QEIDirectionGet(QEI0_BASE)==-1)
			{
				number_1 = -number_1;
				//speed = -speed;
				UARTprintf("re:%d\r\n",number_1);
			}
			
		}else if(channel == right)
		{
			// 6000 448 30 
			speed = (QEIVelocityGet(QEI1_BASE)*time_freq*60)/(freq_number*reduction*line_number);
		}
	
	return speed;
}

foyu li:

找到原因了,pd7被锁住了

但是使用霍尔编码器还是会偶尔出现方向错误的情况,光电编码器不会

,

foyu li:

问题已经解决了

,

? ?:

我也出现这个问题,方便告诉一下怎样解决的吗?

,

Yale Li:

@foyu li

方便分享一下您的解决方案吗?

@ ? ?

可以点击提出相关问题来详细描述一下您碰到的问题的具体情况,我们在新的问题中讨论。

,

foyu li:

硬件上我的编码器出问题了

有个引脚被其他功能锁住了需要解锁

,

foyu li:

硬件上我的编码器出问题了

有个引脚被其他功能锁住了需要解锁

,

foyu li:

硬件上我的编码器出问题了

有个引脚被其他功能锁住了需要解锁

,

Yale Li:

好的,非常感谢您的分享!

赞(0)
未经允许不得转载:TI中文支持网 » TM4C123GH6PM: qei无法正常识别方向
分享到: 更多 (0)