精华内容
下载资源
问答
  • 51 单片机AD采集电压值的坑

    千次阅读 热门讨论 2021-09-03 17:20:34
    最近又在忙低功耗相关项目,需要对设备电池进行电压进行检测,ad采集的例程原厂都有给到,相关的文件说明都有,但是理想和现实还是比较骨感的,采集的电压总是不对,调了两天,赶在周末前终于发现了问题。...

    1.引言

    最近又在忙低功耗相关项目,需要对设备电池进行电压进行检测,ad采集的例程原厂都有给到,相关的文件说明都有,但是理想和现实还是比较骨感的,采集的电压总是不对,调了两天,赶在周末前终于发现了问题。完美!!可能稍微不完美的就是原厂的技术支持,根本就不支持,发了微信都不回复,态度不太行。。。。。不过最后还是自己发现了问题,真解气!

    2.现象

    电压检测使用的是单片机的引脚,但电池电压一般为4.2v,大于GPIO的承受电压3.3v,所以需要一个分压电路,分压电路原理图如下图所示。

     上图中R7和R8是分压电阻,使用的阻值都是1M的电阻,通过理论分析,测量端点应该是2.5V,但是ad采集出来的内容却不是,甚至是0.几V,真是瞎了,跟所学的理论知识完全对不上,然后问原厂的人,原厂的人说肯定是分压电阻有问题,让我们看看,然后。。。。。就没有然后了,都不知道看什么,他们啥都不说,真的气人。

    然后我们拿开发板用同样的代码去测试,直接将测量点接到一个较高电压值得端点,比如:3.3v的位置,然后是正常的。但是接到上图的测量端点,却是不行,但问题在于:我用电压表去测量上图的测量端点是正常的2.5V

    所以真的...无语.....

    3.发现问题

    在测试的过程中,使用了一个小的电阻进行分压测试,然后突然就真的可以了,显示了测量端点理论的电压值,经分析。一开始我们用的是1M+1M的电阻,通过测量端点的电流只有大约0.5ua,真的太小了,导致无法测量出端点的电压值,换了小电阻5K+5K之后,经过测量端点的电流0.5mA,这时AD就可以正常采集电压值了。

    总结:ad在采集电压的时候,采集端点允许通过的电流不能太小???但是电压表可以测量出来,奇了怪了,但问题解决就是减小分压电路的电阻,让通过测量端点的电流大一点。

    展开全文
  • 采集ad数据为高八位,可参考stc12c5a60s2单片机手册
  • /************************************************************** 函数名称:NtcAD_Testing() 函数功能:温度传感器采样函数...备 注:采样NTC的AD值,采样6次,去掉最大及最小求算术平均值 *****************...
    /**************************************************************
    函数名称:NtcAD_Testing()
    函数功能:温度传感器采样函数
    入口参数:
    出口参数:Flag_Ntc_OneAd,AdResult
    备    注:采样NTC的AD值,采样6次,去掉最大及最小求算术平均值 
    **************************************************************/
    void NtcAD_Testing(unsigned char i)
    {
    	//static volatile unsigned char	admin,admax,adtimes;	
    	//static volatile unsigned int	adsum;
    	//static volatile bit Flag_ADFrist;
        if(Flag_AD&&ADIF)
    	{  
    		Flag_AD=0;
    		if(!Flag_ADFrist)
    		{
    			admax = ADRESH;
    			admin = ADRESH;
    			Flag_ADFrist=1;
    		}
    		else if(ADRESH > admax)
    			admax = ADRESH;				//AD采样最大值
    		else if(ADRESH < admin)
    			admin = ADRESH;				//AD采样最小值
    		
    		adsum += ADRESH;
    		if(++adtimes >= 6)
    		{
    			adsum -= admax;
    			adsum -= admin;	
    			AdResult = adsum >> 2;		//8次平均值作为最终结果
    			Flag_ADFrist=0;
    			if(admax>(admin+20))       
    			{   //最大值及最小值差20个8BITAD则当前采样数据作废
    				
        			adsum = 0;
        			admin = 0;
        			admax = 0;
        			adtimes = 0;
    		    }
    		    else
    		    {
    		     	adsum = 0;
        			admin = 0;
        			admax = 0;
        			adtimes = 0;
    				ADnex++;
    				Flag_Ntc_OneAd=1;
        			   
    		    }	
    		}
    	}
    	
    }

    转载于:https://www.cnblogs.com/dujiaoxi/p/9972953.html

    展开全文
  • 当遇到MCU采集到的AD值相差特别大的时候,应该怎么分析。 1.首先再次确认采样点的实际电压。 2.确认采样的参考电压是否正确,是内部参电压VCC、1.2V或者是外部的Vref. 3.以上两步都确认没有问题后,核查代码的初始化...

    当遇到MCU采集到的AD值相差特别大的时候,应该怎么分析。
    1.首先再次确认采样点的实际电压。
    2.确认采样的参考电压是否正确,是内部参电压VCC、1.2V或者是外部的Vref.
    3.以上两步都确认没有问题后,核查代码的初始化有无问题。
    4.以上都确认无误的话,观察AD的IO口的对外电阻值,是否在芯片推荐使用的对外电阻值得范围之内。如果超出芯片推荐的范围值得话就要小心了,有可能是因为外部阻抗过大所导致的AD采样不准。
    如果是这种情况的话,可以先将AD的采样保持时间设置的尽量长,将AD的的分频调至最大,以保证采样时间的充足。如果依旧无法解决的话,建议将对外阻抗调整到芯片推荐范围之内。

    案例:
    我遇到过的一个现象就是如此:
    AD采样的电压跟实际值相差太大,软件和采样时间都检查过了没有问题,最后去看AD口的阻抗,我们使用220M :22M的分压比来采样的(因为产品的低功耗需求,必须在每一个节点来把控功耗的限制,因为AD采样其实是蛮增加功耗的,所以就尽量放大阻抗限流,以此来控制功耗。)。查看芯片数据手册,推荐使用的是1M以内的推荐对外阻抗,所以将阻抗调整到推荐范围就顺利解决了该问题。

    说到这里不得不提及一个问题,为什么外部阻抗过大会导致AD采样失准呢?
    因为芯片内部的AD采样的原理是靠一个RC电路来实现的,采样保持时间其实就是等C充电完成来测量C的电压就是实际测得的电压值,由于外部阻抗过大的时候,限流严重导致AD口灌入的电流减小很多,导致RC即使在最大的采样保持时间也没法将C充电至外部实际电压值,所以导致AD采样失准,这是阻抗过大之后AD采样失准的核心原因。

    展开全文
  • 该工程,是用KEIL开发的适合单片机采集AD值,并且通过串口传输数据,采用了协议传输,通过相应的上位机显示波形图,很有用
  • 基于51单片机,用于内部AD采样,并用LCD1602显示采样电压值
  • 51单片机AD采集protues仿真,实现数据的多路采集
  • 51单片机ad采样

    2013-12-11 17:07:45
    51单片机ad采样,通过外置芯片进行采样
  • 实用AD采集单片机综合实验原理图。protel
  • 这些文档和代码是针对4路AD设计的,有详细的电路原理图和51源代码解析。
  • 单片机课程设计姓 名: 学 号 :专 业: 电子科学与技术题 目: 单片机电压采集装置专 题: AD 转换及编程实现指导教师:设计地点: 实验楼 ...

    单片机课程设计

    姓 名: 学 号 :

    专 业: 电子科学与技术

    题 目: 单片机电压采集装置

    专 题: AD 转换及编程实现

    指导教师:

    设计地点: 实验楼 时 间:

    2012 年 12 月

    单片机课程设计任务书

    专业年级 电科 学号 学生姓名

    任 务 下 达 日 期 : 20 12 年 12 月 20 日

    设计日期: 2012 年 12 月 1 日 至 2012 年 12 月 20 日

    设计题目: 单片机电压采集装置

    设计专题题目: AD转换及编程实现

    设计主要内容和要求: 制作单片机电压采集装置

    基本要求

    1、模拟通道 0 电压采集功能

    在 ADC0809的输入 0~5V 电压,数码管实时显示被测电压值(显示精

    度 0.001V ,即显示 1 位整数, 3 位小数)。

    2、指定通道电压采集功能

    通过模式选择按键切换到“指定通道电压采集功能”, 利用 +/- 按键改

    变通道值,显示同上。

    3、8 通道自动循环电压采集功能制作单片机电压采集装置

    通过模式选择按键切换到“ 8 通道自动循环电压采集功能”,

    默认通道切换时间为 2 秒。

    扩展要求

    1、超限报警功能

    当 Vi 超出程序预设报警限值时,报警灯以 1Hz速度闪烁显示,并显示

    提示符以区别上限或下限报警。

    2、可修改上限和下限报警值的超限报警拨弄能

    可随意设置上、下限报警值(步长 0.1V ,默认下限为 0V,上限为 5V)。

    设置时,当下限≥上限(或上限≤下限)时予以提示,并拒绝接受数据。

    指导教师签字:

    摘要:

    此单片机电压采集装置使用 AT89S52 芯片和 ADC0809芯片进行电压采

    集,实现 AD 转换的基本功能。,键盘电路和 8 个 LED数码显示电路。扩展

    电路中包含了 A/D 转换电路, AD转换五种工作模式下对应要实现的功能 : 即

    模式 0 下完成通道 0 的模拟信号采集;模式 1 时完成指定模拟通道电压采集,

    按加、减( K2,K3)按键手动实现模拟通道的切换 , 此外,通过内部定时器

    T1 实现报警功能,即超过上限电压 4.999V 时报警,同时点亮 P1.1 即 L2 发

    光 LED小灯,低于下限电压 0.000V 时也实现报警功能,只是报警的频率改

    变,同时点亮 P1.0 即 L1 发光 LED小灯;而模式 2 完成 8 通道模拟信号自动

    循环采集功能,通过加入内部定时器 T0 中断,从而实现每隔 1 秒通道值自

    动加 1 的功能;进入模式 3 的时候,需要人为设置报警上限,此程序设定报

    警上限为 4V, 而报警上限默认值为 3.999V ,通过按加、减( K2/K3)按键实

    现上限加减 0.1V ;模式 4 的时候设置报警下限电压,默认报警下限电压为

    1.999V, 本程序中设置的报警下限电压为

    展开全文
  • 8051单片机AD采集基础

    2010-07-18 17:45:03
    基于8051单片机AD采集程序.....................
  • 单片机AD电压采集

    2012-11-23 22:45:06
    使用的单片机为STC5A60S2,外接晶振32.768M //采用受用单片机自带的AD采集电压
  • 单片机采集电压信号(AD转换的应用实例)上 上一篇文章我们讲了如何把一个信号的峰值采集,今天我们来讲如何把它连入单片机上,这里我们采用的是Multisim仿真。 我们都知道单片机采集的信号都是高电平和低电平,模拟...
  • shineblink core 开发板(简称Core)的库函数支持AD采样功能,所以只需要调用两三个API,即可实现AD采样功能。 PS:Core 仅用五、六行代码即可实现Wifi/Ble/NB/Lora/ThreadMesh/RFID/Eth/Usb/RS485/RS232通信、以及...
  • 1.程序中每400US处理AD程序一次,且通过AD采集的次数与24做比较来判断波形是50HZ或者60HZ 这是什么道理? 2.为什么每次采集的值累加和与一固定值做比较来判断输入电压的幅值是220V或者380V 程序中有段注释 如下...
  • 描述ad采样的步骤:首先将外部的信号,通过电路或者已有的AD芯片转换成 主CPU能接受的电压 ...单片机AD采样工作原理一般来说,AD有积分型的和逐次逼近型的,后都更多的被使用,所以我们一般也都是使用的这一种。说...
  • 单片机继承1k采样率的24为AD采集,外围设备少,使用方便。自带有算法滤波。满足一般需要。低功耗,一片单片机完成算法任务
  • CC2510单片机AD采集Keil程序,Win7下能运行
  • 用stc单片机内部ad采集多路交流信号,有两种办法: 一、用两个AD转换芯片,两路模拟量分别接一个。用单片机控制两个AD芯片同时启动转换,这样基本可以实现采集到同一时刻的两路模拟量值。 二、用两个采样保持器...
  • STM32单片机ADC采集

    千次阅读 2020-08-10 10:04:04
    //等待校准完成 } /** * 功能:获取ADC1_IN9单次AD转换结果 * 参数:None * 返回值:None */ u16 getConvValue(void) { ADC_SoftwareStartConvCmd(ADC1, ENABLE); //开启软件转换,置位ADC_CR2的SWSTART位 while (!...
  • 单片机在进行AD转换前需要先设置一个参考电压。假如把参考电压设置为5V,5V=4095,0V=0;根据这样的关系,我们就可以把模拟电压进行数字化了。比如:2V=2/5*4095=1638。单片机通过ADC测电流电子产品的设计中,我们...
  • 本资料中包含了华大单片机HC32L110 HC32L003 HC32L005 HC32F030 HC32F072 HC32F170 HC32F176 HC32F190 HC32F196 HC32L130 HC32L136 HC32L170 HC32L176 HC32L190 HC32L196 HC32L072 HC32L073的原理图,欢迎大家下载...
  • AD采集---理论

    千次阅读 2019-12-02 11:21:29
    **实现对模拟信号的采集,要首先对其进行滤波、信号转换、分压限幅、信号放大等预处理,消除杂波干扰,增加信号的驱动能力和抗干扰能力满足A/D转换的输入条件,提高分辨率和测量精度;同时满足使用隔离、保护等电路...
  • LCD1602AD采集程序

    2018-07-31 17:20:06
    此代码能实现在LCD1602模块上显示AD模块采集的电压zhi。
  • 用stc12c5a60s2单片机采集数据后,想要对数据进行筛选比较,选出最小值!求大神给解题思路
  • 声音采集采用最简单的驻极体麦克风,将信号进行放大滤波后输入到单片机内部AD端口。电路图如下,第一级运放用于放大,第二级为低通滤波。(电阻电容参数仅供参考)。 单片机采集声音数据后,将数据以WAV格式保存...
  • 本帖最后由 张全武5 于 2015-6-26 18:36 编辑请问各位一下,AD转换结果,需要经过什么处理,,然后用if语句判断输出不同占空比的PWM..........写了这样的一段程序,,为什么会在if语句的连续判断点处,,,灯光会闪...
  • 基于51单片机+AD采集电压+DS1621采集温度+LCD12864显示+IIC仿真设计 包含源程序及仿真文件
  • 单片机ADC温度采集原理

    千次阅读 2018-12-10 18:28:42
    若 ADC 采集精度为 Nbit; 则 VCC 即对应的满量程 ADC 值为 2^N=C(常数); 若 VADC 端口当前读取的 ADC 值为 X; 则有: 由于 X 为已知量; ADC 采样精度亦被确定,RU 为已知量 所以有: 查找 NTC 数据手册的阻温(R-T)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,033
精华内容 2,013
关键字:

单片机ad采集