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

位置式PID-控制步进电机-位置环-stm32

基本原理

1、软件设计

本闭环控制例程是在步进电机编码器测速例程的基础上编写的,这里只讲解核心的部分代码,有些变量的设置,头文件的包含等并没有涉及到,完整的代码请参考本章配套的工程。 我们创建了4个文件:bsp_pid.c和bsp_pid.h文件用来存放PID控制器相关程序,bsp_stepper_ctrl.c、bsp_stepper_ctrl.h 文件用来存步进电机位置环控制程序及相关宏定义。

1. 编程要点
  1. 定时器 IO 配置

  2. 步进电机、编码器相关外设初始化

  3. 位置闭环控制实现

  4. PID参数整定

代码分析

PID代码

/********************************************************************************* @file    main.c* @author  fire* @version V1.0* @date    2019-xx-xx* @brief   PID算法实现******************************************************************************* @attention** 实验平台:野火  STM32 F103 开发板 * 论坛    :http://www.firebbs.cn* 淘宝    :http://firestm32.taobao.com********************************************************************************//* Includes ------------------------------------------------------------------*/
#include "./pid/bsp_pid.h"
#include "math.h"
#include "./stepper/bsp_stepper_ctrl.h"
#include "./protocol/protocol.h"
/* 定义全局变量 */
_pid pid;
float set_point=0.0;
int pid_status=0;/*** @brief  PID参数初始化*	@note 	无* @retval 无*/
void PID_param_init()
{/* 初始化参数 */pid.target_val=0.0;				pid.actual_val=0.0;pid.err=0.0;pid.err_last=0.0;pid.integral=0.0;pid.Kp = 1.3;pid.Ki = 0;pid.Kd = 0;#if PID_ASSISTANT_ENfloat pid_temp[3] = {pid.Kp, pid.Ki, pid.Kd};set_computer_value(SEND_P_I_D_CMD, CURVES_CH1, pid_temp, 3);// 给通道 1 发送 P I D 值#endif
}/*** @brief  设置目标值* @param  val		目标值*	@note 	无* @retval 无*/
void set_pid_actual(float temp_val)
{pid.target_val = temp_val;    // 设置当前的目标值
}/*** @brief  获取目标值* @param  无*	@note 	无* @retval 目标值*/
float get_pid_a
http://www.lryc.cn/news/511878.html

相关文章:

  • 关于Qt::BlockingQueuedConnection的死锁问题
  • Excel for Finance 07 `FV PV` 函数
  • 驱动开发系列31 - Linux Graphics 调试 mesa 的 glDrawArrays (三)
  • 【探花交友】day03—MongoDB基础
  • 【Vue教程】使用Vite快速搭建前端工程化项目 | Vue3 | Vite | Node.js
  • 手机租赁平台开发全攻略打造高效便捷的租赁服务系统
  • 自由学习记录(31)
  • 【探花交友】用户登录总结
  • LabVIEW声波谐振管自动化测量系统
  • elasticsearch中的倒排索引
  • 【Elasticsearch】DSL查询文档
  • 接口测试Day04-postman生成测试报告ihrm项目
  • 常见的排序算法过程和比较分析
  • 基于Vue+SSM+SpringCloudAlibaba书籍管理系统
  • 生成式 AI 增强了个人创造力,但减少了新内容的集体多样性
  • 【DC简介--Part1】
  • Spark写入HDFS数据SUCCESS文件生成控制
  • MySQL 服务器简介
  • 如何使用Python从SACS结构数据文件中提取节点数据信息并导出到EXCEL
  • Java网约车项目实战:实现抢单功能详解
  • SSRF服务端请求Gopher伪协议白盒测试
  • html+css+js网页设计 美食 家美食1个页面
  • 初学stm32---高级定时器输出n个pwm波
  • 旅游管理系统|Java|SSM|VUE| 前后端分离
  • imgproxy图像处理的高效与安全
  • LLM并行计算的论文
  • Linux 搭建 nginx+keepalived 高可用 | Nginx反向代理
  • Spring Boot 项目中 Maven 剔除无用 Jar 引用的最佳实践
  • useWhyDidYouUpdate详解
  • c++入门——c++输入cin和输出cout的简单使用