• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > 技术文章 > 以32位MCU-HY16F198实现AC电流量测应用

以32位MCU-HY16F198实现AC电流量测应用

录入:edatop.com    点击:

(8)超低输入噪声运算放大器。

(9)16-bit Timer A

(10)16-bit Timer B模块具PWM波形产生功能

(11)16-bit Timer C模块具Capture/Compare功能

(12)硬件串行通讯SPI模块

(13)硬件串行通讯I2C模块

(14)硬件串行通讯UART模块

(15)硬件RTC时钟功能模块

(16)硬件Touch KEY功能模块

三、系统设计

硬件说明

HY16F198搭配Hall Sensor连接电路如下,AIO1与Hall Sensor的Vout接,AIO0透过10k电组分压电路连接在VDDA与VSS之间,这样就可以量测到带有1/2VDDA的交流电压讯号。
 



图4 硬件线路连接图

 

主要组件介绍(1) MCU:HY16F198,功能为量测电信号、控制、运算包含功能为储存校正参数。

(2) LCD Display:负责显示量测出来的电流数值。

(3) 10K奥姆分压电路:主要做为分压电路应用,可以量测到带有1/2VDDA的交流电压讯号。

(4) Hall Sensor :将感应到的交流电流转换为Vac加上Vdc的混合电压输出讯号。

函式使用说明:1. void AC_DataCount(int index, int ADC_Data) :把量测到的ADC Data转换成AC Data. int index :代表所量测到的ADC Data资料笔数。

int ADC_Data :使用HY16F198 ADC所量测到的ADC Data数值。

2. long long AC_Algorithm(void) : AC Data透过交流信号算法计算出电流数值。

一、范例程序

/*——*/ /* MAIN function */ /*——*/ int main(void)

{ long long AC_Value;DisplayInit();ClearLCDframe();Delay(10000);DisplayHYcon();Delay(1000);MCUSTATUSbits._byte = 0;Count=0;InitalADC();SYS_EnableGIE(7,0x1FF); //Enable GIE(Global Interrupt)

while(1)

{ if(MCUSTATUSbits.b_ADCdone) //b_ADCdone=1 execute below { MCUSTATUSbits.b_ADCdone=0;AC_Value = AC_Algorithm(); // To do AC algorithm and to show current value AC_Value=AC_Value/0.5770; // Using 60HZ gain value, calibrate at 2000mA LCD_DATA_DISPLAY(AC_Value); //Display AC Value Count=0;DrvADC_CombFilter(0);DrvADC_ClearIntFlag();DrvADC_EnableInt();DrvADC_CombFilter(1);} return 0;} /*——*/ /* ADC Interrupt Subroutines */ /*——*/ void HW2_ISR(void)

{ int ADCData;if(DrvADC_ReadIntFlag())

{ DrvADC_ClearIntFlag();ADCData=DrvADC_GetConversionData();AC_DataCount(Count++,ADCData); // AC Algorithm : to get ADCData if(Count>=AC_DataLen) //to do 4096 times { DrvADC_DisableInt();MCUSTATUSbits.b_ADCdone=1;} /*——*/ /* ADC Initialization Subroutines */ /*——*/ void InitalADC(void)

{ //Set ADC input pin DrvADC_SetADCInputChannel(ADC_Input_AIO1,ADC_Input_AIO0); //Set the ADC positive/negative input voltage source. DrvADC_InputSwitch(OPEN); //ADC signal input (positive and negative) short(VISHR) control. DrvADC_RefInputShort(OPEN); //Set the ADC reference input (positive and negative) short(VRSHR) control. DrvADC_Gain(ADC_PGA_Disable,ADC_PGA_Disable); //Input signal gain for modulator. DrvADC_DCoffset(0); //DC offset input voltage selection (VREF=REFP-REFN)

DrvADC_RefVoltage(VDDA,VSSA); //Set the ADC reference voltage. DrvADC_FullRefRange(1); //Set the ADC full reference range select. //0: Full reference range input //1: 1/2 reference range input DrvADC_OSR(10); //10 : OSR=32 DrvADC_CombFilter(ENABLE); //Enable OSR DrvADC_ClkEnable(0,1); //Setting ADC CLOCK ADCK=HS_CK/6 Rising edge is high //Set VDDA voltage DrvPMU_VDDA_LDO_Ctrl(E_VDD3V);DrvPMU_BandgapEnable();DrvPMU_REFO_Enable();DrvPMU_AnalogGround(ENABLE); //ADC analog ground source selection. //1 : Enable buffer and use internal source(need to work with ADC)

//Set ADC interrupt DrvADC_EnableInt();DrvADC_ClearIntFlag();DrvADC_Enable();}

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:OLED显示器的DC生产测试中测量误差的来源
下一篇:欧姆定律对电流精确测量造成缺憾的解决方案

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图