This commit is contained in:
不吃油炸鸡
2025-10-15 10:25:22 +08:00
parent 2e2c365223
commit 71350e51ce
4 changed files with 26 additions and 28 deletions

View File

@@ -4,9 +4,9 @@
#include "math.h"
// 量程阈值
#define ADC_TRUST_MAX 4000
#define ADC_TRUST_MAX 1952
#define ADC_TRUST_MIN 10
#define THRESH_HIGH 1900
#define THRESH_HIGH 1800
#define THRESH_LOW 18
// 次数
#define THRESH_TIMES 8
@@ -14,9 +14,9 @@
uint8_t gate_status = HIGH_CUR; // Default status
// 预先计算标度因子
static double SCALE_LOW = 3.0f / 4096.0f / 50.0f / LOW_CUR_RES * 1000000.0; // uA
static double SCALE_MID = 3.0f / 4096.0f / 50.0f / MID_CUR_RES * 1000000.0; // uA
static double SCALE_HIGH = 3.0f / 4096.0f / 50.0f / HIGH_CUR_RES * 1000000.0; // uA
static const double SCALE_LOW = 3.0f / 4096.0f / 50.0f / LOW_CUR_RES * 1000000.0; // uA
static const double SCALE_MID = 3.0f / 4096.0f / 50.0f / MID_CUR_RES * 1000000.0; // uA
static const double SCALE_HIGH = 3.0f / 4096.0f / 50.0f / HIGH_CUR_RES * 1000000.0; // uA
void Gate_Port_Init(void)
{
@@ -95,7 +95,8 @@ void Gate_Swich_and_UART_Send(ADC_Packet adc_packet)
// 可信范围内
float voltage;
float current;
if(cur_adc < ADC_TRUST_MAX && cur_adc > ADC_TRUST_MIN) {
uint16_t diff = abs((int)cur_adc - 2048);
if(diff < ADC_TRUST_MAX && diff > ADC_TRUST_MIN) {
adc_packet.header[3] = Gate_get_status();
ADC_Packet adc_packet_trans = adc_packet;
HAL_UART_Transmit_DMA(&huart6, (uint8_t*)&adc_packet_trans, sizeof(adc_packet_trans));
@@ -119,7 +120,6 @@ void Gate_Swich_and_UART_Send(ADC_Packet adc_packet)
queue_push(global_current_queue, current);
// 判断是否需要切换档位
// ADC码值超过量程
uint16_t diff = abs((int)cur_adc - 2048);
if(diff > THRESH_HIGH) {
high_times++;
low_times = 0;
@@ -143,9 +143,9 @@ void Gate_Swich_and_UART_Send(ADC_Packet adc_packet)
}
// 不可信范围内
else {
if(cur_adc >= ADC_TRUST_MAX) // 过大,切换到更大档位
if(diff >= ADC_TRUST_MAX) // 过大,切换到更大档位
flow_route_selection(Gate_get_status()+1);
else if(cur_adc <= ADC_TRUST_MIN) // 过小,切换到更小档位
else if(diff <= ADC_TRUST_MIN) // 过小,切换到更小档位
flow_route_selection(Gate_get_status()-1);
}
}