找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: eagler8
打印 上一主题 下一主题
收起左侧

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)

  [复制链接]
801#
ID:513258 发表于 2019-7-3 15:35 | 只看该作者
模块规格
◎电压:5V
◎二级管反向保护,防止电源接反了
◎板上带有蓝色LED电源指示灯
◎模拟量输出
◎弯曲度越大输出电压越高
◎带有调零电位器
◎可以用电位器调节输出起始电压
◎输出模拟电压:0 ~ 3.5V(未验证)
◎板子背后印有引脚输出定义
◎弯曲应变片就可以改变输出电压
◎弯曲感测器(内含):
◎灵敏系数:2.0
◎应变极限:2%
◎导线长:约2cm
◎感测器尺寸:7.1(L)x 5(W)mm
◎基底材料:改性酚醛基底
◎栅丝材料:康铜
◎阻值:350欧姆
◎疲劳寿命:>10000000次
◎助焊剂:普通焊锡松香

回复

使用道具 举报

802#
ID:513258 发表于 2019-7-3 15:47 | 只看该作者
  1. /*
  2. 【Arduino】66种传感器模块系列实验(46)
  3. 实验四十六:350Ω高精度电阻式应变片传感器 (BF350箔式弯曲感测器)
  4. */

  5. void setup()
  6. {
  7.     Serial.begin(9600);
  8.     pinMode(A0,INPUT);
  9.     pinMode(13,OUTPUT);
  10. }

  11. void loop() {
  12.    Serial.println(analogRead(A0));
  13.    delay(50);
  14.   if (digitalRead(A0)) {
  15.     digitalWrite(13,LOW);
  16.   }
  17.   else {
  18.     digitalWrite(13,HIGH);
  19.     delay(500);
  20.   }
  21. }
复制代码


回复

使用道具 举报

803#
ID:513258 发表于 2019-7-3 16:08 | 只看该作者

回复

使用道具 举报

804#
ID:513258 发表于 2019-7-3 16:11 | 只看该作者

回复

使用道具 举报

805#
ID:513258 发表于 2019-7-3 16:55 | 只看该作者
实验四十七:七段LED数码管模块Seven Segment Display

七段数码管为常用显示数字的电子元件。因为借由七个发光二极管以不同组合来显示数字,所以称为七段数码管,而七划旁的点为它的“第八划”。一般的七段数码管拥有八个发光二极管用以显示十进制0至9的数字,也可以显示英文字母,包括十六进制和二十进制中的英文A至F(b,d,i为小写,其他为大写)。现时大部份的七段数码管会以斜体显示。




回复

使用道具 举报

806#
ID:513258 发表于 2019-7-3 16:58 | 只看该作者




回复

使用道具 举报

807#
ID:513258 发表于 2019-7-3 17:50 | 只看该作者
控制
七段数码管分为共阳极及共阴极,共阳极的七段数码管的正极(或阳极)为八个发光二极管的共有正极,其他接点为独立发光二极管的负极(或阴极),使用者只需把正极接电,不同的负极接地就能控制七段数码管显示不同的数字。共阴极的七段数码管与共阳极的只是接驳方法相反而已。七段数码管已可以特定的集成电路控制,只要向集成电路输入4-bit的二进制数字讯号就能控制七段数码管显示;市面上更有 8421-BCD 代码直接转为七划管控制电平的 IC,方便配合单片机使用。




回复

使用道具 举报

808#
ID:513258 发表于 2019-7-3 18:05 | 只看该作者
驱动方式
直流驱动------是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。优点是编程简单,显示亮度高,缺点是占用I/O端口多。

动态显示驱动------是将所有数码管通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示。将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。




回复

使用道具 举报

809#
ID:513258 发表于 2019-7-3 18:14 | 只看该作者
LED数码管简易测试方法
一个质量保证的LED数码管,其外观应该是做工精细、发光颜色均匀、无局部变色及无漏光等。对于不清楚性能好坏、产品型号及管脚排列的数码管,可采用下面介绍的简便方法进行检测。

1.干电池检测法。
如图所示,取两节普通1.5V干电池串联(3V)起来,并串联一个100Ω、1/8W的限流电阻器,以防止过电流烧坏被测LED数码管。将3V干电池的负极引线(两根引线均可接上小号鳄鱼夹)接在被测数码管的公共阴极上,正极引线依次移动接触各笔段电极(a~h脚)。当正极引线接触到某一笔段电极时,对应笔段就发光显示。用这种方法可以快速测出数码管是否有断笔(某一笔段不能显示)或连笔(某些笔段连在一起),并且可相对比较出不同的笔段发光强弱是否一致。若检测共阳极数码管,只需将电池的正、负极引线对调一下,方法同上。

如果将图中被测数码管的各笔段电极(a~h脚)全部短接起来,再接通测试用干电池,则可使被测数码管实现全笔段发光。对于质量保证的数码管,其发光颜色应该均匀,并且无笔段残缺及局部变色等。

如果不清楚被测数码管的结构类型(是共阳极还是共阴极)和引脚排序,可从被测数码管的左边第1脚开始,逆时针方向依次逐脚测试各引脚,使各笔段分别发光,即可测绘出该数码管的引脚排列和内部接线。测试时注意,只要某一笔段发光,就说明被测的两个引脚中有一个是公共脚,假定某一脚是公共脚不动,变动另一测试脚,如果另一个笔段发光,说明假定正确。这样根据公共脚所接电源的极性,可判断出被测数码管是共阳极还是共阴极。显然,公共脚如果接电池正极,则被测数码管为共阳极;公共脚如果接电池负极,则被测数码管应为共阴极。接下来测试剩余各引脚,即可很快确定出所对应的笔段来。




回复

使用道具 举报

810#
ID:513258 发表于 2019-7-3 18:22 | 只看该作者
2.万用表检测法。
这里以MF50型指针式万用表为例,说明具体检测方法:首先,按照图所示,将指针式万用表拨至“R×10k”电阻挡。由于LED数码管内部的发光二极管正向导通电压一般≥1.8V,所以万用表的电阻档应置于内部电池电压是15V(或9V)的“R×10k”挡,而不应置于内部电池电压是1.5V的 “R×100”或“R×1k”挡,否则无法正常测量发光二极管的正、反向电阻。然后,进行检测。在测图5(b)所示的共阴极数码管时,万用表红表笔(注意:红表笔接表内电池负极、黑表笔接表内电池正极)应接数码管的“-”公共端,黑表笔则分别去接各笔段电极(a~h脚);对于共阳极的数码管,黑表笔应接数码管的“+”公共端,红表笔则分别去接a~h脚。正常情况下,万用表的指针应该偏转(一般示数在100kΩ以内),说明对应笔段的发光二极管导通,同时对应笔段会发光。若测到某个管脚时,万用表指针不偏转,所对应的笔段也不发光,则说明被测笔段的发光二极管已经开路损坏。与干电池检测法一样,采用万用表检测法也可对不清楚结构类型和引脚排序的数码管进行快速检测。




回复

使用道具 举报

811#
ID:513258 发表于 2019-7-3 18:36 | 只看该作者
LED数码管使用常识
1.LED数码管一般要通过专门的译码驱动电路,才能正常显示字符。由于LED数码管的品种和类型繁多,所以在实际使用时应注意根据电路的不同选择不同类型的管子。例如,共阴极的LED数码管,只能接入输出为高电平的译码驱动电路;共阳极的LED数码管,只能接入输出为低电平的译码驱动电路。动态扫描显示电路的输出端,只能接多位动态LED数码管。
2.各厂家或同一厂家生产的不同型号的LED数码管,即使封装尺寸完全相同,其性能和引脚排列有可能大相径庭。反过来,功能和引脚排列相同的LED数码管,外形尺寸往往有大有小。所以选用或代换LED数码管时,只能以它的型号为根据。表3给出了国产BS×××系列LED数码管与国内外其他同类产品的直接代换型号,可供参考。
3.LED数码管属于电流控制型器件,它的发光亮度与工作电流成正比。实际使用时,每段笔划的工作电流取5~15mA(指普通小型管),这样既可保证亮度适中,延长使用寿命,又不会损坏数码管。如果在大电流下长期使用,容易使数码管亮度衰退,降低使用寿命,过大的电流(指超过内部发光二极管所允许的极限值)还会烧毁数码管。为了防止过大电流烧坏数码管,在电路中使用时一定要注意给它串联上合适的限流电阻器。
4.使用LED数码管时必须注意区分普通亮度数码管和高亮度数码管。通常情况下,用高亮度数码管可以代换现有设备上的普通亮度数码管,但反过来不能用普通亮度数码管代换高亮度数码管。这是因为普通亮度数码管的发光强度IV≥0.15mcd(毫坎),而高亮度数码管的发光强度IV≥5mcd,两者相差悬殊,并且普通亮度数码管每个笔段的工作电流≥5mA,而高亮度数码管在大约1mA的工作电流下即可发光。
5.在挑选国产BS×××系列LED数码管时,应注意产品型号标注的末位编号,以便与译码驱动电路等相匹配。通常产品末位数字是偶数的,为共阳极数码管,如BS206、BS244等;若产品末位数字是奇数,则为共阴极数码管,如BS205、BS325等。但也有个别产品例外,应注意区分。型号后缀字母 “R”,表示发红光;后缀字母“G”,表示发绿光;后缀字母“OR”,表示发橙光。
6.小型LED数码管为一次性产品,即使其中一个笔段的发光二极管在使用中损坏,也只能更换新管。曾见某图书介绍修复数码管内部损坏发光二极管的方法,笔者亲自动手实践,发现根本行不通,只会是徒劳的。因为采用环氧树脂灌封的全密封产品,外壳根本无法打开,强行用刀切割,随着面板的四分五裂,里面的电路和光导材料早已被破坏得面目全非了。
7.LED数码管除了常用的“8”字形数码管以外,较常见的还有图6所示的“±1”数字管、“N”形管和“米”字管等。其中,“±1”数字管能够显示 “+1”和“-1”,以及小数点“.”。“N”形管除了具有“8”字形数码管的功能外,还能够显示字母“N”等。“米”字管功能最全,除显示数学运算符号 “+”、“-”、“×”、“÷”之外,还可显示A~Z共26个英文字母,常用作单位符号显示。
8. LED数码管的显示面在出厂时贴有保护膜,在使用时可以撕下来。不要用尖硬物去碰触显示面,以免造成划痕等物理损伤,影响显示效果。焊接小型LED数码管宜用20W左右的小功率电烙铁,焊接时间一般不要超过3s,以免烫坏器件本身或线路板。




回复

使用道具 举报

812#
ID:513258 发表于 2019-7-3 18:59 | 只看该作者
一位盆友送我的8个数码管






回复

使用道具 举报

813#
ID:513258 发表于 2019-7-3 19:31 | 只看该作者

回复

使用道具 举报

814#
ID:513258 发表于 2019-7-3 19:33 | 只看该作者

回复

使用道具 举报

815#
ID:513258 发表于 2019-7-3 20:15 | 只看该作者
本帖最后由 eagler8 于 2019-7-5 08:47 编辑
  1. /*
  2. 【Arduino】66种传感器模块系列实验(47)
  3. 实验四十七:七段LED数码管模块  之一
  4. 在这个实验中,我们将只需逐段点亮和熄灭关闭LED,来熟悉七段数码管的工作原理
  5. 使用共阳数码管
  6. */

  7. void setup()
  8. {
  9. pinMode(2,OUTPUT);
  10. pinMode(3,OUTPUT);
  11. pinMode(4,OUTPUT);
  12. pinMode(5,OUTPUT);
  13. pinMode(6,OUTPUT);
  14. pinMode(7,OUTPUT);
  15. pinMode(8,OUTPUT);
  16. }

  17. void loop()
  18. {
  19.   for(int i=2;i<9;i++)
  20.   {
  21.     digitalWrite(i,HIGH);
  22.     delay(600);
  23.   }
  24.   
  25.   for(int i=2;i<9;i++)
  26.   {
  27.     digitalWrite(i,LOW);
  28.     delay(600);
  29.   }  
  30.   delay(1000);
  31. }
复制代码

回复

使用道具 举报

816#
ID:513258 发表于 2019-7-3 20:21 | 只看该作者
本帖最后由 eagler8 于 2019-7-5 09:03 编辑

接线

在该电路中,七段数码管的引脚连接到Arduino引脚2-9,如下表所示。公共引脚(引脚3和引脚8)连接到VCC,dp没有连接,因为此实验未使用dp。

七段数码管引脚
Arduino引脚
备注
1(e)
6

2(d)
5

3,8(COM)
VCC
共阳极
4(C )
4

5(dp)
-
6(b)
3

7(a)
2
9(F)
7

10(g)
8

七段
回复

使用道具 举报

817#
ID:513258 发表于 2019-7-3 20:24 | 只看该作者
  1. /*
  2. 【Arduino】66种传感器模块系列实验(47)
  3. 实验四十七:七段LED数码管模块  之三
  4. */

  5. int pinDigitron = 2; //管脚D2连接到数码管的A脚,D3连B... D9连h

  6. void setup() {
  7.   for(int x=0; x<8; x++)
  8.     pinMode(pinDigitron+x, OUTPUT); //设置各脚为输出状态
  9. }

  10. //在数码管中显示数字的函数
  11. void displayDigit(unsigned char digit) {
  12.   //定义一个数组表:不同数字的abcdefgh各段的取值
  13.   unsigned char abcdefgh[][8] = {
  14.     {1,1,1,1,1,1,0,0},  //0
  15.     {0,1,1,0,0,0,0,0},  //1
  16.     {1,1,0,1,1,0,1,0},  //2
  17.     {1,1,1,1,0,0,1,0},  //3
  18.     {0,1,1,0,0,1,1,0},  //4
  19.     {1,0,1,1,0,1,1,0},  //5
  20.     {1,0,1,1,1,1,1,0},  //6
  21.     {1,1,1,0,0,0,0,0},  //7
  22.     {1,1,1,1,1,1,1,0},  //8
  23.     {1,1,1,1,0,1,1,0},  //9
  24.     {1,1,1,0,1,1,1,0},  //A
  25.     {0,0,1,1,1,1,1,0},  //b
  26.     {1,0,0,1,1,1,0,0},  //C
  27.     {0,1,1,1,1,0,1,0},  //d
  28.     {1,0,0,1,1,1,1,0},  //E
  29.     {1,0,0,0,1,1,1,0},  //F
  30.   };
  31.   
  32.   if ( digit >= 16 ) return;
  33.   for (unsigned char x=0; x<8; x++)
  34.     digitalWrite( pinDigitron + x, abcdefgh[digit][x] );
  35. }

  36. void loop() {
  37.    //在数码管中显示0-9,A-F各个数字
  38.    for (int x=0; x<16; x++) {
  39.      displayDigit(x);  //调用displayDigit()子函数,显示数字
  40.      delay(1000); //等待1000毫秒
  41.    }
  42. }
复制代码


回复

使用道具 举报

818#
ID:513258 发表于 2019-7-3 20:30 | 只看该作者
  1. /*
  2. 【Arduino】66种传感器模块系列实验(47)
  3. 实验四十七:七段LED数码管模块  之四
  4. */

  5. const int a = 7; //a连接到数字引脚7
  6. const int b = 6; // b连接到数字引脚6
  7. const int c = 5; //c 连接到数字引脚5
  8. const int d = 11; //d连接到数字引脚11
  9. const int e = 10; //e  连接到数字引脚 10
  10. const int f = 8; //f  连接到数字引脚 8
  11. const int g = 9; //g  连接到数字引脚 9
  12. const int dp = 4; //dp  连接到数字引脚 4

  13. void setup()
  14. {
  15.   //从4到11循环,并将它们全部初始化为 输出
  16.   for (int thisPin = 4; thisPin <= 11; thisPin++)
  17.   {
  18.     pinMode(thisPin, OUTPUT);
  19.   }
  20.   digitalWrite(dp, LOW); //从4到11循环,并将它们全部输出
  21. }

  22. /*********以下为数码管 1-f 的显示函数*********/
  23. void digital_1(void) //显示 1 函数
  24. {
  25.   digitalWrite(c, HIGH); //数码管c段为高电平
  26.   digitalWrite(b, HIGH); //数码管b段为高电平
  27.   for (int j = 7; j <= 11; j++) //数码管其余段为低电平
  28.     digitalWrite(j, LOW);
  29. }
  30. void digital_2(void)
  31. {
  32.   digitalWrite(b, HIGH);
  33.   digitalWrite(a, HIGH);
  34.   for (int j = 9; j <= 11; j++)
  35.     digitalWrite(j, HIGH);
  36.   digitalWrite(c, LOW);
  37.   digitalWrite(f, LOW);
  38. }
  39. void digital_3(void)
  40. {
  41.   unsigned char j;
  42.   digitalWrite(g, HIGH);
  43.   digitalWrite(d, HIGH);
  44.   for (j = 5; j <= 7; j++)
  45.     digitalWrite(j, HIGH);
  46.   digitalWrite(f, LOW);
  47.   digitalWrite(e, LOW);
  48. }
  49. void digital_4(void)
  50. {
  51.   digitalWrite(c, HIGH);
  52.   digitalWrite(b, HIGH);
  53.   digitalWrite(f, HIGH);
  54.   digitalWrite(g, HIGH);
  55.   digitalWrite(a, LOW);
  56.   digitalWrite(e, LOW);
  57.   digitalWrite(d, LOW);
  58. }
  59. void digital_5(void)
  60. {
  61.   unsigned char j;
  62.   for (j = 7; j <= 9; j++)
  63.     digitalWrite(j, HIGH);
  64.   digitalWrite(c, HIGH);
  65.   digitalWrite(d, HIGH);
  66.   digitalWrite(b, LOW);
  67.   digitalWrite(e, LOW);
  68. }
  69. void digital_6(void)
  70. {
  71.   unsigned char j;
  72.   for (j = 7; j <= 11; j++)
  73.     digitalWrite(j, HIGH);
  74.   digitalWrite(c, HIGH);
  75.   digitalWrite(b, LOW);
  76. }
  77. void digital_7(void)
  78. {
  79.   unsigned char j;
  80.   for (j = 5; j <= 7; j++)
  81.     digitalWrite(j, HIGH);
  82.   for (j = 8; j <= 11; j++)
  83.     digitalWrite(j, LOW);
  84. }
  85. void digital_8(void)
  86. {
  87.   unsigned char j;
  88.   for (j = 5; j <= 11; j++)
  89.     digitalWrite(j, HIGH);
  90. }
  91. void digital_9(void)
  92. {
  93.   unsigned char j;
  94.   for (j = 5; j <= 9; j++)
  95.     digitalWrite(j, HIGH);
  96.   digitalWrite(d, LOW);
  97.   digitalWrite(e, LOW);
  98. }
  99. void digital_A(void)
  100. {
  101.   unsigned char j;
  102.   for (j = 5; j <= 10; j++)
  103.     digitalWrite(j, HIGH);
  104.   digitalWrite(d, LOW);
  105. }
  106. void digital_b(void)
  107. {
  108.   unsigned char j;
  109.   for (j = 7; j <= 11; j++)
  110.     digitalWrite(j, HIGH);
  111.   digitalWrite(a, LOW);
  112.   digitalWrite(b, LOW);
  113. }
  114. void digital_C(void)
  115. {
  116.   digitalWrite(a, HIGH);
  117.   digitalWrite(b, LOW);
  118.   digitalWrite(c, LOW);
  119.   digitalWrite(d, HIGH);
  120.   digitalWrite(e, HIGH);
  121.   digitalWrite(f, HIGH);
  122.   digitalWrite(g, LOW);
  123. }
  124. void digital_d(void)
  125. {
  126.   unsigned char j;
  127.   digitalWrite(a, LOW);
  128.   digitalWrite(f, LOW);
  129.   digitalWrite(b, HIGH);
  130.   digitalWrite(c, HIGH);
  131.   digitalWrite(j, HIGH);
  132.   for (j = 9; j <= 11; j++)
  133.     digitalWrite(j, HIGH);
  134. }
  135. void digital_E(void)
  136. {
  137.   unsigned char j;
  138.   digitalWrite(b, LOW);
  139.   digitalWrite(c, LOW);
  140.   for (j = 7; j <= 11; j++)
  141.     digitalWrite(j, HIGH);
  142. }
  143. void digital_F(void)
  144. {
  145.   unsigned char j;
  146.   digitalWrite(b, LOW);
  147.   digitalWrite(c, LOW);
  148.   digitalWrite(d, LOW);
  149.   for (j = 7; j <= 10; j++)
  150.     digitalWrite(j, HIGH);
  151. }

  152. void loop()
  153. {
  154.   digital_1();//显示1
  155.   delay(1000);//延时1秒
  156.   digital_2();//显示2
  157.   delay(1000);
  158.   digital_3();//显示3
  159.   delay(1000);
  160.   digital_4();//显示4
  161.   delay(1000);
  162.   digital_5();//显示5
  163.   delay(1000);
  164.   digital_6();//显示6
  165.   delay(1000);
  166.   digital_7();//显示7
  167.   delay(1000);
  168.   digital_8();//显示8
  169.   delay(1000);
  170.   digital_9();//显示9
  171.   delay(1000);
  172.   digital_A();//显示a
  173.   delay(1000);
  174.   digital_b();//显示b
  175.   delay(1000);
  176.   digital_C();//显示c
  177.   delay(1000);
  178.   digital_d();//显示d
  179.   delay(1000);
  180.   digital_E();//显示e
  181.   delay(1000);
  182.   digital_F();//显示f
  183.   delay(1000);
  184. }
复制代码


回复

使用道具 举报

819#
ID:532564 发表于 2019-7-4 17:10 | 只看该作者
楼主请收下我的膝盖
回复

使用道具 举报

820#
ID:513258 发表于 2019-7-5 06:10 | 只看该作者
stephanie_han 发表于 2019-7-4 17:10
楼主请收下我的膝盖

早上好,谢谢鼓励
回复

使用道具 举报

821#
ID:513258 发表于 2019-7-5 11:02 | 只看该作者

回复

使用道具 举报

822#
ID:513258 发表于 2019-7-5 11:06 | 只看该作者

回复

使用道具 举报

823#
ID:513258 发表于 2019-7-5 11:08 | 只看该作者

回复

使用道具 举报

824#
ID:513258 发表于 2019-7-5 11:22 | 只看该作者
实验四十八:GY-291 数字三轴重力加速度倾斜度模块 (IIC/SPI传输)

ADXL345
ADXL345是一款小而薄的低功耗3轴加速度计,分辨率高(13位),测量范围达±16g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度。其高分辨率(4 mg/LSB),能够测量不到1.0°的倾斜角度变化。该器件提供多种特殊检测功能。活动和非活动检测功能检测有无运动发生,以及任意轴上的加速度是否超过用户设置的限值。敲击检测功能可以检测单击和双击动作。自由落体检测功能可以检测器件是否正在掉落。这些功能可以映射到两个中断输出引脚中的一个。正在申请专利的32级先进先出(FIFO)缓冲器可用于存储数据,最大程度地减少主机处理器的干预。低功耗模式支持基于运动的智能电源管理,从而以极低的功耗进行阈值感测和运动加速度测量。

ADXL345采用3 mm × 5 mm × 1 mm、14引脚小型超薄塑料封装。




回复

使用道具 举报

825#
ID:513258 发表于 2019-7-5 11:33 | 只看该作者

回复

使用道具 举报

826#
ID:513258 发表于 2019-7-5 12:28 | 只看该作者

回复

使用道具 举报

827#
ID:513258 发表于 2019-7-5 12:36 | 只看该作者

回复

使用道具 举报

828#
ID:513258 发表于 2019-7-5 13:15 | 只看该作者
主要特性
超低功耗:V S = 2.5 V 时(典型值),测量模式下低至23ì A ,
待机模式下为0.1μA
功耗随带宽自动按比例变化
用户可选的分辨率
10 位固定分辨率
全分辨率,分辨率随g范围提高而提高,± 16g 时高达13 位
(在所有g范围内保持4 mg/L S B 的比例系数)
正在申请专利的嵌入式存储器管理系统采用FI FO 技术,可将
主机处理器负荷降至最低
单振/双振检测
活动/非活动监控
自由落体检测
电源电压范围:2.0 V 至3.6 V
I / O电压范围:1.7 V 至V S
S PI (3线和4线)和I 2 C数字接口
灵活的中断模式,可映射到任一中断引脚
通过串行命令可选测量范围
通过串行命令可选带宽
宽温度范围(- 40° C 至+ 85 ℃)
抗冲击能力:10, 000 g
无铅/符合Ro HS标准



回复

使用道具 举报

829#
ID:513258 发表于 2019-7-5 13:49 | 只看该作者
工作原理
ADXL345是一款完整的3轴加速度测量系统,可选择的测量范围有±2 g,±4 g,±8 g或±16 g。既能测量运动或冲击导致的动态加速度,也能测量静止加速度,例如重力加速度,使得器件可作为倾斜传感器使用。该传感器为多晶硅表面微加工结构,置于晶圆顶部。由于应用加速度,多晶硅弹簧悬挂于晶圆表面的结构之上,提供力量阻力。差分电容由独立固定板和活动质量连接板组成,能对结构偏转进行测量。加速度使惯性质量偏转、差分电容失衡,从而传感器输出的幅度与加速度成正比。相敏解调用于确定加速度的幅度和极性。



回复

使用道具 举报

830#
ID:513258 发表于 2019-7-5 14:04 | 只看该作者

回复

使用道具 举报

831#
ID:513258 发表于 2019-7-5 14:15 | 只看该作者

回复

使用道具 举报

832#
ID:513258 发表于 2019-7-5 14:24 | 只看该作者
ADXL345三轴加速度模块
采用ADXL345芯片,具有体积小,功耗低的特点,13位数字精度分辨能够测量超过±16g的加速度变换。信号输出为16位数字输出,可以通过SPI与I2C接口实现信号采集。ADXL345适用于倾斜角度测量,能够进行静态重力加速度检测。同时也适用于运动状态的追踪,测量运动或冲击过程造成的瞬时加速度。其高分辨率(4mg/LSB)使之能够感应变化小于1°的倾斜角度。ADXL345三轴加速度计还内置一款LDO模块让你的加速度计能够工作于3.3~6v的工作电压之下。同时传感器提供了几个特殊的功能。能够在静态或动态情况下检测是否有运动或停止出现,另外能够感知单轴的加速度值是否超出用户的设定值。检测单击/双击。如果该设备正在下降,能进行自由落体感应检测。这些功能能够被映射到两个中断输出引脚上。在低功耗模式是用户能够基于ADXL345动作感应,进行电源管理,同时只损耗极低的功耗。




回复

使用道具 举报

833#
ID:513258 发表于 2019-7-5 14:31 | 只看该作者
模块的电原理图



回复

使用道具 举报

834#
ID:513258 发表于 2019-7-5 15:37 | 只看该作者



回复

使用道具 举报

835#
ID:513258 发表于 2019-7-5 15:40 | 只看该作者

回复

使用道具 举报

836#
ID:513258 发表于 2019-7-5 15:41 | 只看该作者

回复

使用道具 举报

837#
ID:513258 发表于 2019-7-5 16:09 | 只看该作者
  1. /*
  2. 【Arduino】66种传感器模块系列实验(48)
  3. 实验四十八:GY-291 数字三轴重力加速度倾斜度模块 (IIC/SPI传输)
  4. 简单实验,之一
  5. */

  6. void setup()
  7. {
  8. Serial.begin(9600);     
  9. pinMode(A4, INPUT);
  10. pinMode(A5, INPUT);
  11. }

  12. void loop()
  13. {
  14. Serial.println(analogRead(A4));
  15. Serial.println(analogRead(A5));

  16. delay(100);
  17. }
复制代码


回复

使用道具 举报

838#
ID:513258 发表于 2019-7-5 16:11 | 只看该作者

回复

使用道具 举报

839#
ID:513258 发表于 2019-7-5 16:13 | 只看该作者

回复

使用道具 举报

840#
ID:513258 发表于 2019-7-5 16:58 | 只看该作者
  1. /*
  2. 【Arduino】66种传感器模块系列实验(48)
  3. 实验四十八:GY-291 数字三轴重力加速度倾斜度模块 (IIC/SPI传输)
  4. 实验代码之二
  5. */

  6. #include <Wire.h>

  7. #define DEVICE (0x53)  
  8. #define TO_READ (6)   

  9. byte buff[TO_READ] ;      
  10. char str[512];            
  11. int regAddress = 0x32;     
  12. int x, y, z;                        
  13. double roll = 0.00, pitch = 0.00;      

  14. void setup() {
  15.   Wire.begin();         
  16.   Serial.begin(9600);  
  17.   
  18.   writeTo(DEVICE, 0x2D, 0);      
  19.   writeTo(DEVICE, 0x2D, 16);
  20.   writeTo(DEVICE, 0x2D, 8);
  21. }

  22. void loop() {

  23.   readFrom(DEVICE, regAddress, TO_READ, buff);
  24.                                              
  25.   x = (((int)buff[1]) << 8) | buff[0];   
  26.   y = (((int)buff[3])<< 8) | buff[2];
  27.   z = (((int)buff[5]) << 8) | buff[4];

  28.   //we send the x y z values as a string to the serial port
  29.   Serial.print("The acceleration info of x, y, z are:");
  30.   sprintf(str, "%d %d %d", x, y, z);  
  31.   Serial.print(str);
  32.   Serial.write(10);
  33.   
  34.   RP_calculate();
  35.   Serial.print("Roll:"); Serial.println( roll );
  36.   Serial.print("Pitch:"); Serial.println( pitch );
  37.   Serial.println("");
  38.   
  39.   delay(300);
  40. }

  41. void writeTo(int device, byte address, byte val) {
  42.   Wire.beginTransmission(device);
  43.   Wire.write(address);        
  44.   Wire.write(val);      
  45.   Wire.endTransmission();
  46. }

  47. void readFrom(int device, byte address, int num, byte buff[]) {
  48.   Wire.beginTransmission(device);
  49.   Wire.write(address);        
  50.   Wire.endTransmission();

  51.     Wire.beginTransmission(device);
  52.   Wire.requestFrom(device, num);   

  53.   int i = 0;
  54.   while(Wire.available())   
  55.   {
  56.     buff[i] = Wire.read();
  57.     i++;
  58.   }
  59.   Wire.endTransmission();
  60. }

  61. void RP_calculate(){
  62.   double x_Buff = float(x);
  63.   double y_Buff = float(y);
  64.   double z_Buff = float(z);
  65.   roll = atan2(y_Buff , z_Buff) * 57.3;
  66.   pitch = atan2((- x_Buff) , sqrt(y_Buff * y_Buff + z_Buff * z_Buff)) * 57.3;
  67. }
复制代码


回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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