当前位置: 首页 > article >正文

从光敏电阻到麦克风:用单片机AD/DA和运放搞定传感器信号采集(附电路分析)

从光敏电阻到麦克风用单片机AD/DA和运放搞定传感器信号采集附电路分析当我们需要将现实世界中的光强、温度或声音信号转化为数字信号进行处理时传感器信号采集系统就成为了连接物理世界与数字世界的桥梁。本文将带你从零开始构建一个完整的传感器信号采集链路涵盖从传感器选型、信号调理电路设计到单片机AD转换的每个环节。无论你是想制作一个光照强度监测装置还是设计简单的音频采集系统这些核心技能都能让你事半功倍。1. 传感器信号采集系统架构一个完整的传感器信号采集系统通常包含三个关键环节传感器模块、信号调理电路和AD转换模块。光敏电阻、热敏电阻这类电阻型传感器的输出信号往往非常微弱且容易受到干扰这就需要我们设计合理的信号调理电路。典型的信号链路如下传感器 → 信号调理 → AD转换 → 单片机信号调理电路的主要作用包括阻抗匹配如电压跟随器信号放大比例放大器滤波消除高频噪声电平转换将信号调整到AD输入范围内以光敏电阻为例在10-100kΩ范围内变化时直接分压输出的电压可能只有0.1-1V的波动而大多数AD转换器的满量程输入为0-5V。这时就需要通过运放电路将信号放大到适合采样的范围。2. 关键硬件选型与电路设计2.1 传感器特性对比传感器类型典型阻值范围灵敏度响应时间适用场景光敏电阻10Ω-1MΩ中10-100ms光照检测热敏电阻1kΩ-100kΩ高1-10s温度监测驻极体麦克风输出mV级信号高1ms声音采集2.2 运算放大器电路设计运放是信号调理的核心元件以下是三种最常用的电路配置1. 电压跟随器阻抗匹配Vin ────┬───── │ │ └───┬─── Vout │ GND提示电压跟随器输入阻抗极高输出阻抗极低适合作为缓冲级隔离前后电路。2. 同相放大器信号放大R1 Vin ────^^^^───┬─── Vout R2 │ GND ────^^^^───┘放大倍数A 1 R2/R13. 反相放大器信号调理R1 Vin ────^^^^───┬─── ─── Vout R2 │ GND ────^^^^───┘放大倍数A -R2/R1实际设计麦克风前置放大器时通常会选择同相放大结构并加入高通滤波# 伪代码计算放大电路参数 def calculate_components(gain50, cutoff_freq20Hz): R1 1e3 # 1kΩ基础电阻 R2 (gain - 1) * R1 C 1/(2*3.14*R1*cutoff_freq) return R2, C3. AD转换实战配置3.1 ADC0809经典电路分析ADC0809是一款8位逐次逼近型AD转换器其典型应用电路包含以下几个关键部分参考电压电路通常采用TL431提供稳定的2.5V基准时钟电路外接RC振荡或使用单片机提供500kHz时钟输入通道选择通过ADDA、ADDB、ADDC三位地址选择8路输入控制信号START启动转换脉冲EOC转换结束标志OE输出使能连接STM32的典型接线方式ADC0809 STM32F103 VREF() → 3.3V IN0 → 传感器信号 ADDA/B/C → GPIO输出 START → GPIO输出 EOC → GPIO输入 D0-D7 → GPIO输入3.2 软件驱动实现以下是基于STM32 HAL库的ADC0809驱动代码片段#define ADC_PORT GPIOA #define START_PIN GPIO_PIN_0 #define EOC_PIN GPIO_PIN_1 uint8_t ADC0809_Read(uint8_t channel) { // 设置通道选择 HAL_GPIO_WritePin(ADC_PORT, ADDA_PIN, (channel0x1)?GPIO_PIN_SET:GPIO_PIN_RESET); HAL_GPIO_WritePin(ADC_PORT, ADDB_PIN, (channel0x2)?GPIO_PIN_SET:GPIO_PIN_RESET); HAL_GPIO_WritePin(ADC_PORT, ADDC_PIN, (channel0x4)?GPIO_PIN_SET:GPIO_PIN_RESET); // 启动转换 HAL_GPIO_WritePin(ADC_PORT, START_PIN, GPIO_PIN_SET); HAL_Delay(1); HAL_GPIO_WritePin(ADC_PORT, START_PIN, GPIO_PIN_RESET); // 等待转换完成 while(HAL_GPIO_ReadPin(ADC_PORT, EOC_PIN) GPIO_PIN_RESET); // 读取数据 return GPIO_ReadInputData(ADC_DATA_PORT) 0xFF; }4. 完整项目案例环境光强监测系统4.1 硬件组成传感部分GL5528光敏电阻10-200kΩ信号调理第一级电压跟随器LM358第二级同相放大器增益20R11k,R219kAD转换ADC08098位精度主控STM32F103C8T64.2 关键电路参数计算分压电路设计光敏电阻与10kΩ固定电阻分压光照强度与输出电压关系强光(100Lux)R≈10kΩ → Vout2.5V 弱光(10Lux)R≈100kΩ → Vout0.45V放大电路设计目标将0.5-2.5V信号放大到0-5V范围选择增益20的同相放大器实际输出电压Vout (1 R2/R1) * Vin 20 * VinAD采样值转换8位AD参考电压5V分辨率5V/256 ≈ 19.5mV照度计算公式def lux_calculate(adc_value): voltage adc_value * 19.5 # mV resistance 10000 * (5000 - voltage) / voltage # Ω return 10 ** ((log10(resistance) - 4.5) / -0.8) # Lux4.3 系统优化技巧噪声抑制在运放电源引脚加0.1μF去耦电容信号线采用屏蔽线或双绞线添加RC低通滤波fc100Hz校准方法两点校准法黑暗环境下记录AD值零点标准光源下记录AD值满量程线性插值公式float calibrate(uint8_t raw, uint8_t dark, uint8_t bright) { return (raw - dark) * 100.0 / (bright - dark); // 百分比 }软件滤波算法移动平均滤波窗口大小10中值滤波采样5次取中间值一阶滞后滤波#define ALPHA 0.2 float filtered_value last_value * (1-ALPHA) new_sample * ALPHA;在实际项目中我发现信号调理电路的稳定性很大程度上取决于电源质量。使用普通USB电源时光照读数可能会有±5%的波动而改用锂电池供电后波动降低到了±1%以内。另外将运放电路与数字电路分区布局也能显著降低数字噪声对模拟信号的干扰。

相关文章:

从光敏电阻到麦克风:用单片机AD/DA和运放搞定传感器信号采集(附电路分析)

从光敏电阻到麦克风:用单片机AD/DA和运放搞定传感器信号采集(附电路分析) 当我们需要将现实世界中的光强、温度或声音信号转化为数字信号进行处理时,传感器信号采集系统就成为了连接物理世界与数字世界的桥梁。本文将带你从零开始…...

Vibe Coding 完全实战手册:2026年 AI 辅助编程工作流从入门到精通

什么是 Vibe Coding? Vibe Coding(氛围编程)是 2025 年由 Andrej Karpathy 提出、2026 年已被 91% 工程团队采用的 AI 辅助编程范式。它的核心思想是:用自然语言描述意图,让 AI 写代码,人负责审查和方向把控…...

Ostrakon-VL像素终端部署:离线环境无网络依赖运行方案

Ostrakon-VL像素终端部署:离线环境无网络依赖运行方案 1. 项目背景与特点 1.1 像素特工终端简介 Ostrakon-VL像素终端是一款专为零售与餐饮场景设计的离线多模态识别系统。它基于Ostrakon-VL-8B模型开发,采用独特的8-bit像素风格界面,将复…...

从STRIDE到EVITA:聊聊车载网络威胁建模中,那个更适合你的安全属性模型

车载网络安全建模:STRIDE与EVITA模型的深度对比与应用指南 当工程师第一次面对车载网络威胁建模时,往往会被各种安全属性模型的选择所困扰。就像一位汽车设计师需要根据车辆用途选择不同的材料——跑车需要轻量化碳纤维,越野车需要高强度钢架…...

NLP学习笔记13:BERT系列模型——从预训练到 RoBERTa 与 ALBERT

NLP学习笔记13:BERT系列模型——从预训练到 RoBERTa 与 ALBERT 作者:Ye Shun 日期:2026-04-19 一、前言 在现代自然语言处理的发展历程中,BERT(Bidirectional Encoder Representations from Transformers) …...

别再让视频裸奔了!手把手教你用PolyV思路给m3u8视频上三道锁(含动态Key实战)

企业级视频版权保护实战:构建动态加密的三重防御体系 最近帮一家在线教育平台做技术咨询时,他们刚上线的付费课程视频不到一周就被扒得干干净净——各种下载工具直接抓取m3u8清单,批量下载ts切片,甚至有人把完整课程挂在二手平台低…...

OCR数据集哪家强?ICDAR/CTW/Total-Text等8大主流数据集实战评测与下载指北

OCR数据集实战评测:ICDAR/CTW/Total-Text等8大主流数据集深度解析 当我们需要构建一个OCR系统时,数据集的选择往往决定了模型的性能上限。面对市面上众多的OCR数据集,工程师们常常陷入选择困难:究竟哪个数据集最适合我的项目需求&…...

UE4/UE5委托实战避坑:从触发器交互到UI响应,手把手教你四种委托的正确用法

UE4/UE5委托实战避坑指南:从触发器交互到UI响应的四种委托深度解析 在虚幻引擎开发中,委托系统是实现对象间通信的核心机制之一。很多开发者虽然了解基础语法,但在实际项目中面对触发器交互、UI响应等具体场景时,常常陷入选择困境…...

告别DrawCall卡顿!Unity 2022最新Sprite Atlas图集打包保姆级教程(含旧版本迁移指南)

Unity 2022 Sprite Atlas图集优化全攻略:从原理到性能调优实战 最近在优化一个Unity项目时,发现UI界面在低端设备上频繁出现卡顿。通过Profiler分析,发现DrawCall数量高达200,而其中大部分都来自UI精灵的渲染。这让我重新审视了Sp…...

TypeScript的template literal types实现SQL查询的类型安全

在现代Web开发中,TypeScript因其强大的类型系统而备受青睐。数据库操作中的SQL查询仍然是一个容易出错的领域,尤其是拼接字符串时容易引发SQL注入或字段名错误。TypeScript 4.1引入的template literal types为解决这一问题提供了新思路,它允许…...

面试官问我CSMA/CD的‘截断二进制指数规避算法’怎么算,我用这个例子讲明白了

面试官问我CSMA/CD的‘截断二进制指数规避算法’怎么算,我用这个例子讲明白了 在计算机网络面试中,CSMA/CD协议及其核心算法——截断二进制指数规避算法,几乎是必考的知识点。记得我第一次被问到"碰撞11次后随机数r的取值范围是多少&quo…...

条款04:确定对象被使用前已先被初始化

C并不能保证每个对象在定义时都被自动初始化。就像书中第一条提到的一样,C包含多种子语言,例如定义一个C风格的整型数组(int[])时,其中就可能包含非零初始化的元素,而在定义标准库(STL)中的容器时,例如一个整型向量(st…...

STM32 IAP升级后中断失灵?别慌,检查一下BootLoader里这个寄存器

STM32 IAP升级后中断失灵?深入解析FAULTMASK寄存器的关键作用 最近在嵌入式开发社区中,不少工程师反馈在进行STM32的IAP(In-Application Programming)升级后,应用程序的主循环能够正常运行,但所有中断都无法…...

MySQL触发器实现级联删除效果_MySQL触发器替代外键操作

在 MySQL 中,订单表的 DELETE 触发器无法删除关联的订单项,因触发器禁止修改自身触发表;唯一可行方案是在 orders 表上创建 AFTER DELETE 触发器执行子表删除,但其不参与事务回滚,易致数据不一致,故推荐优先…...

R3nzSkin国服换肤工具:英雄联盟国服免费皮肤修改器完整教程

R3nzSkin国服换肤工具:英雄联盟国服免费皮肤修改器完整教程 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server R3nzSkin国服特供版是一款专为英…...

第三章 10.11.12上机实践

import math 输入三条边 a float(input("请输入三角形的边A: ")) b float(input("请输入三角形的边B: ")) c float(input("请输入三角形的边C: ")) 判断是否能构成三角形 if a > 0 and b > 0 and c > 0 and a b > c and a c &g…...

深度剖析成都奥迪 A6L 的 AP 卡钳升级之路

# 深度剖析成都奥迪A6L的AP卡钳升级之路 在汽车改装领域,制动系统的升级对于提升车辆性能与安全性至关重要。对于成都的奥迪A6L车主而言,AP卡钳升级成为优化驾驶体验的热门选择。但一个关键问题浮现:奥迪AP卡钳升级在成都哪里做呢&#xff1f…...

Day03:ReAct架构概述:从_军师_到_将军_的进化

文章目录一、ReAct架构概述:从"军师"到"将军"的进化一、ReAct 架构概述:从 "军师" 到 "将军" 的进化二、ReAct 的工作模式:让 AI 像人类一样思考和行动2.1 核心循环机制:Thought-Action-…...

LLM 推理加速实战:vLLM 与 TensorRT-LLM 深度对比

LLM 推理加速实战:vLLM 与 TensorRT-LLM 深度对比 前言:随着大语言模型在生产环境中的广泛应用,推理性能成为关键瓶颈。一个 70B 参数的模型,单次推理可能需要数秒甚至数十秒。本文将深入剖析两大主流推理加速框架——vLLM 和 TensorRT-LLM,从原理到实践,帮助你选择最适合…...

别再死记硬背了!用一张图+实战案例,彻底搞懂BGP选路12条规则(华为设备)

可视化拆解BGP选路:从决策树到实战负载均衡 第一次接触BGP选路规则时,看着密密麻麻的12条规则列表,我的大脑就像路由器遇到路由环路一样陷入死循环。直到在项目中出现多路径选择错误,才意识到死记硬背的规则根本经不起真实网络的考…...

补码:计算机减法变加法的魔法(深入剖析)

1. 为什么计算机需要补码? 我第一次接触补码这个概念时,也是一头雾水。计算机明明可以直接用二进制表示数字,为什么还要搞出源码、反码、补码这么复杂的东西?后来在实际项目中遇到一个简单的减法运算问题,才真正理解了…...

OpenCV中solvePnP的EPnP选项到底是怎么工作的?一个代码与公式的对照解析

OpenCV中solvePnP的EPnP选项到底是怎么工作的?一个代码与公式的对照解析 当你在计算机视觉项目中调用cv::solvePnP函数并选择SOLVEPNP_EPNP标志时,是否曾好奇这个黑箱内部究竟发生了什么?本文将以代码实现与数学公式双重视角,为你…...

技术人如何从肯尼迪就职演说中学习高效沟通与演讲技巧(附英文原文精读)

技术人如何从肯尼迪就职演说中学习高效沟通与演讲技巧 当技术人站在会议室白板前讲解架构设计,或在行业峰会聚光灯下演示创新成果时,有多少人思考过:为什么有些技术分享令人昏昏欲睡,而有些却能引发全场共鸣?肯尼迪196…...

如何查询SQL数据库的连接数状态_查询全局运行参数

查MySQL连接数应根据需求选择:SHOW STATUS LIKE Threads_connected获当前打开连接数(含空闲),轻量适合监控;SHOW PROCESSLIST列线程详情(含SQL、用户、状态),但权限受限且默认仅前10…...

python kics

## 关于 Python KICS,一次不那么官方的漫谈 最近在几个基础架构和安全相关的项目里,又遇到了那个老生常谈的问题:如何在代码部署前,就发现那些隐藏在基础设施即代码(IaC)配置里的安全隐患?像 Te…...

python tfsec

## 关于 Python 中的 tfsec:一个安全工程师的视角 如果你在 Python 项目中处理过 Terraform 代码,或者你的团队同时维护着基础设施即代码和应用程序代码,那么你很可能遇到过这样一个问题:如何确保那些定义云资源的 .tf 文件是安全…...

python terrascan

# 聊聊Python Terrascan:当IaC安全遇上Python的灵活 最近在基础设施即代码(IaC)安全扫描这个领域,有个工具逐渐引起了注意——Python Terrascan。它不是那种一夜爆红的技术,而是随着云原生和DevSecOps的普及&#xff0…...

为什么大家都说嘎嘎降AI好用?深度解读降AI率工具好坏的本质

为什么大家都说嘎嘎降AI好用?深度解读降AI率工具好坏的本质 一、一个口碑现象:嘎嘎降AI是怎么火起来的? 2026年毕业季,有个明显的趋势:在知乎、小红书、B站等平台上,嘎嘎降AI被提到的频率越来越高。不是自吹自擂的广告帖,而是真实用户在分享"终于过了"…...

SSL/TLS 的演进

在学习SSL和TLS握手过程中,书上(计算机网络:自顶向下的方法)和博客文章,总会有一些出入和矛盾点,让我摸不着头脑,所以我通过 AI 对 SSL 和 TLS 各个版本握手模式进行了总结,希望帮到…...

降AI率工具哪个好?背后的判断逻辑你可能没想过

降AI率工具哪个好?背后的判断逻辑你可能没想过 一、一个被问烂了的问题,却很少有人答对 “降AI率工具哪个好?”——这是2026年毕业季被问得最多的问题之一。打开知乎、小红书、百度贴吧,铺天盖地的测评、排行榜、推荐帖,但真正能帮你做决策的内容寥寥无几。 为什…...