rocketchen 发表于 2014-6-27 15:21:19

ADXL345,16g量程,每个轴输出的原始值超60000+,正常吗?

ADXL345B,设置为正负16g量程,当时在静止状态下分别测z轴,x轴和y轴方向的重力加速度测量值,输出超过60000+,以下是一部分测量数据,测试方式是先z轴正向向上保存x,y面水平,静止一会儿,然后x轴正向向上,静止一会儿,然后y轴正向向上静止一段时间, 最后任意倾斜一个角度,输出的三个轴都超60000+ ,请问正常吗? 這中情况怎么进行标定? 按照ADXL345上面的标定方法取均值根本不行, 因为单次输出超过60000+, 取十次平均肯定溢出了,而实际也是如此,最后输出乱码, 请问這中情况是什么问题, 怎么进行加速度计标定呢?


附原始输出数据:
000024 065519065278
000023 065520065281
000024 065518065280
000023 065516065280
000022 065518065281
000023 065519065279
000022 065517065283
000022 065517065281
000024 065511065279
000024 065515065278
000020 065512065285
000023 065517065281
000026 065518065276
000023 065513065280
000024 065514065277
000027 065516065280
000023 065514065280
000025 065517065282
000024 065518065280
000026 065515065278
000025 065513065281
000024 065514065280
000024 065513065279
000024 065512065279
000024 065511065279
000025 065514065281
000024 065512065282
000025 065513065277
000024 065513065281
000023 065509065288
000024 065509065277
000023 065508065280
000023 065510065283
000024 065509065279
000026 065511065277
000024 065509065278
000023 065509065285
000025 065506065279
000026 065505065280
000024 065505065280
000025 065502065286
000025 065506065278
000024 065503065277
000023 065504065281
000024 065501065282
000025 065502065278
000024 065506065277
000023 065503065283
000024 065504065024
000024 065503065276
000022 065501065535
000022 065501065283
000023 065503065282
000021 065499065280
000021 065500065281
000023 065501065281
000023 065498065275
000021 065501065285
000022 065501065278
000022 065499065280
000022 065504065285
000023 065501065280
000023 065500065280
000024 065498065278
000023 065500065278
000022 065499065281
000023 065495065278
000022 065499065285
000023 065499065284
000021 065496065279
000024 065500065277
000023 065499065283
000022 065498065281
000023 065499065279
000024 065499065280
000023 065499065281
000023 065500065283
000024 065500065280
000022 065501065280
000025 065500065280
000023 065500065279
000023 065500065282
000023 065502065281
000023 065500065279
000023 065500065281
000024 065502065283
000024 065499065280
000024 065500065278
000023 065501065279
000024 065499065280
000022 065501065284
000023 065494065283
000023 065495065282
000023 065497065280
000023 065496065279
000023 065500065283
000023 065498065282
000023 065498065280
000023 065499065281
000022 065497065281
000022 065500065282
000023 065501065280
000023 065500065283
000023 065501065281
000023 065501065280
000024 065500065279
000024 065503065279
000024 065500065280
000022 065499065283
000023 065504065282
000020 065496065280
000026 065501065280
000018 065499065287
000028 065500065279
000015 065492065285
000022 065500065280
000022 065500065280
000022 065495065282
000025 065494065284
000022 065496065281
000024 065498065280
000022 065498065279
000023 065501065281
000021 065495065282
000027 065501065280
000021 065496065283
000022 065497065281
000025 065496065279
000023 065498065280
000023 065498065282
000024 065497065282
000024 065496065280
000023 065496065280
000023 065496065281
000024 065499065280
000024 065498065279
000023 065498065280
000022 065500065281
000023 065499065285
000023 065493065281
000022 065495065283
000025 065497065283
000022 065497065283
000022 065497065280
000023 065497065278
000022 065495065280
000023 065495065025
000024 065495065281
000024 065495065282
000024 065497065280
000025 065495065279
000024 065497065280
000023 065495065280
000022 065497065283
000021 065496065280
000024 065498065280
000023 065500065279
000023 065498065281
000023 065495065281
000023 065496065283
000022 065498065281
000023 065498065279
000022 065498065281
000022 065497065283
000022 065499065282
000022 065497065283
000023 065495065281
000022 065498065282
000023 065499065281
000023 065499065282
000024 065500065280
000023 065498065280
000023 065499065281
000023 065500065280
000023 065498065280
000024 065500065281
000023 065501065281
000022 065500065283
000023 065500065280
000025 065499065280
000025 065498065281
000022 065500065280
000023 065499065282
000025 065501065279
000024 065500065279
000025 065503065279
000023 065501065280
000022 065501065283
000023 065501065280
000025 065501065280
000022 065501065281
000024 065503065280
000024 065502065280
000024 065503065280
000024 065501065281
000023 065502065282
000023 065501065281
000024 065502065280
000024 065500065281
000025 065501065278
000022 065501065281
000023 065502065279
000025 065500065281
000024 065500065284
000024 065500065281
000023 065501065282
000024 065499065278
000023 065501065285
000023 065499065280
000026 065502065283
000027 065496065284
000028 065501065280
000032 065500065280
000029 065496065024
000030 065494065284
000030 065499065278
000028 065499065280
000029 065501065282
000026 065500065280
000024 065499065283
000027 065502065280
000026 065503065278
000025 065501065284
000025 065501065280
000023 065503065279
000023 065502065280
000025 065501065279
000024 065502065279
000024 065499065279
000023 065500065281
000025 065500065280
000024 065501065280
000023 065500065280
000023 065499065283
000025 065499065279
000025 065501065283
000029 065443065350
000066 065487065292
000114 065483065321
000115 065431065322
000184 065459065378
000218 065446065444
000231 065453065471
000247 065448065494
000236 065452065491
000244 065455065504
000236 065455065476
000235 065455065470
000229 065476065463
000239 065499065460
000243 065504065440
000244 000044065514
000263 065534000007
000255 000011000019
000253 000009000020
000253 000006000007
000250 000004065531
000252 000007000001
000249 000006000002
000510 000001065532
000510 000003000001
000257 000005000002
000253 000005065534
000255 000004065528
000253 000007065529
000251 000007065528
000253 000007065529
000253 000005065525
000257 000002065535
000254 000006065531
000251 000007065529
000254 000003065525
000254 000004065524
000254 000005065535
000253 000005065527
000254 000005065535
000252 000005065521
000255 000003065531
000252 000006065526
000252 000004065525
000256 000003065528
000250 000007065526
000254 000004065529
000251 000008065525
000256 000003065529
000252 000006065522
000249 000010065525
000253 000006065530
000252 000006065523
000254 000004065525
000254 000004065526
000251 000007065525
000256 000001065530
000254 000005065523
000252 000005065530
000254 000005065526
000254 000005065527
000253 000004065529
000255 000004065527
000252 000004065524
000254 000005065526
000254 000006065530
000251 000007065525
000254 000002065530
000253 000007065531
000253 000007065525
000253 000005065530
000254 000005065525
000255 000003065527
000254 000005065530
000252 000005065529
000253 000006065528
000252 000006065530
000252 000005065527
000254 000003065527
000254 000005065527
000253 000005065528
000509 000003065524
000253 000004065525
000252 000007065526
000255 000004065532
000253 000004065524
000254 000004065531
000252 000004065527
000253 000005065527
000254 000002065525
000254 000006065532
000255 000003065529
000253 000007065530
000252 000004065528
000252 000004065523
000255 000004065529
000253 000007065527
000253 000005065530
000253 000005065527
000253 000006065528
000254 000003065529
000253 000005065525
000251 000007065531
000253 000005065529
000253 000004065528
000253 000005065530
000255 000004065528
000253 000005065522
000254 000003065529
000255 000002065530
000253 000004065526
000254 000004065531
000253 000005065527
000254 000003065531
000253 000005065526
000254 000006065531
000255 000005065527
000254 000006065528
000254 000005065530
000252 000006065524
000252 000007065529
000254 000005065535
000253 000006065524
000253 000004065527
000255 000004065527
000254 000005065527
000253 000005065528
000255 000004065532
000253 000004065524
000254 000002065529
000252 000005065528
000254 000003065527
000253 000004065529
000253 000006065530
000255 000003065530
000245 000009065526
000254 000004065532
000253 000005065528
000254 000005065529
000254 000005065528
000253 000004065530
000253 000007065526
000255 000005065533
000253 000004065526
000253 000004065528
000254 000005065532
000254 000004065529
000253 000005065529
000254 000005065531
000252 000005065527
000253 000004065530
000253 000006065530
000254 000003065528
000251 000006065532
000253 000003065528
000253 000004065533
000252 000006065529
000253 000005065528
000254 000001065528
000253 000005065532
000253 000006065526
000253 000005065531
000255 000006065530
000253 000005065527
000253 000005065531
000253 000005065529
000255 000003065528
000251 000007065528
000254 000005065528
000251 000007065528
000254 000004065523
000255 000004000000
000248 000009065281
000255 000007065532
000258 065525065526
000254 065535065529
000255 000000065530
000254 065530065514
000254 000000065531
000258 065531065521
000253 000005065505
000254 065529065513
000257 065518065508
000249 065533065497
000251 065532065491
000251 065529065494
000250 065531065490
000250 065534065494
000251 065531065491
000248 065526065489
000249 065527065493
000251 065524065489
000252 065528065491
000252 065526065487
000250 065532065490
000248 065529065488
000252 065529065490
000250 065524065493
000250 065526065494
000247 065523065491
000251 065525065495
000250 065528065493
000252 065527065493
000251 065525065494
000251 065528065498
000247 000015065501
000247 000074065506
000212 000130065520
000190 000156065527
000163 000191065528
000141 000220065527
000116 000221065525
000118 000214065521
000105 000224065527
000074 000228065528
000088 000252000005
000064 000240000009
000065 000240000000
000059 000243000007
000056 000242000005
000048 000243000018
000039 000254000024
000036 000263000029
000031 000256000025
000042 000259000017
000038 000234000010
000049 000255000018
000047 000258000015
000040 000241000010
000036 000258000015
000030 000257000011
000020 000254000007
000004 000239000000
000004 000253000000
000007 000258065528
000005 000252065528
000010 000257065515
000004 000255065523
000004 000251065519
000005 000257065510
000004 000253065510
000001 000254065507
000004 000257065511
000001 000254065508
000003 000255065507
000001 000256065506
000004 000259065501
000000 000255065503
000001 000255065507
065534 000253065501
000000 000254065504
065535 000254065504
000000 000254065507
000000 000254065505
000000 000254065505
000000 000254065506
000000 000253065508
065535 000254065506
065535 000254065501
000000 000253065506
000000 000254065503
000001 000254065508
065534 000255065502
065535 000254065504
000000 000253065506
000001 000255065504
000000 000253065503
000000 000253065503
000000 000254065505
000001 000255065504
000001 000254065503
000000 000256065502
000001 000255065503
000001 000001065504
000000 000508065507
000001 000509065507
000002 000255065503
000001 000254065507
000001 000254065506
000000 000255065507
000000 000252065503
000000 000254065507
000000 000254065502
000002 000254065508
000000 000253065500
000002 000254065504
000000 000255065503
000001 000253065504
000000 000254065506
000000 000253065506
000001 000255065504
000001 000253065507
000002 000254065504
000000 000254065502
000001 000253065508
000001 000252065502
000004 000254065505
000014 000252065513
000021 000254065509
000026 000252065506
000028 000250065502
000017 000244065497
000023 000243065493
000024 000253065488
000016 000251065488
000015 000252065486
000020 000252065491
000017 000254065487
000017 000254065492
000017 000254065500
000017 000252065503
000018 000255065502
000025 000252065511
000031 000243000004
000046 000251000007
000045 000247000007
000048 000252000023
000040 000246000039
000046 000235000101
000081 000190000150
000085 000179000152
000080 000174000152
000086 000186000153
000095 000121000194
000120 000073000199
000112 000085000200
000106 000123000198
000128 000131000158
000166 000182000067
000170 000173065466
000133 000041065348
000142 000004065302
000125 065507065319
000127 065529065306
000137 065523065297
000142 000006065322
000094 000005065308
000000 000036065301
065457 000038065267
065468 000069065296
065439 000028065298
065439 000013065300
065449 000010065298
065434 000000065299
065432 065527065296
065436 065524065297
065442 065521065293
065432 065512065297
065426 065508065304
065419 065501065307
065409 065501065310
065405 065496065311
065406 065499065312
065405 065494065312
065408 065494065313
065408 065489065312
065410 065491065312
065410 065488065312
065408 065486065311
065410 065483065315
065409 065475065312
065415 065476065313
065412 065470065315
065411 065472065314
065414 065463065320
065414 065465065320
065411 065468065313
065409 065465065321
065408 065469065319
065409 065463065326
065407 065463065323
065407 065464065321
065405 065462065323
065405 065465065320
065405 065464065323
065405 065461065324
065406 065461065323
065406 065459065324
065407 065461065323
065406 065464065323
065404 065461065322
065406 065461065324
065406 065463065323
065402 065462065321
065404 065461065324
065403 065462065324
065405 065460065326
065405 065465065324
065404 065464065325
065401 065462065323
065402 065462065324
065405 065462065326
065403 065464065327
065404 065461065328
065403 065461065326
065404 065459065329
065402 065460065326
065403 065464065323
065403 065461065325
065403 065464065326
065402 065463065326
065402 065462065325
065402 065460065327
065402 065464065327
065403 065461065327
065404 065460065325
065403 065463065327
065402 065461065329
065402 065460065325
065402 065461065324
065402 065461065326
065402 065462065320
065404 065462065329
065404 065464065326
065403 065463065325
065401 065461065324
065403 065462065326
065403 065460065326
065403 065460065329
065403 065460065324
065402 065460065328
065403 065461065331
065401 065461065325
065402 065460065324
065401 065459065323
065401 065461065330
065402 065461065325
065402 065461065326
065402 065460065327
065400 065459065327
065402 065460065325
065400 065461065325
065402 065460065326
065401 065460065325
065401 065459065326
065400 065462065326
065399 065462065325
065401 065461065327
065401 065461065326
065400 065461065326
065400 065461065328
065403 065460065328
065400 065463065326
065399 065459065326
065399 065459065326
065399 065464065323
065400 065460065327
065400 065461065330
065398 065460065331
065398 065460065329
065404 065459065328
065400 065451065331
065400 065454065327
065400 065451065332
065402 065446065335
065398 065450065330
065401 065451065330
065406 065446065335
065403 065454065334
065404 065457065324
065402 065453065332
065401 065456065325
065403 065459065323
065408 065460065336
065400 065456065317
065407 065457065331
065404 065458065327
065403 065456065320
065408 065462065325
065403 065457065325
065405 065460065322
065406 065461065327
065407 065465065324
065404 065462065317
065407 065463065326
065405 065464065325
065407 065466065321
065408 065463065326
065407 065463065324
065408 065460065322

HookTeam 发表于 2014-6-27 22:01:43

很正常的数据啊,65000+表示的负数

rocketchen 发表于 2014-6-28 08:23:40

本帖最后由 rocketchen 于 2014-6-28 08:24 编辑

HookTeam 发表于 2014-6-27 22:01
很正常的数据啊,65000+表示的负数

o , 是这样的, 我是直接将采集的数据赋值给了一个int变量x,之后输出我没有做符号判断就输出来, 所以直接输出650000+ ,我直接使用这个数据安装datasheet上的偏移校准,累加10次肯定早就溢出了
之所以出现650000+是因为我直接将一个16位的二进制赋值给一个int,之后没有对这个int型变量与0x7ffff进行比较, 直接转换输出, 这样其实是将16位扩充位32位处理, 原来的符号位直接当作数值位计算了,

另外我还想问一下, 16g量程 全分辨率下 ,单个轴输出的最大数值会是多少? 下面那个图上说 典型灵敏度为256LSB/g, 如果是16g的话是不是单个轴最大输出256*16= 4096 LSB ? 但是这个后面有个最大值是282 这个是怎么理解啊
还有这个表格中说,相对于理想值的灵敏度偏差 Xout, Yout和Zout的比例因子, 这个不懂,请问这个是指什么, 怎么用啊?

309579471 发表于 2014-6-28 08:38:24

数据明显是错的,16g量程,水平放时,X Y为0附近,Z为2048左右。。应该是你的数据类型有问题,检查下

rocketchen 发表于 2014-6-28 09:14:20

309579471 发表于 2014-6-28 08:38
数据明显是错的,16g量程,水平放时,X Y为0附近,Z为2048左右。。应该是你的数据类型有问题,检查下 ...

这是我的函数,请帮忙分析一下, 我虽然声明为一个int类接收16位二进制,但是后面转换时与0x7fff进行了对比,添加了符号位, 应该没问题了啊? 还有我问一下,我下面這样转换之后我只输出了后面三位就是百十个位,我认为16g量程,256LSB/g 那应该就是输出几百吧? 所以我千位以上直接没有输出, 這样对么? 下面是源码,很简单,可以帮忙看一眼么,谢谢。。。。
//global variables
int A_X, A_Y, A_Z;

void read_ADXL345(void)
{
    BUF = Single_Read(ADXL345_Addr, 0x32); //OUT_X_L_A
    BUF = Single_Read(ADXL345_Addr, 0x33); //OUT_X_H_A

    BUF = Single_Read(ADXL345_Addr, 0x34); //OUT_Y_L_A
    BUF = Single_Read(ADXL345_Addr, 0x35); //OUT_Y_H_A

    BUF = Single_Read(ADXL345_Addr, 0x36); //OUT_Z_L_A
    BUF = Single_Read(ADXL345_Addr, 0x37); //OUT_Z_H_A

    A_X = (BUF << 8) + BUF; //合成数据
    A_Y = (BUF << 8) + BUF; //合成数据
    A_Z = (BUF << 8) + BUF; //合成数据
}

void Send_ADXL345_rawdataconversion(int dis_data)
{
    float temp ;
    if(dis_data > 0x7fff)dis_data -= 0xffff; //判断符号
    if(dis_data < 0)
    {
      dis_data = -dis_data;
      USART_SendData(USART1, '-');
      Delayms(2);
    }
    else
    {
      USART_SendData(USART1, '+');
      Delayms(2);
    }
    temp = (float)dis_data; //计算数据和显示,查考ADXL345快速入门第4页
    conversion(temp);          //转换出显示需要的数据
}

void conversion(long temp_data)
{
    shiwan = temp_data / 100000 + 0x30 ;
    temp_data = temp_data % 100000; //取余运算
    wan = temp_data / 10000 + 0x30 ;
    temp_data = temp_data % 10000; //取余运算
    qian = temp_data / 1000 + 0x30 ;
    temp_data = temp_data % 1000; //取余运算
    bai = temp_data / 100 + 0x30   ;
    temp_data = temp_data % 100; //取余运算
    shi = temp_data / 10 + 0x30    ;
    temp_data = temp_data % 10;//取余运算
    ge = temp_data + 0x30;
}

void Send_ADXL345_rawdata(void)
{
    Send_ADXL345_rawdataconversion(A_X);
    // USART1_SendData(shiwan);
    // USART1_SendData(wan);
    // USART1_SendData(qian);
    USART1_SendData(bai);
    USART1_SendData(shi);
    USART1_SendData(ge);
    USART1_SendData(' ');

    Send_ADXL345_rawdataconversion(A_Y);
    //   USART1_SendData(shiwan);
    //   USART1_SendData(wan);
    //   USART1_SendData(qian);
    USART1_SendData(bai);
    USART1_SendData(shi);
    USART1_SendData(ge);
    USART1_SendData(' ');

    Send_ADXL345_rawdataconversion(A_Z);
    //USART1_SendData(shiwan);
    // USART1_SendData(wan);
    //USART1_SendData(qian);
    USART1_SendData(bai);
    USART1_SendData(shi);
    USART1_SendData(ge);

    USART1_SendData(0x0d);
    USART1_SendData(0x0a);
}

rocketchen 发表于 2014-6-28 09:39:20

309579471 发表于 2014-6-28 08:38
数据明显是错的,16g量程,水平放时,X Y为0附近,Z为2048左右。。应该是你的数据类型有问题,检查下 ...

这是 xy轴水平,z轴正向向上测试的数据,大部分一样,我想问这个单个x轴或y轴,z轴输出的最大值为多大,16g量程,全分辨率下?怎么算最大值? 还有我现在只输出百位十位和个位,有必要输出千位甚至万位数值位么? 截取一段测试数据如下:
+000 -007 +245
+001 -007 +245
+001 -007 +248
+000 -007 +246
+000 -007 +247
+001 -007 +246
+002 -008 +251
+001 -008 +248
+001 -007 +247
+001 -006 +244
+000 -007 +249
+001 -008 +248
+001 -004 +247
+000 -009 +245
+001 -007 +246
+001 -008 +247
+001 -008 +245
+002 -008 +247
+002 -007 +246
+002 -009 +246
+002 -007 +246
+002 -007 +246
+002 -007 +248
+002 -008 +244
+002 -008 +244
+003 -006 +246
+001 -008 +247
+002 -006 +247
+003 -008 +246
+003 -008 +246
+003 -008 +246
+003 -007 +247
+006 -008 +246
+007 -008 +246
+009 -008 +246
+011 -008 +246
+011 -009 +246
+012 -008 +244
+010 -007 +244
+009 -006 +246
+009 -006 +246
+011 -009 +244
+009 -008 +246
+009 -007 +247
+009 -008 +245
+008 -007 +246
+009 -007 +246
+009 -007 +244
+009 -009 +247
+009 -008 +246
+008 -007 +247
+008 -006 +245
+009 -006 +245
+008 -008 +244
+009 -007 +245
+007 -006 +245
+007 -008 +247
+009 -009 +245
+007 -008 +246
+006 -007 +245
+008 -008 +245
+007 -007 +245
+007 -008 +245
+006 -006 +246
+006 -007 +246
+007 -008 +246
+006 -007 +245
+006 -006 +246
+005 -007 +247
+006 -007 +248
+006 -008 +244
+006 -008 +246
+006 -007 +245
+006 -008 +245
+007 -009 +246
+007 -007 +246
+007 -008 +247
+007 -008 +245
+006 -007 +247
+006 -007 +246
+006 -008 +246
+005 -007 +244
+006 -008 +247
+005 -008 +244
+006 -008 +246
+007 -008 +245
+005 -007 +244
+005 -008 +246
+006 -007 +246
+006 -008 +245
+006 -008 +246
+005 -006 +246
+005 -008 +246
+005 -008 +247
+005 -008 +247
+007 -008 +246
+005 -009 +246
+004 -006 +246
+005 -008 +246
+005 -008 +246
+005 -007 +247
+005 -007 +245
+006 -007 +245
+006 -008 +245
+005 -007 +245
+004 -007 +246
+004 -006 +245
+005 -008 +246
+003 -007 +246
+006 -009 +244
+005 -006 +246
+006 -008 +245
+005 -007 +246
+007 -009 +245
+006 -009 +247
+005 -006 +245
+005 -008 +243
+005 -007 +245
+005 -007 +247
+004 -006 +247
+005 -008 +244
+005 -007 +245
+005 -008 +243
+006 -007 +244
+005 -006 +247
+005 -008 +246
+007 -007 +244
+005 -008 +245
+005 -007 +241
+004 -007 +244
+005 -004 +247
+004 -007 +246
+006 -007 +244
+006 -007 +245
+006 -006 +248
+005 -006 +246
+004 -007 +245
+006 -008 +247
+005 -007 +247
+005 -008 +245
+005 -007 +247
+005 -007 +246
+004 -006 +248
+006 -008 +245

309579471 发表于 2014-6-28 13:39:22

1、32位MCU里 int是32bit,你需要用int16_t 。
2、后面的数据处理全都不要,直接读取数据再用print函数发送到电脑看看数据。
3、传感器内部AD 16位,有符号,就是-32768到+32768,16g量程,意思就是16g时输出32768,-16g时输出-32768,现在水平放置,Z轴正方向受重力1g,    输出为:32768/16=2048

rocketchen 发表于 2014-6-28 15:10:39

309579471 发表于 2014-6-28 13:39
1、32位MCU里 int是32bit,你需要用int16_t 。
2、后面的数据处理全都不要,直接读取数据再用print函数发 ...

#define int16_t short int;
16位的表示范围不是:-32768到 32767 ? 怎么来个32768呢? 不解,小白球详解

rocketchen 发表于 2014-6-29 09:06:16

16g量程,全分辨率下 AD 13位, 2^13 = 8192LSB , 那么8192LSB/16*2g = 256LSB/g , 注意这里表示为正负16g量程, 所以量程范围为负16g到正16g,即长度为32g,所以除以16*2 , 那么单轴最大值为2^12 = 4096 LSB ,因为最高位是符号位,所以是2^12 而不是 2^13 .................
页: [1]
查看完整版本: ADXL345,16g量程,每个轴输出的原始值超60000+,正常吗?