
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
//-------------------------------------------------------//
// Project Code : ALE300K03-21-LGE-GEN2.0-BE-CPU1
// File Name : SensingScale.cpp
// Created on : 2022. 11. 8.
// Description :
// Author : KimJeongWoo
// Last modified Date :
//-------------------------------------------------------//
#include "CommonLib.h"
unsigned int MuxSel = 0;
struct sMesureList Scale;
struct sMesureList ScaleDefault;
struct sMesureList ScaleDelt;
//struct sMesureList Offset;
//struct sMesureList OffsetDefault;
//struct sMesureList OffsetSum;
//struct sMesureList OffsetDelt;
//------------------------------------------------------------------------//
float CH1_UV = 0, CH1_VIS = 0, CH1_IR = 0;
float CH2_UV = 0, CH2_VIS = 0, CH2_IR = 0;
float CH3_UV = 0, CH3_VIS = 0, CH3_IR = 0;
float CH4_UV = 0, CH4_VIS = 0, CH4_IR = 0;
float DAC_1 = 0, DAC_2 = 0, DAC_3 = 0;
void InitScale()
{
// memset(&Offset, 0, (sizeof(Offset) / sizeof(int)));
// memset(&OffsetDefault, 0, (sizeof(OffsetDefault) / sizeof(int)));
// memset(&OffsetSum, 0, (sizeof(OffsetSum) / sizeof(int)));
// memset(&OffsetDelt, 0, (sizeof(OffsetDelt) / sizeof(int)));
memset(&Scale, 0, (sizeof(Scale) / sizeof(int)));
memset(&ScaleDefault, 0, (sizeof(ScaleDefault) / sizeof(int)));
memset(&ScaleDelt, 0, (sizeof(ScaleDelt) / sizeof(int)));
ScaleDefaultCal();
ReadScaleDelt();
ScaleUpdate();
OffsetDefaultCal();
ReadOffsetDelt();
OffsetUpdate();
}
void OffsetDefaultCal()
{
Adc.OffsetDefault[0] = ADC_OFFSET1V5; //Vbat
Adc.OffsetDefault[1] = ADC_OFFSET1V5; //Ibat
Adc.OffsetDefault[2] = ADC_OFFSET1V5; //Vboost
Adc.OffsetDefault[3] = ADC_OFFSET1V5; //Vdab
Adc.OffsetDefault[4] = ADC_OFFSET1V5; //GFD
Adc.OffsetDefault[5] = ADC_OFFSET1V5; //VdcH
Adc.OffsetDefault[6] = ADC_OFFSET1V5; //IuGrid
Adc.OffsetDefault[7] = ADC_OFFSET1V5; //IwGrid
Adc.OffsetDefault[8] = ADC_OFFSET1V5; //VdcL
Adc.OffsetDefault[9] = ADC_OFFSET1V5; //VunGrid
Adc.OffsetDefault[10] = ADC_OFFSET1V5; //VnwGrid
Adc.OffsetDefault[11] = ADC_OFFSET1V5; //IuInv
Adc.OffsetDefault[12] = ADC_OFFSET1V5; //IwInv
// Adc.OffsetDefault[13] = ADC_OFFSET1V5; //Izct
// Adc.OffsetDefault[14] = ADC_OFFSET1V5; //reserved
// Adc.OffsetDefault[15] = ADC_OFFSET1V5; //reserved
// Adc.OffsetDefault[16] = ADC_OFFSET1V5; //reserved
// Adc.OffsetDefault[17] = ADC_OFFSET1V5; //reserved
// Adc.OffsetDefault[18] = ADC_OFFSET1V5; //IuGridExt
// Adc.OffsetDefault[19] = ADC_OFFSET1V5; //IuGridExt
// Adc.OffsetDefault[20] = ADC_OFFSET1V5; //VntcBoost
// Adc.OffsetDefault[21] = ADC_OFFSET1V5; //VntcLvDab
// Adc.OffsetDefault[22] = ADC_OFFSET1V5; //reserved
// Adc.OffsetDefault[23] = ADC_OFFSET1V5; //reserved
// Adc.OffsetDefault[24] = ADC_OFFSET1V5; //VntcHvDab
// Adc.OffsetDefault[25] = ADC_OFFSET1V5; //VntcInv
// Adc.OffsetDefault[26] = ADC_OFFSET1V5; //Vntc5
// Adc.OffsetDefault[27] = ADC_OFFSET1V5; //Vntc6
// Adc.OffsetDefault[28] = ADC_OFFSET1V5; //VunInv
// Adc.OffsetDefault[29] = ADC_OFFSET1V5; //VnwInv
// Adc.OffsetDefault[30] = ADC_OFFSET1V5; //reserved
// Adc.OffsetDefault[31] = ADC_OFFSET1V5; //reserved
//임시 EEPROM 올때까지만
Adc.OffsetDelt[0] = 0.; //Vbat
Adc.OffsetDelt[1] = 0.; //Ibat
Adc.OffsetDelt[2] = 0.; //Vboost
Adc.OffsetDelt[3] = 0.; //Vdab
Adc.OffsetDelt[4] = 0.; //GFD
Adc.OffsetDelt[5] = 0.; //VdcH
Adc.OffsetDelt[6] = 0.; //IuGrid
Adc.OffsetDelt[7] = 0.; //IwGrid
Adc.OffsetDelt[8] = 0.; //VdcL
Adc.OffsetDelt[9] = 0.; //VunGrid
Adc.OffsetDelt[10] = 0.; //VnwGrid
Adc.OffsetDelt[11] = 0.; //IuInv
Adc.OffsetDelt[12] = 0.; //IwInv
// Adc.OffsetDelt[13] = 0.; //Izct
// Adc.OffsetDelt[14] = 0.; //reserved
// Adc.OffsetDelt[15] = 0.; //reserved
// Adc.OffsetDelt[16] = 0.; //reserved
// Adc.OffsetDelt[17] = 0.; //reserved
// Adc.OffsetDelt[18] = 0.; //IuGridExt
// Adc.OffsetDelt[19] = 0.; //IuGridExt
// Adc.OffsetDelt[20] = 0.; //VntcBoost
// Adc.OffsetDelt[21] = 0.; //VntcLvDab
// Adc.OffsetDelt[22] = 0.; //reserved
// Adc.OffsetDelt[23] = 0.; //reserved
// Adc.OffsetDelt[24] = 0.; //VntcHvDab
// Adc.OffsetDelt[25] = 0.; //VntcInv
// Adc.OffsetDelt[26] = 0.; //Vntc5
// Adc.OffsetDelt[27] = 0.; //Vntc6
// Adc.OffsetDelt[28] = 0.; //VunInv
// Adc.OffsetDelt[29] = 0.; //VnwInv
// Adc.OffsetDelt[30] = 0.; //reserved
// Adc.OffsetDelt[31] = 0.; //reserved
}
void OffsetUpdate()
{
Adc.Offset[0] = Adc.OffsetDefault[0] + Adc.OffsetDelt[0]; //Vbat
Adc.Offset[1] = Adc.OffsetDefault[1] + Adc.OffsetDelt[1]; //Ibat
Adc.Offset[2] = Adc.OffsetDefault[2] + Adc.OffsetDelt[2]; //Vboost
Adc.Offset[3] = Adc.OffsetDefault[3] + Adc.OffsetDelt[3]; //Vdab
Adc.Offset[4] = Adc.OffsetDefault[4] + Adc.OffsetDelt[4]; //GFD
Adc.Offset[5] = Adc.OffsetDefault[5] + Adc.OffsetDelt[5]; //VdcH
Adc.Offset[6] = Adc.OffsetDefault[6] + Adc.OffsetDelt[6]; //IuGrid
Adc.Offset[7] = Adc.OffsetDefault[7] + Adc.OffsetDelt[7]; //IwGrid
Adc.Offset[8] = Adc.OffsetDefault[8] + Adc.OffsetDelt[8]; //VdcL
Adc.Offset[9] = Adc.OffsetDefault[9] + Adc.OffsetDelt[9]; //VunGrid
Adc.Offset[10] = Adc.OffsetDefault[10] + Adc.OffsetDelt[10]; //VnwGrid
Adc.Offset[11] = Adc.OffsetDefault[11] + Adc.OffsetDelt[11]; //IuInv
Adc.Offset[12] = Adc.OffsetDefault[12] + Adc.OffsetDelt[12]; //IwInv
// Adc.Offset[13] = Adc.OffsetDefault[13] + Adc.OffsetDelt[13]; //Izct
// Adc.Offset[14] = Adc.OffsetDefault[14] + Adc.OffsetDelt[14]; //reserved
// Adc.Offset[15] = Adc.OffsetDefault[15] + Adc.OffsetDelt[15]; //reserved
// Adc.Offset[16] = Adc.OffsetDefault[16] + Adc.OffsetDelt[16]; //reserved
// Adc.Offset[17] = Adc.OffsetDefault[17] + Adc.OffsetDelt[17]; //reserved
// Adc.Offset[18] = Adc.OffsetDefault[18] + Adc.OffsetDelt[18]; //IuGridExt
// Adc.Offset[19] = Adc.OffsetDefault[19] + Adc.OffsetDelt[19]; //IuGridExt
// Adc.Offset[20] = Adc.OffsetDefault[20] + Adc.OffsetDelt[20]; //VntcBoost
// Adc.Offset[21] = Adc.OffsetDefault[21] + Adc.OffsetDelt[21]; //VntcLvDab
// Adc.Offset[22] = Adc.OffsetDefault[22] + Adc.OffsetDelt[22]; //reserved
// Adc.Offset[23] = Adc.OffsetDefault[23] + Adc.OffsetDelt[23]; //reserved
// Adc.Offset[24] = Adc.OffsetDefault[24] + Adc.OffsetDelt[24]; //VntcHvDab
// Adc.Offset[25] = Adc.OffsetDefault[25] + Adc.OffsetDelt[25]; //VntcInv
// Adc.Offset[26] = Adc.OffsetDefault[26] + Adc.OffsetDelt[26]; //Vntc5
// Adc.Offset[27] = Adc.OffsetDefault[27] + Adc.OffsetDelt[27]; //Vntc6
// Adc.Offset[28] = Adc.OffsetDefault[28] + Adc.OffsetDelt[28]; //VunInv
// Adc.Offset[29] = Adc.OffsetDefault[29] + Adc.OffsetDelt[29]; //VnwInv
// Adc.Offset[30] = Adc.OffsetDefault[30] + Adc.OffsetDelt[30]; //reserved
// Adc.Offset[31] = Adc.OffsetDefault[31] + Adc.OffsetDelt[31]; //reserved
}
void ScaleDefaultCal()
{
// ScaleDefault.VunInv = INV_AC_PT_GAIN; //Adc21 인버터 출력 전압 UN
// ScaleDefault.VnwInv = INV_AC_PT_GAIN; //Adc22 인버터 출력 전압 UN
// ScaleDefault.IuGrid = -INV_AC_CT_GAIN; //Adc23 계통 전류 U
// ScaleDefault.IwGrid = -INV_AC_CT_GAIN; //Adc24 계통 전류 W
//임시 EEPROM 올때까지만
ScaleDelt.ADC_CH1_UV = 1.;
ScaleDelt.ADC_CH1_VIS = 1.;
ScaleDelt.ADC_CH1_IR = 1.;
ScaleDelt.ADC_CH2_UV = 1.;
ScaleDelt.ADC_CH2_VIS = 1.;
ScaleDelt.ADC_CH2_IR = 1.;
ScaleDelt.ADC_CH3_UV = 1.;
ScaleDelt.ADC_CH3_VIS = 1.;
ScaleDelt.ADC_CH3_IR = 1.;
ScaleDelt.ADC_CH4_UV = 1.;
ScaleDelt.ADC_CH4_VIS = 1.;
ScaleDelt.ADC_CH4_IR = 1.;
}
//AMC3330
// Input Offset Current -10nA, 0.8nA, 10nA(Min, Typ, Max)
// Input Bias Current -10nA, 2.5nA, 10nA(Min, Typ, Max)
// 계산 다시 할것
void ScaleUpdate()
{
Scale.ADC_CH1_UV = ScaleDefault.ADC_CH1_UV + ScaleDelt.ADC_CH1_UV;
Scale.ADC_CH1_VIS = ScaleDefault.ADC_CH1_VIS + ScaleDelt.ADC_CH1_VIS;
Scale.ADC_CH1_IR = ScaleDefault.ADC_CH1_IR + ScaleDelt.ADC_CH1_IR;
Scale.ADC_CH2_UV = ScaleDefault.ADC_CH2_UV + ScaleDelt.ADC_CH2_UV;
Scale.ADC_CH2_VIS = ScaleDefault.ADC_CH2_VIS + ScaleDelt.ADC_CH2_VIS;
Scale.ADC_CH2_IR = ScaleDefault.ADC_CH2_IR + ScaleDelt.ADC_CH2_IR;
Scale.ADC_CH3_UV = ScaleDefault.ADC_CH3_UV + ScaleDelt.ADC_CH3_UV;
Scale.ADC_CH3_VIS = ScaleDefault.ADC_CH3_VIS + ScaleDelt.ADC_CH3_VIS;
Scale.ADC_CH3_IR = ScaleDefault.ADC_CH3_IR + ScaleDelt.ADC_CH3_IR;
Scale.ADC_CH4_UV = ScaleDefault.ADC_CH4_UV + ScaleDelt.ADC_CH4_UV;
Scale.ADC_CH4_VIS = ScaleDefault.ADC_CH4_VIS + ScaleDelt.ADC_CH4_VIS;
Scale.ADC_CH4_IR = ScaleDefault.ADC_CH4_IR + ScaleDelt.ADC_CH4_IR;
}
unsigned int TestAdcData = 4029;
float AdcOffset = 4095./2. ;
float VbatTestVar = 0.;
void AdcResult(void)
{
int AdcCnt = 0;
for (AdcCnt = 0; AdcCnt < 32; AdcCnt++)
{
Adc.Data[AdcCnt] = (float)Adc.RawData[AdcCnt] - Adc.Offset[AdcCnt];
}
CH1_UV = Adc.Data[2] * Scale.ADC_CH1_UV;
CH1_VIS = Adc.Data[3] * Scale.ADC_CH1_VIS;
CH1_IR = Adc.Data[4] * Scale.ADC_CH1_IR;
CH2_UV = Adc.Data[5] * Scale.ADC_CH2_UV;
CH2_VIS = Adc.Data[8] * Scale.ADC_CH2_VIS;
CH2_IR = Adc.Data[10] * Scale.ADC_CH2_IR;
CH3_UV = Adc.Data[11] * Scale.ADC_CH3_UV;
CH3_VIS = Adc.Data[12] * Scale.ADC_CH3_VIS;
CH3_IR = Adc.Data[13] * Scale.ADC_CH3_IR;
CH4_UV = Adc.Data[20] * Scale.ADC_CH4_UV;
CH4_VIS = Adc.Data[19] * Scale.ADC_CH4_VIS;
CH4_IR = Adc.Data[18] * Scale.ADC_CH4_IR;
DAC_1 = Adc.Data[0];
DAC_2 = Adc.Data[1];
DAC_3 = Adc.Data[9];
}
void ReadScaleDelt(void)
{
}
void WriteScaleDelt(void)
{
// NV.Adc.ScaleDelt.AdcExtBUTTON = ScaleDelt.AdcExtBUTTON;
}
void ResetScaleDelt(void)
{
memset(&ScaleDelt, 0, (sizeof(ScaleDelt) / sizeof(int)));
}
void ReadOffsetDelt(void)
{
}
void WriteOffsetDelt(void)
{
// NV.Adc.ScaleDelt.AdcExtBUTTON = ScaleDelt.AdcExtBUTTON;
}
void ResetOffsetDelt(void)
{
memset(&ScaleDelt, 0, (sizeof(ScaleDelt) / sizeof(int)));
}