智能车制作

标题: 陀螺仪图像变成这样是什么鬼 [打印本页]

作者: 小白开水    时间: 2015-3-23 20:22
标题: 陀螺仪图像变成这样是什么鬼
[attach]75411[/attach]如题

作者: 蓝猫    时间: 2015-3-23 20:28
可能是接触不良吧,我之前也碰到过
作者: 小白开水    时间: 2015-3-23 20:29
蓝猫 发表于 2015-3-23 20:28
可能是接触不良吧,我之前也碰到过

谢谢兄弟,我检查了,不是接触不良,这是我晃动小车时候的反应

作者: jianghupianzi    时间: 2015-3-23 20:57

作者: 、痕迹    时间: 2015-3-23 21:01
总在正最大和负最大跳变的话就是数据类型的问题
作者: 小白开水    时间: 2015-3-23 21:16
、痕迹 发表于 2015-3-23 21:01
总在正最大和负最大跳变的话就是数据类型的问题

我的数据类型都是float,这样不行么?

作者: BrotherSix    时间: 2015-3-23 21:19
换整型吧,float数值漂得太厉害
作者: 、痕迹    时间: 2015-3-23 21:19
小白开水 发表于 2015-3-23 21:16
我的数据类型都是float,这样不行么?

如果你是数字陀螺仪的话 你应该先用short去接数据..再转成float.

作者: 蓝猫    时间: 2015-3-23 21:22
小白开水 发表于 2015-3-23 20:29
谢谢兄弟,我检查了,不是接触不良,这是我晃动小车时候的反应

晃动小车的时候,会有抖动,那陀螺仪的数据变成这样应该算正常吧


作者: 小白开水    时间: 2015-3-23 21:23
、痕迹 发表于 2015-3-23 21:19
如果你是数字陀螺仪的话 你应该先用short去接数据..再转成float.

那我的是模拟的陀螺仪嘞
作者: 蓝猫    时间: 2015-3-23 21:23
不过你的波动范围是有点大。
数字的还是模拟的???
作者: 小白开水    时间: 2015-3-23 21:23
蓝猫 发表于 2015-3-23 21:23
不过你的波动范围是有点大。
数字的还是模拟的???

模拟的

作者: 小白开水    时间: 2015-3-23 21:24
BrotherSix 发表于 2015-3-23 21:19
换整型吧,float数值漂得太厉害

谢谢,我试一下

作者: 小白开水    时间: 2015-3-23 21:24
jianghupianzi 发表于 2015-3-23 20:57



作者: 最美的时光    时间: 2015-3-23 21:43
兄弟 我之前也碰到这种情况 急事数据类型转化的问题。你用的是K60还是128?野火的K60串口发送函数有问题的 里面的形参改成这样就行 void uart_putchar (UARTn uratn, char ch)
作者: 泰庆电子    时间: 2015-3-24 08:28
你发出的图像应该不是原始图像,是不是限幅的参数给大了。
作者: 小白开水    时间: 2015-3-24 12:38
最美的时光 发表于 2015-3-23 21:43
兄弟 我之前也碰到这种情况 急事数据类型转化的问题。你用的是K60还是128?野火的K60串口发送函数有问题的  ...

我用的就是野火的K60,我的putchar函数就是那样的void uart_putchar (UARTn_e uratn, char ch)

作者: 最美的时光    时间: 2015-3-24 12:41
那就是你的上位机协议里有几个类型定义错误了。。我那次也卡了一周多才解决这个问题
作者: 小白开水    时间: 2015-3-24 12:46
泰庆电子 发表于 2015-3-24 08:28
你发出的图像应该不是原始图像,是不是限幅的参数给大了。

这个就是我的原始图像,就是采集了20次后平均的,我不动车的时候车是在最大值处,一动就跳变成最小值了

作者: 小白开水    时间: 2015-3-24 13:04
最美的时光 发表于 2015-3-24 12:41
那就是你的上位机协议里有几个类型定义错误了。。我那次也卡了一周多才解决这个问题

我检查过了,我用short接收的,然后其他的传递参数都是long int,这有什么不对么

作者: 最美的时光    时间: 2015-3-24 15:03
ushort CRC_CHECK(u8 *Buf, u8 CRC_CNT)
{
    ushort CRC_Temp= 0xffff;
    u8 i,j;

    for (i=0;i<CRC_CNT; i++)
    {      
        CRC_Temp ^= Buf[i];
        for (j=0;j<8;j++)
        {
            if (CRC_Temp & 0x01)
            {
                CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001;
            }
            else
            {
                CRC_Temp = CRC_Temp >> 1;
            }
        }
    }
    return(CRC_Temp);
}

void OutPut_Data(void)//坑爹的协议  弄得我卡了几天
{
    s16 temp[4] = {0};
    u16 temp1[4] = {0};
    u8 databuf[10] = {0};
    u8 i;
    ushort CRC16 = 0;
    for(i=0;i<4;i++)
    {

        temp[i]  = (s16)Data[i];
        temp1[i] = (u16)temp[i];

    }

    for(i=0;i<4;i++)
    {
        databuf[i*2]   = (s8)(temp1[i]%256);
        databuf[i*2+1] = (s8)(temp1[i]/256);
    }

    CRC16 = CRC_CHECK(databuf,8);
    databuf[8] = CRC16%256;
    databuf[9] = CRC16/256;

    for(i=0;i<10;i++)
    {
        uart_putchar(UART0,databuf[i]);
    }
}
是这个协议不?
作者: 最美的时光    时间: 2015-3-24 15:04
这应该就对了。我就是改的这些数据定义类型就好了
作者: 小白开水    时间: 2015-3-24 22:55
最美的时光 发表于 2015-3-24 15:03
ushort CRC_CHECK(u8 *Buf, u8 CRC_CNT)
{
    ushort CRC_Temp= 0xffff;

就是这个协议

作者: 小白开水    时间: 2015-3-24 22:57
最美的时光 发表于 2015-3-24 15:04
这应该就对了。我就是改的这些数据定义类型就好了

我改完了,明天到实验室试试,谢谢哥们啊

作者: 小白开水    时间: 2015-3-24 23:30
最美的时光 发表于 2015-3-24 15:04
这应该就对了。我就是改的这些数据定义类型就好了

试过了,这个协议是你改过的?咱俩是一样的

作者: 李灵黛    时间: 2015-3-24 23:31
坏了吧   我们的很好
作者: 泰庆电子    时间: 2015-3-25 08:10
小白开水 发表于 2015-3-24 12:46
这个就是我的原始图像,就是采集了20次后平均的,我不动车的时候车是在最大值处,一动就跳变成最小值了

原始图像应该不会这样 你可以 用一个 万用表测下电压就知道了。

作者: 最美的时光    时间: 2015-3-25 09:10
标题: RE: 陀螺仪图像变成这样是什么鬼
小白开水 发表于 2015-3-24 23:30
试过了,这个协议是你改过的?咱俩是一样的

内容这就是我改过的啊..这样就好了。。还有你把那个发送数组别用浮点型
作者: 克鲁    时间: 2015-3-25 15:39
供电不好?
作者: 小白开水    时间: 2015-3-25 20:51
泰庆电子 发表于 2015-3-25 08:10
原始图像应该不会这样 你可以 用一个 万用表测下电压就知道了。

测过了,正常





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2