通过FPGA开发板上的NIOS Ⅱ搭建电机控制的硬件平台,包括电机正反转、编码器的读取,再通过软件部分实现PID算法对电机速度进行控制,使其能够渐近设定的编码器目标值。
一、PID算法
PID算法(Proportional-Integral-Derivative Algorithm)是一种经典的控制算法,用于实现闭环控制系统中的自动控制,旨在使被控制系统的输出尽可能接近期望值。

PID算法由三个部分组成:比例(Proportional)、积分(Integral)和微分(Derivative)。这三个部分分别对应了误差的当前值、累积值和变化率。PID算法根据这些部分的加权和来计算控制输出,以实现对系统的稳定、快速、精确的控制。
- 比例(P)部分:比例控制是根据当前的误差值来调整控制输出。如果误差较大,比例部分的输出也会较大,从而更快地减小误差。这有助于系统快速接近期望值,但可能导致震荡和过冲。
- 积分(I)部分:积分控制用于消除系统存在的稳态误差。它考虑误差的累积值,如果误差持续存在,积分部分的输出会逐渐增加,从而逐步减小稳态误差。然而,过大的积分作用可能导致系统响应过于缓慢或产生震荡。
- 微分(D)部分:微分控制用于预测误差的未来变化趋势。通过考虑误差的变化率,微分部分可以抑制系统的过冲和震荡。但过大的微分作用可能引起噪音的放大。
PID算法的参数调节是一个复杂的过程,需要根据被控制系统的特性和性能要求进行调试。不同的应用和系统可能需要不同的PID参数配置,以达到最佳的控制效果。
PID算法详细内容和调试方法可参考:
PID参数解析+调参经验笔记(经验法)_pid调参_Xuan-ZY的博客-优快云博客
二、硬件设计
硬件部分主要由两部分组成,卡尔曼滤波和NIOS Ⅱ系统

2.1 卡尔曼滤波
卡尔曼滤波主要是为了对霍尔传感器输出的方波进行滤波操作
reg [15:0] filterClockDivider; // 过滤器时钟分频器
reg filterClock; // 过滤器时钟信号
// 时钟设置
parameter ClockFrequency = 50000000; // 时钟频率50MHz
parameter FilterFrequency = 15000; // 滤波器频率15KHz
/ 过滤器时钟
always @(posedge Clock or negedge Reset)
begin
if (!Reset)
begin
filterClock <= 0; // 复位时,过滤器时钟为低电平
filterClockDivider <= 0; // 复位时,分频器清零
end
else
begin
if (filterClockDivider < (ClockFrequency / FilterFrequency / 8))
filterClockDivider <= filterClockDivider + 1; // 分频计数增加
else
begin
filterClockDivider <= 0; // 分频计数清零
filterClock <= ~filterClock; // 过滤器时钟翻转
end
end
end
always @(posedge filterClock or negedge Reset)
begin
if (!Reset)
begin
Output_A <= 0; // 复位时,输

最低0.47元/天 解锁文章
4298

被折叠的 条评论
为什么被折叠?



