OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3418|回复: 0

每次板子烧完程序后,接通电源,电机不转,然后随便修改下PID参数,电机就转了,这是怎么回事呢,我把我的PID控制写在了中断里

[复制链接]

5

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-5-19
在线时间
14 小时
发表于 2016-7-9 22:37:09 | 显示全部楼层 |阅读模式
我是利用PID控制转速的。
#include "PidControl.h"




#define                 ESC_MAX                         5000              //.0
#define                 GAP                                                0               //.0






int Velocity_Control_201(int current_velocity_201,int target_velocity_201)   //
{
    const int v_p = 20;   //40
    const float v_i = 0.1;        
    const int v_d = 0;             //

    static int error_v[2] = {0,0};   //.0
    static int output = 0;            //.0
                static int error_i;
    if(abs(current_velocity_201) < GAP)                         //protection                    
    {
        current_velocity_201 = 0;
    }

    error_v[0] = error_v[1];                                    //v[0]:last error;   v[1]:now error;
    error_v[1] = target_velocity_201 - current_velocity_201;    //differential error
    error_i += error_v[0];
    output = error_v[1] * v_p            
             + (error_v[1] - error_v[0]) * v_d
                         + error_i * v_i;

    if(output > ESC_MAX)                                        //Set upper limit
    {
        output = ESC_MAX;
    }

    if(output < -ESC_MAX)                                        //Set lower limit
    {
        output = -ESC_MAX;
    }   
    return output;//cyq:for6015 ·′&#207;ò


};


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 21:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表