用 Arduino IDE 写PID算法

本文详细介绍了PID算法在Arduino程序中的应用,涉及参数设置(Kp,Ki,Kd),过程值处理,误差计算,以及实时输出控制。展示了如何在硬件中实现PID控制器以精确调整过程值到设定值。
摘要由CSDN通过智能技术生成

// PID 算法参数
float Kp = 0.5;  // 比例系数
float Ki = 0.1;  // 积分系数
float Kd = 0.05; // 微分系数

float setPoint = 585.0;  // 设定值
float processValue;     // 过程值

float error;            // 误差
float integral;         // 积分项
float derivative;       // 微分项
float prevError;        //当前误差与上一误差的差值
float shuchuzhi;        // 控制输出值
void calculatePID() {

    error = setPoint - processValue; 
    integral += error; 
    derivative = error - prevError; 
    float output = Kp * error + Ki * integral + Kd * derivative;  //计算公式
    prevError = error;
    shuchuzhi = shuchuzhi + output;
     shuchuzhi = constrain(shuchuzhi, 0, 255);
}

void setup(void){
 Serial.begin(9600);
  pinMode(3, OUTPUT);
  pinMode(A0, INPUT);
}

void loop() {
       calculatePID();
        analogWrite(3, shuchuzhi);
        processValue = analogRead(A0);
         
        Serial.print(analogRead(A0));
        Serial.print("  ");
        Serial.print(setPoint);
        Serial.print("  ");
        Serial.println(shuchuzhi);
}
 

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Arduino上的PID算法是一种经典的控制算法,被广泛应用于各种场合,如智能小车、扫地机器人和工业机械臂等。PID算法的计算公式可以使用增量法来表示,其中包括比例项(KP)、积分项(KI)和微分项(KD)。具体的计算公式为:OUT = KP*\[E(t)-E(t-1)\] + KI*E(t) + KD*\[E(t)-2*E(t-1)+E(t-2)\],其中E(t)表示当前的误差,E(t-1)表示上一次的误差,E(t-2)表示上上次的误差。在Arduino上实现PID算法的代码可以使用PID库来简化操作,该库可以通过Library Manager进行安装。使用PID库可以更方便地进行PID控制,具体的使用方法可以参考库的文档和示例。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [小白学习日记-----arduino如何使用PID控制算法](https://blog.csdn.net/qq_43193591/article/details/104287293)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Arduino智能小车(三):PID算法简介](https://blog.csdn.net/weixin_44845947/article/details/113084477)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值