2赞

回答

收藏

[评测分享] 罗姆传感器体验四:KX022-1020(加速度传感器)

#板卡评测 #板卡评测 4505 人阅读 | 0 人回复 | 2017-04-05

本帖最后由 jundao721 于 2017-4-5 18:09 编辑

KX022-1020是一款3轴加速度传感器,2g,4g,8g可选,集成FIFO缓冲区。SPI和IIC通讯方式可选,从原理图上可以看出,如图1所示:

默认是IIC通信方式。该IC的详细信息参看附件中的元器件Datasheet。
根据要求,初始化IC,程序如图2所示:
  1. void KX022_Init(void)
  2. {
  3.         wai = KX022SingleRead(KX022_DEVICE_ADDRESS_1E,KX022_WHO_AM_I);
  4.         I2C_delay();
  5.         I2C_delay();
  6.         //step1
  7.   KX022Write(KX022_DEVICE_ADDRESS_1E,KX022_CNTL1,0x41);//KX022_CNTL1_VAL);//2g

  8. KX022Write(KX022_DEVICE_ADDRESS_1E,KX022_ODCNTL,0x02);//KX022_ODCNTL_VAL);
  9.         I2C_delay();
  10. KX022Write(KX022_DEVICE_ADDRESS_1E,KX022_CNTL3,0xD8);         
  11.         I2C_delay();
  12. KX022Write(KX022_DEVICE_ADDRESS_1E,KX022_TILT_TIMER,0x01);
  13.         I2C_delay();

  14. KX022Write(KX022_DEVICE_ADDRESS_1E,KX022_CNTL1,0xC1);//reg);
  15.         
  16.         I2C_delay();        
  17. }

  18. u16 XkData,YkData,ZkData;
  19. void Get_RawVal(void)//2g:16384,4g:8192,8g:4096
  20. {
  21.         //step4:
  22.         
  23.         XkData =KX022MulRead(KX022_DEVICE_ADDRESS_1E,0x06);//
  24.         YkData =KX022MulRead(KX022_DEVICE_ADDRESS_1E,0x08);
  25.         ZkData =KX022MulRead(KX022_DEVICE_ADDRESS_1E,0x0A);
  26.         KXData =((float)XkData)/16384;//
  27.         KYData =((float)YkData)/16384;//
  28.         KZData =((float)ZkData)/16384;//
  29. }
复制代码
选用不同的精度,处理方式不一样,这里选用2g。

三轴的输出数据通过串口助手显示,垂直放置,如图4所示:

水平方式(由于连线的问题,只能接近水平),数据如图5所示:

变换模块的角度,可以观察数据的变化。关于角度换算,后面再更新。

t41.PNG (20.34 KB, 下载次数: 99)

图1

图1

t44.PNG (14.84 KB, 下载次数: 114)

图4

图4

t45.PNG (27.72 KB, 下载次数: 99)

图5

图5

kx022.jpg (38.16 KB, 下载次数: 97)

kx022.jpg

KX022-1020 Specifications Rev 12.0.pdf

2.32 MB, 下载次数: 20

分享到:
回复

使用道具 举报

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

本版积分规则

1938 积分
17 主题
+ 关注
热门推荐
关闭

站长推荐上一条 /3 下一条