mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-25 11:46:31 +00:00
Update xsns_02_analog.ino
This commit is contained in:
parent
3fef91d6ca
commit
4cd21644d6
@ -166,6 +166,8 @@ void AdcGetCurrentPower(uint8_t factor)
|
|||||||
uint16_t analog = 0;
|
uint16_t analog = 0;
|
||||||
uint16_t analog_min = 1023;
|
uint16_t analog_min = 1023;
|
||||||
uint16_t analog_max = 0;
|
uint16_t analog_max = 0;
|
||||||
|
|
||||||
|
if(Settings.adc_param1==0){
|
||||||
for (uint32_t i = 0; i < samples; i++) {
|
for (uint32_t i = 0; i < samples; i++) {
|
||||||
analog = analogRead(A0);
|
analog = analogRead(A0);
|
||||||
if (analog < analog_min) {
|
if (analog < analog_min) {
|
||||||
@ -176,8 +178,19 @@ void AdcGetCurrentPower(uint8_t factor)
|
|||||||
}
|
}
|
||||||
delay(1);
|
delay(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
Adc.current = (float)(analog_max-analog_min) * ((float)(Settings.adc_param2) / 100000);
|
Adc.current = (float)(analog_max-analog_min) * ((float)(Settings.adc_param2) / 100000);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
|
||||||
|
analog = AdcRead(5);
|
||||||
|
if(analog>Settings.adc_param1){
|
||||||
|
Adc.current = ((float)(analog) - (float)Settings.adc_param1) * ((float)(Settings.adc_param2) / 100000);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
Adc.current = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
float power = Adc.current * (float)(Settings.adc_param3) / 10;
|
float power = Adc.current * (float)(Settings.adc_param3) / 10;
|
||||||
uint32_t current_millis = millis();
|
uint32_t current_millis = millis();
|
||||||
Adc.energy = Adc.energy + ((power * (current_millis - Adc.previous_millis)) / 3600000000);
|
Adc.energy = Adc.energy + ((power * (current_millis - Adc.previous_millis)) / 3600000000);
|
||||||
@ -357,7 +370,7 @@ void CmndAdcParam(void)
|
|||||||
Settings.adc_param3 = (int)(CharToFloat(subStr(sub_string, XdrvMailbox.data, ",", 4)) * 10000);
|
Settings.adc_param3 = (int)(CharToFloat(subStr(sub_string, XdrvMailbox.data, ",", 4)) * 10000);
|
||||||
}
|
}
|
||||||
if (ADC0_CT_POWER == XdrvMailbox.payload) {
|
if (ADC0_CT_POWER == XdrvMailbox.payload) {
|
||||||
if ((Settings.adc_param1 & CT_FLAG_ENERGY_RESET) > 0) {
|
if ((Settings.adc_param1 == 1 & CT_FLAG_ENERGY_RESET) > 0) {
|
||||||
Adc.energy = 0;
|
Adc.energy = 0;
|
||||||
Settings.adc_param1 ^= CT_FLAG_ENERGY_RESET; // Cancel energy reset flag
|
Settings.adc_param1 ^= CT_FLAG_ENERGY_RESET; // Cancel energy reset flag
|
||||||
}
|
}
|
||||||
@ -435,4 +448,4 @@ bool Xsns02(uint8_t function)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // USE_ADC_VCC
|
#endif // USE_ADC_VCC
|
Loading…
x
Reference in New Issue
Block a user