当前位置: 首页 > news >正文

深圳定制网站建设服务公司网络营销策划的流程

深圳定制网站建设服务公司,网络营销策划的流程,超链接网站建设,世界疫情最新数据排名表2022年通过FPGA开发板上的NIOS Ⅱ搭建电机控制的硬件平台,包括电机正反转、编码器的读取,再通过软件部分实现PID算法对电机速度进行控制,使其能够渐近设定的编码器目标值。 一、问题与改进 SOPC之NIOS Ⅱ实现电机转速PID控制_STATEABC的博客-CSDN…

        通过FPGA开发板上的NIOS Ⅱ搭建电机控制的硬件平台,包括电机正反转、编码器的读取,再通过软件部分实现PID算法对电机速度进行控制,使其能够渐近设定的编码器目标值。

一、问题与改进

SOPC之NIOS Ⅱ实现电机转速PID控制_STATEABC的博客-CSDN博客

        在前面用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_PRESENTif ((alt_ic_isr_register(MPU_INT_IRQ_INTERRUPT_CONTROLLER_ID,MPU_INT_IRQ,MPU_INT_ISR,NULL,NULL)!= 0))#elseif((alt_irq_register(MPU_INT_IRQ,NULL, MPU_INT_ISR  )!= 0))#endif{printf("register irt failed\r\n");}IOWR_ALTERA_AVALON_PIO_IRQ_MASK(MPU_INT_BASE,0x01);}

3.2 中断函数

#ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT //nios2 91 edition or later
void MPU_INT_ISR(void *contex)
#else //before nios2 91 edition
void MPU_INT_ISR(void * contex, alt_u32 id)
#endif
{if(!IORD_ALTERA_AVALON_PIO_EDGE_CAP(MPU_INT_BASE)){return;}else{IOWR_ALTERA_AVALON_PIO_EDGE_CAP(MPU_INT_BASE,0x00);IOWR_ALTERA_AVALON_PIO_IRQ_MASK(MPU_INT_BASE,0x00);// 测量当前编码器计数//Car.Get_Encode();//int currentCountsL = Car.Encode_L;//int currentCountsR = abs(Car.Encode_R);// 执行插值步骤for (int currentstep = 0; currentstep < step; currentstep++) {Car.Get_Encode();int currentCountsL = Car.Encode_L;interpolatedTarget= currentCountsL + (targetDistance - currentCountsL) * currentstep / step;
/*			if(interpolatedTarget<=currentCountsL){interpolatedTarget= currentCountsL + (targetDistance - currentCountsL) * currentstep / step;}*/// 计算误差error = interpolatedTarget - currentCountsL;// 计算 PID 控制输出float controlOutput = calculatePID(error, integral, prev_error);// 将控制输出限制在电机速度范围内float speed = initialSpeed + controlOutput;speed = fmaxf(-100, fminf(speed, 100));// 更新下次迭代的前一次误差和积分prev_error = error;integral  += error;if (integral >  8000) integral =  8000;if (integral < -8000) integral = -8000;Car.SetSpeed(speed, 0);}}IOWR_ALTERA_AVALON_PIO_IRQ_MASK(MPU_INT_BASE,0x01);
}

3.3 主程序

int main()
{Car.Stop();Car.Start();MPU_INT_INIT();while(1){printf("Enter targetDistance");scanf("%d", &targetDistance);}return 0;
}

四、实验结果

每10ms调用一次中断函数,这样也就保证了采样的精度,结果也比之前好了很多,但是还是会有稍微的振荡现象。

http://www.rdtb.cn/news/1718.html

相关文章:

  • 网站名和域名的区别seo网站关键词
  • 阿里云域名注册好了怎么做网站郑州seo技术服务顾问
  • 布吉网站建设哪家公司便宜点软文营销范文100字
  • 不能访问子目录的网站谷歌搜索引擎免费入口2022
  • 百度平台营销windows优化大师怎么彻底删除
  • 做网站算软件行业吗全球搜索大全
  • 个人手机版网站建设南宁网络推广热线
  • 网站内容优化的准则seo网络优化
  • wordpress管理面板忘记密码sem和seo是什么职业
  • wordpress 仿微博长沙seo外包优化
  • 专业做苗木的网站西部数码域名注册官网
  • 晋江做鞋子批发的网站个人网站设计内容
  • 溧阳有没有做网站的公司爱站网seo综合查询工具
  • 做品牌推广用什么网站厦门网站推广费用
  • 做蔬菜的网站有哪些关键词优化平台有哪些
  • 电子商务网站建设策划书例子网站制作代码
  • 苏州网站工作室推广拉新任务的平台
  • 真人做爰网站windows优化大师官方下载
  • 湖南 网站建设内蒙古最新消息
  • 如何建立新的企业网站seo培训
  • 万网备案初审过了后网站能访问吗网上商城网站开发
  • 苏州全网网站建设竞价排名机制
  • 门头沟网站建设产品推广文章
  • 公关公司和广告公司的区别北京seo实战培训班
  • 中学生怎么做网站抖音seo排名软件哪个好
  • 青岛易龙网站建设建站之星官网
  • 中国城乡建设部网站房贴文件公司在百度怎么推广
  • wordpress采集爬虫成都自动seo
  • php网站后台登陆不上谷歌外贸seo
  • 绵阳新区大建设谷歌seo靠谱吗