PCB图如下:
成分
ADXL335BCPZ-RL 模拟设备 |
× 1 |
741C083510JP CTS电阻器产品 |
× 1 |
227CKS035M 伊利诺伊电容器 |
× 1 |
16针公头 | × 1 |
描述
用于 Arduino 的 ADXL335 加速度计
这个加速度计模块基于流行的 ADXL335 三轴模拟加速度计 IC,它将 X、Y 和 Z 加速度读取为模拟电压。通过测量重力引起的加速度,加速度计可以计算出它相对于地球的倾斜角度。通过感测动态加速度的量,加速度计可以了解设备移动的速度和方向。使用这两个属性,您可以制作各种很酷的项目,从乐器(想象演奏并将倾斜连接到失真水平或弯音)到汽车(或您孩子的汽车)上的速度监视器。加速度计是使用 3 个模拟输入引脚连接到 Arduino 微控制器的非常简单的接口,并且可以与大多数其他微控制器一起使用,例如 PIC 或 AVR。
对于大多数加速度计,操作所需的基本连接是电源和通信线路。具有模拟接口的加速度计通过不同的电压水平显示加速度。这些值通常在接地和电源电压电平之间波动。然后可以使用微控制器上的 ADC 读取该值。这些通常比数字加速度计便宜。
ADXL335 是 3 轴加速度计,带有板载稳压器 IC 和信号调理模拟电压输出。该模块由 Analog Devices 的 ADXL335 组成。该产品以 ±3 g 的最小满量程范围测量加速度。它可以测量倾斜感应应用中的静态重力加速度,以及运动、冲击或振动产生的动态加速度。
用户使用 XOUT、YOUT 和 ZOUT 引脚上的 CX、CY 和 CZ 电容器选择加速度计的带宽。可以选择适合应用的带宽,X 轴和 Y 轴的范围为 0.5 Hz 至 1600 Hz,Z 轴的范围为 0.5 Hz 至 550 Hz。这是经过验证的长期系列中的最新产品模拟传感器——加速度计的圣杯。加速度计通常是低功耗设备。所需电流通常在微 (μ) 或毫安范围内 ADXL335 是一款三轴加速度计,具有极低的噪声和功耗——仅 320uA!该传感器具有 +/-3g 的完整感应范围。
有一个板载电压调节器,可让您使用 3V 至 6V DC 为威廉希尔官方网站 板供电。威廉希尔官方网站 板已完全组装并经过安装外部组件的测试。随附的 0.1uF 电容器将每个轴的带宽设置为 50Hz。
特征:
3V-6V 直流电源电压
板载 LDO 稳压器
可与 3V3 或 5V 微控制器接口。
所有必要的组件都已填充。
超低功耗:测量模式40uA,待机0.1uA@2.5V
点击/双击检测
自由落体检测
模拟输出
规格:
带调节器的 3 轴加速度计的描述 – ADXL335 如下所示
输入电压范围 (VCC) = 3V3- 6V
如何测试1. 带调节器的 3 轴加速度计 – 使用 Arduino 的 ADXL335
这是说明如何将 Arduino 连接到 ADXL335 三轴加速度计的指南。下图描述了 Arduino 上的哪些引脚应连接到加速度计上的引脚:
使用 Arduino 板进行测试,示例程序如下所示。使用这个程序,我们在振动期间读取 X、Y 和 Z 轴的输出。
诠释 x; // x 轴变量
整数y; // y轴变量
诠释z; // z 轴变量
/************************************************* *************************************
功能:设置()
描述:用它来初始化变量、引脚模式、开始使用库等。
设置功能只会在每次上电或重启 Arduino 板后运行一次。
****************************************************** *************************************/
无效设置()
{
序列号.开始(9600);// 打开串口,设置数据速率为 9600 bps
}
/************************************************* *************************************
功能:循环()
描述:连续循环,允许您的程序更改和响应。
用它来主动控制 Arduino 板。
****************************************************** *************************************/
无效循环()
{
x = 模拟读取(0);//读取第0个模拟输入引脚
y = 模拟读取(1);//读取第一个模拟输入引脚
z = 模拟读取(2);//读取第二个模拟输入引脚
Serial.print("X = "); // 打印 x adc 值
序列号.println(x);
Serial.print("Y = "); // 打印 y adc 值
序列号.println(y);
Serial.print("Z = "); // 打印 z adc 值
序列号.println(z);
延迟(100);
}
将 ADXL335 模块与 Arduino 连接并上传 Arduino 示例代码。然后打开串口监视器,ADXL335会输出加速度
2. 使用调节器测试 3 轴加速度计——使用 PIC16F877A 的 ADXL335
当将 3 轴加速度计与调节器 - ADXL335 与 PIC16F877A 微控制器连接时,传感器的 X、Y、Z 引脚连接到微控制器的端口 A。这里 X、Y、Z 引脚分别连接到 RA1、RA2、RA3。连接图如下所示
使用调节器测试 3 轴加速度计 – ADXL335 和 PIC16F877A,示例程序如下所示。使用这个程序,我们
#include
#include“延迟.c”
诠释 X_Value=0;
int Y_Value=0;
int Z_Value=0;
无效 ADC_init() ;
无效发送(字符);
int adc_conv(int);
无效的 SerialPortInit() ;
无效发送数据(字符);
无效显示(整数值);
无效 MSdelay(无符号整数);
静态无效 Send2USART(const char *CPtr1);
无效的主要()
{
TRISC=0X80;
TRISE=0X07;
串行端口初始化();
ADC_init();
而(1)
{
Send2USART("X轴:");
X_Value=adc_conv(1);
显示(X_Value);
发送数据(' ');
Send2USART("Y轴:");
Y_Value=adc_conv(2);
显示(Y_值);
发送数据(' ');
Send2USART("Z轴:");
Z_Value=adc_conv(3);
显示(Z_Value);
发送数据('\n');
发送数据('\r');
}
}
/************************************************* ******************************
* 功能:发送2USART
* 描述:串行发送的一组数据
****************************************************** ******************************/
静态无效 Send2USART(const char *Cptr1)
{
while(*Cptr1 != '\0')
{
发送数据(*Cptr1);
cptr1++;
}
}
/************************************************* ******************************
* 功能:显示
* 说明:显示adc值功能
****************************************************** ******************************/
无效显示(整数值)
{
字符 k=1;
字符数组[4];
for(k=1;k<=4;k++)
{
数组[k]=值%10;
价值=价值/10;
}
for(k=4;k>=1;k--)
{
发送数据(数组[k]+'0');
}
}
/************************************************* ******************************
* 功能:SerialPortInit
* 描述:Usart 初始化函数 - 波特率 9600
****************************************************** ******************************/
无效的 SerialPortInit()
{
GIE=1;
同步=0;
TXEN=1;
BRGH=1;
SPEN=1;
CREN=1;
PEIE=1;
RCIE=1;
SPBRG=129;
}
/************************************************* ******************************
* 功能:ADC_init
* 说明:Adc 初始化函数
****************************************************** ******************************/
无效 ADC_init()
{
ADFM=1;
PCFG3=0;
PCFG2=0;
PCFG1=0;
PCFG0=0;
}
/************************************************* ******************************
* 功能:adc_conv
* 说明:Adc 转换功能
****************************************************** ******************************/
int adc_conv(int 通道)
{
诠释AB;
ADCON0=0x81|通道<<4; //通道选择
延迟Ms(1);
ADGO=1;//开始AD转换
而(ADGO!= 0);//等待AD转换的竞争
ab=地址;//将2bit值ADRSH寄存器赋给变量ab
ab=ADRESH<<8; //8次移位变量ab值
ab=ab|ADRESL; //结合ADRESL和ab值
返回(ab);
}
/************************************************* ******************************
* 功能:发送数据
* 描述:串行发送数据
****************************************************** ******************************/
无效发送数据(字符数据)
{
TXREG=sdata;
而(TRMT!= 1);
}
/************************************************* ******************************
* 功能:MSdelay
* 描述:产生1ms延迟
****************************************************** ******************************/
无效 MSdelay(无符号整数 val)
{
无符号整数德尔,德尔1;
for(del=1;del<=val;del++)
{
for(del1=0;del1<=331;del1++);
}
}
当 PIC16F877A 微控制器接收到带调节器的 3 轴加速度计 – ADXL335 数据并在串行监视器上显示为
. :
将 ADXL335 输出转换为加速度 (g)
?
下面的代码片段是程序中最重要的部分。它将来自传感器的模拟输出电压映射并转换为重力加速度 (G)。
IDE 的内置 map() 函数执行实际映射。因此,当我们调用 map(xRaw, RawMin, RawMax, -3000, 3000) 时,RawMin 的值将映射到 -3000,RawMax 的值映射到 3000,中间值映射到中间值。
值 -3000 和 3000 不是任意的。它们实际上代表由传感器测量的重力加速度(以毫克为单位,即 1/1000 ag),即 ±3g(-3000 毫克到 3000 毫克)。
例如,
当传感器在 x 轴上输出 0 伏即 xRaw=0 时,map() 函数将返回 -3000 表示 -3g。
当传感器在 x 轴上输出 3.3 伏特时,即 xRaw=1023,map() 函数将返回 3000,表示 +3g。
当传感器在 x 轴上输出 1.65 伏特时,即 xRaw=511,map() 函数将返回 0 表示 0g。
现在,随着输出电压随加速度在该范围内线性增加,比率这个术语现在将更有意义。
// 将原始值转换为“milli-Gs”
long xScaled = map(xRaw, RawMin, RawMax, -3000, 3000);
long yScaled = map(yRaw, RawMin, RawMax, -3000, 3000);
长 zScaled = map(zRaw, RawMin, RawMax, -3000, 3000);
最后,传感器的输出通过将其除以 1000 缩小到小数 Gs 并显示在串行监视器上。
// 重新缩放到小数 Gs
浮动 xAccel = xScaled / 1000.0;
浮动 yAccel = yScaled / 1000.0;
浮动 zAccel = zScaled / 1000.0;
Serial.print("X, Y, Z :: ");
串行打印(xRaw);
序列号.print(", ");
Serial.print(yRaw);
序列号.print(", ");
串行打印(zRaw);
Serial.print(" :: ");
Serial.print(xAccel,0);
Serial.print("G, ");
Serial.print(yAccel,0);
Serial.print("G, ");
Serial.print(zAccel,0);
序列号.println("G");
代码
adxl335 的测试代码
adxl335_test_code.ino
下载
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !