? 01低噪聲高精度AD采集模塊
在 基于ADuC845的資料采集板 設計的模擬信號采集板在實驗程序中采集信號出現了很大的噪聲,主要是由于電路板底線沒有進行很好的處理,
低噪聲設計的主要方案:
- 將單片機的電源和底線分成模擬和數字兩個版本,之間通過單點連接;
- 對于參考電源使用外部參考電壓,在后面設計中,采用 LT1004CZ-2.5 參考電壓源 作為但潘辰的參考2.5V的電壓源,
? 02模塊設計
1.電路設計1

▲ 模塊SCH

▲ 快速制版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();
}
}
? ※ 結論
設計之后的版本可以實作采集電壓版本,
模塊電路AD工程檔案:AD\ADuC845\2020\LowNoiseADuC845.PcbDoc * ??
下位機的軟體:C51\ADuC845\Test\2020\TestLCD\MAIN.c ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/200535.html
標籤:其他
上一篇:邊緣計算 與 CDN 的區別
下一篇:OC底層探索(十九) 多執行緒
