模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762
57---6轴姿态与气压温度实验:
硬件需求:PC机,PCM模块一个,microUSB线,6轴传感器MPU6050,bmp180传 感
器模块,导线若干;
软件需求:PCM编译软件,电脑端串口调试助手;
供电方式:USB线接PC机供电;
连接电路:如图84
图84 6轴姿态与气压温度实验电路
此实验输出3个姿态角:ROLL,PITCH,YAW, 和压力,温度,海拔高度,这6个数
据。气压传感器可以选择3种:ms5611,bmp180,bmp280,通过baroinit指令的不同参数选
择不同的传感器:当参数为0时选择ms5611,为1时选择bmp180,为2时选择bmp280.传感
器的数据更新周期:ms5611和bmp180为28ms, bmp280为20ms;
此次实验我们使用bmp180传感器。
实验程序如下:
1 intpro imu6int
2 fusion f0 f20 //姿态融合,输入ax=f0,ay=f1,az=f2,gx=f3,gy=f4,gz=f5,,输出
//ROLL=f20,PITCH=f21,YAW=f22角度,输出气压=f9,温度=f10,海拔=f11
3 endint
4 subpro outdata //数据输出子程序
5 prints "roll:%f pitch:%f yaw:%f\r\n" f20 f21 f22 //输出roll pitch yaw角度
6 prints "press=%f temp=%f high=%f\r\n" f9 f10 f11//输出
7 endsub
8 main
9 iic 0 400000 //初始化IIC0接口,速度为400000HZ
10 intinit s0 imu6int //开启中断
11 imuinit 0 f0 s0 //启动6轴测量,ax,ay,az,gx,gy,gz分别保存到f0,f1,f2,f3,f4,f5;
//更新周期0.004S,输出后中断
/*初始化气压温度传感器,1表示传感器是bmp180, 注意压力温度的输出值是跟
在9轴数据的后面的比如:ax=f0,ay=f1,az=f2,gx=f3,gy=f4,gz=f5,mx=f6,
my=f7,mz=f8,压力=f9,温度=f10,海拔=f11即使使用的是6轴传感器,
f6,f7,f8也要预留下来
*/
12 baroinit 1 //bmp180
//baroinit 0 //ms5611
//baroinit 2 //bmp280
13 while 1 //无限循环
14 delay 1000 //延时1000ms
15 call outdata //调用子程序,输出融合后的姿态角:ROLL,PITCH,YAW
16 endwhile
17 endmain
当使用baroinit指令初始化气压传感器后,压力,温度,高度这3个数据的输出被自
动保存在在9轴传感器输出数据的后面的,如果是用6轴传感器,mx,my,mz这3个数据也
要保留下来。比如本实验使用6轴传感器:ax=f0,ay=f1,az=f2,gx=f3,gy=f4,gz=f5,f6保
留,f7保留,f8保留,f9=气压,f10=温度,f11=高度。
也可以用baroget指令获取气压温度海拔值到指定的寄存器,不过因为imuinit指令已
经把这3个值保存到指定寄存器了,所以可以不使用baroget这个指令了。
用PCM编译软件编译以上程序,并下载到模块,电脑端使用串口调试助手接收数
据,下图85显示了姿态角和气压,温度,海拔6个参数的值。
图85 6轴姿态角及气压温度海拔输出显示