|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
先上数据% c/ b6 b( q( e& q7 }9 X, [% n$ e0 s4 E
有C1: R2=10k,R18=100,R1=0mv,ADC输出0.00022mV, M. c B! C$ L1 }( ~! @. f9 m7 F
有C1: R2=100k,R18=100,R1=4.8mV,ADC输出12mV
0 S f; i; Y) ~2 N有C1: R2=10k,R18=100,R1=4.8mV,ADC输出4.6mV
" Y/ E7 `/ }- V有C1: R2=1k,R18=100,R1=4.8mv,ADC输出1.6mV& D) K4 `% Y0 R5 i9 K O3 j
: W$ p/ E1 X0 s3 \" H8 T
无C1: R2=1k,R18=100,R1=0mv,ADC输出0mV
/ O' C4 W1 P& M! I) M5 S+ u无C1: R2=10k,R18=100,R1=4.8mv,ADC输出1.6mV& F$ _8 o. d, R# ]$ e
+ b# S- ?% u( @" \( [
现在确定R2=10k,R18=100,c1=0.1uF,当R1有电流时,测量电压基本吻合,无电影时不能归零。当去掉C1后无电流时,输出也为0,但是有电流后测量的数据和实际又对不上.大家帮忙分析一下问题出在哪里。是不是前端电路的问题。万分感谢!
) c6 M/ t. z+ k1 v; G( \- _" f: t* S+ ^7 l
float ADC0_value(uchar mode,uchar p,uchar n)
. s/ Y, V0 ^! K- x* h, v4 s{) m! }1 b }/ M! @& F
volatile uchar i=7;3 v' e5 e- D* r) F7 T) J. s
unsigned long tem;; y/ }2 m& {5 e4 t- [% K9 d# q5 f4 i
long tem1;, Z; _1 S- |8 F# c8 f4 o% E/ R
float v;* Z9 q" Y: q6 ]; o, a7 H
RedLed=~RedLed;
$ o* ]3 p( v7 c% J9 Q# z7 q% q ADC0MD=0x80; //空闲
5 b8 ]% T q$ g8 [; s ADC0CN|=0x07;( e/ v, A$ L. k
if(mode==0)& o* N R, O& E5 [/ N7 H
{1 s* b3 g8 b: Y0 j3 d
ADC0CN &= ~0x10;//单端输入
2 {& W1 m+ c4 ^! ]' B1 p+ Z }$ E) V" Z' s4 ^7 a
else) q, R. q/ y6 i4 C
{8 O3 K4 n, W- t9 q
ADC0CN |=0x10;//差分输入
4 g; O; n0 B( D) ^% s }, ?! }# S. r/ {; i/ U% h
ADC0MUX=p|n; //端口选择+ z1 `' }3 \7 x5 U& G
lab: `4 |1 ~8 o- s
AD0INT=0;
8 F9 r6 J" d* E ^ ADC0MD=0x82; //单次转换
9 {4 @1 |0 h/ T1 M0 q4 M' _' i RedLed=~RedLed; //很重要,完全关闭adc0后重新打开必须启动延时* F. y h- c" v2 v' {( s
// delay_ms(1); //很重要,完全关闭adc0后重新打开必须启动延时。
+ i- E3 r* }! _5 g2 Y0 s: { while (!AD0INT);# K! t: q1 E2 _
AD0INT=0;3 F3 I- U4 a, X$ L5 D6 T
ADC0MD=0x80; //空闲
* |# ]5 Q |9 V% ?5 M7 }9 g// ADC0MD&=~0x80; //,关闭ADC0
5 @ i; e' K* u. z# O// tem=65536*ADC0H+256*ADC0M+ADC0L;
- a Z# U' `- A2 N if(mode==0)
( l2 e ?% {# M) [4 l3 b% i6 W+ } {
' p1 B: L0 s% T; k- A; c tem=(unsigned long)ADC0H<<16;3 j+ ~9 ]% K3 m+ \1 } k* k9 @! `
tem+=((unsigned long)ADC0M<<8)+(unsigned long)ADC0L;
: D+ ?$ B f. Z# @4 S( {# N* L if((tem>=0xffffff)&&i>0)' W7 O0 p# _& t1 U' \5 l6 w/ T- U
{
, {' n" b- W& G- T: J' ]7 i" L ADC0MD=0x80; //空闲3 n, X. p" n6 I, E
ADC0CN--;- v' P ~- ?# ?
i--;9 H* f* k+ y( J' q
goto lab;
3 Z6 X; N, J& N+ n- s }
* Q |# L. J5 d/ K$ X v=(float)tem/(16777216/VERF)/(1<
3 K) s0 Z" H- S' N9 E0 @/ G- D: }1 S6 j* { if((p==TEMPERATURE_P)||(n==TEMPERATURE_N)): f; v$ e, R* c+ c j
{8 |1 P2 d4 M8 ^
v=(757.0-1000.0*v)/1.73;//温度转换: D* @/ p! F- M) P
}1 P$ ^. ~% ~ n3 G7 _! Q9 U
+ I; x7 B0 m7 t; L( v& N# l }
& a. |# u6 p+ U else$ K7 p- ]+ y; A" X0 L
{
( V/ R) X4 I# V9 N$ A: r2 {5 I tem1=(long)ADC0H<<24;
9 f+ D7 N; i' U2 f tem1+=((long)ADC0M<<16)+((long)ADC0L<<8);
) L* ]5 _8 f; U if((tem1>=0x80000000)&&i>0)
, O9 o3 h4 _' p' s+ z n0 m* Q {
6 S9 R* O/ P" S" g ADC0MD=0x80; //空闲
/ a ^1 n/ W" W2 M$ x% y, f ADC0CN--;* N3 A( b5 S( x- Q1 Q/ C" j0 i
i--;
6 ^; ?: D7 D$ L8 y% h' p goto lab; M6 m1 M0 j# o/ t4 Z
}
# Z. d: s" O2 y* O3 z* f v=(float)tem1/(8388608/VERF)/(1<
, ^6 i( d! I' O" @6 y7 H v/=256;8 v+ a9 @- K, O) B, d+ V4 E
}
6 L8 Z! m0 y' u/ q// RedLed=~RedLed;
. X! f- @5 s: o" q1 ?7 M7 ?8 \ return v;
& a0 q( T! ~( f! a5 s}
' u8 k# k. y$ v1 s( E# f0 f
9 U% T* R( ~' C! d& ^' \9 K8 a8 q8 Y# o7 }
|
|