电子说
在电子工程领域,加速度计是一种至关重要的传感器,广泛应用于各种设备和系统中。今天,我们将深入探讨 Parallax 公司的 Hitachi H48C 3 - 轴加速度计模块(#28026),了解其特性、应用场景以及如何进行实际操作。
文件下载:28026.pdf
Hitachi H48C 3 - 轴加速度计是一款集成模块,能够在三个轴(X、Y 和 Z)上感应 ±3g 的重力(g)力。该模块配备了板载稳压器,为 H48C 提供 3.3 伏电源,同时具备模拟信号调理功能和一个 MCP3204(四通道,12 位)模数转换器,用于读取 H48C 的电压输出。所有组件都安装在一个尺寸为 0.7 英寸×0.8 英寸(17.8 毫米×20.3 毫米)、便于面包板使用的模块上。通过同步串行接口,从该模块获取测量数据变得十分简单。例如,使用 BASIC Stamp® 2 系列时,可轻松使用 SHIFTOUT 和 SHIFTIN 命令进行操作。
将 H48C 模块连接到 BASIC Stamp 2 控制器非常简单,只需要三个 I/O 引脚(在需要使用多个 H48C 模块的系统中,CLK 和 DIO 引脚可以共享)。具体连接细节可参考相关的连接图。
通过 MEMS 技术和内置补偿,H48C 加速度计通过模拟调理电路将信号同时输出到 MCP3204 ADC。要“读取”给定轴的 g 力,实际上是读取该轴的电压输出,并使用以下公式计算 g 力: [G = ((axis - vRef) / 4095) times (3.3 / 0.3663)] 在实际应用中,该公式可简化为: [G = (axis - vRef) times 0.0022] 使用 BASIC Stamp 2 模块作为主机控制器时,需要将 0.0022 乘以 100(变为 0.22),以 0.01g 为单位表示结果。
| 引脚 | 定义 |
|---|---|
| CLK | 同步时钟输入 |
| DIO | 与主机的双向数据传输 |
| Vss | 电源地(0v) |
| Zero - G “Free - fall”输出 | 高电平有效 |
| CS | 芯片选择输入,低电平有效 |
| Vdd | +5vdc |
| 模块的主要参数如下: | 参数 | 最小值 | 典型值 | 最大值 | 单位 |
|---|---|---|---|---|---|
| 工作电压(V DD) | 4.5 | 5.0 | 5.5 | V | |
| 接地参考连接(V SS) | 0 | V | |||
| 电源电流(I DD) | 7 | 10 | mA | ||
| 高电平电压输入(V IH) | 0.7 V DD | V | |||
| 低电平电压输入(V IL) | 0.3 V DD | V | |||
| 高电平电压输出(V OH) | 4.1 | V | |||
| 低电平电压输出(V OL) | 0.4 | V | |||
| 采样率 | 200 | sps | |||
| ADC(MCP3204)分辨率 | 12 | bits | |||
| 测量范围 | -3 | 3 | g | ||
| 灵敏度 | 366.3 | mV/g | |||
| 精度 | 10 | % | |||
| 非线性度 | -2 | 2 | % | ||
| 工作温度范围 | -25 | 75 | °C | ||
| 高电平零 g 电压输出 | 3.2 | 3.3 | V | ||
| 零 g 输出延迟 | 1 | ms |
文档中提供了一个使用 BASIC Stamp 2 系列微控制器的演示程序,用于读取 H48C 的参考电压和输出通道。该程序将每个通道的原始计数、通道电压和 X、Y、Z 轴的 g 力显示出来。以下是程序的主要部分:
' Purpose.... Hitachi H48C 3-Axis Accelerometer Demonstration
' File....... H48C_3-Axis.BS2
' Author..... Copyright (c) 2005-2006 Parallax, Inc.
' E-mail..... support@parallax.com
' Started....
' Updated.... 02 FEB 2006
' {$PBASIC 2.5}
' {$STAMP BS2}
' -----[ I/O Definitions ]-------------------------------------------------
Dio PIN 15 'data to/from module
Clk PIN 14 'clock output
CS PIN 13 ' active-low chip select
' -----[ Constants ]--------------------------------------------------------
XAxis CON 0 'adc channels
YAxis CON 1
ZAxis CON 2
VRef CON 3
Cnt2Mv CON $CE4C ' counts to millivolts
GfCnv CON $3852 ' g-force conversion
' -----[ Variables ]--------------------------------------------------------
axis VAR Nib ' axis selection
rvCount VAR Word ' ref voltage adc counts
axCount VAR Word ' axis voltage adc counts
mVolts VAR Word ' millivolts
gForce VAR Word ' axis g-force
dValue VAR Word ' display value
dPad VAR Nib ' display pad
' -----[ Initialization ]--------------------------------------------------
Reset:
HIGH CS
DEBUG CLS, "=========================", CR,
"H48C 3-Axis Accelerometer", CR,
"=========================", CR,
"VRef X Y Z", CR,
"Count Volts G", CR
' -----[ Program Code ]----------------------------------------------------
Main:
FOR axis = XAxis TO ZAxis ' loop through each axis
GOSUB Get_H48C ' read vRef & axis counts
dValue = rvCount ' display vRef count
DEBUG CRSRXY, 6, 6
GOSUB RJ_Print
dValue = axCount ' display axis count
DEBUG CRSRXY, 6, (7 + axis)
GOSUB RJ_Print
mVolts = rvCount ** Cnt2Mv ' convert vref to mv
DEBUG CRSRXY, 13, 6, DEC (mVolts / 1000), ".", DEC3 mVolts
mVolts = axCount ** Cnt2Mv ' convert axis to mv
DEBUG CRSRXY, 13, (7 + axis), DEC (mVolts / 1000), ".", DEC3 mVolts
' calculate g-force
IF (axCount >= rvCount) THEN
gForce = (axCount - rvCount) ** GfCnv ' positive g-force
ELSE
gForce = -((rvCount - axCount) ** GfCnv) ' negative g-force
ENDIF
DEBUG CRSRXY, 20, (7 + axis), " " + (gForce.BIT15 * 13), DEC1 (ABS(gForce) / 100), ".", DEC2 ABS(gForce)
NEXT
PAUSE 200
GOTO Main
' -----[ Subroutines ]-----------------------------------------------------
' Reads VRef and selected H48C axis through an MCP3204 ADC
' -- pass axis (0 - 2) in "axis"
' -- returns reference voltage counts in "rvCount"
' -- returns axis voltage counts in "axCount"
Get_H48C:
LOW CS
SHIFTOUT Dio, Clk, MSBFIRST, [%112, VRef3] ' select vref register
SHIFTIN Dio, Clk, MSBPOST, [rvCount13] ' read ref voltage counts
HIGH CS
PAUSE 1
LOW CS
SHIFTOUT Dio, Clk, MSBFIRST, [%112, axis3] ' select axis
SHIFTIN Dio, Clk, MSBPOST, [axCount13] ' read axis voltage counts
HIGH CS
RETURN
' Right-justify value in 5-digit field
' -- move cursor first, then call with value in "dValue"
RJ_Print:
LOOKDOWN dValue, >=[10000, 1000, 100, 10, 0], dPad
DEBUG REP " "dPad, DEC dValue
RETURN
这个程序通过循环遍历每个轴,读取参考电压和轴电压的计数,并将其转换为电压和 g 力进行显示。同时,程序中使用了条件语句来处理正、负 g 力的计算。
Hitachi H48C 3 - 轴加速度计模块是一款功能强大、易于使用的传感器模块,适用于多种应用场景。其高精度的测量能力、先进的技术和小巧的尺寸使其成为电子工程师在设计各类设备时的理想选择。通过本文的介绍,相信你对该模块有了更深入的了解,不妨在实际项目中尝试使用,看看它能为你的设计带来怎样的惊喜。
你在使用加速度计模块的过程中遇到过哪些问题?你是否有其他关于传感器应用的经验想要分享?欢迎在评论区留言讨论。
全部0条评论
快来发表一下你的评论吧 !