直流有刷电机多环控制(PID闭环死区和积分分离)

直流有刷电机多环控制

提高部分-第8讲 直流有刷电机多环控制实现(1)_哔哩哔哩_bilibili

PID模型

外环的输出作为内环的输入,外环是最主要控制的效果,主要控制电机的位置。改变位置可以改变速度,改变速度是受电流控制。

实验环境

【 !】功能简介:
按下KEY1使能电机,按下KEY2禁用电机,按下KEY3\KEY4可以调整目标值,以到达控制的效果.
可以通过上位机<野火多功能调试助手>----PID调试助手,查看现象或进行调试.
在PID调试助手中,打开开发板对应的串口,单击下方启动即可.
注意,部分例程中,上位机设置PID目标值时,未做幅值限制,若出现积分饱和为正常现象.
在电机未停止时重新开启电机,可能出现PID调整不准确的问题,电机会因为惯性保持运行,定时器会捕获不该捕获的脉冲.
F103性能相对有限,程序中处理的任务较多,使用上位机调试时可能出现指令不执行的情况,多发几次即可.
【 !】实验操作:
接线:
电机驱动板 5V\GND 					<----> 开发板 5V\GND
电机驱动板 PWM1\PWM2 				<----> 开发板 PE9\PE11
电机驱动板 SD 							<----> 开发板 PD15
电机驱动板 编码器输出A\B		<----> 开发板 PD12\PD13
电机驱动板 电压\电流检测 		<----> 开发板 PC1\PC0注意:必须使用跳冒连接 J33 和 J34
下载本程序,复位开发板即可。
/********************************************************************************/【*】 引脚分配
定时器TIM1输出PWM信号:
两路PWM输出到PE9\PE11上连接到驱动板上的PWM信号输入.
电机驱动板 PWM1\PWM2 <----> 开发板 PE9\PE11电机使能引脚:
电机驱动板 SD <----> 开发板 PD15编码器信号:
用于对电机进行测速
电机驱动板 编码器输出A\B		<----> 开发板 PC7\PC6电压电流采集:
电机驱动板 信号检测 电压\电流 		<----> 开发板 PD12\PD13/************************************************************************************/
【*】 时钟
A.晶振:
-外部高速晶振:25MHz
-RTC晶振:32.768KHzB.各总线运行时钟:
-系统时钟 = SYCCLK = AHB1 = 72MHz
-APB2 = 72MHz 
-APB1 = 36MHzC.浮点运算单元:不使用

定时器定时执行PID电机控制

定时器6,时钟72MHz,预分频因子1440,重装载值2500

定时器周期:

72000000 / 1440 / 2500 = 20

1 / 20 = 50ms 进入一次中断,计算一次PID

#ifndef __BASIC_TIM_H
#define	__BASIC_TIM_H#include "stm32f1xx.h"#define BASIC_TIM           		  TIM6
#define BASIC_TIM_CLK_ENABLE()   	__HAL_RCC_TIM6_CLK_ENABLE()#define BASIC_TIM_IRQn				    TIM6_DAC_IRQn
#define BASIC_TIM_IRQHandler    	TIM6_DAC_IRQHandler/* 累计 TIM_Period个后产生一个更新或者中断*/		
//当定时器从0计数到BASIC_PERIOD_COUNT-1,即为BASIC_PERIOD_COUNT次,为一个定时周期
#define BASIC_PERIOD_COUNT    (50*50)//定时器时钟源TIMxCLK = 2 * APB1_CLK
//				如果APB1_CLK = 72MHz = TIMxCLK
//				否则TIMxCLK=APB1_CLK * 2
// 设定定时器频率为=TIMxCLK/(TIM_Prescaler+1)
#define BASIC_PRESCALER_COUNT   (1440)/* 获取定时器的周期,单位ms */
//#define __HAL_TIM_GET_PRESCALER(__HANDLE__)      ((__HANDLE__)->Instance->PSC)    // Get TIM Prescaler.
//#define GET_BASIC_TIM_PERIOD(__HANDLE__)    (1.0/(HAL_RCC_GetPCLK2Freq()/(__HAL_TIM_GET_PRESCALER(__HANDLE__)+1)/(__HAL_TIM_GET_AUTORELOAD(__HANDLE__)+1))*1000)/* 以下两宏仅适用于定时器时钟源TIMxCLK=72MHz,预分频器为:1440-1 的情况 */
#de

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络实验室建设方案

一、计算机网络实验室拓扑结构 计算机网络综合实验室解决方案&#xff0c;是面向高校网络相关专业开展教学实训的综合实训基地解决方案。教学实训系统采用 B&#xff0f;S架构&#xff0c;通过公有云教学实训平台在线学习模式&#xff0c;轻松实现网络系统建设与运维技术的教学…

soular使用教程

用 soular 配置你的组织&#xff0c;工作更高效&#xff01;以下是快速上手的简单步骤&#xff1a; &#xfeff; 1. 账号管理 可以对账号信息进行多方面管理&#xff0c;包括分配不同的部门、用户组等&#xff0c;从而确保账号权限和职责的清晰分配。 &#xfeff; 1.1 用…

memory泄露分析方法(Binder,Window,View篇)

View泄露&#xff1a;从Hprof找大量重复的view&#xff0c;点击查看text文案如果相同则找产品他们确认是否合理 window泄露&#xff1a;代码或dumpsys window来监测是否有大量同名window&#xff0c;不能用windowtoken来辨别是否重复window&#xff0c;每个window token都不一样…

FPGA的DMA应用——pcileech

硬件通过pcie总线&#xff0c;访存本机的内存&#xff0c;并进行修改&#xff0c;可以进行很多操作。 学习视频&#xff1a;乱讲DMA及TLP 1-pcileech项目简介和自定义模块介绍_哔哩哔哩_bilibili vivado2024.1的下载文章链接和地址&#xff1a;AMD-Xilinx Vivado™ 2024.1 现…

原点安全再次入选信通院 2024 大数据“星河”案例

近日&#xff0c;中国信息通信研究院和中国通信标准化协会大数据技术标准推进委员会&#xff08;CCSA TC601&#xff09;共同组织开展的 2024 大数据“星河&#xff08;Galaxy&#xff09;”案例征集活动结果正式公布。由工银瑞信基金管理有限公司、北京原点数安科技有限公司联…

操作系统知识点总结

第一章 1.1_1 操作系统的概念、功能和目标 操作系统&#xff08;Operating System, OS&#xff09;&#xff1a;是指控制和管理整个计算机系统的 硬件和软件 资源&#xff0c;并合理地组织调度计算机的工作和资源的分配。 作为用户和计算机硬件之间的接口 提供的功能 命令接口…

Log4j2的Policies详解、SizeBasedTriggeringPolicy、TimeBasedTriggeringPolicy

文章目录 一、Policies二、SizeBasedTriggeringPolicy:基于文件大小的滚动策略2.1、文件达到指定大小就归档 三、TimeBasedTriggeringPolicy&#xff1a;基于时间间隔的滚动策略3.1、验证秒钟归档场景3.2、验证分钟场景3.3、验证小时场景 四、多策略组合使用五、扩展知识5.1、S…

【机器学习与数据挖掘实战】案例06:基于Apriori算法的餐饮企业菜品关联分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数据集中发现模式、关联…

DataCap MongoDB Driver: 全面解析MongoDB在DataCap中的使用指南

在大数据时代&#xff0c;MongoDB作为一款广受欢迎的NoSQL数据库&#xff0c;其灵活的文档存储模型和强大的查询能力使其成为许多现代应用的首选数据存储方案。今天&#xff0c;我们将深入探讨DataCap MongoDB Driver&#xff0c;这是一个强大的工具&#xff0c;它让在DataCap环…

FreeRTOS的调度器挂起和恢复

1. 调度器挂起 vTaskSuspendAll void vTaskSuspendAll( void ) {/* A critical section is not required as the variable is of typeBaseType_t. Please read Richard Barrys reply in the following link to apost in the FreeRTOS support forum before reporting this as…

EleutherAI/pythia-70m

EleutherAI/pythia-70m” 是由 EleutherAI 开发的一个小型开源语言模型&#xff0c;它是 Pythia Scaling Suite 系列中参数量最小的模型&#xff0c;拥有大约 7000 万个参数。这个模型主要旨在促进对语言模型可解释性的研究&#xff1b; Pythia Scaling Suite是为促进可解释性…

蓝牙链路控制(Link Control)命令概览

目录 一、设备发现与连接管理(14条) 1.1. 设备发现 1.2. 连接建立与取消 1.3. 连接接受与拒绝 1.4. 连接断开与维护 二、设备信息查询(9条) 2.1. 基本信息查询 2.2. 安全相关信息交互 三、安全认证与加密(12条) 3.1. 认证请求与回复 3.2. 加密设置 四、同步与…

在国产电脑上运行PDFSAM软件使用pdf分割合并交替混合处理pdf文档

软件下载地址: https://sourceforge.net/projects/pdfsam/files/ 需要注意事项&#xff0c;系统需要java环境&#xff0c;确认系统有java环境&#xff0c;根据软件版本需求安装对应的java运行环境。 下载pdfsam-4.3.4-linux.tar.gz安装包&#xff0c;解压&#xff0c;将runt…

【HENU】河南大学计院2024 计算机网络 期末复习知识点

和光同尘_我的个人主页 一直游到海水变蓝。 计网复习 第一章互联网组成类别交换方式分组交换的要点&#xff1a;分组交换的优点&#xff1a; 网络性能指标体系结构网络协议五层协议 第二章&#xff1a;物理层物理层的主要任务&#xff08;四大特性&#xff09;通信的三种方式…

python网络框架——Django、Tornado、Flask和Twisted

Django、Tornado和flask是全栈网络框架&#xff0c;而Twisted更专注于网络底层的高性能封装&#xff0c;不提供HTML模版引擎等界面功能&#xff0c;因此不能称为全栈框架。 1、Django 发布于2003年&#xff0c;是当前python世界里最负盛名且最成熟的网络框架。相较于其他web框…

C++——运算符重载

一、运算符重载 ①含义 函数重载或函数多态&#xff1a;同名函数完成相同的基本操作 C将重载的概念扩展到运算符上&#xff0c;于是出现了运算符重载 C中有很多运算符已经被重载 *运算符&#xff0c;运用于地址&#xff0c;可以得到存储在这个地址的值&#xff1b;运用于两个…

IPv6的地址类型

IPv6地址总长度为128bit&#xff0c;被分为8组&#xff0c;每组为4个十六进制数&#xff0c;用冒号分隔&#xff1a; 例如&#xff1a;FC00:0123:4567:8901:ABFD:0987:0000:0023 可缩写为&#xff1a;FC00:0123:4567:8901:ABFD:0987::23 IPv6中取消了v4中的广播&#xff0c;新…

矢量网络分析仪(VNA)基础解析与应用指南

矢量网络分析仪&#xff08;VNA&#xff09;是一种极其精密的仪器&#xff0c;能够对电气网络的阻抗进行表征&#xff0c;测量结果可提供幅度和相位细节&#xff0c;从而深入了解其行为。被测设备&#xff08;DUT&#xff09;通常用于射频&#xff08;RF&#xff09;应用&#…

LLM预训练recipe — 摘要版

文章核心主题&#xff1a; 本文深入探讨了从零开始进行大型语言模型&#xff08;LLM&#xff09;预训练&#xff08;pretrain&#xff09;的各个环节&#xff0c;侧重方法论和实践细节&#xff0c;旨在普及预训练过程中的关键步骤、常见问题及避坑技巧&#xff0c;而非技术原理…

工厂+策略模式之最佳实践(疾病报卡维护模块API设计)

目录 &#x1f4bb;业务场景 &#x1f527;应用技术 ⚙概要流程 ❗开发注意 服务类上标注了 自定义注解 却无法直接利用getDeclaredAnnotation 获取 *Spring代理机制 代理机制的工作原理 代理的工作机制 代理的使用场景 已获取EmrXXXServiceImpl 的Class&#xff0c;如…