基于STM32的PID电机速度控制详解

目录


引言

嵌入式系统中,电机速度控制是最常见的应用之一。本文以STM32为例,结合PID控制算法,详细介绍如何实现高效、稳定的电机速度闭环控制。内容涵盖控制理论、代码实现、调试技巧及常见问题,适合嵌入式开发初学者和工程实践者参考。


一、嵌入式控制基础

嵌入式控制系统通常采用闭环控制结构,核心流程为:

  1. 采集:通过传感器采集电机转速信号。
  2. 计算:利用控制算法计算控制量。
  3. 驱动:通过PWM等方式驱动电机。
  4. 反馈:实时反馈转速,调整控制策略。

注意:嵌入式系统资源有限,控制算法需兼顾实时性和计算效率。


二、PID控制理论简述

PID控制器由比例(P)、积分(I)、微分(D)三部分组成:

u ( k ) = K p e ( k ) + K i ∑ i = 0 k e ( i ) + K d ( e ( k ) − e ( k − 1 ) ) u(k) = K_p e(k) + K_i \sum_{i=0}^k e(i) + K_d (e(k) - e(k-1)) u(k)=Kpe(k)+Kii=0ke(i)+Kd(e(k)e(k1))

  • e ( k ) e(k) e(k):当前误差,目标转速与实际转速之差。
  • K p K_p Kp:比例系数,调节响应速度。
  • K i K_i Ki:积分系数,消除稳态误差。
  • K d K_d Kd:微分系数,抑制震荡。

三、工程实现关键点

  • 固定采样周期:保证控制算法稳定运行。
  • 信号滤波:减少传感器噪声影响。
  • 定点运算:避免浮点运算带来的性能瓶颈。
  • 输出限幅:防止积分饱和和执行器过载。

四、STM32 PID控制代码解析

PID结构体定义

typedef struct {
    int32_t target;   // 目标转速,放大10倍
    int32_t actual;   // 实际转速,放大10倍
    int32_t err;      // 当前误差
    int32_t err_last; // 上一次误差
    int32_t err_sum;  // 误差积分
    int32_t kp;       // 比例系数,放大1000倍
    int32_t ki;       // 积分系数,放大1000倍
    int32_t kd;       // 微分系数,放大1000倍
    int32_t output;   // PID输出
} PID_TypeDef;


## 第一种方式(国外):获取 OpenAI API Key

要开始使用 OpenAI 的服务,你首先需要获取一个 API Key。以下是获取 API Key 的详细步骤:

### 1. 访问 OpenAI 
在浏览器中点击 [OpenAI ](https://www.openai.com)。

### 2. 创建账户
- 点击网站右上角的“**Sign Up**”或者选择“**Login**”登录已有用户。

### 3. 进入 API 管理界面
- 登录后,导航到“**API Keys**”部分。

### 4. 生成新的 API Key
- 在 API Keys 页面,点击“**Create new key**”按钮,按照提示完成 API Key 的创建。

> **注意**:创建 API Key 后,务必将其保存在安全的地方,避免泄露。🔒

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/826d45ac8a254384a0e3107c1f3a6936.png#pic_center =500x)


## 使用 OpenAI API

现在你已经拥有了 API Key 并完成了充值,接下来是如何在你的项目中使用 GPT-4.0 API。以下是一个简单的 Python 示例,展示如何调用 API 生成文本:

```python
import openai
import os

# 设置 API Key
openai.api_key = os.getenv("OPENAI_API_KEY")

# 调用 GPT-4.0 API
response = openai.Completion.create(
    model="gpt-4.0-turbo",
    prompt="鲁迅与周树人的关系。",
    max_tokens=100
)

# 打印响应内容
print(response.choices[0].text.strip())

代码解析

  1. 导入库:首先导入必要的库。
  2. 设置 API Key:通过环境变量设置 API Key。
  3. 调用 API:发送一个包含问题的请求到 GPT-4.0 模型。
  4. 打印响应:打印出模型生成的答案。

通过这段代码,你可以轻松地与 OpenAI 的 GPT-4.0 模型进行交互,获取你所需的文本内容。✨


第二种方式(国内):获取 能用AI API Key

要开始使用 能用AI 的服务,以下是获取 API Key 的详细步骤:

1. 点击 [能用AI 工具]

在浏览器中打开 能用AI 工具

在这里插入图片描述

2. . 进入 API 管理界面

在这里插入图片描述
在这里插入图片描述

3. 生成新的 API Key

创建成功后点击“查看KEY”
在这里插入图片描述

4. 调用代码使用 能用AI API


# [调用API:具体模型大全](https://flowus.cn/codemoss/share/42cfc0d9-b571-465d-8fe2-18eb4b6bc852)
from openai import OpenAI
client = OpenAI(
    api_key="这里是能用AI的api_key",
    base_url="https://ai.nengyongai.cn/v1"
)

response = client.chat.completions.create(
    messages=[
        {'role': 'user', 'content': "鲁迅为什么打周树人?"},
    ],
    model='gpt-4',
    stream=True
)

for chunk in response:
    print(chunk.choices[0].delta.content, end="", flush=True)

总结

通过以上步骤,你已经掌握了如何获取和使用 OpenAI API Key 的基本流程。无论你是开发者还是技术爱好者,掌握这些技能都将为你的项目增添无限可能!🌟

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐