0°

Arduino内置教程-传感器-ADXL3xx加速度计

这个教程示范怎么读取ADXL3xx系列的模拟加速计设备(如ADXL320, ADXL321, ADXL322, ADXL330),并且通过IDE串口监视器或者其他应用传达加速度到个人电脑里。

简介

  • 这个教程示范怎么读取ADXL3xx系列的模拟加速计设备(如ADXL320, ADXL321, ADXL322, ADXL330),并且通过IDE串口监视器或者其他应用传达加速度到个人电脑里。
  • 这个教程是用Sparkfun的开源板。adafruit加速计开源板同样可以工作,尽管需要不同的连线。
  • ADXL3xx的输出(加速计的每个轴)是作为模拟电压输出,范围在0到5V之间。你只需要用analogRead()读取这个值。

硬件要求

  • Arduino or Genuino 开发板
  • ADXL3xx 加速计

电路

这个加速计用很少电路,所以它能插在你的开发板上直接运行。为了实现这个目的,你要用三个模拟输出引脚作为数字I/O引脚,为加速计提供电源和地,还有自检引脚。你要用其他三个模拟输入引脚来读取加速计的模拟输出。

Arduino内置教程-传感器-ADXL3xx

原理图

Arduino内置教程-传感器-ADXL3xx

  • 这是引脚配置连接表格:
Breakout Board Pin Self-Test Z-Axis Y-Axis X-Axis Ground VDD
Arduino Analog Input Pin 0 1 2 3 4 5
  • 或者如果你只用加速计:
ADXL3xx Pin Self-Test ZOut YOut XOut Ground VDD
Arduino Pin None (unconnected) Analog Input 1 Analog Input 2 Analog Input 3 GND 5V
  • 注意有些加速计用3.3V电源,可能会被5V电源损伤。检查供应商的记录,找出哪种电压合适。

样例代码

  • 加速计连接用作提供电源的两个引脚pin4和pin5在程序的开始被定义为常量。而实际操作引脚是作为数字I/O引脚pin18和pin19使用。如果需要,A0是D14,A1是D15等等。
const int groundpin = 18; 
const int powerpin = 19; 
  • 设置pin19(A5)为高电平,pin18(A4)为低电平来提供5V给加速计(加速计工作只需要微量电流)。
pinMode(groundpin, OUTPUT); 
pinMode(powerpin, OUTPUT); 
digitalWrite(groundpin, LOW); 
digitalWrite(powerpin, HIGH); 
  • 这个方法允许Sparkfun的开源板直接连接到Arduino或者Genuino开发板。不同板可能要连接到标准的5V或者3.3V和地引脚。在接下来的状况,这个代码可能在void setup()部分改进。
/*
 ADXL3xx
 The circuit:
 analog 0: accelerometer self test
 analog 1: z-axis
 analog 2: y-axis
 analog 3: x-axis
 analog 4: ground
 analog 5: vcc

 created 2 Jul 2008
 by David A. Mellis
 modified 30 Aug 2011
 by Tom Igoe

 This example code is in the public domain.

*/

// these constants describe the pins. They won't change:
const int groundpin = 18;             // analog input pin 4 -- ground
const int powerpin = 19;              // analog input pin 5 -- voltage
const int xpin = A3;                  // x-axis of the accelerometer
const int ypin = A2;                  // y-axis
const int zpin = A1;                  // z-axis (only on 3-axis models)

void setup() {
  // initialize the serial communications:
  Serial.begin(9600);

  // Provide ground and power by using the analog inputs as normal
  // digital pins.  This makes it possible to directly connect the
  // breakout board to the Arduino.  If you use the normal 5V and
  // GND pins on the Arduino, you can remove these lines.
  pinMode(groundpin, OUTPUT);
  pinMode(powerpin, OUTPUT);
  digitalWrite(groundpin, LOW);
  digitalWrite(powerpin, HIGH);
}

void loop() {
  // print the sensor values:
  Serial.print(analogRead(xpin));
  // print a tab between values:
  Serial.print("\t");
  Serial.print(analogRead(ypin));
  // print a tab between values:
  Serial.print("\t");
  Serial.print(analogRead(zpin));
  Serial.println();
  // delay before next reading:
  delay(100);
}

数据

  • 这里是一些由ADXL322 2g加速计对地角度采集的y轴加速读取值。这些值应该和其他轴的一样,只不过变化取决于设备的精度。在水平轴(即是和地平行或者0°),加速计读取值应该大约是512,但这些在其他角度的值可能伴随不同加速计而不同。(如ADXL302 5g)。
Angle -90 -80 -70 -60 -50 -40 -30 -20 -10 0
Acceleration 662 660 654 642 628 610 589 563 537 510
Angle 0 10 20 30 40 50 60 70 80 90
Acceleration 510 485 455 433 408 390 374 363 357 355

 

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论