基于FPGA的PID算法学习———实现P比例控制算法

基于FPGA的PID算法学习---------实现P比例控制算法


前言

学习内容:参考网站:
PID算法控制

PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。也就是说,PID算法是结合这三种环节在一起的。

闭环控制:输出会影响到输入,进而逐渐逼近目标。

一、P比例算法控制

P比例控制算法:

核心部分,大部分作用来自于P,I和D主要控制减小误差。

目标值:Target

实际值:Pid_out

误差值:e_t

弥补值:u_t

相关公式:

误差值:e_t=Target - Pid_out

弥补值:u(t)=Kp * e(t)

输出值:Pid_out = Pid_out + u(t)

二、FPGA仿真验证

真实的K_p = K_p / 2^div

c 复制代码
module PID_trol(
     input                     sys_clk  ,  
     input                     rst_n,   
     //signal  
	  input			[7:0]			 target,
	  output	reg	[7:0]			 Pid_out
    );
	 
	 reg		[7:0]		e_t;//目标值和现在值的差距
	 reg		[7:0]		u_t;//补偿值
    
	 parameter K_p = 8'd10;
	 parameter div = 8'd3;
	 
	 always @(posedge sys_clk or negedge rst_n)begin
		  if(!rst_n)begin
				e_t <= 8'd0;
		  end
		  else if(Pid_out < target)begin
				e_t <= target - Pid_out;
		  end
		  else if(Pid_out >= target)begin
				e_t <= Pid_out - target;
		  end
		  else begin
				e_t <= e_t;
		  end
	 end
	 
	 always @(posedge sys_clk or negedge rst_n)begin
		  if(!rst_n)begin
				u_t <= 8'd0;
		  end
		  else begin
				u_t <= (e_t * K_p )>>div;
		  end
	 end
	 
	 always @(posedge sys_clk or negedge rst_n)begin
		  if(!rst_n)begin
				Pid_out <= 8'd0;
		  end
		  else if(Pid_out < target)begin
				Pid_out <= Pid_out + u_t;
		  end
		  else if(Pid_out >= target)begin
				Pid_out <= Pid_out - u_t;
		  end
	 end
	 
	 
	 
endmodule

Kp=10/8=1.25

Kp=10/16=0.625

Kp=10/32=0.3125

Kp=10/64=0.157

Kp=10/128=0.0789

总结

这一篇只验证了PID中的比例系数P,其他都是0。

相关推荐
丰锋ff11 分钟前
计网学习笔记第2章 物理层(灰灰题库)
笔记·学习
千宇宙航35 分钟前
闲庭信步使用SV搭建图像测试平台:第三十二课——系列结篇语
fpga开发
Chef_Chen1 小时前
从0开始学习R语言--Day39--Spearman 秩相关
开发语言·学习·r语言
千宇宙航6 小时前
闲庭信步使用SV搭建图像测试平台:第三十一课——基于神经网络的手写数字识别
图像处理·人工智能·深度学习·神经网络·计算机视觉·fpga开发
天水幼麟7 小时前
动手学深度学习-学习笔记(总)
笔记·深度学习·学习
天水幼麟9 小时前
动手学深度学习-学习笔记【二】(基础知识)
笔记·深度学习·学习
沧海一笑-dj10 小时前
【51单片机】51单片机学习笔记-课程简介
笔记·学习·51单片机·江科大·江科大学习笔记·江科大单片机·江科大51单片机
老虎062710 小时前
JavaWeb(苍穹外卖)--学习笔记04(前端:HTML,CSS,JavaScript)
前端·javascript·css·笔记·学习·html
大苏打seven11 小时前
Docker学习笔记:Docker网络
笔记·学习·docker
Green1Leaves13 小时前
pytorch学习-9.多分类问题
人工智能·pytorch·学习