用STC单片机的PCA做的双积分AD测量电路,发上来的数据不稳

[复制链接]
1588|6
 楼主| any_014 发表于 2015-3-13 11:48 | 显示全部楼层 |阅读模式
本帖最后由 any_014 于 2015-3-13 11:50 编辑

其实是抄别人的电路。
原理大致是这样子的:
1.首先对被测信号(0-100mV)进行定时积分,20ms。
2.单片机控制切换模拟开关,运放变为对基准电压信号(200mV)积分,看积分电路的输出什么时候能够达到2.5V。
3.一旦达到2.5V,单片机控制模拟开关,再次切换到被测信号,周而复始。




主程序是这么写的。
  1. void main(void)
  2. {
  3.         init();
  4.         Delay20ms();
  5.         while(1)
  6.         {
  7.                 if (PCAFlag == 1)
  8.                 {
  9.                         SendData(CCAP0H);                                  //发送捕获时间低位
  10.             SendData(CCAP0L);                                  //发送捕获时间高位
  11.                         P1 &= 0xf0;                                                  //切换到基准电压通道
  12.                         P1 |= 0x02;
  13.                         EA = 0;                                                          //关闭中断

  14.                         Delay20ms();                                          //对200mV基准电压积分20ms

  15.                         EA = 1;                                                          //开中断
  16.                         CH = 0;                                                          //PCA计数器清零
  17.                         CL = 0;         

  18.                         P1 &= 0xf0;                                                  //切换到被测通道
  19.                         P1 |= 0x07;

  20.                         PCAFlag = 0;                                          //捕获标志位清零
  21.                         RUNLED = !RUNLED;            
  22.                 }
  23.         }
  24. }


以下是测量50mV电压,串口接收过来的数据:
37 7B  37 86  37 90  37 97  37 A1  37 A9  37 B3  37 BC  37 62  37 74                十六进制数
14203 14214 14224 14231 14241 14249 14259 14268 14178 14196               十进制数
感觉跳动太大了。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
hnkf118 发表于 2015-3-13 13:32 | 显示全部楼层
软件延时不准确。
 楼主| any_014 发表于 2015-3-13 15:02 | 显示全部楼层
本帖最后由 any_014 于 2015-3-13 15:13 编辑
hnkf118 发表于 2015-3-13 13:32
软件延时不准确。

谢谢。没想过可能是这个问题。
 楼主| any_014 发表于 2015-3-13 16:52 | 显示全部楼层
hnkf118 发表于 2015-3-13 13:32
软件延时不准确。

我又想了想.
对被测信号积分20ms,这个不是要求准确的20ms,只要每次延时都是一致的时间即可,这样的话,软件延时也是可以的吧?并且,我再这个20ms延时的时候是关闭总中断的.
 楼主| any_014 发表于 2015-3-13 17:25 | 显示全部楼层
因为被测信号是0-100mV的小信号,是不是系统噪声的原因?
但,我抄的对象,输出是PWM转4-20mA,精度貌似还可以。
 楼主| any_014 发表于 2015-3-14 11:30 | 显示全部楼层
试着将PCA的计时器的时钟源有Fosc/12改为Fosc/2,结果测试数据还是蹦。
也怀疑过运放和积分电容,将抄袭目标板的运放和电容置换过来,现象依旧。
 楼主| any_014 发表于 2015-3-20 11:44 | 显示全部楼层
本帖最后由 any_014 于 2015-3-20 11:46 编辑

找到了,是串口发送数据影响了误差,当PCAFlag标志有效后,不应在此事将计数值发出去,而应立刻切换到基准信号通道。否则会由于串口发送占了一定时间,使被测信号的积分时间变长,对基准信号的积分时间段的开始位置就相应延后,最后对捕获值造成了影响。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

132

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部