ADI EVAL-ADuCM360QSPZ开发套件试用报告五

作者: bugbugout
上传时间为: 2018-06-05 08:53 AM
2018-06-05
阅读:

       这一期给大家带来的是利用评估板上的热电阻(RTD)进行温度检测,不过不同的是检测RTD的电压值没有进行最后的温度换算。为了是测量值更精准一些,采用的是差分模式。先看一下热电阻部分的电路图。

如上图所示,J6和J7要短接起来。然后从AIN0端给一个正输入,给AIN1端口一个负输入,然后测量两个端口之间的差值即为测量值。当然需要给AIN6一个恒流源的输入,以便计算出电压值。分析完原理后就可以进行编程了。首先还是贴出来ADC的初始化函数。

void ADC1_Init()
{
   AdcGo(pADI_ADC1,ADCMDE_ADCMD_IDLE);		 
   AdcMski(pADI_ADC1,ADCMSKI_RDY,1);                                      
   AdcFlt(pADI_ADC1,124,14,FLT_NORMAL|ADCFLT_NOTCH2|ADCFLT_CHOP);         
     AdcRng(pADI_ADC1,ADCCON_ADCREF_INTREF,ADCMDE_PGA_G32,ADCCON_ADCCODE_INT);  
    AdcBuf(pADI_ADC1,ADCCFG_EXTBUF_OFF,ADCCON_BUFBYPN|ADCCON_BUFBYPP|ADCCON_BUFPOWP|ADCCON_BUFPOWN); 
   AdcPin(pADI_ADC1,ADCCON_ADCCN_AIN1,ADCCON_ADCCP_AIN0);        
     AdcGo(pADI_ADC1,ADCMDE_ADCMD_CONT);			
     NVIC_EnableIRQ(ADC1_IRQn);				 <br>

选用的是ADC1,程序的第一行是将ADC1设置为空闲模式,以便于开始读取新值。下一行是使能ADC1的中断准备,接着是设置滤波,设置ADC 的输入范围,选择内部参考值,选择增益是32。然后下面一行是关闭输入缓冲和外部参考,接着就是选择AIN0的正输入和AIN1的负输入,然后启动ADC1的连续转换模式,最后就是使能ADC1的中断。然后是恒流源的初始化函数。

void IEXC_Init()
{
   IexcDat(IEXCDAT_IDAT_200uA,IDAT0En);   
   IexcCfg(IEXCCON_PD_off,IEXCCON_REFSEL_Int,IEXCCON_IPSEL1_Off,IEXCCON_IPSEL0_AIN6);
}
恒流源的初始化函数第一行是设置200uA的电流输出,提供给热电阻,然后设置AIN6为电流输出端。接着就可以写ADC1的中断函数,子函数先贴出来。
void ADC1_Int_Handler ()
{
   volatile unsigned int uiADCSTA = 0;
   uiADCSTA = pADI_ADC1->STA;               
   ulADC1Result = AdcRd(pADI_ADC1);            
      bSendResultToUART = 1;                  
}
读取ADC1的状态寄存器,然后从ADC的结果寄存器中读取转换值。最后一行就是发送数据的判断标志。然后开始编写ADC采样的子函数,老规矩,贴出来函数。
void StartTem()
{					
	if (bSendResultToUART == 1) 				
      {

		 bSendResultToUART = 0;            
         fVolts = fVoltage;
         fVolts   = (1.2 / 268435456);      
         fVoltage = (ulADC1Result * fVolts);   
		if(Tab[0]==0x03)
		{
		printf ("Temputer=%f V\r\n",fVoltage );
	        Tab[0]=0x00; 
         Tab[1]=0x00;
         Tab[2]=0x00;
		}                                 
			}			
}
首先清除掉发送数据的标志位,接下来就是计算ADC的采样电压了,最后输出电压值并清空数组。然后在主函数中调用初始化函数,并在while循环中使用温度采集函数,这样就可以在串口中通过发送指令测得热电阻两端的电压了。
全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示