226| 29
|
[项目] 【花雕学编程】Arduino动手做(239)---GY-61 ADXL335三轴模块 |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百三十九:GY-61 ADXL335模拟量加速度模块 倾斜角度三轴加速度传感器 项目之四:使用按键的自动校准功能 实验开源代码
|
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百三十九:GY-61 ADXL335模拟量加速度模块 倾斜角度三轴加速度传感器 项目之三:使用模拟电压计算出设备的滚动和俯仰的数值 实验开源代码
|
ADXL335加速度计连接到 Arduino UNO 首先将加速计放在试验板上。将 VCC 引脚连接到 Arduino 的 5V 引脚,将 GND 引脚连接到 Arduino 的 Ground 引脚。将 X、Y 和 Z 输出连接到 Arduino 的模拟引脚 A0、A1 和 A2。 这里更改 Arduino 的模拟参考 (AREF) 电压才能获得精确的结果。这可以通过将 Arduino 的 3.3V 引脚连接到 AREF 引脚来实现。 【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百三十九:GY-61 ADXL335模拟量加速度模块 倾斜角度三轴加速度传感器 项目之二:更改Arduino 的模拟参考 AREF 电压 获得精确结果 实验开源代码
|
ADXL335 概述 ADXL335 是一款由美国模拟器件公司(ADI)推出的低成本、小尺寸、低功耗的三轴加速度传感器。ADXL335 是一款小尺寸、薄型、低功耗、完整的三轴加速度计,提供经过信号调理的电压输出,能以最小±3 g 的满量程范围测量加速度。它可以测量倾斜检测应用中的静态重力加速度,以及运动、冲击或振动导致的动态加速度。用户使用 CX、CY和 CZ引脚上的电容 XOUT、YOUT和 ZOUT选择该加速度计的带宽。可以根据应用选择合适的带宽,X 轴和 Y 轴的带宽范围为 0.5 Hz 至 1600 Hz,Z 轴的带宽范围为0.5 Hz 至 550 Hz。ADXL335 提供小尺寸、薄型、16 引脚、4 mm × 4 mm × 1.45 mm 塑料引脚架构芯片级封装(LFCSP_LQ)。 1、主要特点 测量范围:可测量三个轴向(X、Y、Z)的加速度,每个轴的测量范围为 ±3g。 高灵敏度:具有较高的灵敏度,能精确检测到微小的加速度变化,典型灵敏度为 250mV/g,这使得它可以感知到非常小的运动或振动。 低功耗:工作电流低,通常在 2.3mA 左右,适合电池供电的设备,有助于延长设备的电池续航时间。 小尺寸:采用小型的 LCC 表面贴装封装形式,尺寸仅为 5mm×5mm×2mm,便于集成到各种小型化的产品中。 模拟输出:提供与加速度成正比的模拟电压输出,方便与微控制器、放大器等其他模拟电路接口,易于信号处理和转换。 2、工作原理 基于微机电系统(MEMS)技术,利用内部的可动质量块在加速度作用下产生位移,通过检测电容变化来测量加速度。当有加速度作用于传感器时,质量块会产生相应的位移,导致电容值发生变化,经过内部的信号处理电路将电容变化转换为与加速度成正比的模拟电压输出。 3、应用领域 (1)消费电子:常用于手机、平板电脑、游戏机等设备中,实现屏幕自动旋转、运动游戏控制、跌落检测等功能。例如,在手机中,ADXL335 可以检测手机的方向变化,从而自动切换屏幕显示方向,提供更好的用户体验。 (2)汽车电子:可应用于汽车的安全气囊触发、车辆姿态监测、轮胎压力监测系统等。比如,在安全气囊系统中,ADXL335 能够实时监测车辆的加速度变化,当检测到碰撞等突发情况时,及时触发安全气囊弹出,保护乘客安全。 (3)工业监测:用于工业设备的振动监测、故障诊断以及机器人的运动控制等方面。通过监测设备的振动情况,ADXL335 可以帮助工程师及时发现设备的异常运行状态,提前进行维护和维修,减少设备停机时间和维修成本。 (4)医疗设备:在一些可穿戴式医疗设备和便携式医疗仪器中,用于监测人体的运动状态、姿态变化等,辅助医疗诊断和康复治疗。例如,在康复训练设备中,ADXL335 可以监测患者的肢体运动情况,为医生提供数据支持,评估康复效果。 ![]() |
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验二百三十九:GY-61 ADXL335模拟量加速度模块 倾斜角度三轴加速度传感器 项目之一:最简单的测试评估方案 实验开源代码
|
代码解读 这段代码使用 模拟传感器(如加速度计) 读取 X、Y、Z 轴数据 并通过 串口打印输出,核心逻辑如下: 1. 初始化 ✅ Serial.begin(9600); → 启动串口通信,波特率 9600 2. 读取模拟数据 ✅ analogRead(A0), analogRead(A1), analogRead(A2) → 分别读取 X、Y、Z 轴的模拟数据 ✅ * 3.3 / 1023.0 → 将 ADC(01023)转换为电压(03.3V) ✅ - 1.65 → 将电压值归一化,使 1.65V 作为 0 点 ✅ / 0.05 → 转换为加速度值(假设灵敏度为 0.05V/g) 3. 串口输出 ✅ Serial.print(x, 2); Serial.print("\t"); → 打印 X 轴数据,并使用制表符分隔 ✅ Serial.println(z, 2); → 打印 Z 轴数据,并换行 4. 循环采集 ✅ delay(100); → 每 100 毫秒更新一次数据,使波形平滑 这段代码让 加速度传感器不断读取 XYZ 数据,并在串口显示 |
代码解读 这段代码使用 模拟传感器(如加速度计) 采集 X、Y、Z 轴数据 并转换为 加速度值(单位 G),核心逻辑如下: 1. 传感器连接 ✅ const int xInput = A0; → X 轴信号连接到 A0 ✅ const int yInput = A1; → Y 轴信号连接到 A1 ✅ const int zInput = A2; → Z 轴信号连接到 A2 2. 初始化 ✅ analogReference(EXTERNAL); → 使用外部参考电压,提高精度 ✅ Serial.begin(9600); → 启动串口通信 3. 读取并处理数据 ✅ ReadAxis(xInput); → 采集 X、Y、Z 轴数据 ✅ map(xRaw, RawMin, RawMax, -3000, 3000); → 将 ADC 值映射到 milli-G(±3G) ✅ / 1000.0 → 转换为 G(加速度单位) 4. 串口输出 ✅ Serial.print(xAccel, 0); → 打印 X 轴加速度(单位 G) ✅ Serial.print(yAccel, 0); Serial.print(zAccel, 0); → 打印 Y、Z 轴加速度 ✅ 以格式化方式输出数据,便于查看 5. 采样优化 ✅ sampleSize = 10; → 每次采集 10 次求平均值,减少噪声 ✅ delay(1); → 防止连续读取过快,提高稳定性 这段代码让 加速度传感器不断采集 XYZ 数据,并在串口显示。 |
本帖最后由 驴友花雕 于 2025-5-9 15:16 编辑 实验记录视频(36秒) 【【花雕学编程】Arduino动手做(239)---测试GY-61 ADXL335三轴加速度传感器#单片机开发 #电子爱好者 #嵌入式 #科技改变生活 #编程】 http://www.bilibili.com/video/BV12e5VzqEnM/?share_source=copy_web&vd_source=371a292a55e5ca9be994cbb4a86cc987 |
关于 ADXL 335 加速度计 什么是加速度和 ADXL 335 加速度计?加速度是速度随时间变化的过程,它是一个矢量。同样,速度是速度和方向。有两种方法可以解释任何事物的加速度:第一种是速度的变化,第二种是方向的变化。有时两者会同时更改。如果我们谈论 ADXL 335 加速度计,那么这个加速度计是一种用于测量任何物体加速度的设备。它以模拟输入的形式测量 X、Y 和 Z 等三维方向的加速度。它是低噪音和低功耗的设备。当它用于加速度测量目的时,它与任何类型的控制器(如微控制器或 Arduino 等)连接。它多用于建筑作业机械,如钻孔、打桩、拆迁等,人类活动机械如跑步、行走、跳舞和跳绳等。它很容易在市场上或网上商店买到。 ADXL 335 加速度计的引脚配置 ![]() ADXL 335 加速度计的工作原理 目前市场上有不同类型的加速度计,用于不同的目的。有些工作原理是 MEMS(微机电传感器)的工作原理。它由一个小质量组成,该质量被蚀刻到硅表面,然后集成到一个小电路中。当力施加在这个质量上时,它会覆盖一些位移,因此根据牛顿第二运动定律 F= 马 在这个质量中产生加速度,由其传感器感应。同样,如果我们谈论模拟加速度计,那么它们的工作原理有两个原则,例如电容感应和压电感应。两者都有不同的优点和缺点。同样,ADXL335加速度计是一种模拟加速度计,因此它的工作原理是电容感应。在电容式感应加速度计中,当它向任何方向移动时,其电容都会发生变化。当该电容发生变化时,其模拟电压会发生变化,这由其接口控制器感应。 ![]() |
代码解读 这段代码使用 加速度传感器 采集 X、Y、Z 轴的运动数据,并计算 倾斜角度(Roll 和 Pitch),核心逻辑如下: 1. 传感器连接 ✅ const int x_out = A0; → X 轴信号连接到 A0 ✅ const int y_out = A1; → Y 轴信号连接到 A1 ✅ const int z_out = A2; → Z 轴信号连接到 A2 2. 读取加速度数据 ✅ analogRead(x_out); → 读取 X 轴的电压信号 ✅ analogRead(y_out); → 读取 Y 轴的电压信号 ✅ analogRead(z_out); → 读取 Z 轴的电压信号 ✅ 转换为加速度值(单位 G) → 计算公式: cpp x_g_value = ((x_adc_value * 5.0 / 1024) - 1.65) / 0.330; ⚠ 注意: 1.65V 是 零重力点,0.330V/G 是 灵敏度(不同传感器可能不同) 3. 计算倾斜角度 ✅ atan2(y_g_value, z_g_value) → 计算 Roll(翻滚角度) ✅ atan2(z_g_value, x_g_value) → 计算 Pitch(俯仰角度) ✅ 转化为角度(度数) → * 180 / 3.14 4. 输出数据 ✅ Serial.print("Roll = "); Serial.print(roll); → 打印 Roll 角度 ✅ Serial.print("Pitch = "); Serial.print(pitch); → 打印 Pitch 角度 5. 采集间隔 ✅ delay(1000); → 每秒采集一次数据,适合稳定读取 6. 为什么没有 Yaw? ⚠ Yaw(偏航角)无法直接从加速度计计算出来,因为加速度计只能检测线性加速度,而偏航角需要陀螺仪。 这个代码让加速度传感器不断采集 XYZ 运动数据,并计算设备的倾斜角度。 |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed