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

别再死记硬背了!用Arduino和ADC0804芯片,5分钟搞懂AD转换的采样保持到底在干啥

用Arduino和ADC0804芯片5分钟直观理解AD转换的采样保持原理记得第一次在教科书上看到采样保持电路这个词时我盯着那几张抽象的原理图看了半小时还是一头雾水。直到后来用ADC0804芯片配合Arduino做了个简单的电压测量实验才突然明白那些看似复杂的专业术语到底在描述什么。今天我们就用最直观的方式通过实际电路和代码来观察采样保持的完整过程。1. 实验准备认识你的硬件伙伴在开始动手前我们先快速了解下今天要用到的两个核心硬件Arduino开发板和ADC0804模数转换芯片。Arduino相信大家都不陌生这个开源硬件平台以其易用性著称即使没有电子工程背景也能快速上手。而ADC0804则是经典的8位逐次逼近型ADC芯片虽然现在有更多高性能ADC可选但它简单的引脚设计和稳定的性能使其成为学习AD转换原理的理想选择。ADC0804关键引脚说明引脚名称类型功能描述VIN()输入模拟信号正输入端VIN(-)输入模拟信号负输入端单端接地DB0-DB7输出8位数字输出CS输入片选信号低电平有效RD输入读使能低电平有效WR输入写/启动转换低电平有效INTR输出转换结束中断低电平有效提示ADC0804的工作电压为5V与Arduino的IO电平完全兼容这大大简化了我们的电路设计。实验还需要一个10kΩ电位器作为模拟信号源几根杜邦线以及一个USB数据线为Arduino供电。硬件成本总共不超过50元但能获得的价值远超这个数字。2. 电路连接从原理图到面包板现在让我们把理论转化为实际电路。ADC0804与Arduino的连接并不复杂但有几个关键点需要注意电源连接ADC0804的VCC接Arduino的5V输出AGND和DGND都连接到Arduino的地参考电压Vref/2接2.5V可以用两个5kΩ电阻分压获得控制信号连接CS引脚直接接地始终使能芯片WR连接到Arduino的D2引脚RD连接到Arduino的D3引脚INTR连接到Arduino的D4引脚数据线连接DB0-DB7分别连接到Arduino的D5-D12模拟输入VIN()连接电位器的中间引脚VIN(-)接地电位器两端分别接5V和地// 简单的连接测试代码 void setup() { pinMode(2, OUTPUT); // WR pinMode(3, OUTPUT); // RD pinMode(4, INPUT); // INTR Serial.begin(9600); } void loop() { digitalWrite(2, LOW); // 启动转换 delayMicroseconds(10); digitalWrite(2, HIGH); while(digitalRead(4) HIGH); // 等待转换完成 digitalWrite(3, LOW); // 读取数据 // 这里添加读取DB0-DB7的代码 digitalWrite(3, HIGH); delay(100); }这个基础代码框架展示了如何启动转换和读取结果。在实际实验中我们会进一步完善它来实现波形观测功能。3. 代码实现让采样过程可视化为了真正理解采样保持的原理我们需要看到电压是如何被捕捉并保持的。Arduino的串口绘图器(Serial Plotter)功能将成为我们的秘密武器它能实时显示电压变化让抽象的概念变得触手可及。下面是完整的实验代码const int WR_PIN 2; const int RD_PIN 3; const int INTR_PIN 4; const int DATA_PINS[] {5,6,7,8,9,10,11,12}; void setup() { for(int i0; i8; i) { pinMode(DATA_PINS[i], INPUT); } pinMode(WR_PIN, OUTPUT); pinMode(RD_PIN, OUTPUT); pinMode(INTR_PIN, INPUT); digitalWrite(WR_PIN, HIGH); digitalWrite(RD_PIN, HIGH); Serial.begin(115200); } void loop() { // 启动转换 digitalWrite(WR_PIN, LOW); delayMicroseconds(1); digitalWrite(WR_PIN, HIGH); // 等待转换完成 while(digitalRead(INTR_PIN) HIGH); // 读取结果 digitalWrite(RD_PIN, LOW); int adcValue 0; for(int i0; i8; i) { adcValue | (digitalRead(DATA_PINS[i]) i); } digitalWrite(RD_PIN, HIGH); // 转换为电压值(0-5V) float voltage adcValue * (5.0 / 256.0); // 发送到串口绘图器 Serial.println(voltage); // 控制采样率 delay(10); }上传这段代码后打开Arduino IDE的串口绘图器(Tools Serial Plotter)然后慢慢旋转电位器。你会看到一个相当平滑的电压变化曲线——这说明我们的ADC工作正常但还看不到采样保持的效果。4. 揭示采样保持调整代码观察细节要看到采样保持的实际效果我们需要做两处关键修改提高采样率减少loop()中的delay时间让采样更密集添加原始模拟值同时输出电位器的直接读数作为对比修改后的核心代码如下void loop() { // 读取原始模拟值(A0引脚接电位器) int rawAnalog analogRead(A0); float rawVoltage rawAnalog * (5.0 / 1024.0); // ADC0804转换 digitalWrite(WR_PIN, LOW); delayMicroseconds(1); digitalWrite(WR_PIN, HIGH); while(digitalRead(INTR_PIN) HIGH); digitalWrite(RD_PIN, LOW); int adcValue 0; for(int i0; i8; i) { adcValue | (digitalRead(DATA_PINS[i]) i); } digitalWrite(RD_PIN, HIGH); float adcVoltage adcValue * (5.0 / 256.0); // 同时输出两个电压值 Serial.print(rawVoltage); Serial.print(,); Serial.println(adcVoltage); delay(5); // 更快的采样周期 }现在串口绘图器会显示两条曲线一条是电位器的直接读数连续变化的模拟信号另一条是经过ADC0804转换后的数字值。当你快速旋转电位器时可以清楚地看到模拟信号是连续变化的平滑曲线数字信号呈现阶梯状每个台阶就是采样保持的结果每个台阶的持续时间取决于我们的采样率这个简单的实验完美展示了采样保持的两个关键阶段采样时刻ADC捕获当前电压值台阶的起点保持阶段在下次采样前输出保持这个值不变台阶的水平部分5. 深入理解从现象到本质通过前面的实验我们已经直观地看到了采样保持的效果。现在让我们更深入地理解背后的原理和技术细节。采样保持电路的核心组件采样开关通常是一个MOSFET晶体管在采样时刻短暂导通保持电容存储采样时刻的电压值ADC0804内部约100pF缓冲放大器高输入阻抗防止电容过快放电在ADC0804内部这个过程的时序如下WR引脚变低时启动转换并闭合采样开关采样开关在极短时间内(约1μs)闭合对输入电压采样采样开关断开电容开始保持电压逐次逼近逻辑开始工作比较器将保持的电压转换为数字值转换完成INTR引脚变低读取数据时RD引脚变低数字值输出到DB0-DB7实际工程中的考量采样时间必须足够长以确保电容充电到准确值保持衰减由于电容漏电保持的电压会缓慢下降孔径时间从采样命令发出到开关完全断开的时间孔径抖动孔径时间的不确定性会导致采样时刻波动// 测量采样保持衰减的代码示例 void measureHoldDecay() { // 设置一个固定电压 float setVoltage 2.5; // 例如通过精密基准源 // 启动转换 digitalWrite(WR_PIN, LOW); delayMicroseconds(1); digitalWrite(WR_PIN, HIGH); // 延迟不同时间后读取 for(int i0; i100; i) { delayMicroseconds(10); // 每次增加10μs digitalWrite(RD_PIN, LOW); int val 0; for(int j0; j8; j) { val | (digitalRead(DATA_PINS[j]) j); } digitalWrite(RD_PIN, HIGH); float voltage val * (5.0 / 256.0); Serial.print(i*10); Serial.print(,); Serial.println(voltage, 4); // 4位小数精度 } }这个进阶实验可以测量ADC0804的保持衰减特性帮助我们理解实际器件与理想模型的差异。

相关文章:

别再死记硬背了!用Arduino和ADC0804芯片,5分钟搞懂AD转换的采样保持到底在干啥

用Arduino和ADC0804芯片5分钟直观理解AD转换的采样保持原理 记得第一次在教科书上看到"采样保持电路"这个词时,我盯着那几张抽象的原理图看了半小时还是一头雾水。直到后来用ADC0804芯片配合Arduino做了个简单的电压测量实验,才突然明白那些看…...

5个实用技巧:用Supersonic开源音乐播放器打造个性化音乐体验

5个实用技巧:用Supersonic开源音乐播放器打造个性化音乐体验 【免费下载链接】supersonic A lightweight and full-featured cross-platform desktop client for self-hosted music servers 项目地址: https://gitcode.com/gh_mirrors/sup/supersonic Supers…...

因果效应估计:从关联到因果,AI决策的“反事实”革命

因果效应估计:从关联到因果,AI决策的“反事实”革命 引言 在大数据时代,我们常常陷入“相关性不等于因果性”的经典陷阱。广告点击率的提升,真的是营销活动的功劳吗?某种药物的疗效,在复杂的真实世界中如…...

别再乱画了!Axure RP 9/10 高效原型设计的8个核心规范(附实战避坑清单)

Axure高效原型设计的黄金法则:从规范到实战的进阶指南 在数字产品设计领域,原型就像建筑师的蓝图,既是创意的具象表达,也是团队协作的共同语言。作为从业多年的交互设计师,我见过太多本可以避免的"原型灾难"…...

网盘直链解析工具终极指南:八大平台高速下载完整解决方案

网盘直链解析工具终极指南:八大平台高速下载完整解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...

显卡驱动彻底清理指南:Display Driver Uninstaller(DDU)完全教程

显卡驱动彻底清理指南:Display Driver Uninstaller(DDU)完全教程 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors…...

5分钟掌握微信好友检测神器:WechatRealFriends完整使用指南

5分钟掌握微信好友检测神器:WechatRealFriends完整使用指南 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriend…...

ruoyi源码探秘-3 登录后端接口的架构设计与安全实践

1. RuoYi登录模块架构全景 第一次拆解RuoYi的登录模块时,我对着admin和system两个模块反复切换了十几次才理清调用关系。这个经典框架的登录流程设计,就像乐高积木一样把安全、性能、扩展性都考虑进去了。先带大家看看整体架构:admin模块作为…...

LX Music桌面版:免费开源的多平台音乐聚合播放器完整指南

LX Music桌面版:免费开源的多平台音乐聚合播放器完整指南 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop LX Music桌面版是一款基于Electron和Vue3技术栈构建的免费开…...

圣女司幼幽-造相Z-Turbo部署避坑指南:日志排查、WebUI访问、首次加载耗时详解

圣女司幼幽-造相Z-Turbo部署避坑指南:日志排查、WebUI访问、首次加载耗时详解 本文详细讲解使用Xinference部署圣女司幼幽-造相Z-Turbo文生图模型的完整流程,重点解决部署过程中的常见问题,帮助您快速上手这个专门生成牧神记圣女司幼幽图片的…...

5个理由让你立刻爱上这款开源音乐播放器:告别传统播放器的困扰

5个理由让你立刻爱上这款开源音乐播放器:告别传统播放器的困扰 【免费下载链接】lx-music-desktop 一个基于 Electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 你是否曾经为了找一首歌,不得不在多个音乐A…...

简单3步解密网易云音乐NCM文件:ncmdumpGUI完整使用指南

简单3步解密网易云音乐NCM文件:ncmdumpGUI完整使用指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾在网易云音乐下载了心爱的歌曲&…...

欧姆龙CP1H双NC413模块十轴控制程序案例:含DD马达控制、详细注释及参数设置

欧姆龙cp1h带两个nc413模块,总共十个轴控制程序案例,还有DD马达控制,内带详细注释,包含nc413所有参数设置,写入,定位控制,附带昆仑通泰触摸屏程序和dd马达程序最近在搞一个项目,用欧…...

SubtitleEdit:告别字幕制作烦恼,这款开源编辑器让字幕编辑变得如此简单

SubtitleEdit:告别字幕制作烦恼,这款开源编辑器让字幕编辑变得如此简单 【免费下载链接】subtitleedit the subtitle editor :) 项目地址: https://gitcode.com/gh_mirrors/su/subtitleedit 你是否曾因字幕时间轴不同步而反复调整?是否…...

题解:AcWing 5948 装箱问题

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…...

Adobe-GenP技术深度解析:二进制修补原理与Adobe软件激活实战指南

Adobe-GenP技术深度解析:二进制修补原理与Adobe软件激活实战指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP作为Adobe Creative Cloud系…...

Qwen-Image-2512+LoRA实战落地:Unity游戏引擎中实时像素资源导入流程

Qwen-Image-2512LoRA实战落地:Unity游戏引擎中实时像素资源导入流程 1. 为什么游戏开发者需要关注像素艺术生成 在独立游戏开发领域,像素艺术始终保持着独特的魅力。然而传统像素美术创作面临两个核心痛点:一是专业像素画师稀缺且成本高昂&…...

HEIF Utility:Windows用户的iPhone照片救星!轻松查看转换HEIF格式

HEIF Utility:Windows用户的iPhone照片救星!轻松查看转换HEIF格式 【免费下载链接】HEIF-Utility HEIF Utility - View/Convert Apple HEIF images on Windows. 项目地址: https://gitcode.com/gh_mirrors/he/HEIF-Utility 你是否曾经遇到过从iPh…...

Adobe-GenP终极破解指南:3分钟解锁全系列Adobe软件的完整方案

Adobe-GenP终极破解指南:3分钟解锁全系列Adobe软件的完整方案 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP是一款专为Adobe Creative Clou…...

百度网盘批量管理工具技术解析:自动化转存、智能检测与高效分享解决方案

百度网盘批量管理工具技术解析:自动化转存、智能检测与高效分享解决方案 【免费下载链接】BaiduPanFilesTransfers 百度网盘批量转存、分享和检测工具 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduPanFilesTransfers 在数字化内容管理日益复杂的今天&…...

SSCom串口调试助手:跨平台串口通信终极指南

SSCom串口调试助手:跨平台串口通信终极指南 【免费下载链接】sscom Linux/Mac版本 串口调试助手 项目地址: https://gitcode.com/gh_mirrors/ss/sscom SSCom是一款专为Linux和macOS系统设计的免费串口调试工具,它为嵌入式开发者提供了简单高效的串…...

从扫地机到自动驾驶:聊聊LiDAR测距技术背后的‘芯’事与成本账

从扫地机到自动驾驶:LiDAR测距技术的商业逻辑与芯片密码 当你在电商平台搜索"扫地机器人"时,2000元价位段的产品详情页里,"LDS激光导航"是标配卖点;而当你打开自动驾驶汽车的技术白皮书,"905…...

ctfileGet终极指南:3步快速获取城通网盘直连地址(完全免费)

ctfileGet终极指南:3步快速获取城通网盘直连地址(完全免费) 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否厌倦了城通网盘冗长的广告等待和复杂的下载流程&am…...

终极指南:ApexCharts.js错误监控与上报的完整生产环境问题排查方案

终极指南:ApexCharts.js错误监控与上报的完整生产环境问题排查方案 【免费下载链接】apexcharts.js 📊 Interactive JavaScript Charts built on SVG 项目地址: https://gitcode.com/gh_mirrors/ap/apexcharts.js ApexCharts.js作为一款基于SVG的…...

Java AI - LangChain4j MCP 核心原理与实战开发(含代码解析及代码仓库地址)

LangChain4j MCP 核心原理与实战开发 随着大模型应用的规模化落地,多智能体(Multi-Agent)、工具调用的协同需求日益突出,LangChain4j 作为主流的大模型开发框架,推出了 MCP(Model Communication Protocol)协议,用于规范大模型与工具服务、多智能体之间的通信交互,解决…...

TrollInstallerX终极指南:3分钟在iOS 14-16.6.1设备上安装TrollStore

TrollInstallerX终极指南:3分钟在iOS 14-16.6.1设备上安装TrollStore 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX TrollInstallerX是一款专为iOS设备设计…...

从修车师傅到诊断专家:手把手教你读懂UDS故障码(19服务)与清码(14服务)背后的门道

从修车师傅到诊断专家:手把手教你读懂UDS故障码(19服务)与清码(14服务)背后的门道 车间里那台亮着发动机故障灯的奥迪A4L已经停了三天,张师傅第三次插上诊断仪时,屏幕上依然显示"P0172 - 燃…...

C++的std--ranges管道优化

C的std::ranges管道优化:现代代码的流畅之道 在C20中,std::ranges的引入彻底改变了数据处理的范式。通过管道操作符(|)将算法链式调用,代码不仅更简洁,还大幅提升了可读性和性能。这种函数式编程风格让开发…...

题解:洛谷 B4108 [JOI2025 预选赛 R1H1] 铅笔 2

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…...

信号处理实战:EMD与VMD在风电故障诊断中的5个关键差异与应用选择

信号处理实战:EMD与VMD在风电故障诊断中的5个关键差异与应用选择 风电场的齿轮箱异响、轴承磨损或叶片裂纹,往往隐藏在复杂的振动信号中。当传统的傅里叶变换难以捕捉这些非平稳信号的细微特征时,EMD(经验模态分解)和V…...