PID控制电机转速简单测试

2023-11-01 10:40

本文主要是介绍PID控制电机转速简单测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

傅里叶变换与不确定性 卓晴

速度采样频率 卓晴

在线拟合工具

新概念:积分限幅。在物理量达到期望值之前防止误差积分越来越大使得没有稳定的反而作用相反了。而有了积分限幅之后在积分误差达到幅值的时候将会保持不变,其目的是让PID控制函数不会输出一个很大的值,这样就能让物理量稳定下来。

从机

uint8_t start_flag = 0;
uint8_t finish_flag = 0;
uint8_t cnt = 0;
uint8_t data_to_receive[2];
void UART4_IRQHandler(void)
{//接收数据帧if(start_flag == 1 && finish_flag == 0) {if (cnt < 2)data_to_receive[cnt++] = USART_ReceiveData(UART4);if (cnt == 2)finish_flag = 1;}//检测是否为帧头if (start_flag == 0) {uint8_t start_byte = USART_ReceiveData(UART4);if (start_byte == 0xAA)start_flag = 1;}//检测帧尾if (finish_flag == 1) {uint8_t finish_byte = USART_ReceiveData(UART4);if (finish_byte == 0x11 && cnt == 2) {finish_flag = 0;start_flag = 0;cnt = 0;int16_t data = *((int16_t *)data_to_receive);int pwm = (int)((data + 36.705882) / 2.111569);MotorRun(data, data);}}}

主机

  1. 增加了速度方向的显示。
  2. 检测标志位来判断方向不稳定,会有毛刺出现。
    通过一个现实不可能达到的阈值来检测方向,效果不错。

开环测试PWM占空比与转速的关系

初始图像
在这里插入图片描述
提取的数据

x(非占空量)y(rps * 100)
100168
125225
150273
175331
200388
225437
250495
275552
300600
325658
350706
375760
400811
425860
450911
475965
5001005

进行线性拟合
在这里插入图片描述
函数方程表达式为: F ( x ) = 2.11156862745098 ∗ x − 36.70588235294107 F(x) = 2.11156862745098*x-36.70588235294107 F(x)=2.11156862745098x36.70588235294107
拟合误差: 0.9995420363644586 0.9995420363644586 0.9995420363644586

PID调节(速度采样和控制间隔均为20ms)

kp = 0.80, ki = 2.50, kd = 0.00, SetSpeed = 6.0
在这里插入图片描述

这篇关于PID控制电机转速简单测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/322379

相关文章

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

使用DrissionPage控制360浏览器的完美解决方案

《使用DrissionPage控制360浏览器的完美解决方案》在网页自动化领域,经常遇到需要保持登录状态、保留Cookie等场景,今天要分享的方案可以完美解决这个问题:使用DrissionPage直接... 目录完整代码引言为什么要使用已有用户数据?核心代码实现1. 导入必要模块2. 关键配置(重点!)3.

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis

Spring Security注解方式权限控制过程

《SpringSecurity注解方式权限控制过程》:本文主要介绍SpringSecurity注解方式权限控制过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、摘要二、实现步骤2.1 在配置类中添加权限注解的支持2.2 创建Controller类2.3 Us