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

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 阅读详情
AI摘要

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

相关推荐

【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的博客 7442

Arduino PID 库函数指南

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

冲啊梅勒斯 4万+

Arduino mega2560 pid闭环控制控制电机

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

pid算法-arduino

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

SAP系统中PP模块全配置文档

配置路径IMG>SAP NetWeaver>常规设置>维护日历>工厂日历事务代码SCAL要求传输工厂代码描述日历代码日历描述起始日期星期一星期二星期三星期四星期五星期六星期日有效开始日期有效结束日期1000南微医学工厂MT南微医学工厂日历√√√√√√√201820502.4定义工厂配置路径IMG>生产>物料清单>常规数据>定义BOM状态事务代码OS23要求传输配置路径IMG>生产>主数据>资源>常规数据>标准值>定义参数。

yanzibing99的博客 1892

PINN——加入物理约束的神经网络

【摘要】 基于物理信息的神经网络(Physics-informed Neural Network, 简称PINN),是一类用于解决有监督学习任务的神经网络,它不仅能够像传统神经网络一样学习到训练数据样本的分布规律,而且能够学习到数学方程描述的物理定律。与纯数据驱动的神经网络学习相比,PINN在训练过程中施加了物理信息约束,因而能用更少的数据样本学习到更具泛化能力的模型。本文主要解析这种神经网络以...

qq_39444290的博客 4584

KiCad 7.0 + 嘉立创打样:从原理图到实物,打造你的双LLCC68 LoRa串口透传板

本文详细介绍了使用KiCad 7.0设计双LLCC68 LoRa串口透传板的完整流程,从原理图设计到嘉立创打样。重点解析了AVR+LLCC68组合的优势、双模块布局的电磁兼容设计、SPI接口配置及射频走线技巧,并提供了实测数据和常见问题解决方案,帮助开发者高效实现物联网设备的低功耗远距离通信。

weixin_28693447的博客 260

WPS中VBA支持库安装全攻略:从报错到一键解决

VBA作为Office生态中广泛使用的宏语言,是办公自动化的重要基础。WPS表格虽然兼容Excel文件格式,但出于技术路线与授权原因,默认并未集成完整的VBA引擎与开发环境,导致用户打开含宏文件时频繁遇到“找不到工程或库”“未找到VBA支持库”等报错。理解VBA支持库包含引擎与IDE两层结构,并掌握系统位数、版本匹配、安全软件拦截等前置条件,是成功部署的关键。通过可靠的安装源与规范流程完成配置后,即可实现在WPS中运行Excel宏、批量处理数据、自定义函数等自动化场景,显著提升报表处理效率。本文围绕WPS中

weixin_31102231的博客 306

Yakit实战:利用验证码识别插件突破Webfuzzer自动化测试瓶颈

本文详细介绍了如何利用Yakit的Webfuzzer模块结合验证码识别插件,突破自动化安全测试中的验证码瓶颈。通过实战演示,讲解了如何部署本地OCR服务、编写热加载脚本,实现从获取验证码到自动识别并替换的全流程自动化,从而让Webfuzzer能够高效、无人值守地进行大规模密码喷洒等测试。

weixin_29323493的博客 283

SGP4/SDP4详解

**SGP4** (Simplified General Perturbations Version 4) 和 **SDP4** (Simplified Deep-space Perturbations Version 4) 是一组**解析轨道预报模型**,用于预测地球轨道卫星的位置和速度。它们是北美防空司令部(NORAD)维护的**TLE**数据格式的标准配套算法。 简单来说:**TLE是卫星轨道的"身份证",而SGP4/SDP4是解读这张身份证的"说明书"**。

ScilogyHunter的博客 589

杰理AC695N系列芯片红外遥控按键使用教程

本文介绍了杰理AC695N芯片红外按键功能的配置和使用方法。主要内容包括:硬件连接说明(红外接收头接线至GPIO口)、软件配置(使能红外功能并设置接收引脚)、按键映射表修改(原始键值到逻辑按键的转换)以及按键扫描参数调整(消抖、长按时间等)。重点展示了三级映射机制,指导如何根据实际遥控器键值修改映射关系,实现不同模式下(蓝牙/音乐/FM)的自定义按键功能。最后提供了调试方法,可通过串口打印查看遥控器原始键值。

qq_42014563的博客 1463

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: 【Arduino 101】霍尔编码器(增量,正交)与起停式闭环控制
下一篇: 【Arduino 101】HC-SR04 超声波测距模块
机器人工坊
博客等级 码龄6年 716粉丝 9原创
评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值