|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
先上数据# _1 v4 c! {6 E! |: D. z
有C1: R2=10k,R18=100,R1=0mv,ADC输出0.00022mV$ r+ e# E# W3 M+ z
有C1: R2=100k,R18=100,R1=4.8mV,ADC输出12mV
; q9 G: z7 D' S0 h( Z+ m有C1: R2=10k,R18=100,R1=4.8mV,ADC输出4.6mV
" e2 a' u; A( `" K- N, b' T: ^0 M有C1: R2=1k,R18=100,R1=4.8mv,ADC输出1.6mV
1 B" W& b6 Q2 @
4 e1 A! H$ K/ O. j( h7 t/ y) f无C1: R2=1k,R18=100,R1=0mv,ADC输出0mV: X) J* E5 E+ x& Z v2 n
无C1: R2=10k,R18=100,R1=4.8mv,ADC输出1.6mV
2 M/ [% g, o' T- |4 j0 v, c/ c/ N- z. ]7 C1 z- A8 g8 Y
现在确定R2=10k,R18=100,c1=0.1uF,当R1有电流时,测量电压基本吻合,无电影时不能归零。当去掉C1后无电流时,输出也为0,但是有电流后测量的数据和实际又对不上.大家帮忙分析一下问题出在哪里。是不是前端电路的问题。万分感谢!2 }+ J7 I; Y) m! W$ b! h
& {5 ]( E/ E* Ifloat ADC0_value(uchar mode,uchar p,uchar n)/ H% n9 t) U, z) P' q! A+ L$ e
{% \6 Q) C7 \# y$ H% O f" {
volatile uchar i=7;
" q' O; Q4 E, D( M9 c unsigned long tem;, w+ |. ^/ d0 g
long tem1;
( i4 O4 A+ x: K4 B8 e( x5 k* a. ` float v;
4 a2 _+ S- p, u1 Z! E# t; [/ l. w RedLed=~RedLed;
- H7 n* b& I8 F# N; ^ ADC0MD=0x80; //空闲
3 P+ [2 N9 \# s) U& ?( a ADC0CN|=0x07;2 H3 e/ ]+ t# n: d8 p B9 c" w
if(mode==0)
" E2 n& i6 X4 C4 [$ `2 B {
8 ]3 \8 [: j( Q ADC0CN &= ~0x10;//单端输入
+ h* K V4 o6 C. ?3 w }) U1 F* e- M8 Q, Q5 U8 C
else
5 G0 C: J6 I" R# s. S! s {" `& \5 M( i# x
ADC0CN |=0x10;//差分输入2 O. v: J+ o6 P# U0 _2 m" ]+ @
}( \/ d6 a: a. v5 s% d9 Z4 _
ADC0MUX=p|n; //端口选择
' B0 ]7 ?% x. u3 hlab:% e1 b, `5 P) D6 W
AD0INT=0;
7 p }6 G# O( s: p2 z0 V ADC0MD=0x82; //单次转换
* r8 W1 ? A- T# u+ R RedLed=~RedLed; //很重要,完全关闭adc0后重新打开必须启动延时
. Q9 y1 m% T( @; \9 u# w! a// delay_ms(1); //很重要,完全关闭adc0后重新打开必须启动延时。: N2 e& y% e1 \! Q) A+ G3 g
while (!AD0INT);/ z9 I+ {( @. F" F% s
AD0INT=0;
" q% }8 f c$ Q$ l- A+ f! r ADC0MD=0x80; //空闲% R9 g3 z+ O" v$ n0 t
// ADC0MD&=~0x80; //,关闭ADC0
) }4 o5 F4 L. b// tem=65536*ADC0H+256*ADC0M+ADC0L;" R& A' g* k0 W7 H6 {
if(mode==0)' Z, \; y( b/ Z, v" N9 e2 C% w" S
{1 n" `1 [5 B' C+ F/ S
tem=(unsigned long)ADC0H<<16;
- h& C- u2 ?, { tem+=((unsigned long)ADC0M<<8)+(unsigned long)ADC0L;5 s" x l5 _. E; M2 ?4 I' b
if((tem>=0xffffff)&&i>0)- _& J% G2 q5 F+ i6 ]1 a9 H
{
- k3 H* O# i/ u, b! c$ h2 T; A7 j ADC0MD=0x80; //空闲
+ ]! C+ o1 F. w0 i# |6 L+ Q ADC0CN--;
( b0 g+ ?8 m2 z& ?+ H$ I i--;7 h# L! O+ I9 z7 I" M: b
goto lab;8 _6 z# f X0 p1 X( e
}: \( h1 R6 z- a
v=(float)tem/(16777216/VERF)/(1<8 y* i, e b- Y. [3 X+ V1 V! Z* d1 v
if((p==TEMPERATURE_P)||(n==TEMPERATURE_N))
! L+ k$ }! e0 x5 j$ V& D* U) b; O( j {
: H0 F) o( q' ?* y/ Z. v v=(757.0-1000.0*v)/1.73;//温度转换
' Y& B/ f8 n# g) Y9 n }, N% z' i) P* g q. z+ ~) U/ ?
- S. Q6 k2 U' z$ ~+ m
}* t( O; F. a7 C' Z% C: D" v
else$ D8 x; ?9 m5 F$ R+ X7 h
{. e3 k- P! V8 i/ Q# _7 n
tem1=(long)ADC0H<<24;
) }/ c4 O: d4 g% U o tem1+=((long)ADC0M<<16)+((long)ADC0L<<8);7 ^ Q; F& T; E2 }5 n
if((tem1>=0x80000000)&&i>0)
. h+ E) e3 [) h; p+ f3 v {: Y. C1 s N+ I$ g! K
ADC0MD=0x80; //空闲
% {" K3 \1 _* H n% { ADC0CN--;
1 Q4 X" \( i* D- b i--;
, k4 e& [' E& ^5 \# w0 R$ }! E3 P4 v G goto lab;0 \# Z0 z {- @. G
}* u+ ~- G: B* N3 g! f2 p
v=(float)tem1/(8388608/VERF)/(1<
; Z' q, b3 z p, s$ X v/=256;, {# q: B% N$ T. Z% P; h
}
6 C& A/ E, r0 \+ j% l. p// RedLed=~RedLed;
8 f4 {# w/ F: ^- B' j3 w return v;
/ z2 y: ]0 h0 U8 {2 r+ Q}
) n; D1 x4 L$ Y" ^
/ \' y% f% D* n2 a0 D8 w: A
) m6 @$ P) g, q; V% ~4 s+ j: s |
|