1. AO(Analog Output,模拟输出)
- 信号类型:连续变化的电压信号(通常0VCC,如05V)。
- 工作原理:
光敏电阻(或光敏二极管)的阻值随光照强度变化 → 通过分压电路转换为模拟电压输出。- 光照越强:电阻越小 → AO电压 越高(接近VCC)。
- 光照越弱:电阻越大 → AO电压 越低(接近0V)。
- 用途:
- 需要精确测量光照强度的场景(如智能调光、环境监测)。
- 需连接单片机的 ADC(模数转换)引脚 读取具体数值。
- 示例电路:
VCC ────┬─── 光敏电阻 ──── AO ──── 单片机ADC └─── 固定电阻 ──── GND(分压电路)
- 代码示例(STM32 ADC读取):
HAL_ADC_Start(&hadc1); uint16_t light_value = HAL_ADC_GetValue(&hadc1); // 读取AO电压值
2. DO(Digital Output,数字输出)
- 信号类型:高低电平(0或1,如0V或5V)。
- 工作原理:
传感器内部比较器将AO电压与预设阈值对比 → 输出数字信号。- 光照超过阈值:DO输出 低电平(0) 或 高电平(1)(取决于模块设计)。
- 光照低于阈值:DO输出相反电平。
- 用途:
- 简单判断光照是否达到阈值(如自动开关灯、报警触发)。
- 直接连接单片机的 普通GPIO引脚。
- 阈值调节:
多数模块配有电位器,可手动调整触发阈值。 - 代码示例(GPIO读取):
if (HAL_GPIO_ReadPin(DO_GPIO_Port, DO_Pin) == GPIO_PIN_RESET) { printf("光照不足!\n"); }
AO vs DO 对比
特性 | AO(模拟输出) | DO(数字输出) |
---|---|---|
信号类型 | 连续电压(0~VCC) | 高低电平(0/1) |
精度 | 高(可量化具体光照值) | 低(仅判断阈值) |
硬件连接 | 需ADC引脚 | 普通GPIO引脚 |
适用场景 | 光照强度监测、调光系统 | 光照开关控制、报警触发 |
调节灵活性 | 通过程序调整灵敏度 | 通过电位器调整硬件阈值 |
常见问题解答
Q1: 如何选择AO或DO?
- 需要 精确测量光照 → 选 AO(如智能家居调光)。
- 只需 判断是否超过阈值 → 选 DO(如自动路灯开关)。
Q2: DO输出高低电平的含义?
- 取决于模块设计,常见两种模式:
- 光照强时输出高电平(如5V)。
- 光照强时输出低电平(如0V,常见于集电极开路输出)。
- 需查阅模块手册确认逻辑。
Q3: AO电压与光照强度的关系?
- 通常成 正比(光照越强,电压越高),但具体曲线需参考传感器规格书。
典型应用电路
AO模式(连接ADC)
VCC ────┬─── 光敏电阻 ──── AO ──── PA0 (STM32 ADC1)
└─── 10kΩ电阻 ──── GND
DO模式(连接GPIO)
VCC ──── 光敏传感器模块 ──── DO ──── PB0 (STM32 GPIO)
└─── 上拉电阻(可选)
GND ──── 模块GND
总结
- AO:提供连续光照数据,适合精密控制。
- DO:提供开关信号,适合简单逻辑判断。
- 根据项目需求选择,甚至可同时使用两者(AO用于监测,DO用于触发紧急动作)。