Skip to content

CT2345 应用笔记

本页面汇集了CT2345相关的应用笔记,帮助您快速完成产品设计。

应用笔记列表

编号标题版本更新日期
AN001笔记本开合检测设计指南v1.02024-01-10
AN002TWS耳机入盒检测方案即将发布-
AN003智能门锁位置感应设计即将发布-

AN001: 笔记本开合检测设计指南

📝 应用笔记版本: v1.0作者: 张三更新: 2024-01-10

1. 概述

本应用笔记详细介绍如何使用CT2345霍尔开关实现笔记本电脑的开合检测功能。文档涵盖系统设计原理、磁铁选型、电路设计、PCB布局及软件实现等关键环节。

2. 系统架构

🧲 磁铁屏幕侧(盖板)
↕️ 检测距离 3-8mm
📟 CT2345主机侧(底座)

工作原理:

  1. 磁铁安装在屏幕侧(盖板)
  2. 霍尔开关安装在主机侧(底座)
  3. 合盖时磁铁靠近,霍尔开关输出低电平
  4. 开盖时磁铁远离,霍尔开关输出高电平
  5. 主控检测信号变化,触发休眠/唤醒

3. 磁铁选型

磁铁类型规格表面磁场推荐检测距离成本
钕铁硼 N35Φ3×1 mm~280 mT5-8 mm
钕铁硼 N42Φ2×1 mm~320 mT4-7 mm
铁氧体 Y30Φ5×2 mm~80 mT2-4 mm

推荐配置

Φ3×1mm N35钕铁硼 + 5mm检测距离

这是性价比最高的组合,可满足大多数笔记本设计需求。

4. 硬件设计

4.1 典型应用电路

        VDD (3.3V)

           ├──────┬─────────┐
           │      │         │
          ┌┴┐    ═══        │
      C1  │ │   100nF      ┌┴┐
     100nF└┬┘     │        │ │ R1 (可选)
           │      │        └┬┘ 10kΩ
           │   ┌──┴──┐      │
           └───┤VDD  │      │
               │     │      │
          ┌────┤OUT  ├──────┼───── 至 MCU GPIO
          │    │     │      │
          │    │GND  │      │
          │    └──┬──┘      │
          │       │         │
          └───────┴─────────┴───── GND

         CT2345

4.2 元件清单

序号元件规格封装数量备注
U1CT2345CT2345GSO-3-TRSOT-23-31霍尔开关
C1去耦电容100nF/10V X7R04021靠近VDD
R1上拉电阻10kΩ04021开漏版本需要

4.3 PCB布局

布局要点

  1. C1靠近VDD:走线距离 ≤ 3mm
  2. 避免铜皮遮挡:感应区域下方不要铺铜
  3. 远离干扰源:与开关电源、大电流走线保持距离
  4. 磁性元件隔离:10mm范围内避免放置电感、蜂鸣器等

5. 软件实现

5.1 GPIO配置 (STM32 HAL)

c
#include "stm32f1xx_hal.h"

// 定义引脚
#define HALL_GPIO_PORT    GPIOA
#define HALL_GPIO_PIN     GPIO_PIN_0
#define HALL_IRQ          EXTI0_IRQn

void Hall_Sensor_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    
    // 使能GPIO时钟
    __HAL_RCC_GPIOA_CLK_ENABLE();
    
    // 配置为输入模式,启用中断
    GPIO_InitStruct.Pin = HALL_GPIO_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    HAL_GPIO_Init(HALL_GPIO_PORT, &GPIO_InitStruct);
    
    // 配置中断优先级
    HAL_NVIC_SetPriority(HALL_IRQ, 2, 0);
    HAL_NVIC_EnableIRQ(HALL_IRQ);
}

5.2 中断处理与去抖动

c
#define DEBOUNCE_TIME_MS  50

static uint32_t last_trigger_time = 0;

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if (GPIO_Pin != HALL_GPIO_PIN) return;
    
    uint32_t current_time = HAL_GetTick();
    
    // 去抖动处理
    if (current_time - last_trigger_time < DEBOUNCE_TIME_MS) {
        return;
    }
    last_trigger_time = current_time;
    
    // 读取当前状态
    GPIO_PinState state = HAL_GPIO_ReadPin(HALL_GPIO_PORT, HALL_GPIO_PIN);
    
    if (state == GPIO_PIN_RESET) {
        // 检测到磁铁 - 合盖
        System_Enter_Sleep();
    } else {
        // 磁铁远离 - 开盖
        System_Wakeup();
    }
}

5.3 状态查询接口

c
typedef enum {
    LID_OPEN = 0,
    LID_CLOSED = 1
} LidState_t;

LidState_t Get_Lid_State(void)
{
    if (HAL_GPIO_ReadPin(HALL_GPIO_PORT, HALL_GPIO_PIN) == GPIO_PIN_RESET) {
        return LID_CLOSED;
    }
    return LID_OPEN;
}

6. 测试验证

测试项测试方法通过标准
检测距离调整磁铁距离,观察输出变化3-8mm范围内可靠触发
响应时间示波器测量信号延迟< 10ms
功耗电流表测量待机电流< 10μA (含MCU待机)
温度稳定性高低温箱测试-20°C~60°C正常工作
抗干扰施加50mT外部磁场不误触发

7. 常见问题

Q1: 检测距离不够怎么办?

A: 可从以下方面优化:

  • 更换磁性更强的磁铁(如N42替代N35)
  • 增大磁铁尺寸
  • 确认磁铁极性正对霍尔开关感应面
  • 减少磁铁与霍尔开关之间的金属遮挡

Q2: 存在误触发怎么办?

A: 检查以下几点:

  • PCB布局是否有大电流走线经过
  • 附近是否有其他磁性元件(电感、蜂鸣器)
  • 软件去抖动时间是否足够(建议50ms)
  • 是否存在电源噪声

Q3: 功耗高于预期?

A: 排查方向:

  • 确认MCU GPIO配置正确(避免浮空输入)
  • 检查是否有漏电路径
  • 确认CT2345供电电压在推荐范围内

参考资源

昆泰芯微电子 CONNTEK Microelectronics