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

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

[复制链接]

该用户从未签到

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

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

该用户从未签到

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基本的电压,可以先使用运放把信号放大,然后再使用单片机进行采样。$ w# S$ L( j. v" n  m
R2和C1是一个低通滤波电路,对于高于一定频率的信号是过不去的。如果您这边采样的信号频率非常高,建议适当降低RC的值,具体以实测为准。从时域来看,就是信号变化过快,电容的电量还没有充满,又开始了下一个变化。那么单片机AD接口,永远也采样不准。
3 p) n% w: b% U" b2 E电路布局的时候,滤波电容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-7-8 00:45 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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