MPU6050单轴双浆姿态平衡PID调戏之MPU6050初始化篇

本文介绍了使用树莓派和MPU6050进行单轴双浆姿态平衡PID调试的过程,强调了MPU6050初始化时的常见问题和解决方法,包括I2C库的选择与接线稳定性。同时,提供了MPU6050的读写函数实现,并展示了初始化成功后的ROLL角数据输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个其实是为了直观的观察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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值