【Arduino 101】五分钟搞懂PID控制算法

Arduino智能小车(三):PID算法简介 本篇文章是对PID算法的原理进行了一些探讨,并对其在Arduino智能车中的使用做了简单的介绍。如有纰漏,烦请指出???? 前两篇文章地址: Arduino智能小车(一):编码马达 Arduino智能小车(二):编码马达的使用 PID是控制里面最为经典的一个算法,从智能小车,到扫地机器人,再到工业机械臂,或多或少都在使用这个控制算法。简单而又可靠的特性使其适用于各种场合,而广泛的应用又使之衍生出了各种各样的改进算法。总而言之,PID可谓是控制领域最常用的一个组成部分之一。 PID控制算法简介 PID,这个 阅读详情



演示视频

【Arduino 101】五分钟搞懂PID控制算法


物料清单

Arduino Uno x 1
超声波模块(HC-SR04)x 1
舵机(Tower Pro MG996R)x 1
舵机供电: 5V 稳压管(LM7805) x 1 , 滤波电容 (0.33uF, 0.1uF) x 2, 9V 电池 x 1
滑轨:泡沫板
支架:乐高
滚动物体:胶带(Up试过网球,但是测距模块的表现不理想)


尺寸 & 设计缺陷

在这里插入图片描述
设计缺陷:
1: 测距模块读数不稳定,存在+/-5mm 的浮动。
2: 整体制作比较粗糙,轨道摩擦不均匀。对稳态误差的出现原因仅仅是个猜测,所以视频中用了“可能”两个字。


接线

在这里插入图片描述


Arduino IDE 代码

/* PID control Demo, PID 控制算法演示
 * Last Edited: March.12th.2021 by Mun Kim
 * Contact: Robotix.Kim@gmail.com
 */

#include <Servo.h>

Servo servo;   
int angle = 0;                           //舵机角度

#define echo 2                           //HC-SR04的Echo接 Arduino D2
#define trig 3                           //HC-SR04的Trig接 Arduino D3
float time, duration, distance;

//PID constants****************************************************************
float setPoint=19;                       //滑轨中心与测距模块的距离
float error;                             //当前误差
float previous_error;                    //上一时刻误差,用来计算D
float kp=0;                              
从零到一:在Arduino上动手实现PID温控系统 本文详细介绍了如何在Arduino上实现PID温控系统,从硬件搭建到算法调试的全过程。通过比例系数Kp、积分系数Ki和微分系数Kd的实战解析,帮助读者掌握PID控制算法的核心原理与应用技巧,并提供完整的Arduino代码示例和常见问题解决方案。 阅读详情

相关推荐

【ESP32 Arduino平衡小车制作】(四) 直流电机PID控制

一、PID算法1-1 积分分离pid算法1-2 带有死区的pid算法1-3 微分先行pid算法二、程序编写三、硬件设计 一、PID算法 PID 是 结合Proportional(比例)、 Integral(积分)、Differential(微分)三种环节于一体的闭环控制算法,它是目前为止在连续控制系统中计数最为成熟的一种控制算法PID 控制的实质是对目标值和实际值误差进行比例、积分、微分运算后的结果用来作用在输出上。 连续控制的理想 PID 控制规律 u(t)u(t)u(t) = K p&.

weixin_45829708的博客 7426

Arduino mega2560 pid闭环控制控制电机

闭环控制是通过编码器获取电机转速,再利用PI控制电机转速维持在设定值的一种控制方法。速度闭环不使用D微分项。本资源是一个可用的Arduino mega2560 pid控制电机,如果想实现四轮控制,仅需要把程序复制修改三次即可。 内容结构: 1.引用<FlexiTimer2.h> 定时中断库; 2.定义引脚、变量; 3.setup函数、loop函数; 4.中断控制函数; 5.外部中断读取编码器数据,具有二倍频功能; 6.PI控制器; 7.实际控制函数,函数功能:赋值给PWM寄存器,入口参数:PWM;

Arduino PID 控制教程

在控制系统中,控制器在出现错误和干扰时将特定系统的输出校正为所需的输入。最流行的控制器类型是PID,它是P运动、异构和D的缩写。在这个阿杜伊诺PID控制教程中,我将告诉你如何在你的项目中使用这样的控制器。 代码 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 //PID constants double kp = 2 double ki = 5 double k

My_Communication的博客 1万+

pid算法-arduino

很全面地介绍了pid算法,适用于正在苦苦寻找如何让小车走直线的朋友们

Arduino小车PID自整定调速——菜鸟也来写PID自整定库

PID自整定

ba_wang_mao的专栏 5479

Arduino小车实践】PID算法简介

Arduino小车实践】PID算法简介

weixin_62403234的博客 1412

PID控制算法:8、Arduino PID 库讲解

Arduino PID 库讲解。

m0_49968063的博客 3393

关于arduinoPID的实际操作

是可以用arduino控制带编码器的电机实现速度闭环,可行的,可行的,可行的。在实际应用中我用一块2560控制了4个电机匀速转动,实现麦轮或者全向轮的走直线

deamer_的博客 3137

小车 | PID算法 闭环控制 带有 霍尔编码器 的电机

最近在学习小车,做一下学习笔记,日后会附上代码 学习视频链接:【Arduino 101】霍尔编码器与闭环控制(白话)_哔哩哔哩_bilibili【Arduino 101五分钟搞懂PID控制算法_哔哩哔哩_bilibili

yatingliu的博客 3521

【花雕学编程】Arduino PID

语句来初始化一个 PID 对象,其中input是实际输入值的变量引用,output是控制输出值的变量引用,setpoint是设定值变量引用,Kp、Ki、Kd是 PID 系数,DIRECT表示控制方向(正向控制)。最后,适当引入微分系数,改善系统的动态性能。当偏差变化很快时,微分部分会产生一个较大的控制信号,使系统能够快速响应,抑制系统的超调,改善系统的动态性能。1、机器人运动控制:在机器人技术中,基于速度闭环的PID控制可以用于电机的速度调节,实现精确的运动控制,提高机器人的灵活性和稳定性。

雕爷学编程 1036

手把手教你看懂并理解Arduino PID控制库——引子

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34406796的博客 3828

小白学习日记-----arduino如何使用PID控制算法

ardiuino如何使用PID控制算法 引言 PID:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。顾名思义,PID控制算法是结合比例、积分和微分三种环节于一体的控制算法PID控制的实质就是根据输入的偏差值,按照比例、积分、微分的函数关系进行运算,运算结果用以控制输出。 ...

qq_43193591的博客 1万+

Arduino PID库 (6):初始化

直观来看,对于被控量会出现图中,绿色线的一个 bump,这个 bump 是由于由关转开的一瞬间,输出突然放大,那么对于灵敏度高的系统,则会出现,滞后大的系统可能不会如此明显,但不管怎么说,为了杜绝一切不利因素,我们都应该想办法消除这个 bump。由于这个 bump 的根因是由于输出的突变而造成的,所以需要想办法控制这个输出的突变。,这是一个连续量,不存在突变的可能(除非是采样时间特别长,在改变输出前,被控量飞上天了),所以只需要从这两项上想办法,控制住这两项的突变,即可控制住输出的突变。

acktomas的博客 1371

Arduino 让小车走直线的秘密 增量式PID 直流减速编码电机

直流减速电机增量式PID 通俗易懂版 对于我一个双非学校没上过自控的电子专业本科生而言,这个东西真的是太难了,之前研究了一个A4950驱动,价格便宜,驱动能力高,安全性高,便捷性高,一句话就是比L298N好用,我写完之后发了出去,我的一位老师看完之后,说没看出来好在哪,应该弄一个PID控制的,好吧我弄.为啥是通俗易懂版,这个,因为我理解的也不是很深入,要是有错误希望大佬指点海涵,相信对大部分同学来说应该是够用的,这篇文章写一个电机 1.直流电机增量式PID闭环控制原理简述 PID我们一般分为两种,一种叫位置

一个学长的博客 3万+

PID调节参数的作用

PID调节参数的作用 比例控制能迅速反应误差,从而减小稳态误差。但是,比例控制不能消除稳态误差。比例放大系数的加大,会引起系统的不稳定。比例控制是一种最简单的控制方式。其控制的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。 积分控制的作用是,只要系统有误差存在,积分控制器就不断地积累,输出控制量,以消除误差。因而,只要有足够的时间,

DylanDong的专栏 8673

基于ArduinoPID循迹控制

利用PID实现循迹的优点就是稳,很稳。我使用的是一款八路的灰度传感器,为了达到能检测误差的效果,定义灰度传感器触发时对应的值为1,反之为0。接着再给每个灰度传感器赋权重,越远离中心线权重越大,具体的权重值大家自己大致算一下给个大概的值就行,后面还可以调整的。

huangziye007的博客 3240

PID控制算法arduino应用(电机调速和位置控制)

介绍及公式 pid算法用于简单的控制非常方便,因此我们常常把pid控制做成固定的库,方便我们调用。 库文件 说明:这里的库程序,我是基于esp32开发板写的,其他开发板类似,主要区别就是获取当前时间戳不一样。其余的算法是一样的。如果你想移植到其他平台,只需要修改获取时间戳的函数即可。时间戳单位是微秒。 位置式 pid.h #define PID_H #include "time_utils.h" #include "foc_utils.h" /** * PID controlle.

qqliuzhitong的博客 1万+

Arduino PID 库函数指南

虽然PID的原理并不难,但是实现起来未免会给Arduino的许多创客玩家带来些许困难。本文将不对PID的具体实现细节ArduinoPID库函数使用方法分享给大家,以供参考。

冲啊梅勒斯 4万+
上一篇: 【Arduino 101】霍尔编码器(增量,正交)与起停式闭环控制
下一篇: 【Arduino 101】HC-SR04 超声波测距模块
机器人工坊
博客等级 码龄6年 716粉丝 9原创
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值