智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1553|回复: 0
打印 上一主题 下一主题

直立mpu6050数据处理,上位机显示

[复制链接]

4

主题

11

帖子

0

精华

高级会员

Rank: 4

积分
561
威望
344
贡献
101
兑换币
223
注册时间
2018-11-1
在线时间
58 小时
跳转到指定楼层
1#
发表于 2018-12-27 20:43:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10贡献
各位车友,我想问一下,我对6050原始数据处理后,发送到上位机上,为什么显示不出来,是我的数据问题吗,在此附上图片,望老司机解答
float accel_angle_y;   //加速度计y轴角度
float gryo_acc_x_zero=0;//陀螺仪x轴加速度零票
float gryo_acc_x;     //陀螺仪x轴加速度
float gryo_ang_x_intergal;                //陀螺仪x轴角度积分
float angle;
float tg=4;
float car_angle_set;
float angle_control_p;
float angle_control_d;
float car_angle_speed_set;
float angle_control_out_max;
float angle_control_out_min;

void AngleCalculate(void) //角度融合
{
       
        int16 temp,temps;
        temp = mpu_acc_y/sqrt((mpu_acc_x * mpu_acc_x + mpu_acc_z * mpu_acc_z)); //角度//调用加速度计原始数据
        accel_angle_y = atan(temp)*180/3.14;          //加速度计角度
        gryo_acc_x=(gryo_acc_x+gryo_acc_x_zero)/16.4; //陀螺仪角速度
        angle=gryo_ang_x_intergal;
        temps=(accel_angle_y-angle)/tg;
        gryo_ang_x_intergal+=(gryo_acc_x+temps)*0.05;
       
}

int main(void)
{   
    get_clk();

    simiic_init();
          mpu6050_init_hardware();
          uart_init(USART_0, 115200, UART0_TX_A25, UART0_RX_A24);
    uart_rx_irq(USART_0,1);       // 打开串口0接收中断
    //中断函数在isr.c文件内 函数名为FLEXCOMM0_DriverIRQHandler
    EnableInterrupts;


    while(1)
    {
      get_accdata_hardware();//获取加速度计值
                        get_gyro_hardware();//获取陀螺仪值
                        AngleCalculate();//角度计算
                        data_conversion(gryo_ang_x_intergal, mpu_acc_y, mpu_acc_z, accel_angle_y, &virtual_scope_data[0]);//将陀螺仪积分值放进去就不行
      systick_delay_ms(100);
    }
}

void data_conversion(int16 data1, int16 data2, int16 data3, int16 data4, uint8 *dat)//这个是调用的函数,那位大佬帮个忙,看看,为何串口发不了gryo_ang_x_intergal的数据
{
    uint16 CRC16 = 0;

    dat[0] = (uint8)((uint16)data1&0xff);
    dat[1] = (uint8)((uint16)data1>>8);

    dat[2] = (uint8)((uint16)data2&0xff);
    dat[3] = (uint8)((uint16)data2>>8);

    dat[4] = (uint8)((uint16)data3&0xff);
    dat[5] = (uint8)((uint16)data3>>8);

    dat[6] = (uint8)((uint16)data4&0xff);
    dat[7] = (uint8)((uint16)data4>>8);

    CRC16  = CRC_CHECK(dat,8);
    dat[8] = (uint8)(CRC16&0xff);
    dat[9] = (uint8)(CRC16>>8);

    uart_putbuff(USART_0,dat,10);  //数据转换完成后,使用串口发送将数组的内容发送出去

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-27 07:19 , Processed in 0.057131 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表