|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
先上数据
5 Q0 k$ H; ~% G# z8 U5 w有C1: R2=10k,R18=100,R1=0mv,ADC输出0.00022mV
- {3 r/ ~ j2 y% h' }9 W/ O有C1: R2=100k,R18=100,R1=4.8mV,ADC输出12mV( z1 ?8 ^5 t+ S- e
有C1: R2=10k,R18=100,R1=4.8mV,ADC输出4.6mV; F0 o4 g' N6 q# m! Q$ M
有C1: R2=1k,R18=100,R1=4.8mv,ADC输出1.6mV
, ~3 Q8 N3 Y$ ^
* ]8 \9 m$ `/ x: {无C1: R2=1k,R18=100,R1=0mv,ADC输出0mV' t8 x+ }. `* ]
无C1: R2=10k,R18=100,R1=4.8mv,ADC输出1.6mV
8 O- I% U. k- Z6 K4 H e1 j# L( \7 M; T! K' s$ q* n
现在确定R2=10k,R18=100,c1=0.1uF,当R1有电流时,测量电压基本吻合,无电影时不能归零。当去掉C1后无电流时,输出也为0,但是有电流后测量的数据和实际又对不上.大家帮忙分析一下问题出在哪里。是不是前端电路的问题。万分感谢!& W7 o: O! o$ L/ H4 A/ R r" G% c
1 x7 \0 [7 R( O7 p3 T1 Lfloat ADC0_value(uchar mode,uchar p,uchar n)
" U( ~* s1 y4 A2 y5 E/ a/ X{
/ Z+ |* i! Z, M0 | volatile uchar i=7;3 B. H3 k8 ]& J
unsigned long tem;
; v% w1 |$ T2 ^3 G& g( c L* m long tem1;
( k( D6 w5 c8 {* y$ b4 C* }9 G float v;
; J3 k. z9 [# |6 w9 j/ u$ { RedLed=~RedLed;
# O, r1 R' }2 ] ADC0MD=0x80; //空闲
6 q- y1 ?8 S9 r& k ADC0CN|=0x07;
" L) E' r& c7 |! D% u% Q if(mode==0)$ L; Q& q' A" }- F1 Q9 I
{
* q& l+ k. c3 _5 B ADC0CN &= ~0x10;//单端输入
* s2 R0 n. O2 \ Y/ ]: ? }
" Z" {* L; N, [, j1 b) C! E else" i% L, u$ U# l, ]
{
9 W( y9 t/ y8 X4 Z: I: E ADC0CN |=0x10;//差分输入$ c8 d8 E$ B h8 t [5 O% k' }
}- M' j+ K. o2 Z
ADC0MUX=p|n; //端口选择" b, c! h1 S2 x# [' l' [% C) q
lab:; n4 I4 g0 d Y: f! B0 a: [
AD0INT=0;
4 ~- h8 M6 U% D* c; o; q ADC0MD=0x82; //单次转换
+ s: }9 R& p! s8 c! f RedLed=~RedLed; //很重要,完全关闭adc0后重新打开必须启动延时6 X1 Q; E- A$ S( K: B, Z/ X* h
// delay_ms(1); //很重要,完全关闭adc0后重新打开必须启动延时。
0 @. b& m; X! P while (!AD0INT);$ m7 d+ Q9 i$ A- ~ c
AD0INT=0;
4 s2 w0 ^1 J4 J3 C3 }- L ADC0MD=0x80; //空闲
0 [+ v; C4 m1 e: V4 T// ADC0MD&=~0x80; //,关闭ADC0
8 D. A4 k+ `; p" H: h M( d1 j// tem=65536*ADC0H+256*ADC0M+ADC0L;, g0 @9 x5 T* l9 U
if(mode==0)
- R( i; ?* v D4 F( o {$ Q0 p. o) m5 ^5 B9 \, W: [
tem=(unsigned long)ADC0H<<16;
7 L/ G7 j1 C5 T5 q4 ]# z% I | tem+=((unsigned long)ADC0M<<8)+(unsigned long)ADC0L;/ Q0 S* Z# w7 T
if((tem>=0xffffff)&&i>0)9 }( v M2 w+ [5 {; T4 T
{7 \, q1 A4 E r
ADC0MD=0x80; //空闲
( [0 f& }1 p; {; p. W J ADC0CN--;) I" u: ] L5 M
i--;
" k$ k) n1 D+ t( p: Y goto lab;! y( c, w, c: o& v- I! v% s9 M
}( @2 @+ x0 ?% W
v=(float)tem/(16777216/VERF)/(1<
! }8 O. w2 c+ y9 ] if((p==TEMPERATURE_P)||(n==TEMPERATURE_N)), F8 e2 V z9 @7 K
{* p2 n3 v' @; f& t, |, r
v=(757.0-1000.0*v)/1.73;//温度转换! n5 [: o6 u" m$ c7 M
}
1 E( L! Q0 U& i. m4 h
! w6 f, V2 r- g7 } }
. e+ e" y3 j5 g' n) Q else3 A! |/ w% Q+ r2 s& M) o' U
{4 K" Q' T% e, w" g' X
tem1=(long)ADC0H<<24;0 B% n6 p/ R% o
tem1+=((long)ADC0M<<16)+((long)ADC0L<<8); V+ y6 Z( R+ ]* I% n" p
if((tem1>=0x80000000)&&i>0)6 {8 H$ p$ h5 t0 E
{( U8 H/ o1 S, k2 N8 h! ^+ j
ADC0MD=0x80; //空闲
% E/ y4 `& o5 }' E' V a) e- ^; ` ADC0CN--;2 o6 E3 e7 S }! \
i--;
) |5 {! d0 B) N! Z goto lab;
+ k! j5 V9 z: ^+ I1 |; N% l }0 ^" C; u7 p9 I" C4 M+ j Z
v=(float)tem1/(8388608/VERF)/(1<5 |& ^1 m; m. {; L& I- h
v/=256;
- G0 h* L4 O% Z3 o3 r# i5 O }
7 p; g6 g/ `4 s+ O0 f) n; M// RedLed=~RedLed;
: H5 L4 _$ J4 y" k* H5 Y+ p return v;: }) n! X' x7 ^3 w+ I x. C0 a5 v
}% r. w n& K( P) v
7 |2 Z. D- l# D" x. g8 ^7 v% K4 c% q, K$ E. n% l
|
|