找回密码
 注册
关于网站域名变更的通知
查看: 334|回复: 4
打印 上一主题 下一主题

C8051F350 ADC前端阻容电路怎么确定参数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-2-13 10:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

该用户从未签到

2#
发表于 2023-2-13 11:19 | 只看该作者
总的调试就是,软件上加大采集保持时间,硬件上减少R2.因为ADC转换原理就是给内部电容充电,如果外部信号弱,就会出现拉低的情况,所以如果没有电容或者信号内阻大,就会出现采集偏低的情况

该用户从未签到

3#
发表于 2023-2-13 13:25 | 只看该作者
这个是电流采样判断控制,通过ADC转换判断R1上的电流大小,应该先根据电路设计和实际应用判断出R1上电流的范围,确定了电流范围,才好判断ADC的转换结果是否正确

该用户从未签到

4#
发表于 2023-2-13 14:01 | 只看该作者
首先,我觉得利用单片机的AD采样接口采样mv级别的电压,是不合理的。R1和RL分压后,最好在1/2 Vcc处,这样AD模块的分辨率是最高的。如果您这边实在需要采样mV基本的电压,可以先使用运放把信号放大,然后再使用单片机进行采样。; e6 q- h$ Q; k: a
R2和C1是一个低通滤波电路,对于高于一定频率的信号是过不去的。如果您这边采样的信号频率非常高,建议适当降低RC的值,具体以实测为准。从时域来看,就是信号变化过快,电容的电量还没有充满,又开始了下一个变化。那么单片机AD接口,永远也采样不准。+ x1 P% ~( T  {. e0 u
电路布局的时候,滤波电容C1尽量靠近芯片管脚。如果距离太远,分布电感和电容就有可能形成震荡,影响采样准确性。

该用户从未签到

5#
发表于 2023-2-13 14:33 | 只看该作者
根据负载的工作电流大小和交流电的电压频率选取适当的电容,计算公式如下: 容抗Xc=1/(2πfC) 电流Ic=U/Xc=2πfCU
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-8 05:44 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表