|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
先上数据4 A. M/ z! P' h L: U
有C1: R2=10k,R18=100,R1=0mv,ADC输出0.00022mV0 G/ R/ R5 F/ Y- b9 B! h) l0 T
有C1: R2=100k,R18=100,R1=4.8mV,ADC输出12mV
3 U, o4 \9 L& i$ ^. r3 i4 M有C1: R2=10k,R18=100,R1=4.8mV,ADC输出4.6mV
5 G: {! E. g# A, \+ I有C1: R2=1k,R18=100,R1=4.8mv,ADC输出1.6mV n0 q2 z, s8 j$ \
" j! Z0 Q; ^) k5 q' q5 n
无C1: R2=1k,R18=100,R1=0mv,ADC输出0mV
1 u" H* Y+ K. U9 P C3 x( g无C1: R2=10k,R18=100,R1=4.8mv,ADC输出1.6mV4 ~2 N( \' J4 c' O0 k: B
9 k2 U2 Y: q4 m/ o+ a! p
现在确定R2=10k,R18=100,c1=0.1uF,当R1有电流时,测量电压基本吻合,无电影时不能归零。当去掉C1后无电流时,输出也为0,但是有电流后测量的数据和实际又对不上.大家帮忙分析一下问题出在哪里。是不是前端电路的问题。万分感谢!
: G. T' \- A3 [. {, Q0 |$ q+ k$ @" d% ]
float ADC0_value(uchar mode,uchar p,uchar n)0 l' M2 z8 S3 J1 ]7 r( P
{
9 n2 M5 H$ Y0 s+ k1 h: X volatile uchar i=7;
# L$ e9 r8 m p6 I% S$ h) U unsigned long tem;
T' x/ |8 K) b; h8 y5 h' u( F) L long tem1;
/ M3 M3 a9 M5 e& E float v;8 d8 r, Z, ~/ b! p2 R# i6 t
RedLed=~RedLed;8 m$ } M8 V7 L0 X: j
ADC0MD=0x80; //空闲( z% t) m; L! V) m8 l7 l" M
ADC0CN|=0x07;$ M @7 q9 P7 I0 N" {" `0 Q- V
if(mode==0)1 V7 H3 w" P9 ]$ F
{+ j& ], Z% h8 C8 ~: D* N3 V' y
ADC0CN &= ~0x10;//单端输入" F& Z0 m3 g% K n: ~/ W
}2 _. K" d. h) z ^8 E
else
7 G/ `% d- f5 H0 ^* z {+ ~: r. @$ s1 z
ADC0CN |=0x10;//差分输入
% h% }) S2 U& e9 t1 a6 {$ h( J }
/ x6 W9 ^4 c0 P ADC0MUX=p|n; //端口选择
& X9 I: I* N; d y! [# a: Nlab:* A5 ?7 f' Q' M5 U# A
AD0INT=0;
# j4 L( A' b, K I ADC0MD=0x82; //单次转换; \1 e5 d4 a' A$ W8 J' Q+ B
RedLed=~RedLed; //很重要,完全关闭adc0后重新打开必须启动延时
" A+ z- d2 ^3 ]- H) W: _ ], u// delay_ms(1); //很重要,完全关闭adc0后重新打开必须启动延时。
4 J2 Z' w V+ A- p while (!AD0INT);
4 Y- a. O& b1 G8 S7 U AD0INT=0;1 \* r+ S$ c0 ^( S5 S
ADC0MD=0x80; //空闲
% g1 f3 C# _, ?( F! z// ADC0MD&=~0x80; //,关闭ADC02 n$ a) A6 N' N5 s+ f) B U3 w
// tem=65536*ADC0H+256*ADC0M+ADC0L;! o+ w6 R5 d" v7 h5 L
if(mode==0)( E# |, f" M) t$ ?' Q
{8 n; |* G; K# c8 }# s
tem=(unsigned long)ADC0H<<16;' g, M b% m5 f' o$ o9 R4 y
tem+=((unsigned long)ADC0M<<8)+(unsigned long)ADC0L;5 F$ A7 P7 v: r0 ]& f/ D" ~
if((tem>=0xffffff)&&i>0)0 U0 f" F m. ~5 e: _0 s7 O
{
7 T$ R6 M* ]. k) X ADC0MD=0x80; //空闲
- Z2 E% F0 w. ]4 E& U% @ ADC0CN--;2 w, C( [, l7 C. M' Q) Q
i--;
8 O# W: X: \3 ?: h goto lab;
8 ?9 f- K, l# {# C, U) Q2 C }$ p q' T- E! N! |, ?) M; O
v=(float)tem/(16777216/VERF)/(1<- x8 I% b1 y% W( e# Z# s' U. R
if((p==TEMPERATURE_P)||(n==TEMPERATURE_N))
6 e- I$ x, H7 A! _ {: K9 e! \; ^2 n4 ?/ {$ k
v=(757.0-1000.0*v)/1.73;//温度转换# V4 _' k8 @0 G, p# d+ w$ ~5 O
}
& c$ Q: N( J" m7 n" W" [
% L) ^5 w" {, V( c/ k, K }
! u& x1 m7 D! A' x- j else
* Z$ p9 O$ K6 x/ D* R9 N- R) E- j {
$ F) h* X& y0 l' w1 g tem1=(long)ADC0H<<24;4 `# j) R8 O7 h
tem1+=((long)ADC0M<<16)+((long)ADC0L<<8);7 m( v, |& l: f0 |
if((tem1>=0x80000000)&&i>0)
1 t8 o$ w" f9 i {. O3 ?- Z. h5 z( m
ADC0MD=0x80; //空闲
I; x. R7 _; O4 k7 ^ ADC0CN--;8 s( f4 ?- M8 K
i--;# t$ ]* Y8 P8 t
goto lab;
h7 k+ M& P4 C! {2 [ I. p/ N+ M }
# P& ]$ o2 D- j3 s+ H( Z$ T v=(float)tem1/(8388608/VERF)/(1<
1 Z% U/ {9 x- Z2 ]' a; I/ B" e5 m v/=256;
# T j% \+ }( T }
0 g# r' d9 h* R& s8 z% ]// RedLed=~RedLed;
( i/ \1 r s, B/ m& I; H return v;
1 p" S f; d! l6 f* S! _8 @4 u* d}8 K8 |# Q8 S/ t) {
2 O, C4 L0 j' H: Q" m/ w, Y- [
: K/ ]' r; B" F$ I3 C1 s. u2 A |
|