这两天一直疑惑PID的输出怎么就能作为PWM脉冲控制电机输出呢?问了几个人也没说清楚。
我认为你能让一个初学者说明白也就说明你掌握的挺深刻,如果你说了别人还是没明白那就的得反思自己掌握的怎么样,是在自欺欺人吗?还有就是每个人擅长的领域不一样不要总说这么简单都不明白,那我只能说,我擅长的领域你可能就是个小白。
现在研究了一天终于明白了,分享给和我一样疑惑的初学者,仅代表个人理解。

1、设定PID目标值和参数,目标值为电机速度值。

set_p_i_d(1.5, 0.2, 0.0);
set_pid_target(30.0);

2、PID是一个负反馈闭环系统,这点很重要。

float PID_realize(float actual_val)
{/*计算目标值与实际值的误差*/DBG_Printf("%s: pid_target:%.2f - PID_actual:%.2f \r\n", __FUNCTION__,pid.target_val, actual_val);pid.err = pid.target_val - actual_val;/*积分项*/pid.integral += pid.err;DBG_Printf("%s: PID_error:%.2f - PID_sum:%.2f \r\n", __FUNCTION__,pid.err, pid.integral);/*PID算法实现*/pid.output_val = pid.Kp * pid.err + pid.Ki * pid.integral + pid.Kd * (pid.err - pid.err_last);/*误差传递*/pid.err_last = pid.err;/*返回当前实际值*/return pid.output_val;
}

3、具体反馈流程

a、首先PID算法第一步 会对目标值和实际值做一个差值计算,计算偏差之刚开始很大逐渐会变小。
b、每次的PID输出会作为电机的输入,编码器会对每次的速度进行读取,刚开始读到的速度很小,它会把这个速度值作为实际值传入PID输入这个时候PID的目标值还会和这个实际值进行比较,直到误差为0,这个过程会一直进行,只是误差为0时积分项的累加值就稳定了,微分项的差值也稳定了,比例项也稳定了。也就是PID的输出就稳定了,而这个值就是PWM的占空比,这个值是三项的和的稳定值,按我的例子来说,这个PWM占空比值稳定在400左右,它是由电机旋转过程中的负反馈值,也就是目标值30对应的占空比,具体来说就是目标值到达30,PID输出三项的累计值,要想达到这个速度就得是这个占空比,它们两是线性关系,和你设置的PID参数有直接关系。

c、重新设定PID目标值和参数,目标值为电机速度值。
set_p_i_d(15.0, 2.0, 0.0);
set_pid_target(30.0);
我把PID参数增大十倍,速度目标值不变,这个时候最终的PID输出的PWM占空比还是会稳定在400.相对于上一组参数,它的积分累加项正好是上一组的十分之一,但是响应速度较上一组提高10倍。

PID控制电机输出作为电机PWM占空比输入的理解相关推荐

  1. s域中的pid控制matlab,Compensation Designer 2P2Z控制器S域模型理解

    作者:Hardy Zhou TI C2000在数字电源领域有很广法的应用,同时针对数字电源控制器的设计提供了CONTROLSUITE 的DPlib的软件库,可以很容易实现PID, 2P2Z, 3P3Z ...

  2. 为什么需要串级PID控制(结合智能小车,四轴飞行器来解释)

    先说四轴飞行器 四轴飞行器中串级PID控制是由角度环与角速度环一起控制的 可以这么简单的理解: 角度环可以可以保证飞机按期望的角度飞行,单环控制时,具有很好的自稳性.但是打舵的时候跟随性就不够完美.可 ...

  3. Simulink建模:PID控制模型

    本文研究PID控制的Simulink模型实现及其代码生成. 文章目录 1 PID控制 2 Simulink建模 2.1 对公式的理解 2.2 建模过程 2.3 模型配置 3 模型更新及代码生成 3.1 ...

  4. 对于pid控制的个人理解 附c语言代码

    一.对于PID控制算法的引入 位式控制算法(二位式)所比较的只有输出值与设定值,输出方式只有两种,用开关量控制控制对象,但是用"开关量"来控制一个物理量,就显得比较简单粗暴了.有时 ...

  5. Simulink建模:PID控制-串级PID

    本文研究串级PID控制的概念.应用场景以及Simulink模型实现. 文章目录 1 问题引入 2 串级PID控制 3 Simulink建模 3.1 建模前的理解 3.2 建模过程 3.3 代码生成 4 ...

  6. STM32 HAL库PID控制电机 第三章 PID控制双电机

    STM32 HAL库PID控制电机 第三章 PID控制双电机 注:本文含全部PID控制代码,保证可以运行,如不能运行可以留言回复 1 基础配置 1.1 编码器电路图及配置 引脚 定时器通道 PA0 T ...

  7. PID控制电机知识概述

    ​在很多学科竞赛中,我们时常会使用到电机.那么本篇文章我们就来说说如何基于STM32F4xx来驱动电机. 首先本篇文章的内容主要有以下几点: 一.我们需要控制什么样的电机. 二.控制这个电机所需要学习 ...

  8. stm32电机控制定时器1_STM32通过PWM控制电机速度

    做STM32智能小车的实验中会用到定时器PWM输出,来改变直流电机的转速.分享本文了解如何通过PWM实现对电机速度的控制. PWM控制电机速度的基本原理 PWM(Pulse Width Modulat ...

  9. STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机

    STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机(HAL库) 1 电路图 2 TB6612简介 TB6612是双驱动,可同时驱动两个电机 STBY:接单片机的 ...

  10. 关于电机双闭环PID控制一些理解

    双闭环结构 目前网上流传的一些关于双闭环的资料有很多我觉得是不对或者不够清楚的,在这边分享一下自己的理解,希望大家也能指点一下. 双闭环的作用 串级控制系统是改善控制质量的有效方法之一,在过程控制中得 ...

最新文章

  1. 自然语言处理常用数据集
  2. IOS-input元素光标偏移乱跑,是什么原因
  3. centos7 卸载Qt5
  4. 避免资源放在收藏夹里面吃灰的方法(如从typora上直接能导出html并且无缝连接到微信公众号的神奇网站)
  5. ServiceStack.Ormlit 事务
  6. Xcode工程添加第三方文件的详细分析 Create folder references for any added folders(转)
  7. 第1课贝贝的交通指挥系统(《聪明人的游戏:信息学探秘.提高篇-2017-06-C++版》)
  8. 10.Web组件复用
  9. oracle查zw001密码,【Oracle错误集锦】:ORA-00119amp;ORA-00132-一团网
  10. angular模态框位置_angular $modal 模态框
  11. java 原子量_JAVA线程10 - 新特性:原子量
  12. 2021.10.26 Node.js笔记
  13. 虚拟网络VDC与VPC
  14. 台式电脑主板插线步骤图_电脑主板开关接线图解教程(图文)
  15. 物理学经济学java周易_八竿子打不着?——物理学和经济学的相似相通之处
  16. 一阶电路实验报告心得_一阶rc电路的暂态响应实验报告分析
  17. 转 SPOOLING技术——操作系统
  18. 关于sui mobile和light7的一些看法
  19. LTC咨询LTC培训经验分享:华为系智谋帮许浩明老师辅导上市公司欧菲光科技进行基于LTC流程的能力提升
  20. SPSS软件的数据分析与GDP和人口老龄化的预测

热门文章

  1. 网卡 eth0,eth1,eth2,lo分别代表是什么 意思
  2. html写下三角,html文字下方小三角的实现方法
  3. 电商数据分析常用的四种方法,数据分析必备
  4. 英语 1038个词根 后缀217个!
  5. oracle创建用户ORA-01045:user lacks CREATE SESSION privilege;logon denied..的问题
  6. hive 转拼音udf_Hive UDF编程:自己动手实现implode函数
  7. Ubuntu18.04中cURL 77 错误:error setting certificate verify locations
  8. ISelectionMgr Interface
  9. sci论文发表的难度高吗
  10. 微信红包在微信公账号平台如何进行配置