【STM32 HAL】用旋钮电位器进行PID调参

pid调参很麻烦是怎么回事呢?pid相信大家都很熟悉,但是pid调参很麻烦是怎么回事呢,下面就让小编带大家一起了解吧。
pid调参很麻烦,其实就是因为每改一次就要重新烧录程序,大家可能会很惊讶pid怎么会调参很麻烦呢?但事实就是这样,小编也感到非常惊讶。
这就是关于pid调参很麻烦的事情了,大家有什么想法呢,欢迎在评论区告诉小编一起讨论哦!

所以小编做了一个简单的小工具——

1 硬件设计

思路就是采集三个电位器分得的电压值,经过换算后作为PID的参数值。当然你也可以把它用来调节其他参数
原理图
PCB
3D预览
设计很简单,转动三个旋钮电位器到合适位置,按下按键,SW被拉高,上升沿触发ADC采样,此时获得的三个电压值经过换算就可以作为PID的参数。

2 软件设计

这里给出STM32 HAL库的示例

2.1 CubeMX设置

基本配置

RCC、SYS、串口、时钟树之类的,略过不表

ADC+DMA

在这里插入图片描述
这里不开连续转换模式,每次开启转换后只采样一次就停止,和我们的要求相符

在这里插入图片描述
这里采样时间设置得稍微大一点就行

在这里插入图片描述

外部中断

在这里插入图片描述
根据电路,这里要配置成上升沿触发中断、下拉

在这里插入图片描述
中断一定要记得使能!
因为我们要在回调函数里用delay进行按键消抖,所以一定要把外部中断的优先级调得比系统时钟低,否则程序会卡在回调函数里

2.2 代码

魔术棒里勾选Use MicroLlB和Reset and Run

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

/* USER CODE BEGIN PV */
uint16_t AD_Value[3];
/* USER CODE END PV */
/* USER CODE BEGIN 4 */
int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == SW_Pin)
	{
		HAL_Delay(20);
		if(HAL_GPIO_ReadPin(SW_GPIO_Port, SW_Pin) == GPIO_PIN_SET)
		{
			//HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
			printf("Button triggered!\r\n");
      		HAL_ADC_Start_DMA(&hadc1,(uint32_t *)AD_Value,3);
		}
	}
}

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
  HAL_ADC_Stop_DMA(&hadc1);
  printf("P:%d I:%d D:%d\r\n", AD_Value[0], AD_Value[1], AD_Value[2]);
}
/* USER CODE END 4 */

进入中断回调函数后,先delay消抖,然后开启ADC DMA传输,DMA传输完成后在回调函数里关闭DMA,这一次读取就完成了。AD_Value里的数据经过换算后就可以作为PID的参数

3 效果

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PID调参是一种常用的控制算法用于调整控制系统中的比例、积分和微分参数,以实现系统的稳定性和性能优化。在Matlab中,可以使用PID工具箱来进行PID调参PID调参的目标是通过调整比例系数Kp、积分时间Ti和微分时间Td,使得系统的响应满足要求。一般来说,调参的过程可以分为以下几个步骤: 1. 确定系统模型:首先需要建立系统的数学模型,可以通过实验数据或者理论推导得到。 2. 初始参数设定:根据经验或者系统特性,设置初始的PID参数。 3. 调整比例系数Kp:从较小的值开始,逐渐增大Kp,观察系统的响应。如果响应过冲严重,则减小Kp;如果响应不足,则增大Kp。 4. 调整积分时间Ti:增大Ti可以减小稳态误差,但会增加系统的超调量。根据实际需求,逐渐增大或减小Ti,观察系统的响应。 5. 调整微分时间Td:增大Td可以提高系统的响应速度,但会增加噪声的放大。根据实际需求,逐渐增大或减小Td,观察系统的响应。 6. 优化参数:根据实际需求,反复调整参数,直到系统的响应满足要求。 在Matlab中,可以使用PID工具箱来进行PID调参。具体步骤如下: 1. 打开PID工具箱:在Matlab命令窗口中输入"pidtool",打开PID工具箱。 2. 导入系统模型:在PID工具箱中,选择"Import Model",导入系统模型。 3. 设定初始参数:在PID工具箱中,设置初始的PID参数。 4. 调整参数:通过手动调整参数或者使用自动调参功能,逐步优化PID参数。 5. 保存参数:在PID工具箱中,保存最优的PID参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值