测试完毕的程序

This commit is contained in:
hp_wmm 2026-01-05 18:53:05 +08:00
parent 44a6c38a30
commit 8cafcfd9db
7 changed files with 22652 additions and 2280 deletions

View File

@ -92,13 +92,14 @@ extern "C" {
//出厂校准芯片增益控制1%以内外围器件精度控制1%以内,采用同一系数,不用 EEPROM保存参数 //出厂校准芯片增益控制1%以内外围器件精度控制1%以内,采用同一系数,不用 EEPROM保存参数
// 功率转换系数=3537*1毫欧*0.51K*1000/(1.218*1.218)/(390K*5+0.51K)=623.39 ,整数运算考虑放大10倍*10=6234 // 功率转换系数=3537*1毫欧*0.51K*1000/(1.218*1.218)/(390K*5+0.51K)=623.39 ,整数运算考虑放大10倍*10=6234
// 电流转换系数=305978*1毫欧/1.218=251213整数运算考虑防止运算溢出缩小10倍/10=25121 // 电流转换系数=305978*1毫欧/1.218=251213整数运算考虑防止运算溢出缩小10倍/10=25121
// 电压转换系数=73989*0.51K*1000/1.218/(390K*5+0.51K)=15883 // 电流转换系数=305978*2毫欧/1.218=502426整数运算考虑防止运算溢出缩小10倍/10=50243
// 电压转换系数=73989*0.51K*1000/1.218/(390K*5+0.51K)=15883 0
// 电能系数=3600000*Power_K/1638.4/256=5350.6,对应于1度电的脉冲计数 // 电能系数=3600000*Power_K/1638.4/256=5350.6,对应于1度电的脉冲计数
// 电流采用1毫欧电阻采样电压采用390K*5+0.51K进行分压,实际测试发现电阻存在偏差,进行微调 // 电流采用1毫欧电阻采样电压采用390K*5+0.51K进行分压,实际测试发现电阻存在偏差,进行微调
// BL0942评估版立创直接贴片合金电阻(台湾厚声MS121WF100NT4E )实际测量比1毫欧偏小约0.93毫欧 // BL0942评估版立创直接贴片合金电阻(台湾厚声MS121WF100NT4E )实际测量比1毫欧偏小约0.93毫欧
#define Power_K 5798; //理论值*0.93 #define Power_K 5798; //理论值*0.93
#define Current_K 23362; //理论值*0.93 #define Current_K 50243; //理论值*0.93
#define Voltage_K 15883; // #define Voltage_K 15883; //
#define Energy_K 4976; //理论值*0.93 #define Energy_K 4976; //理论值*0.93

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -120,6 +120,7 @@
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>DLGUARM</Key> <Key>DLGUARM</Key>
<Name>?</Name>
</SetRegEntry> </SetRegEntry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
@ -154,6 +155,11 @@
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>elec_v_data,0x0A</ItemText> <ItemText>elec_v_data,0x0A</ItemText>
</Ww> </Ww>
<Ww>
<count>1</count>
<WinNumber>1</WinNumber>
<ItemText>elec_v_data,0x0A</ItemText>
</Ww>
</WatchWindow1> </WatchWindow1>
<WatchWindow2> <WatchWindow2>
<Ww> <Ww>
@ -168,7 +174,7 @@
<DebugFlag> <DebugFlag>
<trace>0</trace> <trace>0</trace>
<periodic>1</periodic> <periodic>1</periodic>
<aLwin>0</aLwin> <aLwin>1</aLwin>
<aCover>0</aCover> <aCover>0</aCover>
<aSer1>0</aSer1> <aSer1>0</aSer1>
<aSer2>0</aSer2> <aSer2>0</aSer2>
@ -204,16 +210,6 @@
<pszMrulep></pszMrulep> <pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp> <pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp> <pMultCmdsp></pMultCmdsp>
<SystemViewers>
<Entry>
<Name>System Viewer\LPTIM32</Name>
<WinId>35905</WinId>
</Entry>
<Entry>
<Name>System Viewer\UART5</Name>
<WinId>35904</WinId>
</Entry>
</SystemViewers>
<DebugDescription> <DebugDescription>
<Enable>1</Enable> <Enable>1</Enable>
<EnableFlashSeq>1</EnableFlashSeq> <EnableFlashSeq>1</EnableFlashSeq>
@ -310,7 +306,7 @@
<GroupNumber>3</GroupNumber> <GroupNumber>3</GroupNumber>
<FileNumber>6</FileNumber> <FileNumber>6</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>..\Src\coulombmeter.c</PathWithFileName> <PathWithFileName>..\Src\coulombmeter.c</PathWithFileName>

View File

@ -10,7 +10,7 @@
<TargetName>Coulombmeter</TargetName> <TargetName>Coulombmeter</TargetName>
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <ToolsetName>ARM-ADS</ToolsetName>
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARM_Compiler_5.06u7</pCCUsed> <pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCLANG506</pCCUsed>
<uAC6>0</uAC6> <uAC6>0</uAC6>
<TargetOption> <TargetOption>
<TargetCommonOption> <TargetCommonOption>

View File

@ -208,22 +208,22 @@ void UART5_IRQHandler(void)
uint8_t tmp_data = 0; uint8_t tmp_data = 0;
tmp_data = FL_UART_ReadRXBuff(COULOMBMETER_USED_UART_NUM); tmp_data = FL_UART_ReadRXBuff(COULOMBMETER_USED_UART_NUM);
elec_v_data.current_raw |= (tmp_data<<(elec_v_data.current_index*8)); elec_v_data.current_raw |= (tmp_data<<(elec_v_data.current_index*8));
elec_v_data.current_index++; elec_v_data.current_index++;
if(elec_v_data.current_index == 3) if(elec_v_data.current_index == 3)
{ {
elec_v_data.bus_com_stm = BUS_COM_STATE_IDLE; elec_v_data.bus_com_stm = BUS_COM_STATE_IDLE;
elec_v_data.bus_rms_current_mA =elec_v_data.current_raw / Current_K; elec_v_data.bus_rms_current_mA =elec_v_data.current_raw*100 / Current_K;
// elec_v_data.current_raw = 0; elec_v_data.current_raw = 0;
elec_v_data.current_index = 0; elec_v_data.current_index = 0;
} }
} }
FL_UART_ClearFlag_RXBuffFull(COULOMBMETER_USED_UART_NUM);
} }

View File

@ -86,7 +86,10 @@ int main(void)
FL_GPIO_Init(GPIOD, &GPIO_InitStruct); FL_GPIO_Init(GPIOD, &GPIO_InitStruct);
// FL_GPIO_Init(GPIOC, &GPIO_InitStruct); GPIO_InitStruct.pin = FL_GPIO_PIN_12;
FL_GPIO_Init(GPIOC, &GPIO_InitStruct);
FL_GPIO_SetOutputPin(GPIOC, FL_GPIO_PIN_12);
// 初始化定时器任务 // 初始化定时器任务
#if FREQ_CHECK #if FREQ_CHECK
/* 系统始终频率检测 */ /* 系统始终频率检测 */
@ -105,7 +108,6 @@ int main(void)
User_Coulombmeter_Data_refresh(); User_Coulombmeter_Data_refresh();
FL_GPIO_ToggleOutputPin(GPIOD, FL_GPIO_PIN_5); FL_GPIO_ToggleOutputPin(GPIOD, FL_GPIO_PIN_5);
// FL_GPIO_ToggleOutputPin(GPIOC, FL_GPIO_PIN_5);
} }
} }