PID程序测试

本文介绍了如何调整电机伺服器,使其1转对应1000个脉冲,并通过MCX314记录反馈。接着,展示了PID程序在控制电机伺服器过程中的数据,包括当前高度、实际电压、输出脉冲频率等,显示了PID控制的实时响应情况。
摘要由CSDN通过智能技术生成

一、调整电机伺服器为1转=1000个脉冲,1圈反馈10000个脉冲,具体调整方法http://blog.csdn.net/xiao_ping_ping/article/details/41119151

接线图如下:


电机伺服器需设定P2-30为1



借用MCX314的Z轴记录实际反馈计数


二、重点程序文件

pid.h文件

#ifndef	__PID_H__
#define	__PID_H__

#define STABDARD 2.4	//2.4V
#define UPPER    1024 //电压采样量上限
#define PROPORTION 1000	 //比例
#define INTEGRAL   0	 //积分
#define DERIVATIVE 0	 //微分
#define PULSE 1000 //

typedef  struct _PID {

        double  SetPoint;           //  设定目标 Desired Value

        double  Proportion;         //  比例常数 Proportional Const
        double  Integral;           //  积分常数 Integral Const
        double  Derivative;         //  微分常数 Derivative Const

        double  LastError;          //  Error[-1]
        double  PrevError;          //  Error[-2]
        double  SumError;           //  Sums of Errors

		int mode;

}PID,*pPID;

void pid_reset (PID *pp);
double pid_calc( PID *pp, double NextPoint );
PID* pid_init(void);


#endif


pid.c文件

#include <string.h>
#include <stdio.h>

#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h" 

#include "pid.h"



/*===================================================================   PID计算部分===================================================================*/

double pid_calc( PID *pp, double NextPoint )
{
    double  dError,Error;

        Error = pp->SetPoint -  NextPoint;          // 偏差
        pp->SumError += Error;                      // 积分
        dError = pp->LastError - pp->PrevError;     // 当前微分
        pp->PrevError = pp->LastError;
        pp->LastError = Error;
      #if 1
	    return (pp->Proportion * Error              // 比例项
            +   pp->Integral * pp->SumError         // 积分项
            +   pp->Derivative * dError             // 微分项
        );
	  #endif
	 // return   pp->Proportion *1.0 ;
}

/*===================================================================
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值