【Arduino 101】五分钟搞懂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=