通过FPGA开发板上的NIOS Ⅱ搭建电机控制的硬件平台,包括电机正反转、编码器的读取,再通过软件部分实现PID算法对电机速度进行控制,使其能够渐近设定的编码器目标值。
一、问题与改进
SOPC之NIOS Ⅱ实现电机转速PID控制_STATEABC的博客-优快云博客
在前面用PID实现了基于NIOS Ⅱ的电机转动控制,但是由于用的usleep()函数精度不够,所以会导致有时读取的编码器值不准确,最终发生PID产生振荡现象。
因此采用中断函数的方式,每10ms调用一次中断服务函数,再中断函数中实现PID控制,从而达到更大的精确度,减少振荡。
二、硬件设计
硬件设计同之前不变

三、软件设计
3.1 中断函数初始化
void MPU_INT_INIT(void)
{
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(MPU_INT_BASE,0x00);
#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT
if ((alt_ic_isr_registe

文章讲述了使用NIOSII在FPGA开发板上实现电机控制的改进,通过中断函数提高PID算法的精度,解决usleep()函数导致的编码器读取不准确和振荡问题。
最低0.47元/天 解锁文章
1728

被折叠的 条评论
为什么被折叠?



