一种适用于多通道模拟量同步采集的去耦电路

本文介绍了一种适用于多通道模拟量同步采集的去耦电路设计,通过合理的电路布局和去耦策略,能有效抑制噪声和电磁干扰,确保高精度的多通道模拟信号测量。涉及STM32单片机和嵌入式硬件,包含ADS和ADXL362等传感器的使用,以及FFT变换和信号处理算法。
摘要由CSDN通过智能技术生成

一种适用于多通道模拟量同步采集的去耦电路

通过合理的去耦设计和电路布局,可以有效抑制噪声和电磁干扰,实现高精度的多通道模拟量测量。
模块运行代买如下:
/* Includes -----------------------------------/
#include “main.h”
#include “stm32f1xx_hal.h”
#include “i2c.h”
#include “iwdg.h”
#include “rtc.h”
#include “spi.h”
#include “tim.h”
#include “usart.h”
#include “gpio.h”
#include “ADS.h”
#include “TOF.h”
#include “ADS.h”
#include “MyFlash.h”
#include “string.h”
#include “math.h”
#include “ADXL362.h”
#include “stm32_dsp.h”
#include “table_fft.h”
/
-----------------------------*///注册号
#define AuthorID HAL_UART_Transmit(&huart2,“338302#sutong002#Product1”,27,9999)

/FFT函数---------------------------------/
#define PI2 6.28318530717959
#define NPT 1024
#define FNum 3
#define Gain_A 1000000.0
long lBufInArray[NPT];
long lBufOutArray[NPT/2];
long lBufMagArray[NPT/2];
double AXa[250],AYa[250],AZa[250];
double Frequency[FNum];
uint16_t Amplitude[FNum];
uint16_t SignalLen=250;//数据采集长度
/-----------------------------/
void Rank(long pData[],uint16_t pIndex[],uint16_t N);//大小排序
void PeakSearch(long pData[],uint16_t pIndex[],uint16_t N,uint8_t M,uint16_t peak[],uint16_t Am[],uint8_t bw);//寻峰
void MyFFT(double pData[],double FePeak[],uint16_t AmPeak[],double FS,uint16_t SN);//FFT变换
void MinusDC(double pData[],uint16_t N,double gain);//去直流偏置
/
时钟函数 ---------------------------------/
void SystemClock_Config(void);
void SysTick1ms(void);
void SysTick10us(void);
void SysTickStop(void);
/
FLASH函数 ---------------------------------/
void ReFreshFlash(void);
void ReadFlashData(void);
/
等待计数----------------------------------/
uint16_t wait=0;
/
字符函数---------------------------------/
void Num2Char(char str, double number, uint8_t g, uint8_t l);
static char table[]={‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’,‘A’,‘B’,‘C’,‘D’,‘E’,‘F’};//
void Add2Str(uint8_t dis,uint16_t start, uint8_t length,char sour);//
void Add2Str1(uint8_t dis,uint16_t start, uint8_t length,char sour);//
uint8_t GetIntScale(double data);
uint8_t IntPoint=0;
void AmplitudeText(uint16_t A);
uint16_t CurrentLen=0;
char DisStr[20];
uint8_t TxData[350];
/
串口函数 ---------------------------------
/
uint8_t CommandRx(void);
void ClearRXBuffer(void);
uint8_t RxFlag=0;
uint8_t ReceiveNum=0;
char RxBuff[40];
uint8_t RxBuff0[1];
/
数据全局变量-------------------------------
/
double VtoStrain(double V);
double XAcl=0,YAcl=0,ZAcl=0,TAcl=0;
double AX,AY,T;//倾角
double DispX,DispY,DispZ,GF,Strain1,Strain2,V1;//位移
double DXOFF,DYOFF,DZOFF,GFOFF,Strain1OFF,Strain2OFF,AXOFF,AYOFF;
double DX_per,DY_per,HY_X,HY_Y;
/
LowPower函数 -----------------------------
/
void IOConfig_Stop(void);
void SendMeaData(void);
uint8_t LowPwr;
uint8_t Ahour=0,Aminute=0,Asecond=0;
/* 全局标志变量------------------------------*/
uint8_t Error=0,Error1=0,Error2=0,Error3=0,Error4=0,Error5=0;
uint8_t ResetTime1,ResetTime2;
uint8_t NET_OK=0;
uint8_t NET_RX=0;
uint8_t NET_TX=0;
/
*************************************************************************/
int main(void)
{
HAL_Init();
SystemClock_Config();
SysTick10us();
HAL_Delay(100500);
//HAL_DBGMCU_EnableDBGStopMode();
/
-----硬件配置-------------------------------/
MX_GPIO_Init();
//MX_I2C1_Init();
MX_USART2_UART_Init();
HAL_Delay(100
4000);
/-----电源上电-------------------------------/
//PWR_5V_EN();//5.0V上电
PWR_4p2V_EN();//4.2V上电
HAL_Delay(100500);
PWR_LDO_EN();//LDO上电
HAL_Delay(100
2000);
// LowPwr=1;/------------------------------LOWPOWER!!!/
Add2Str(TxData,CurrentLen,4,“B0!,”);//上线心跳
CurrentLen=CurrentLen+4;
/
----读FLASH寄存器---------------------------/
ReadFlashData();
/
-----打开串口中断----------------------------/
HAL_UART_Receive_IT(&huart2,RxBuff0,1);
/
-----ADS初始化自检----------------------------*/
InitADS();
HAL_Delay(100);

wait=0; 
while(OffSetCal())
{
	HAL_Delay(100*10);
	wait=wait+1;
	if(wait>=100)
	{
		Error3=1;
		break;
	}
}

wait=0;
while(GainSetCal())
{
	HAL_Delay(100*10);
	wait=wait+1;
	if(wait>=100)
	{
		Error4=1;
		break;
	}
}

//InitADS_ChannleAnWY();
if((Error3|Error4)==1)
{
	Add2Str(TxData,CurrentLen,5,"A
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值