01低噪声高精度AD采集模块
在 基于ADuC845的数据采集板 设计的模拟信号采集板在实验过程中采集信号出现了很大的噪声。主要是由于电路板底线没有进行很好的处理。
低噪声设计的主要方案:
- 将单片机的电源和底线分成模拟和数字两个版本,之间通过单点连接;
- 对于参考电源使用外部参考电压。在后面设计中,采用 LT1004CZ-2.5 参考电压源 作为但潘辰的参考2.5V的电压源。
02模块设计
1.电路设计1
▲ 模块SCH
▲ 快速制版PCB
2.电路焊接制作
下面是制作之后的PCB。左边是基于ADuC845的数据采集板 没有进行低噪声设计的版本。右边是采用了低噪声设计的版本。
▲ 焊接之后电路模块
03软件设计2
#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();
}
}
※ 结论
设计之后的版本可以实现采集电压版本。
模块电路AD工程文件:AD\ADuC845\2020\LowNoiseADuC845.PcbDoc * ↩︎
下位机的软件:C51\ADuC845\Test\2020\TestLCD\MAIN.c ↩︎