这个其实是为了直观的观察PID的调节过程,因为本人对于数学并不擅长,又说PID是比较依赖经验,看着老外搭建了一个实验的设备,我也画了葫芦做了一个。以下是需要的设备介绍。
需要的设备
硬件介绍
- 树莓派3b
- MPU6050
- PCA9685
- 2个有浆无刷电机(浆要两个不一样的,转的时候要抵消)
编程平台
树莓派运行官方Linux系统,编辑器用交叉编译工具(arm-linux-g++)。
MPU6050之初始化
这里就不介绍6050的各种功能了。树莓派与MPU6050通过IIC接口连接,供电也是用树莓派的3.3v接口。其实早在2个月前已经完成了功能,但是由于MPU6050的接线问题,导致初始化通不过,而且写入的数据和读出的数据对不上,一度以为是IIC库,或者是模块坏了,有时候灵光,有时候不灵光。MPU6050接线已经要稳可靠。期间还烧了一块MPU9250。
void MPU6050lib::initMPU6050()
{
uint8_t c = 0;
delay(1000);
for(;;)
{
printf("INIT MPU6050\n");
WriteByte(MPU6050_ADDRESS, PWR_MGMT_1, 0x80); //复位
delay(100);
c = ReadByte(MPU6050_ADDRESS, PWR_MGMT_1);
if(c != 0x40)
continue;
delay(100);
WriteByte(MPU6050_ADDRESS, PWR_MGMT_1, 0x00);//唤醒
delay(100);
WriteByte(MPU6050_ADDRESS, PWR_MGMT_1, 0x0