资源简介

%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;
            
  

评论

共有 条评论