搜索
热搜: ROHM 模拟 车载
查看: 3040|回复: 4

【罗姆传感器】7.3轴加速度传感器

  [复制链接]

该用户从未签到

89

主题

513

帖子

0

精华

金牌会员

最后登录
2022-3-30
发表于 2018-11-19 21:43:41 | 显示全部楼层 |阅读模式
本帖最后由 小马哥-1650185 于 2018-11-19 22:17 编辑

加速度传感器是一种可以检测"倾斜"、"撞击"、"振动"等这些传感器动作状态的传感器。传感器有1轴2轴3轴等种类,例如1轴可检测1个方向(只检测纵向),2轴可检测2个方向(纵向和横向),3轴可检测3个方向(纵向、横向和高度)。
传感器评估套件中搭载的加速度传感器为3轴,所以可检测XYZ三个方向。

芯片资料
6.jpg

原理图
1.jpg

pcb 布局图
2.jpg
使用时,电源电压的设定(1.8 或 3.0V)
3.jpg

KX224初始化
  1. init(void)
  2. {
  3.   byte rc;
  4.   unsigned char reg;
  5.   unsigned char gsel;

  6.   rc = read(KX224_WHO_AM_I, ®, sizeof(reg));
  7.   if (rc != 0) {
  8.     Serial.println(F("Can't access KX224"));
  9.     return (rc);
  10.   }
  11.   Serial.print(F("KX224_WHO_AMI Register Value = 0x"));
  12.   Serial.println(reg, HEX);
  13.   
  14.   if (reg != KX224_WAI_VAL) {
  15.     Serial.println(F("Can't find KX224"));
  16.     return (rc);
  17.   }

  18.   reg = KX224_CNTL1_VAL;
  19.   rc = write(KX224_CNTL1, ®, sizeof(reg));
  20.   if (rc != 0) {
  21.     Serial.println("Can't write KX224 CNTL1 register at first");
  22.     return (rc);
  23.   }

  24.   reg = KX224_ODCNTL_VAL;
  25.   rc = write(KX224_ODCNTL, ®, sizeof(reg));
  26.   if (rc != 0) {
  27.     Serial.println("Can't write KX224 ODCNTL register");
  28.     return (rc);
  29.   }

  30.   rc = read(KX224_CNTL1, ®, sizeof(reg));
  31.   if (rc != 0) {
  32.     Serial.println(F("Can't read KX224 CNTL1 register"));
  33.     return (rc);
  34.   }
  35.   gsel = reg & KX224_CNTL1_GSELMASK;

  36.   reg |= KX224_CNTL1_PC1;
  37.   rc = write(KX224_CNTL1, ®, sizeof(reg));
  38.   if (rc != 0) {
  39.     Serial.println(F("Can't write KX224 CNTL1 register at second"));
  40.     return (rc);
  41.   }
  42.   
  43.   switch(gsel) {
  44.     case KX224_CNTL1_GSEL_8G :
  45.       // (Equivalent counts) / (Range) = (32768 / 8)
  46.       _g_sens = 4096;
  47.     break;

  48.     case KX224_CNTL1_GSEL_16G :
  49.       // (Equivalent counts) / (Range) = (32768 / 16)
  50.       _g_sens = 2048;
  51.     break;

  52.     case KX224_CNTL1_GSEL_32G :
  53.       // (Equivalent counts) / (Range) = (32768 / 32)
  54.       _g_sens = 1024;
  55.     break;

  56.     default:
  57.     break;
  58.   }
  59.   return (rc);
  60. }
复制代码
读取数据
  1. byte KX224::get_rawval(unsigned char *data)
  2. {
  3.   byte rc;

  4.   rc = read(KX224_XOUT_L, data, 6);
  5.   if (rc != 0) {
  6.     Serial.println(F("Can't get KX224 accel value"));
  7.   }

  8.   return (rc);
  9. }

  10. byte KX224::get_val(float *data)
  11. {
  12.   byte rc;
  13.   unsigned char val[6];
  14.   signed short acc[3];

  15.   rc = get_rawval(val);
  16.   if (rc != 0) {
  17.     return (rc);
  18.   }

  19.   acc[0] = ((signed short)val[1] << 8) | (val[0]);
  20.   acc[1] = ((signed short)val[3] << 8) | (val[2]);
  21.   acc[2] = ((signed short)val[5] << 8) | (val[4]);

  22.   // Convert LSB to g
  23.   data[0] = (float)acc[0] / _g_sens;
  24.   data[1] = (float)acc[1] / _g_sens;
  25.   data[2] = (float)acc[2] / _g_sens;

  26.   return (rc);  
  27. }
复制代码

串口输出结果
4.jpg

波形信息
5.jpg




回复

使用道具 举报

该用户从未签到

2248

主题

1万

帖子

1

精华

论坛元老

最后登录
2024-4-18
发表于 2018-11-20 10:57:21 | 显示全部楼层
牛牛。。。。。
回复

使用道具 举报

该用户从未签到

205

主题

1万

帖子

0

精华

论坛元老

最后登录
2023-6-10
发表于 2018-11-20 11:39:52 | 显示全部楼层
看看 logo.png
回复 支持 反对

使用道具 举报

该用户从未签到

205

主题

1万

帖子

0

精华

论坛元老

最后登录
2023-6-10
发表于 2018-11-20 11:40:28 | 显示全部楼层
不错
回复

使用道具 举报

该用户从未签到

49

主题

2250

帖子

0

精华

论坛元老

最后登录
2020-12-15
发表于 2018-11-21 10:26:50 | 显示全部楼层
666                  
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

Archiver|手机版|小黑屋|罗姆半导体技术社区

GMT+8, 2024-4-20 10:53 , Processed in 0.105412 second(s), 17 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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