发表于:2002-11-20 09:59:00
楼主
用8112HG采样交流信号,我电压表测的数值为980mv ,进入a/d 板也是这个数值.但是我读到的数字信号只有730mv.
交流 信号的输入我使用差分,将低端和a/d板的地线联接.我用同样的通道测直流是可以的,几乎没有误差.我不知道对交流信号的误差来自哪儿??还是自己有操作错误??
count=0;
////
double tempbuff[20];
double dacvolt=0;
if( W_8112_Initial( CARD_1 ,0x220 ) != ERR_NoError ) {
printf( "ACL-8112 Initialization Error !!\n" );
exit(0);
}
W_8112_AD_Set_Channel(1); /* Setup ch.1 */
W_8112_AD_Set_Range(AD_B_5_V); /* input range */
W_8112_AD_Input_Mode(DIFFERENTIAL);
/* W_8112_AD_Set_Mode(A8112_AD_MODE_1); /*Software Trig, Software Polling */
//////1通道
dacvolt=ReadAcDate();
m_ACTxet1.Format("%f",dacvolt);
UpdateData(false);///显示数据
}
读去交流信号值"
double CACDIGLOG::ReadAcDate()
{
int buff[502],i;
int upcount=0,downcount=0;
int ad_data,err,max=0;
double acvolt;
int maxmark=0;////最大点的坐标
int temp;
long sumation=0;
Sleep(400);
for(i=0;i<=501;i++)
{
if( (err=W_8112_AD_Aquire( &ad_data )) != ERR_NoError)
{
AfxMessageBox("error!",MB_OK); return 0 ;
}
buff[i]=ad_data;
}
for(temp=0;temp<=500;temp++)
{
if(buff[temp]>=max)
{
max=buff[temp];
maxmark=temp;
}
}
sumation=(buff[maxmark-1]+buff[maxmark]+buff[maxmark+1])/3;
acvolt=(((double)10*sumation/(double)4095)-5)/1.4142135;
return acvolt;
}