平衡小车之家出品

直流电机速度位置双环控制简明教程

1.速度闭环控制

我们一般在速度闭环控制系统里面,使用增量式PI控制。而在我们的微处

理器里面,因为控制器是通过软件实现其控制算法的,所以必须对模拟调节器进

行离散化处理,这样它只需根据采样时刻的偏差值计算控制量。因此,我们需要

使用离散的差分方程代替连续的微分方程。

假定采样时间很短时(我们的代码中是10ms),可做如下处理:

1 用一介差分代替一介微分;

2 用累加代替积分。

根据增量式离散PID公式

Pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)+Kd[e(k)-2e(k-1)+e(k-2)]

e(k):本次偏差

e(k-1):上一次的偏差

e(k-2):上上次的偏差

Pwm代表增量输出

在我们的速度控制闭环系统里面只使用PI控制,因此对PID控制器可简化

为以下公式:

Pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)

具体通过C语言实现的代码如下:

int Incremental_PI (intEncoder,int Target)

{

float Kp=100,Ki=100; //PI参数由电机的种类和负载决定

static int Bias,Pwm,Last_bias;

Bias=Encoder-Target; //计算偏差

Pwm+=Kp*(Bias-Last_bias)+Ki*Bias; //增量式PI控制器

Last_bias=Bias; //保存上一次偏差

return Pwm; //增量输出

}

平衡小车之家出品

入口参数为编码器的速度测量值和速度控制的目标值,返回值为电机控制

PWM。

第一行代码 PI参数的定义,PI参数在不同的系统中不一样,我们的代码

中的PID参数,仅针对平衡小车之家的电机空载时调试得到。

第二行是相关内部变量的定义。

第三行是求出速度偏差,由测量值减去目标值。

第四行使用增量PI控制器求出电机PWM。

第五行保存上一次偏差,便于下次调用。

最后一行是返回。

在10ms定时中断里面调用该函数实现我们的控制目标:

Moto1=Incremental_PI(Encoder,Target_velocity);

Set_Pwm(Moto1); //===赋值给对应MCU 的PWM寄存器

具体请结合完整代码理解,我们的代码基于STM32F103C8控制器,但是把基

于C语言的PID控制器部分剥离,并放在control.c里面,故对STM32不熟悉的

同学依然可以使用记事本打开这个文件观看。

2.位置闭环控制

根据位置式离散PID公式

Pwm=Kp*e(k)+Ki*∑e(k)+Kd[e(k)-e(k-1)]

e(k):本次偏差

e(k-1):上一次的偏差

∑e(k):e(k)以及之前的偏差的累积和;其中k 1,2,,k;

Pwm代表输出

在我们的位置控制闭环系统里面只使用PI控制,因此对PID控制器可简化

为以下公式:

Pwm=Kp*e(k)+Ki*∑e(k)

具体通过C语言实现的代码如下:

int Position_PI (intEncoder,int Target)

{

float Kp=15,Ki=0.01;

平衡小车之家出品

static int Bias,Pwm,Integral_bias;

Bias=Encoder-Target; //计算偏差

速度位置双环模式c语言,直流电机速度位置双环控制简明教程.PDF相关推荐

  1. 卫星位置计算的c语言,gps卫星位置的计算

    c语言的,还好啦,一般般的 #include #include #include #include #include #definebPI #definebGM84 #definebOMEGAE843 ...

  2. 通过STM32单片机控制直流电机实现位置速度电流PID三闭环,让电机精准控制!

    今天我们将会为大家带来一个非常实用的主题,那就是如何通过STM32单片机控制直流电机实现位置速度电流PID三闭环,让电机精准控制! 首先,我们需要准备一台直流电机和一块STM32单片机开发板.接下来, ...

  3. 可编程手机蓝牙App控制直流电机速度

    我们将通过 Android 应用程序 (app) 介绍直流电机速度控制.对于该项目,该应用程序安装在智能手机设备中,该设备使用蓝牙向控制直流电机速度的电路发送命令. 此 Android 应用程序具有引 ...

  4. R语言使用str_locate函数和str_locate_all函数来定位特定字符串或者字符串模式在字符串中的位置:str_locate函数第一个位置、str_locate_all函数定位所有位置

    R语言使用str_locate函数和str_locate_all函数来定位特定字符串或者字符串模式在字符串中的位置:str_locate函数第一个位置.str_locate_all函数定位所有位置 目 ...

  5. 计算机双工模式,小熊教你电脑设置连接速度和双工模式

    应该很多用户都知道电脑网卡的有些参数是可以设置的,一般都是默认的设置,不过有时候影响网速的时候,也就是达不到网卡的高速运行级别,其中就有个连接速度和双工模式的设置,可以极大的提升网速.可能有大部分的用 ...

  6. 使用 Arduino 和电位器控制直流电机速度

    使用 Arduino 和电位器控制直流电机速度 查看原文 使用 Arduino 和电位器的直流电机速度控制 直流电机是机器人和电子项目中使用最多的电机.对于控制直流电机的速度,我们有多种方法,例如可以 ...

  7. 测试打字速度测试程序c语言,打字速度测试软件

    打字速度测试软件是一款为测试打字速度而制作的一款打字速度测试的软件.应聘时需要测试打字速度时这款软件便派上了用场.只需首先将需要考试的人员姓名和考号录入数据库,考试时您无需记录,系统会将考号.姓名.考 ...

  8. 该模型为PMSM的伺服控制系统仿真,对位置进行控制,外环为位置环,位置环输出为和给定速度

    该模型为PMSM的伺服控制系统仿真,对位置进行控制,外环为位置环,位置环输出为和给定速度,速度环的输出之后为电流环,仿真结果表明其能稳定跟踪给定位置. ID:85188677132331890Keep ...

  9. 基于arduino控制带编码器直流电机速度

    基于arduino控制带编码器直流电机速度 模块:带减速的直流电机(减速比1:120),霍尔编码器(每圈13个信号单相)arduino UNO,TB6612FNG,3.7V电源 编码器连接在直流电机输 ...

最新文章

  1. python清空字典保留变量方法_python学习day06--02字典增删差改以及字符串的一些方法...
  2. E-mail Composition and Decoding
  3. 给新手项目经理的12条建议
  4. python中直方图-Numpy,Python中的“拉伸”直方图(级别)
  5. 简明 ASP.NET Core 手册
  6. 无缓冲channel与容量为1的channel的区别
  7. 学习SQL:将SQL Server导出到Excel
  8. c语言指令 符号表,C语言指令、符号表
  9. 专业PLC数据采集软件PLC-Recorder通过ADS通讯进行倍福TwinCAT2和TwubCAT3数据采集的介绍
  10. 鼠标自动不停地按右键
  11. 【转】奇幻RPG(人物构造 与 Abstract Factory模式)
  12. 人行征信中心提醒:不要随意授权征信查询!
  13. ADS(ambient, diffuse, specular)着色计算
  14. MaxCompute 助力衣二三构建智能化运营工具
  15. HttpClient 爬取百度图片
  16. 基于javascripts的语法特性使用设计原则
  17. 【.Net码农】【淘宝API】淘宝API开发系列---阿里.聚石塔.开放平台的使用
  18. 53、Gif 控件GifView 的使用,播放gif图片
  19. access下如何配置两个vlan_VLAN实验一:VLAN基础配置及Access接口
  20. python分析政策实施前后_使用Python分析北京积分落户数据,分析完我陷入了深思...

热门文章

  1. 建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。(自己编程)
  2. Linux常用命令速查集锦(菜鸟日常生存自救手册)
  3. SilkTest那些事儿_第一章 ST的HelloWord_录制回放1
  4. SATA 硬盘/SSD温度读取
  5. [plugin:vite:import-analysis]Failed to resolve import “@/“ from ““.Does the file exist
  6. SAP GUI的界面设置和语言选择
  7. Android开发设置软键盘收索键
  8. 人生的意义是什么,活着的意义是什么?
  9. Nacos(第一篇)_Springboot2.x+Nacos配置管理中心
  10. poco新增对cocos c++项目的支持~