|
[项目] 【花雕学编程】Arduino动手做(239)---ADXL335三轴6个小实验 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百三十九:GY-61 ADXL335模拟量加速度模块 倾斜角度三轴加速度传感器 项目之四:使用按键的自动校准功能 静态校准: 与所有传感器一样,这些加速度计的样本之间的输出存在一些差异。对于非关键应用,例如游戏控制器或简单的运动或倾斜传感器,这些变化并不重要。但对于需要精确测量的应用,最好根据可靠的参考进行校准。 重力作为校准参考 加速度以重力或“G”为单位测量,其中 1G 代表地球表面的引力。尽管您可能听说过,但重力是一种非常稳定的力,如果您碰巧是居住在地表的地球人,它可以成为方便可靠的校准参考。 校准方法: 要将传感器校准到重力参考,您需要确定每个轴与引力轴精确对齐时的传感器输出。实验室质量校准使用精密定位夹具。这里描述的方法很简单,并且给出了非常好的结果。 ![]() |
![]() ![]() 运行校准程序 将代码加载到 Arduino 上并运行它。 打开 串行监视器。 将带有传感器的试验板放在平坦的表面上 按住该按钮,直到您在串行监视器中看到“校准”。 这将校准 z 轴的最小值。 将试验板放在前边缘,然后再次按下按钮。校准 +Y 对其他三个边重复此作,以校准 +x、-y 和 -x。 将试验板倒置并再次按下按钮以校准 +z。(提示,桌子的底部可以很好地稳定它。 校准程序输出: 校准后,输出将显示每个轴的校准原始范围,然后是测得的“G”力。原始范围可用作草图中的常量。 原始范围: X: 408-616, Y: 398-610, Z: 422-625 511, 511, 625 : : -0.01G, 0.07G, 1.00G 原始范围: X: 408-616, Y: 398-610, Z: 422-625 511, 511, 625 :: -0.01G, 0.07G, 1.00G 原始范围: X: 408-616, Y: 398-610, Z: 422-625 511, 511, 625 :: -0.01G, 0.07G, 1.00G 原始范围: X: 408-616, Y: 398-610, Z: 422-625 511, 511, 625 :: -0.01G, 0.07G, 1.00G 原始范围: X: 408-616, Y: 398-610, Z: 422-625 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百三十九:GY-61 ADXL335模拟量加速度模块 倾斜角度三轴加速度传感器 项目之四:使用按键的自动校准功能 实验开源代码
|
代码解读 这段代码使用 加速度传感器 采集 X、Y、Z 轴数据,并提供 自动校准功能,核心逻辑如下: 1. 初始化传感器 ✅ const int xInput = A0; → X 轴连接 A0 ✅ const int yInput = A1; → Y 轴连接 A1 ✅ const int zInput = A2; → Z 轴连接 A2 ✅ const int buttonPin = 2; → 按钮用于触发自动校准 ✅ analogReference(EXTERNAL); → 使用外部参考电压,提高精度 2. 读取加速度数据 ✅ ReadAxis(xInput); → 采集 X 轴的电压数据 ✅ ReadAxis(yInput); → 采集 Y 轴的电压数据 ✅ ReadAxis(zInput); → 采集 Z 轴的电压数据 ✅ 多次采样(10 次)求平均值,减少噪声 3. 自动校准 ✅ 按下按钮时调用 AutoCalibrate(),动态调整 最小/最大值 ✅ 不断更新 xRawMin、xRawMax 等范围,提高测量精度 4. 数据转换 ✅ map(xRaw, xRawMin, xRawMax, -1000, 1000); → 将 ADC 值转换为 milli-G(±1G) ✅ / 1000.0 → 转换为 G(加速度单位) 5. 串口输出 ✅ Serial.print("Raw Ranges: X: "); Serial.print(xRawMin); → 打印 X 轴的最小/最大值 ✅ 以 G 为单位显示加速度数据,格式化输出 6. 采集间隔 ✅ delay(500); → 每 500 毫秒更新一次数据,适合实时监测 这段代码让 加速度传感器能够动态校准并稳定采集数据 |
实验开源代码
|
代码简单解读 这段代码使用 ADXL335 加速度传感器 读取 X、Y、Z 轴加速度,并计算 球坐标参数(ρ、φ、θ),核心逻辑如下: 1. 初始化加速度传感器 ✅ ADXL335 accel(pin_x, pin_y, pin_z, aref); → 定义 ADXL335 传感器,并设定引脚和参考电压 2. 采集加速度数据 ✅ accel.update(); → 更新传感器数据 ✅ accel.getX(); → 获取 X 轴加速度 ✅ accel.getY(); → 获取 Y 轴加速度 ✅ accel.getZ(); → 获取 Z 轴加速度 3. 计算球坐标 ✅ accel.getRho(); → 计算径向距离(ρ) ✅ accel.getPhi(); → 计算方位角(φ) ✅ accel.getTheta(); → 计算极角(θ) 4. 格式化数据并输出 ✅ formatFloat(x, 2, &string_width); → 格式化浮点数 ✅ Serial.print(); → 将数据打印到串口监视器 5. 采集间隔 ✅ delay(1000); → 每秒更新一次数据 这段代码让 ADXL335 传感器不断采集加速度数据,并格式化输出到串口。 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百三十九:GY-61 ADXL335模拟量加速度模块 倾斜角度三轴加速度传感器 项目之六:使用 OLED 显示屏显示实时运动状态 实验开源代码
|
代码简单解读 这段代码使用 ADXL335 加速度传感器 通过 Arduino 采集 X、Y、Z 轴加速度数据,并使用 OLED 显示屏 显示实时运动状态,核心逻辑如下: 1. 传感器数据采集 ✅ analogRead(X_PIN); → 读取 X 轴模拟输入 ✅ analogRead(Y_PIN); → 读取 Y 轴模拟输入 ✅ analogRead(Z_PIN); → 读取 Z 轴模拟输入 ✅ 将原始 ADC 值转换为加速度(单位:m/s²) 2. 串口输出 ✅ Serial.print(); → 格式化并输出 X、Y、Z 轴加速度 ✅ 确保单位为 m/s²,提高数据可读性 3. OLED 显示 ✅ 使用 oledDisplayAcceleration(xAcc, yAcc, zAcc); 显示数据 ✅ 优化文字排版,确保信息清晰可见 4. 采集间隔 ✅ delay(200); → 适当延迟,防止 OLED 频繁刷新 这段代码让 Arduino 读取加速度数据,并实时显示在 OLED 屏幕上。 |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed