在网上一直看到两轮平衡车,是通过陀螺仪的角度变化结合pid实现的
某宝上卖的平衡车也买过一个,的确是平衡能力很强,有个很大的原因是电机后装了编码器,可以比较精确的得到和控制轮子走的距离。
但价格贵呀。。。
所以我们就用arduino+普通的香蕉电机+驱动模块+超声波做一个两轮平衡车。
首先是硬件组装,这部分很简单,就是拿个电路板把电机和轮子装好,然后在上方布局nano板,电池,最好放置的时候就让重量均匀分在轮子两侧,别压在一侧,想平衡也平衡不了啊。
在板子上装三个滑动变阻器,用来调节小车的pid参数。
简单的硬件就是这样。
代码部分,本来想自己写pid的,结果写了自己的,然后和pid库的结果对比,发现还是用pid库比较稳一点。
用到的库可以在https://github.com/br3ttb/Arduino-PID-Library中下载
#include <PID_v1.h>
#include <SR04.h> //引入超声波头文件
#define PID_P A4
#define PID_I A5
#define PID_D A6
int Motor_1A = 3; //左电机
int Motor_1B = 4;
int Motor_2A = 6; //右电机
int Motor_2B = 5;
double Len_filter = 0, Len_0 = 200; //测距滤波,机械平衡距离''
unsigned int TrigPin = 8; //HC-SR04触发信号
unsigned int EchoPin = 7; //HC-SR04回波检测
unsigned int Len_Echo = 0