stc15系列单片机电流采样电路图ADC采样转实际电压电流值

21ic官方微信-->
后使用快捷导航没有帐号?
请完成以下验证码
查看: 1037|回复: 6
单片机ADC采样电压模拟里电池剩余电量问题求助
&&未结帖(20)
主题帖子积分
中级技术员, 积分 162, 距离下一级还需 138 积分
中级技术员, 积分 162, 距离下一级还需 138 积分
主题帖子积分
专家等级:结帖率:46%
主题帖子积分
中级技术员, 积分 162, 距离下一级还需 138 积分
中级技术员, 积分 162, 距离下一级还需 138 积分
各位前辈好,我做了一个手持设备,打算用stm32单片机的ADC采样3.7v里电池的电压,来判断剩余电量,因为锂电池3.7v冲满电是4.2V,所以我打算设定 电压&4.1v&&电量100%& &&&电压&3.9V&&电量80%& && & 电压& 3.7V& &电量60%& & 电压〉3.5v& & 电量40%& && & 电压〉3.3V& && &电量20% 此时设备提示电压低,& & 不知道这样设计是否可行????另外,请教各位前辈,怎么通过测量电压来判断电池在充电状态,比如电压大于。。。,表示电池在充电??
看到过一个别人的例子,是这样的,5节1.2的镍氢电池,&&电压〉6.8V表示在充电,电压〉6.3V表示电量满格,电压〉6.1v表示80%的电量,电压〉5.9V&&60%的电量,电压〉5.7v& &40%的电量,电压〉5.5v表示20%的电量,这里就是不明白,为何电压〉6.8V 表示的是充电状态????????????
主题帖子积分
主题帖子积分
专家等级:结帖率:93%打赏:0.00受赏:189.57
主题帖子积分
〓◆ 锂离子电池相关专辑 108册 324.5M ◆〓, 2013新年大礼包
本帖子中包含更多资源
才可以下载或查看,没有帐号?
主题帖子积分
主题帖子积分
专家等级:结帖率:86%
主题帖子积分
提示: 作者被禁止或删除 内容自动屏蔽
主题帖子积分
助理工程师, 积分 1207, 距离下一级还需 793 积分
助理工程师, 积分 1207, 距离下一级还需 793 积分
主题帖子积分
专家等级:结帖率:100%
主题帖子积分
助理工程师, 积分 1207, 距离下一级还需 793 积分
助理工程师, 积分 1207, 距离下一级还需 793 积分
根据电压估计剩余电量方法可行的,但需多做实验测量所用型号电池的放电曲线。
按照电压来判断锂电池是否正在充电在正规锂电池充电器配置电路情况下有一定困难的,如果是简易充电电路那种情况反到容易做到是否正在充电的检测,那种充电电路其实就是输入5V串接电阻限流然后到锂电池正。
主题帖子积分
实习生, 积分 30, 距离下一级还需 20 积分
实习生, 积分 30, 距离下一级还需 20 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
实习生, 积分 30, 距离下一级还需 20 积分
实习生, 积分 30, 距离下一级还需 20 积分
为何电压〉6.8V 表示的是充电状态?
充电时,电池是直接接通充电电源的啦,这时采样的肯定是最大电压啦,6.8V这个要看硬件。&&
主题帖子积分
高级技术员, 积分 742, 距离下一级还需 258 积分
高级技术员, 积分 742, 距离下一级还需 258 积分
主题帖子积分
专家等级:结帖率:85%
主题帖子积分
高级技术员, 积分 742, 距离下一级还需 258 积分
高级技术员, 积分 742, 距离下一级还需 258 积分
要准确测量很困难。但如果只要个大概,4.1到3.5之间线性差值就好。这之间电流稳定的话基本是线性的。3.5以下电量就没多少了,我是直接放弃,留出安全余量来。空间够,电流不大的话也不差那么一点电。
主题帖子积分
主题帖子积分
专家等级:结帖率:100%打赏:0.00受赏:25.76
主题帖子积分
锂电池的放电曲线是可以轻松查到的,不能自己臆想。充电时,电池的端电压会大于充电终止电压,由此即可判断。
,站内信、QQ、邮件等仅供业务或私人用途使用,不对技术问题单独解答。
时间类勋章
终身成就奖章
等级类勋章
坚毅之洋流
发帖类勋章
技术领袖奖章
人才类勋章
技术新星奖章
人才类勋章
时间类勋章
技术高手奖章
人才类勋章
涓涓之细流
发帖类勋章
希望之星奖章
等级类勋章
晶莹之水滴
发帖类勋章
永恒之光奖章
等级类勋章
热门推荐 /4STC12C5A60S2系列单片机10位ADC(模数转换)官方测试结果(4096个测试点,非常线性)(转自STC官网:)
STC12C5A60S2系列单片机10位ADC官方测试结果(4096个测试点,非常线性)
附:STC的STC12C5A60S2模数转换ADC官方C例程:
(转换结果高8位在:ADC_RES,低2位在:ADC_LOW2)
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC15F4K60S4 (STC12C5A60S2)系列 AD转换查询方式举例--------------*/
/* --- Mobile: (86) ----------------------------------------*/
/* --- Fax: 86-755- -------------------------------------------*/
/* --- Tel: 86-755- -------------------------------------------*/
/* --- Web:
-----------------------------*/
/* 如果要在程序中使用此代码, 请在程序中注明使用了宏晶科技的资料及程序
/* 如果要在文章中应用此代码, 请在文章中注明使用了宏晶科技的资料及程序
/*---------------------------------------------------------------------*/
//本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
//假定测试芯片的工作频率为18.432MHz
#include "reg51.h"
#include "intrins.h"
#define FOSC&&&&L
#define BAUD&&&&9600
typedef unsigned char BYTE;
typedef unsigned int WORD;
#define&&&& URMD&&&&0&&&&&&&&&& //0:使用定时器2作为波特率发生器
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//1:使用定时器1的模式0(16位自动重载模式)作为波特率发生器
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//2:使用定时器1的模式2(8位自动重载模式)作为波特率发生器
sfr T2H&& = 0xd6;&&&&&&&&&&&&&& //定时器2高8位
sfr T2L&& = 0xd7;&&&&&&&&&&&&&& //定时器2低8位
sfr&&AUXR&&&&&& =&& 0x8e;&&&&&& //辅助寄存器&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
sfr ADC_CONTR&& =&& 0xBC;&&&&&&&&&& //ADC控制寄存器
sfr ADC_RES&&&& =&& 0xBD;&&&&&&&&&& //ADC高8位结果
sfr ADC_LOW2&&&&=&& 0xBE;&&&&&&&&&& //ADC低2位结果
sfr P1ASF&&&&&& =&& 0x9D;&&&&&&&&&& //P1口第2功能控制寄存器
#define ADC_POWER&& 0x80&&&&&&&&&&&&//ADC电源控制位
#define ADC_FLAG&&&&0x10&&&&&&&&&&&&//ADC完成标志
#define ADC_START&& 0x08&&&&&&&&&&&&//ADC起始控制位
#define ADC_SPEEDLL 0x00&&&&&&&&&&&&//540个时钟
#define ADC_SPEEDL&&0x20&&&&&&&&&&&&//360个时钟
#define ADC_SPEEDH&&0x40&&&&&&&&&&&&//180个时钟
#define ADC_SPEEDHH 0x60&&&&&&&&&&&&//90个时钟
void InitUart();
void InitADC();
void SendData(BYTE dat);
BYTE GetADCResult(BYTE ch);
void Delay(WORD n);
void ShowResult(BYTE ch);
void main()
&&&&InitUart();&&&&&&&&&&&&&&&&&&&& //初始化串口
&&&&InitADC();&&&&&&&&&&&&&&&&&&&&&&//初始化ADC
&&&&while (1)
&&&&&&&&ShowResult(0);&&&&&&&&&&&&&&//显示通道0
&&&&&&&&ShowResult(1);&&&&&&&&&&&&&&//显示通道1
&&&&&&&&ShowResult(2);&&&&&&&&&&&&&&//显示通道2
&&&&&&&&ShowResult(3);&&&&&&&&&&&&&&//显示通道3
&&&&&&&&ShowResult(4);&&&&&&&&&&&&&&//显示通道4
&&&&&&&&ShowResult(5);&&&&&&&&&&&&&&//显示通道5
&&&&&&&&ShowResult(6);&&&&&&&&&&&&&&//显示通道6
&&&&&&&&ShowResult(7);&&&&&&&&&&&&&&//显示通道7
/*----------------------------
发送ADC结果到PC
----------------------------*/
void ShowResult(BYTE ch)
&&&&SendData(ch);&&&&&&&&&&&&&&&&&& //显示通道号
&&&&SendData(GetADCResult(ch));&&&& //显示ADC高8位结果
//&&&&SendData(ADC_LOW2);&&&&&&&&&& //显示低2位结果
/*----------------------------
读取ADC结果
----------------------------*/
BYTE GetADCResult(BYTE ch)
&&&&ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
&&&&_nop_();&&&&&&&&&&&&&&&&&&&&&&&&//等待4个NOP
&&&&_nop_();
&&&&_nop_();
&&&&_nop_();
&&&&while (!(ADC_CONTR & ADC_FLAG));//等待ADC转换完成
&&&&ADC_CONTR &= ~ADC_FLAG;&&&&&&&& //Close ADC
&&&&return ADC_RES;&&&&&&&&&&&&&&&& //返回ADC结果
/*----------------------------
初始化串口
----------------------------*/
void InitUart()
&&&&SCON = 0x5a;&&&&&&&&&&&&&&&&//设置串口为8位可变波特率
#if URMD == 0
&&&&T2L = 0xd8;&&&&&&&&&&&&&&&& //设置波特率重装值
&&&&T2H = 0&&&&&&&&&&&&&&&& //115200 bps(00/4/115200)
&&&&AUXR = 0x14;&&&&&&&&&&&&&&&&//T2为1T模式, 并启动定时器2
&&&&AUXR |= 0x01;&&&&&&&&&&&&&& //选择定时器2为串口1的波特率发生器
#elif URMD == 1
&&&&AUXR = 0x40;&&&&&&&&&&&&&&&&//定时器1为1T模式
&&&&TMOD = 0x00;&&&&&&&&&&&&&&&&//定时器1为模式0(16位自动重载)
&&&&TL1 = 0xd8;&&&&&&&&&&&&&&&& //设置波特率重装值
&&&&TH1 = 0&&&&&&&&&&&&&&&& //115200 bps(00/4/115200)
&&&&TR1 = 1;&&&&&&&&&&&&&&&&&&&&//定时器1开始启动
&&&&TMOD = 0x20;&&&&&&&&&&&&&&&&//设置定时器1为8位自动重装载模式
&&&&AUXR = 0x40;&&&&&&&&&&&&&&&&//定时器1为1T模式
&&&&TH1 = TL1 = 0&&&&&&&&&& //115200 bps(256 - /115200)
&&&&TR1 = 1;
/*----------------------------
----------------------------*/
void InitADC()
&&&&P1ASF = 0&&&&&&&&&&&&&&&&&& //设置P1口为AD口
&&&&ADC_RES = 0;&&&&&&&&&&&&&&&&&&&&//清除结果寄存器
&&&&ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
&&&&Delay(2);&&&&&&&&&&&&&&&&&&&&&& //ADC上电并延时
/*----------------------------
发送串口数据
----------------------------*/
void SendData(BYTE dat)
&&&&while (!TI);&&&&&&&&&&&&&&&&&&&&//等待前一个数据发送完成
&&&&TI = 0;&&&&&&&&&&&&&&&&&&&&&&&& //清除发送标志
&&&&SBUF =&&&&&&&&&&&&&&&&&&&& //发送当前数据
/*----------------------------
----------------------------*/
void Delay(WORD n)
&&&&while (n--)
&&&&&&&&x = 5000;
&&&&&&&&while (x--);
STC系列单片机的参考电压源就是输入工作电压Vcc,所以一般不用外接参考电压源,如7805三端稳压块的输出电压是5V,但实际电压可能是4.88V到4.96V,用户需要精度比较高的话,可在出厂时将实际测出的工作电压值记录在单片机内部的EEPROM(FLASH)里面,以供计算。
如果有些用户的Vcc不固定,如电池供电,电池电压在5.3V-4.2V之间飘逸,则Vcc不固定,就需要在8路A/D转换的一个通道外接一个稳定的参考电压源(例如TL431),来计算出此时的工作电压Vcc,再计算出其他几路A/D转换通道的电压。如可在ADC转换通道的第七通道外接一个1.25V(或1V等)的基准参考电压源,由此求出此时的工作电压Vcc,再计算出其他几路A/D转换通道的电压(理论依据是短时间之内Vcc不变)。
相关链接:
( -整理,请以最新资料为准!)查看: 9779|回复: 1
ATmega16单片机ad电流和电压采样程序
我CaO,由于之前芯片选型失误,搞了我一天,法克!用ATmega16好用一点,看来这钱省不了啦!(请耐心看完)
 l 四通道PWM
 l 8路10位ADC,8个单端通道,2个具有可编程增益(1x, 10x, 或200x)的差分通道   
 端口A(PA7..PA0) 端口A 做为A/D 转换器的模拟输入端。端口A 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口A 处于高阻状态。
  端口B(PB7..PB0) 端口B 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口B 处于高阻状态。
  端口B 也可以用做其他不同的特殊功能.
  端口C(PC7..PC0) 端口C 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口C 处于高阻状态。如果JTAG接口使能,即使复位出现引脚 PC5(TDI)、 PC3(TMS)与 PC2(TCK)的上拉电阻被激活。端口C 也可以用做其他不同的特殊功能.
  端口D(PD7..PD0) 端口D 为8 位双向I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口D 处于高阻状态。端口D 也可以用做其他不同的特殊功能.
                硬件方面基本懂了,剩下的是程序了,以下是该死的ADC数模转换器的大致使用,不太懂
***************************************************************************************************************************************
本程序简单的示范了如何使用ATMEGA16的ADC模数转换器& &&&普通的单端输入& &&&差分输入及校准& & 基准电压的校准& & 查询方式& & 中断方式& & 数据格式的变换&&出于简化程序考虑,各种数据没有对外输出,学习时建议使用JTAG ICE硬件仿真器
&&(仿个屁啊,鬼知道JTAG ICE是什么叼毛!也买不起仿真器,切!)
***************************************************************************************************************************************
                    以下是例程
****************************************************/#include &avr/io.h&
#include &avr/delay.h&
#include &avr/signal.h&
#include &avr/interrupt.h&/*宏INTERRUPT 的用法与SIGNAL 类似,区别在于& & SIGNAL 执行时全局中断触发位被清除、其他中断被禁止& & INTERRUPT 执行时全局中断触发位被置位、其他中断可嵌套执另外avr-libc 提供两个API 函数用于置位和清零全局中断触发位,它们是经常用到的。分别是:void sei(void) 和void cli(void) 由interrupt.h定义 */
//管脚定义
#define in_Single 0 //PA0(ADC0)
#define in_Diff_P 3 //PA3(ADC3)
#define in_Diff_N 2 //PA2(ADC2)
//常量定义
//单端通道,不放大
#define AD_SE_ADC0 0x00 //ADC0
#define AD_SE_ADC1 0x01 //ADC1
#define AD_SE_ADC2 0x02 //ADC2
#define AD_SE_ADC3 0x03 //ADC3
#define AD_SE_ADC4 0x04 //ADC4
#define AD_SE_ADC5 0x05 //ADC5
#define AD_SE_ADC6 0x06 //ADC6
#define AD_SE_ADC7 0x07 //ADC7
//差分通道ADC0作负端,10/200倍放大
#define AD_Diff0_0_10x 0x08 //ADC0+ ADC0-, 10倍放大,校准用
#define AD_Diff1_0_10x 0x09 //ADC1+ ADC0-, 10倍放大
#define AD_Diff0_0_200x 0x0A //ADC0+ ADC0-,200倍放大,校准用
#define AD_Diff1_0_200x 0x0B //ADC1+ ADC0-,200倍放大
//差分通道ADC2作负端,10/200倍放大
#define AD_Diff2_2_10x 0x0C //ADC2+ ADC2-, 10倍放大,校准用
#define AD_Diff3_2_10x 0x0D //ADC3+ ADC2-, 10倍放大
#define AD_Diff2_2_200x 0x0E //ADC2+ ADC2-,200倍放大,校准用
#define AD_Diff3_2_200x 0x0F //ADC3+ ADC2-,200倍放大
//差分通道ADC1作负端,不放大
#define AD_Diff0_1_1x 0x10 //ADC0+ ADC1-
#define AD_Diff1_1_1x 0x11 //ADC1+ ADC1-,校准用
#define AD_Diff2_1_1x 0x12 //ADC2+ ADC1-
#define AD_Diff3_1_1x 0x13 //ADC3+ ADC1-
#define AD_Diff4_1_1x 0x14 //ADC4+ ADC1-
#define AD_Diff5_1_1x 0x15 //ADC5+ ADC1-
#define AD_Diff6_1_1x 0x16 //ADC6+ ADC1-
#define AD_Diff7_1_1x 0x17 //ADC7+ ADC1-
//差分通道ADC2作负端,不放大
#define AD_Diff0_2_1x 0x18 //ADC0+ ADC2-
#define AD_Diff1_2_1x 0x19 //ADC1+ ADC2-
#define AD_Diff2_2_1x 0x1A //ADC2+ ADC2-,校准用
#define AD_Diff3_2_1x 0x1B //ADC3+ ADC2-
#define AD_Diff4_2_1x 0x1C //ADC4+ ADC2-
#define AD_Diff5_2_1x 0x1D //ADC5+ ADC2-
//单端通道,不放大
#define AD_SE_VBG 0x1E //VBG 内部能隙1.22V电压基准,校准用
#define AD_SE_GND 0x1F //接地 校准用
//注:
//差分通道,如果使用1x或10x增益,可得到8位分辨率。如果使用200x增益,可得到7位分辨率。
//在PDIP封装下的差分输入通道器件未经测试。只保证器件在TQFP与MLF封装下正常工作。
#define Vref 2556 //mV 实测的Vref引脚电压@5.0V供电
//#define Vref 2550 //mV 实测的Vref引脚电压@3.3V供电
//全局变量
unsigned int ADC_SingleE //单端输入的ADC值
int ADC_D //差分输入的ADC值
volatile unsigned int ADC_INT_SE; //中断模式用的单端输入ADC值,会在中断服务程序中被修改,
& && && && && && && && && && && & //须加volatile限定
volatile unsigned char ADC_OK; //ADC状态,会在中断服务程序中被修改,须加volatile限定
unsigned int LED_V //变换后的电压mV
int LED_C //变换后的电流100uA
//仿真时在watch窗口,监控这些全局变量。
unsigned int read_adc(unsigned char adc_input)//查询方式读取ADC单端通道
& &{
& && &ADMUX=(0xc0|adc_input); //adc_input:单端通道 0x00~0x07,0x1E,0x1F
& && &//0xc0:选择内部2.56V参考电压
& && &ADCSRA|=(1&&ADSC); //启动AD转换
& && &loop_until_bit_is_set(ADCSRA,ADIF); //方法1 等待AD转换结束
& && &// while ((ADCSRA&(1&&ADIF))==0); //写法2 这种写法优化不好
& && &// loop_until_bit_is_clear(ADCSRA,ADSC); //方法2 检测ADSC=0也行
& && &ADCSRA|=(1&&ADIF); //写1清除标志位
& && &return ADC; //ADC=ADCH:ADCL
& &}
int read_adc_diff(unsigned char adc_input)//查询方式读取ADC差分通道
&&{
& && &unsigned int ADC_FIX;
& && &ADMUX=(0xc0|adc_input); //adc_input:差分通道 0x08~0x1D
& && &_delay_ms(1); //等待差分增益稳定&125uS
& && &ADCSRA|=(1&&ADSC);
& && &loop_until_bit_is_set(ADCSRA,ADIF);
& && &ADCSRA|=(1&&ADIF);
& && &//当切换到差分增益通道,由于自动偏移抵消电路需要沉积时间,
& && &//第一次转换结果准确率很低。
& && &//用户最好舍弃第一次转换结果。
& && &ADCSRA|=(1&&ADSC);
& && &loop_until_bit_is_set(ADCSRA,ADIF);
& && &ADCSRA|=(1&&ADIF);
& && &ADC_FIX=ADC;
& && &//输出结果用2的补码形式表示
& && &//可正可负 +/-9bit -512~+511
& && &//即M16差分通道的ADC+输入端的电压可以大于ADC-,也可以小于ADC-。
& && &//Tiny26就不行,ADC+输入端的电压必须大于或等于ADC-,为+10bit
& &
& &&&if (ADC_FIX&=0x0200) //负数要变换,正数不用
& && &&&{
& && && &&&ADC_FIX|=0xFC00; //变换成16位无符号整数
& && && &}
& &&&return (int)ADC_FIX;
& & }
SIGNAL(SIG_ADC) //ADC中断服务程序
& &{
& && &//硬件自动清除ADIF标志位
& && &ADC_INT_SE=ADC; //读取结果
& && &ADC_OK=1;
& &}
& && &&&
int main(void)
& &{
& &&&long temp32;
& &&&ADC_SingleEnded =0;
& &&&ADC_Diff=0;
& &&&ADC_INT_SE=0;
& &&&//上电默认DDRx=0x00,PORTx=0x00 输入,无上拉电阻
& &&&PORTB=0xFF; //不用的管脚使能内部上拉电阻。
& &&&PORTC=0xFF;
& &&&PORTD=0xFF;
& &&&PORTA=~((1&&in_Single)|(1&&in_Diff_P)|(1&&in_Diff_N));
& &&&//作ADC输入时,不可使能内部上拉电阻。
& &&&ADCSRA=(1&&ADEN)|0x06; //使能ADC,时钟64分频 125KHz@8MHz system clock
& &&&sei(); //使能全局中断
& &&&
& &&&while (1)
& && & {
& && && &//实测的Vref引脚电压 =2556mV
& && && &ADC_SingleEnded=read_adc(AD_SE_ADC0);
& && && &//查询方式读取ADC0
& && && &temp32=(long)ADC_SingleEnded*V
& && && &LED_Volt=(unsigned int)(temp32/1024);
& && && &ADC_Diff =read_adc_diff(AD_Diff3_2_10x);
& && && &ADC_Diff-=read_adc_diff(AD_Diff2_2_10x);//校准OFFSET
& && && &temp32=(long)ADC_Diff*V
& && && &LED_Curr=(unsigned int)(temp32/(512*10)); //[单位为100uA]
& && && &//查询方式读取ADC3+,ADC2- 10倍放大 max +/-255.6mV
& && && &//10欧姆 1mA=10mV max +/-25.56mA
& && && &//分辨率约0.5mV=50uA,显示取整为100uA单位
& && && &ADCSRA|=(1&&ADIE); //使能ADC中断
& && && &ADMUX=0xC0|AD_SE_ADC0; //单端输入ADC0
& && && &ADC_OK=0; //软件标志清零
& && && &ADCSRA|=(1&&ADSC); //启动AD转换
& && && &while(ADC_OK==0); //等待ADC完成,实际程序中可以运行其它任务
& && && &ADCSRA&=~(1&&ADIE); //禁止ADC中断
& && && &//查询方式和中断方式要注意 ADIF标志位的处理。
& && &}复制代码
 谢楼主分享
Powered by单片机采集电压,电流,频率可以用哪几种方法来实现?-单片机ADC只采集电压,如果采集电流怎么办啊?
你正在浏览: &>&
单片机采集电压,电流,频率可以用哪几种方法来实现?_单片机ADC只采集电压,如果采集电流怎么办啊?
单片机采集电压,电流,频率可以用哪几种方法来实现?5分
可否用串行口采集频率?
不了解您想了解什么,可以使用串口,无线,或者ADC直接采集都可以啊。
F变换。当然通过V&#47。串行口采集频率的说法还没听说过,把电压电流信号转换为频率信号,也能完成测量电压直接用ADC来测量。电流通过电阻转换为电压,再由ADC测量。频率通过计数器或者定时器测量
串行口采集? 不了解
一般这些参数都是用模数转换器ADC来采集
这样看在哪用了工业上采集设备运行时的电压电流频率都是通过AD来完成~单片机将收集到的数据用DA转换成常见的4-20mA信号~传输给DCS模块~或者直接用485总线422总线~并入CAN总线当中再由DCS模块经处理加地址转换成串口或者通过局域网连接电脑!
我觉得是ADC转换的方法比较简单。
如何采集滑变上的电压(0-10V)电压回馈给单片机,最好有图 [
最简单的是使用电阻分压,R1和R2应选择稍大,不然会对测量有很大影响,阻值是R3的10倍就差不多了。...]单片机正负电压采集的问题? [
对电压整流后采集,但要在PC机输出采集到的正负电压,负电压时,符号的问题需要对这个电路怎么改变一下来...]单片机AD采集回来的数值如何能显示为对应的电压值? [
和你AD的参考电压有关,电压都是相对的 AD有GND和Vref两个电压 最后得出的电压就是: (Vr...]单片机的供电电压过低对单片机AD采样有影响吗? [
  AD采样的精度都会在 单片机 数据手册上给出, 有些片子 精度必须在5V供电下才会精准, 但是3...]如何实现通过单片机采集某一电压值并在lcd上显示该电压值 [
嘿嘿 俺来帮助你吧 1 单片机采集某一电压值,即经过AD转换,将电压值转换成二进制数的数字量。 2 ...]PIC单片机电压采集电路原理。。。 [
电压确实是两点之间的,但是由于输入电压接了地(图上看到)。PIC单片机也是需要和输入电压共地的,这样...]单片机5V供电,但是A/D采样电压超过5V会怎么样?感觉现在电压采集不准,只能采集0V,感觉单片机是... [
你好,我来回答这个问题 单片机的A/D接口不能超过它规定的电压,如果你所测的电压高出了它的范围,那么...]51单片机,怎么把通过AD转换器采集到的数据(电压值)通过单片机的串口输出? [
下载文件:uart.rar|看看我这个 adc0808 测电压 然后串口发送,另一边数码管显示]5V单片机带AD的可以采样12V电压吗 [
不能直接采集。单片机引脚的最高工作电压是5V,过高会烧掉。 可以用电阻分压的方法测量,将结果乘以分压...]单片机ADC采集最大输入电压 [
宏晶单片机我用过,ADC的最大输入电压它的Datasheet上会讲的,你查阅下。不一定是5V,这个跟...]
你可能感兴趣的内容?}

我要回帖

更多关于 单片机电压采样电路 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信