探索 Hitachi H48C 3 - 轴加速度计模块:特性、应用与实践

电子说

1.4w人已加入

描述

探索 Hitachi H48C 3 - 轴加速度计模块:特性、应用与实践

在电子工程领域,加速度计是一种至关重要的传感器,广泛应用于各种设备和系统中。今天,我们将深入探讨 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 命令进行操作。

二、模块特性

  1. 高精度测量:能够在任何轴上测量 ±3g 的加速度,满足大多数应用场景的需求。
  2. 先进技术:采用 MEMS(微机电系统)技术,并具备补偿功能,无需校准即可运行。
  3. 易于连接:板载稳压器和高分辨率 ADC 使其能够轻松连接到微控制器主机,并且与 BASIC Stamp 2 系列的 SHIFTOUT 和 SHIFTIN 命令兼容。
  4. 自由落体检测:模块的自由落体输出可指示所有轴同时处于 0g 的状态。
  5. 小巧便携:尺寸小巧,适合面包板使用,方便在各种项目中进行集成。
  6. 宽工作范围:工作温度范围为 -25°C 至 75°C,能够适应不同的环境条件。

三、应用场景

  1. 机器人应用:可用于机器人的倾斜测量,帮助机器人感知自身姿态,实现更精确的运动控制。
  2. 运输和物流系统:在运输和物流过程中,可用于多轴振动测量,监测货物的运输状态,确保货物安全。
  3. 报警系统:通过检测多轴的运动或静止状态,可用于报警系统,当检测到异常运动时触发警报。

四、连接与工作原理

1. 连接方式

将 H48C 模块连接到 BASIC Stamp 2 控制器非常简单,只需要三个 I/O 引脚(在需要使用多个 H48C 模块的系统中,CLK 和 DIO 引脚可以共享)。具体连接细节可参考相关的连接图。

2. 工作原理

通过 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 - 轴加速度计模块是一款功能强大、易于使用的传感器模块,适用于多种应用场景。其高精度的测量能力、先进的技术和小巧的尺寸使其成为电子工程师在设计各类设备时的理想选择。通过本文的介绍,相信你对该模块有了更深入的了解,不妨在实际项目中尝试使用,看看它能为你的设计带来怎样的惊喜。

你在使用加速度计模块的过程中遇到过哪些问题?你是否有其他关于传感器应用的经验想要分享?欢迎在评论区留言讨论。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分