设计ADuC845低噪声信号采集版

01低噪声高精度AD采集模块


基于ADuC845的数据采集板 设计的模拟信号采集板在实验过程中采集信号出现了很大的噪声。主要是由于电路板底线没有进行很好的处理。

低噪声设计的主要方案:

  • 将单片机的电源和底线分成模拟和数字两个版本,之间通过单点连接;
  • 对于参考电源使用外部参考电压。在后面设计中,采用 LT1004CZ-2.5 参考电压源 作为但潘辰的参考2.5V的电压源。

02模块设计


1.电路设计1

▲ 模块SCH

▲ 模块SCH

▲ 快速制版PCB

▲ 快速制版PCB

2.电路焊接制作

下面是制作之后的PCB。左边是基于ADuC845的数据采集板 没有进行低噪声设计的版本。右边是采用了低噪声设计的版本。

▲ 焊接之后电路模块

▲ 焊接之后电路模块

03软件设计2


/*
** This is the Communication Test Program                        -- by Dr. Zhuoqing 2013,4,10
**
**
*/

#include <ADUC845.h>
#include <stdio.h>
#include "STRING.H"

#include "uc845.h"
#include "serialtxt.h"
#include "control.h"
#include "config.h"
#include "ST7565.H"
#include "M25P64.H"

//------------------------------------------------------------------------------
char xdata szString[32];
//------------------------------------------------------------------------------
void main(void) {
    
    
    unsigned int nCount;
    unsigned int nShow;
    int nNumber;

    UC845Init();
    ControlInit();
    SerialTxtInit();
    ST7565Init();

    //--------------------------------------------------------------------------
    printf("ADuC845     -- Dr. ZhuoQing %s %s\r\n", __DATE__, __TIME__);
    nCount = 0x0;
    
    //--------------------------------------------------------------------------
    nShow = 0;    
    nNumber = 0;
    
    ADC0SetChannel(ADC0_CHANNEL_AIN1);
    ADC1SetChannel(ADC1_CHANNEL_AIN2);

    while(1) {
    
    
        nCount ++;
        if(nCount & 0x100) LED = 0;
        else LED = 1;
        
        WaitTime(1);
        
        //----------------------------------------------------------------------
        if(++nShow >= 250) {
    
    
            nShow = 0;
            if(ADC0_CANREAD) {
    
    
                sprintf(szString, "ADC0:%06x", ADC0ReadInt16());
            } else sprintf(szString, "ADC0:------");
            
            ST7565_Print(0, 2, szString);
            
            if(ADC1_CANREAD) {
    
    
                sprintf(szString, "ADC1:%06x", ADC1ReadInt16());
            } else sprintf(szString, "ADC1:------");
            
            ST7565_Print(0, 4, szString);
            
            sprintf(szString, "Number:%04d", ++nNumber);
            ST7565_Print(0, 0, szString);

        }
        
        DACOutput(nCount);
            
        //----------------------------------------------------------------------        
        ConsoleDebug();

    }
}

※ 结论


设计之后的版本可以实现采集电压版本。


  1. 模块电路AD工程文件:AD\ADuC845\2020\LowNoiseADuC845.PcbDoc * ↩︎

  2. 下位机的软件:C51\ADuC845\Test\2020\TestLCD\MAIN.c ↩︎

猜你喜欢

转载自blog.csdn.net/zhuoqingjoking97298/article/details/109431420