微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 使用ADC12检测电压后怎么计算?

使用ADC12检测电压后怎么计算?

时间:10-02 整理:3721RD 点击:


用P6.7检测100k与10k的分压,要输出真实的电压值,如何计算得到!
ADC12采用内部参考电压2.5V,单通道单次转换。

怎么算?这事儿得让ADC来做,你等着就好了

uint data;
uint data1;
uchar num1;
uchar num2;
uint data2;
uchar num3;
uint buffer;
data=number*2.5/4096;
buffer=number*2.5%4096;
data1=buffer*10/4096;
buffer=buffer*10%4096;
data2=buffer*10/4096;
num1=(uchar)data;
num2=(uchar)data1;
num3=(uchar)data2;
希望有所帮助!
number是ADC12MEM中的值

当然,把显示的小数点往后挪一位,就是你要测的实际电压。

方法不错,可以不使用浮点数了!
我感觉应当除以4095吧!
在我的系统里最后要乖以11!

能不能把原理图发出来啊?

number*2.5/4096/10*110

东西拿走,话语留下,我顶你

用个棍看地上影子,棍长短和影子长短怎么算你应该会算吧!

buffer=number*2.5%4096;
有浮点数不能求余吧。。
num1、num2、num3是不是实际的值啊?
我试验了下输出好像不是的实际的电压值啊?

buffer=number*2.5%4096;
好像是不行,只能用整数运算,因为AD采集的值和实际电压是线性关系,你可以尝试改变4096这个数
num1、num2、num3是实际值

改变4096?
怎么改?
buffer=(unint)(number*2.5)%4095;?
不对啊.

是这个原理:2.5/5=0.5,5/10=0.5,后者就避免小数啦,因为线性,应该行得通,试试看!

uint data;
uint data1;
uchar num1;
uchar num2;
uint data2;
uchar num3;
uint buffer;
data=number*3/4096;
buffer=number*3%4096;
data1=buffer*10/4096;
buffer=buffer*10%4096;
data2=buffer*10/4096;
num3=(uchar)data2;
num1=(uchar)data;
num2=(uchar)data1;
switch(num1)
{
case 0x00:num1=table[0]+0x80;break;
case 0x01:num1=table[1]+0x80;break;
case 0x02:num1=table[2]+0x80;break;
case 0x03:num1=table[3]+0x80;break;
case 0x04:num1=table[4]+0x80;break;
case 0x05:num1=table[5]+0x80;break;
case 0x06:num1=table[6]+0x80;break;
case 0x07:num1=table[7]+0x80;break;
case 0x08:num1=table[8]+0x80;break;
case 0x09:num1=table[9]+0x80;break;
}

switch(num2)
{
case 0x00:num2=table[0];break;
case 0x01:num2=table[1];break;
case 0x02:num2=table[2];break;
case 0x03:num2=table[3];break;
case 0x04:num2=table[4];break;
case 0x05:num2=table[5];break;
case 0x06:num2=table[6];break;
case 0x07:num2=table[7];break;
case 0x08:num2=table[8];break;
case 0x09:num2=table[9];break;
}
switch(num3)
{
case 0x00:num3=table[0];break;
case 0x01:num3=table[1];break;
case 0x02:num3=table[2];break;
case 0x03:num3=table[3];break;
case 0x04:num3=table[4];break;
case 0x05:num3=table[5];break;
case 0x06:num3=table[6];break;
case 0x07:num3=table[7];break;
case 0x08:num3=table[8];break;
case 0x09:num3=table[9];break;
}
switch(nn)

{
case 0x00:P4OUT=num1;P6OUT = BIT5; break;
case 0x01:P4OUT=num2;P6OUT = BIT4; break;
case 0x02:P4OUT=num3;P6OUT = BIT3; break;
case 0x03:P4OUT=0xc1;P6OUT = BIT2; break;
}
nn++;
if(nn>3)
{
nn=0;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top