资源简介
%GY-85模块包含三轴加速度计ADXL345、三轴陀螺仪ITG3205、三轴磁力计HMC5583L
%本程序为上位机的处理程序,从串口com2接收下位机的数据,进行数据还原与校准处理,绘制实时数据曲线。
%图1、2、3为加速度x、y、z的数据,图4、5、6为角速度x、y、z的数据,图7为磁力计的y、z计算出的角度(认为x轴与地面垂直),图8为方向的指示。
%本程序需要与下位机的采集配合使用,下位机可以使用单片机,控制GY-85模块数据的采集与传输,这方面的资料网上很多。
%毕业设计的的一小部分,调试无误,但写的比较乱,仅供参考,敬请谅解。
代码片段和文件信息
%GY-85模块包含三轴加速度计ADXL345、三轴陀螺仪ITG3205、三轴磁力计HMC5583L
%本程序为上位机的处理程序,从串口com2接收下位机的数据,进行数据还原与校准处理,绘制实时数据曲线。
%图1、2、3为加速度x、y、z的数据,图4、5、6为角速度x、y、z的数据,图7为磁力计的y、z计算出的角度(认为x轴与地面垂直),图8为方向的指示。
%本程序需要与下位机的采集配合使用,下位机可以使用单片机,控制GY-85模块数据的采集与传输,这方面的资料网上很多。
%毕业设计的的一小部分,调试无误,但写的比较乱,仅供参考,敬请谅解。
%%观察传感器数据经过校准 accel_x(jj)=accel_x(jj)-976.153;accel_y(jj)=accel_y(jj)+5.1209;accel_z(jj)=accel_z(jj)-72.2687;
%打开串口
s = serial(‘com2‘);
set(s‘baudrate‘9600)
try
fopen(s);
catch err
fprintf(‘%s打开失败。\n‘ s.name);
end
fprintf(‘%s成功打开。\n‘ s.name);
jj=1; %用于存数据时的计数
ii=1;
accel_x=0;accel_y=0;accel_z=0;itg_x=0;itg_y=0;itg_z=0;HMC_x=0;HMC_y=0;HMC_z=0;
subplot(331);h1=plot(11);
subplot(332);h2=plot(11);
subplot(333);h3=plot(11);
subplot(334);h4=plot(11);
subplot(335);h5=plot(11);
subplot(336);h6=plot(11);
subplot(337);h7=plot(11);
subplot(338);h8=plot(11);
subplot(339);h9=plot(11);
while(1)
% hh=s.BytesAvailable; %记录下本次接收的数据的字节数
% if hh>=jj+2
hh=s.BytesAvailable;
if hh>=20
receive = fread(ss.BytesAvailable);
if receive(20)~=255;
disp(‘接收数据混乱‘);
end
%***********************加速度***********************************%
accel_x(jj)=(receive(1)*256+receive(2));
if accel_x(jj)>=32768
accel_x(jj)=accel_x(jj)-65536;
end
accel_x(jj)=accel_x(jj)*3.9;
accel_y(jj)=(receive(3)*256+receive(4));
if accel_y(jj)>=32768
accel_y(jj)=accel_y(jj)-65536;
end
accel_y(jj)=accel_y(jj)*3.9;
accel_z(jj)=(receive(5)*256+receive(6));
if accel_z(jj)>=32768
accel_z(jj)=accel_z(jj)-65536;
end
accel_z(jj)=accel_z(jj)*3.9;
%******************校准****************************
accel_x(jj)=accel_x(jj)-976.153;
accel_y(jj)=accel_y(jj)+5.1209;
accel_z(jj)=accel_z(jj)-72.2687;
%***********************角速度***********************************%
itg_x(jj)=(receive(13)*256+receive(14));
if itg_x(jj)>=32768
itg_x(jj)=itg_x(jj)-65536;
end
itg_x(jj)=itg_x(jj)/14.375;
itg_y(jj)=(receive(15)*256+receive(16));
if itg_y(jj)>=32768
itg_y(jj)=itg_y(jj)-65536;
end
itg_y(jj)=itg_y(jj)/14.375;
- 上一篇:基于matlab矩形阵波束形成
- 下一篇:hopfield神经网络matlab实现
评论
共有 条评论