From e4b89ea21890a8862f51171ff85e939eeee2f12b Mon Sep 17 00:00:00 2001 From: Tomas Kuchta Date: Sun, 18 Aug 2024 22:32:05 +0200 Subject: [PATCH 1/3] Add Power Measurement usermod - Implement functions to measure power consumption --- .../Power_Measurement/Power_Measurement.h | 576 +++ .../assets/example_schematic.kicad_sch | 3266 +++++++++++++++++ .../assets/img/example schematic.png | Bin 0 -> 53358 bytes .../assets/img/screenshot 1 - info.jpg | Bin 0 -> 48340 bytes .../assets/img/screenshot 2 - settings.png | Bin 0 -> 24762 bytes .../assets/img/screenshot 3 - settings.png | Bin 0 -> 35492 bytes usermods/Power_Measurement/readme.md | 94 + wled00/const.h | 1 + wled00/pin_manager.h | 1 + wled00/usermods_list.cpp | 8 + 10 files changed, 3946 insertions(+) create mode 100644 usermods/Power_Measurement/Power_Measurement.h create mode 100644 usermods/Power_Measurement/assets/example_schematic.kicad_sch create mode 100644 usermods/Power_Measurement/assets/img/example schematic.png create mode 100644 usermods/Power_Measurement/assets/img/screenshot 1 - info.jpg create mode 100644 usermods/Power_Measurement/assets/img/screenshot 2 - settings.png create mode 100644 usermods/Power_Measurement/assets/img/screenshot 3 - settings.png create mode 100644 usermods/Power_Measurement/readme.md diff --git a/usermods/Power_Measurement/Power_Measurement.h b/usermods/Power_Measurement/Power_Measurement.h new file mode 100644 index 0000000000..d54ac790c5 --- /dev/null +++ b/usermods/Power_Measurement/Power_Measurement.h @@ -0,0 +1,576 @@ +// Filename: Power_Measurement.h +// This code was cocreated by github copilot and created by Tomáš Kuchta +#pragma once + +#include "wled.h" +#include "esp_adc_cal.h" + +#ifndef CURRENT_PIN + #define CURRENT_PIN 1 +#endif + +#ifndef VOLTAGE_PIN + #define VOLTAGE_PIN 0 +#endif + +#define NUM_READINGS 10 +#define NUM_READINGS_CAL 100 +#define ADC_MAX_VALUE (pow(2, ADCResolution) - 1) // For 12-bit ADC, the max value is 4095 +#define UPDATE_INTERVAL_MAIN 100 +#define UPDATE_INTERVAL_MQTT 60000 + +class UsermodPower_Measurement : public Usermod { + private: + bool initDone = false; + unsigned long lastTime_slow = 0; + unsigned long lastTime_main = 0; + unsigned long lastTime_energy = 0; + unsigned long lastTime_mqtt = 0; + boolean enabled = true; + boolean calibration_enable = false; + boolean cal_adavnced = false; + + int Voltage_raw = 0; + float AverageVoltage_raw = 0; + int Voltage_raw_adj = 0; + int Voltage_calc = 0; + + int Current_raw = 0; + float AverageCurrent_raw = 0; + int Current_calc = 0; + + float voltageReadings_raw[NUM_READINGS]; + float currentReadings_raw[NUM_READINGS]; + int readIndex = 0; + float totalVoltage_raw = 0; + float totalCurrent_raw = 0; + + // Low-pass filter variables + float alpha = 0.1; + float filtered_Voltage_raw = 0; + float filtered_Current_raw = 0; + + unsigned long long wattmiliseconds = 0; //energy counter in watt milliseconds + + + // calibration variables + int Num_Readings_Cal = NUM_READINGS_CAL; + bool Cal_In_Progress = false; + bool Cal_Zero_Points = false; + bool Cal_calibrate_Measured_Voltage = false; + bool Cal_calibrate_Measured_Current = false; + float Cal_Measured_Voltage = 0; + float Cal_Measured_Current = 0; + + float Cal_min_Voltage_raw = 17; + float Cal_min_Current_calc = 718; + + float Cal_Voltage_raw_averaged = 0; + float Cal_Voltage_calc_averaged = 0; + float Cal_Current_calc_averaged = 0; + + int Cal_Current_at_x = 1000; + int Cal_Current_calc_at_x = 775; + float Cal_Voltage_Coefficient = 22.97; + + // averiging variables + float Cal_Voltage_raw_Readings_Avg[NUM_READINGS_CAL]; + float Cal_Voltage_calc_Readings_Avg[NUM_READINGS_CAL]; + float Cal_Current_calc_Readings_Avg[NUM_READINGS_CAL]; + int Cal_Read_Index = 0; + float Cal_Total_Voltage_raw = 0; + float Cal_Total_Voltage_calc = 0; + float Cal_Total_Current_calc = 0; + + int8_t VoltagePin = VOLTAGE_PIN; + int8_t CurrentPin = CURRENT_PIN; + + int Update_Interval_Mqtt = UPDATE_INTERVAL_MQTT; + int Update_Interval_Main = UPDATE_INTERVAL_MAIN; + + // String used more than once + static const char _name[] PROGMEM; + static const char _no_data[] PROGMEM; + + public: + int ADCResolution = 12; + int ADCAttenuation = ADC_6db; + + //For usage in other parts of the main code + float Voltage = 0; + float Current = 0; + float Power = 0; + unsigned long kilowatthours = 0; + + void setup() { + analogReadResolution(ADCResolution); + analogSetAttenuation(static_cast(ADCAttenuation)); // Set the ADC attenuation (ADC_ATTEN_DB_6 = 0 mV ~ 1300 mV) + + // Initialize all readings to 0: + for (int i = 0; i < NUM_READINGS; i++) { + voltageReadings_raw[i] = 0; + currentReadings_raw[i] = 0; + } + + Current_raw = 1800; + filtered_Current_raw = 1800; + + Cal_Zero_Points = false; + Cal_calibrate_Measured_Voltage = false; + Cal_calibrate_Measured_Current = false; + Cal_In_Progress = false; + Num_Readings_Cal = NUM_READINGS_CAL; + + + #ifdef WLED_DEBUG + esp_adc_cal_characteristics_t adc_chars; + esp_adc_cal_value_t val_type = esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_6, ADC_WIDTH_BIT_12, ESP_ADC_CAL_VAL_DEFAULT_VREF, &adc_chars); + + if (val_type == ESP_ADC_CAL_VAL_EFUSE_VREF) { + // eFuse Vref is available + DEBUG_PRINTLN(F("PM: Using eFuse Vref for ADC calibration_enable")); + } else if (val_type == ESP_ADC_CAL_VAL_EFUSE_TP) { + // Two Point calibration_enable is available + DEBUG_PRINTLN(F("PM: Using Two Point calibration_enable for ADC calibration_enable")); + } else { + // Default Vref is used + DEBUG_PRINTLN(F("PM: Using default Vref for ADC calibration_enable")); + } + #endif + + + if (enabled) { + pinAlocation(); + } + + initDone = true; + + } + + void loop() { + if (!enabled || strip.isUpdating()) return; + + unsigned long currentTime = millis(); + + #ifdef WLED_DEBUG + if (currentTime - lastTime_slow >= 1000) { + printDebugInfo(); + lastTime_slow = currentTime; + } + #endif + + #ifndef WLED_DISABLE_MQTT + if (currentTime - lastTime_mqtt >= Update_Interval_Mqtt) { + publishPowerMeasurements(); + lastTime_mqtt = currentTime; + } + #endif + + if (currentTime - lastTime_main >= Update_Interval_Main) { + updateReadings(); + + if (Cal_Zero_Points || Cal_calibrate_Measured_Voltage || Cal_calibrate_Measured_Current) calibration(); + + lastTime_main = currentTime; + } + + + } + + void pinAlocation() { + DEBUG_PRINTLN(F("Allocating power pins...")); + if (VoltagePin >= 0 && pinManager.allocatePin(VoltagePin, true, PinOwner::UM_Power_Measurement)) { + DEBUG_PRINT(F("Voltage pin allocated: ")); + DEBUG_PRINTLN(VoltagePin); + } else { + if (VoltagePin >= 0) { + DEBUG_PRINTLN(F("Voltage pin allocation failed.")); + } + VoltagePin = -1; // allocation failed, disable + } + + if (CurrentPin >= 0 && pinManager.allocatePin(CurrentPin, true, PinOwner::UM_Power_Measurement)) { + DEBUG_PRINT(F("Current pin allocated: ")); + DEBUG_PRINTLN(CurrentPin); + } else { + if (CurrentPin >= 0) { + DEBUG_PRINTLN(F("Current pin allocation failed.")); + } + CurrentPin = -1; // allocation failed, disable + } + } + + + void printDebugInfo() { + DEBUG_PRINT(F("Voltage raw: ")); + DEBUG_PRINTLN(Voltage_raw); + DEBUG_PRINTLN(AverageVoltage_raw); + DEBUG_PRINT(F("Calc: ")); + DEBUG_PRINTLN(Voltage_calc); + DEBUG_PRINT(F("Voltage: ")); + DEBUG_PRINTLN(Voltage); + + DEBUG_PRINT(F("Current raw: ")); + DEBUG_PRINTLN(Current_raw); + DEBUG_PRINTLN(AverageCurrent_raw); + DEBUG_PRINT(F("Calc: ")); + DEBUG_PRINTLN(Current_calc); + DEBUG_PRINT("Current: "); + DEBUG_PRINTLN(Current); + + DEBUG_PRINT("Power: "); + DEBUG_PRINTLN(Power); + + DEBUG_PRINT("Energy: "); + DEBUG_PRINTLN(kilowatthours); + DEBUG_PRINT("Energy Wms: "); + DEBUG_PRINTLN(wattmiliseconds); + } + + void updateReadings() { + // Measure the voltage and current and store them in the arrays for the moving average and convert via map function: + totalVoltage_raw -= voltageReadings_raw[readIndex]; + totalCurrent_raw -= currentReadings_raw[readIndex]; + + if (VoltagePin == -1) { + Voltage_raw = 0; + DEBUG_PRINTLN("Voltage pin not allocated"); + } else { + Voltage_raw = analogRead(VoltagePin); + } + + if (CurrentPin == -1) { + Current_raw = 0; + DEBUG_PRINTLN("Current pin not allocated"); + } else { + Current_raw = analogRead(CurrentPin); + } + + if (millis() > 1000) { // To avoid the initial spike in readings + filtered_Voltage_raw = (alpha * Voltage_raw) + ((1 - alpha) * filtered_Voltage_raw); + filtered_Current_raw = (alpha * Current_raw) + ((1 - alpha) * filtered_Current_raw); + } else { + filtered_Voltage_raw = Voltage_raw; + filtered_Current_raw = Current_raw; + } + + voltageReadings_raw[readIndex] = filtered_Voltage_raw; + currentReadings_raw[readIndex] = filtered_Current_raw; + + totalVoltage_raw += filtered_Voltage_raw; + totalCurrent_raw += filtered_Current_raw; + + AverageVoltage_raw = totalVoltage_raw / NUM_READINGS; + AverageCurrent_raw = totalCurrent_raw / NUM_READINGS; + + readIndex = (readIndex + 1) % NUM_READINGS; + + Voltage_raw_adj = map(AverageVoltage_raw, Cal_min_Voltage_raw, ADC_MAX_VALUE, 0, ADC_MAX_VALUE); + if (Voltage_raw_adj < 0) Voltage_raw_adj = 0; + Voltage_calc = readADC_Cal(Voltage_raw_adj); + Voltage = (Voltage_calc / 1000.0) * Cal_Voltage_Coefficient; + if (Voltage < 0.05) Voltage = 0; + Voltage = round(Voltage * 100.0) / 100.0; // Round to 2 decimal places + if (VoltagePin == -1) Voltage = 0; + + Current_calc = readADC_Cal(AverageCurrent_raw); + Current = (map(Current_calc, Cal_min_Current_calc, Cal_Current_calc_at_x, 0, Cal_Current_at_x)) / 1000.0; + if (Current > -0.1 && Current < 0.05) { + Current = 0; + } + Current = round(Current * 100.0) / 100.0; + if (CurrentPin == -1) Current = 0; + + // Calculate power + Power = Voltage * Current; + Power = round(Power * 100.0) / 100.0; + + // Calculate energy - dont do it when led is off + if (Power > 0) { + unsigned long elapsedTime = millis() - lastTime_energy; + wattmiliseconds += Power * elapsedTime; + } + lastTime_energy = millis(); + + if (wattmiliseconds >= 3600000000) { // 3,600,000 milliseconds = 1 hour + kilowatthours += wattmiliseconds / 3600000000; // Convert watt-milliseconds to kilowatt-hours (1 watt-millisecond = 1/3,600,000,000 kilowatt-hours) + wattmiliseconds = 0; + } + } + + void calibration() { + if (Num_Readings_Cal == NUM_READINGS_CAL) { + DEBUG_PRINTLN("calibration_enable started"); + Cal_In_Progress = true; + serializeConfig(); // To update the checkboxes in the config + } + if (Num_Readings_Cal > 0) { + Num_Readings_Cal--; + // Average the readings + Cal_Total_Voltage_raw -= Cal_Voltage_raw_Readings_Avg[Cal_Read_Index]; + Cal_Total_Voltage_calc -= Cal_Voltage_calc_Readings_Avg[Cal_Read_Index]; + Cal_Total_Current_calc -= Cal_Current_calc_Readings_Avg[Cal_Read_Index]; + + Cal_Voltage_raw_Readings_Avg[Cal_Read_Index] = Voltage_raw; + Cal_Voltage_calc_Readings_Avg[Cal_Read_Index] = Voltage_calc; + Cal_Current_calc_Readings_Avg[Cal_Read_Index] = Current_calc; + + Cal_Total_Voltage_raw += Voltage_raw; + Cal_Total_Voltage_calc += Voltage_calc; + Cal_Total_Current_calc += Current_calc; + + Cal_Read_Index = (Cal_Read_Index + 1) % NUM_READINGS_CAL; + + Cal_Voltage_raw_averaged = Cal_Total_Voltage_raw / NUM_READINGS_CAL; + Cal_Voltage_calc_averaged = Cal_Total_Voltage_calc / NUM_READINGS_CAL; + Cal_Current_calc_averaged = Cal_Total_Current_calc / NUM_READINGS_CAL; + } else { + + DEBUG_PRINTLN("calibration_enable Flags:"); + DEBUG_PRINTLN(Cal_In_Progress); + DEBUG_PRINTLN(Num_Readings_Cal); + DEBUG_PRINTLN(Cal_Zero_Points); + DEBUG_PRINTLN(Cal_calibrate_Measured_Voltage); + DEBUG_PRINTLN(Cal_calibrate_Measured_Current); + DEBUG_PRINTLN("the averaged values are:"); + DEBUG_PRINTLN(Cal_Voltage_raw_averaged); + DEBUG_PRINTLN(Cal_Voltage_calc_averaged); + DEBUG_PRINTLN(Cal_Current_calc_averaged); + DEBUG_PRINTLN("Inputed values are:"); + DEBUG_PRINTLN(Cal_Measured_Voltage); + DEBUG_PRINTLN(Cal_Measured_Current); + + Calibration_calculation(); + + Cal_In_Progress = false; + Cal_Zero_Points = false; + Cal_calibrate_Measured_Voltage = false; + Cal_calibrate_Measured_Current = false; + Num_Readings_Cal = NUM_READINGS_CAL; + serializeConfig(); // To update the checkboxes in the config + + DEBUG_PRINTLN("calibration_enable finished"); + } + } + + void Calibration_calculation() { + DEBUG_PRINTLN("Calculating calibration_enable values"); + + if (Cal_calibrate_Measured_Current) { + Cal_Current_at_x = Cal_Measured_Current * 1000; + Cal_Current_calc_at_x = Cal_Current_calc_averaged; + + } else if (Cal_calibrate_Measured_Voltage) { + Cal_Voltage_Coefficient = (Cal_Measured_Voltage * 1000) / Cal_Voltage_calc_averaged; + + } else if (Cal_Zero_Points) { + Cal_min_Voltage_raw = Cal_Voltage_raw_averaged; + Cal_min_Current_calc = Cal_Current_calc_averaged; + } else { + DEBUG_PRINTLN("No calibration_enable values selected - but that should not happen"); + } + + } + + void addToJsonInfo(JsonObject& root) { + if (!enabled)return; + + JsonObject user = root["u"]; + if (user.isNull())user = root.createNestedObject("u"); + + JsonArray Current_json = user.createNestedArray(FPSTR("Current")); + if (Current_raw == 0 || CurrentPin == -1) { + Current_json.add(F(_no_data)); + } else if (Current_raw >= (ADC_MAX_VALUE - 3)) { + Current_json.add(F("Overrange")); + } else { + Current_json.add(Current); + Current_json.add(F(" A")); + } + + JsonArray Voltage_json = user.createNestedArray(FPSTR("Voltage")); + if (Voltage_raw == 0 || VoltagePin == -1) { + Voltage_json.add(F(_no_data)); + } else if (Voltage_raw >= (ADC_MAX_VALUE - 3)) { + Voltage_json.add(F(_no_data)); + } else if (Voltage_raw >= (ADC_MAX_VALUE - 3)) { + Voltage_json.add(F("Overrange")); + } else { + Voltage_json.add(Voltage); + Voltage_json.add(F(" V")); + } + + if (calibration_enable) { + JsonArray Current_raw_json = user.createNestedArray(FPSTR("Current raw")); + Current_raw_json.add(Current_raw); + Current_raw_json.add(" -> " + String(Current_calc)); + + JsonArray Voltage_raw_json = user.createNestedArray(FPSTR("Voltage raw")); + Voltage_raw_json.add(Voltage_raw); + Voltage_raw_json.add(" -> " + String(Voltage_calc)); + } + + JsonArray Power_json = user.createNestedArray(FPSTR("Power")); + Power_json.add(Power); + Power_json.add(F(" W")); + + JsonArray Energy_json = user.createNestedArray(FPSTR("Energy")); + Energy_json.add(kilowatthours); + Energy_json.add(F(" kWh")); + } + + void addToConfig(JsonObject& root) { + JsonObject top = root.createNestedObject(FPSTR(_name)); + top[FPSTR("enabled")] = enabled; + + JsonObject power_pins = top.createNestedObject(FPSTR("power_pins")); + power_pins[FPSTR("Voltage Pin")] = VoltagePin; + power_pins[FPSTR("Current Pin")] = CurrentPin; + + JsonObject update = top.createNestedObject(FPSTR("update rate in ms")); + update[FPSTR("update rate of mqtt")] = Update_Interval_Mqtt; + update[FPSTR("update rate of main")] = Update_Interval_Main; + + JsonObject cal = top.createNestedObject(FPSTR("calibration")); + cal[FPSTR("calibration Mode")] = calibration_enable; + if (calibration_enable && !Cal_In_Progress) { + cal[FPSTR("Advanced")] = cal_adavnced; + + cal["Zero Points"] = Cal_Zero_Points; + cal["Measured Voltage"] = Cal_Measured_Voltage; + cal["Calibrate Voltage?"] = Cal_calibrate_Measured_Voltage; + cal["Measured Current"] = Cal_Measured_Current; + cal["Calibrate Current?"] = Cal_calibrate_Measured_Current; + } else if (Cal_In_Progress) { + cal[FPSTR("calibration_enable is in progress please wait")] = "Non-Essential Data Entry Zone: Just for Kicks and Giggles"; + } + + if (calibration_enable && cal_adavnced && !Cal_In_Progress) { + cal[FPSTR("Number of samples")] = Num_Readings_Cal; + cal[FPSTR("Zero Point of Voltage")] = Cal_min_Voltage_raw; + cal[FPSTR("Zero Point of Current")] = Cal_min_Current_calc; + cal[FPSTR("Voltage Coefficient")] = Cal_Voltage_Coefficient; + cal[FPSTR("Current at X (mV at ADC)")] = Cal_Current_calc_at_x; + cal[FPSTR("Current at X (mA)")] = Cal_Current_at_x; + } + } + + bool readFromConfig(JsonObject& root) { + int8_t tmpVoltagePin = VoltagePin; + int8_t tmpCurrentPin = CurrentPin; + + JsonObject top = root[FPSTR(_name)]; + if (top.isNull()) { + DEBUG_PRINTLN(F(": No config found. (Using defaults.)")); + return false; + } + + enabled = top[FPSTR("Enabled")] | enabled; + + tmpVoltagePin = top[FPSTR("power_pins")][FPSTR("Voltage Pin")] | tmpVoltagePin; + tmpCurrentPin = top[FPSTR("power_pins")][FPSTR("Current Pin")] | tmpCurrentPin; + + Update_Interval_Mqtt = top[FPSTR("update rate in ms")][FPSTR("update rate of mqtt")] | Update_Interval_Mqtt; + Update_Interval_Main = top[FPSTR("update rate in ms")][FPSTR("update rate of main")] | Update_Interval_Main; + + JsonObject cal = top[FPSTR("calibration")]; + calibration_enable = cal[FPSTR("calibration Mode")] | calibration_enable; + + if (calibration_enable && !Cal_In_Progress) { + cal_adavnced = cal[FPSTR("Advanced")] | cal_adavnced; + + Cal_Zero_Points = cal["Zero Points"] | Cal_Zero_Points; + Cal_Measured_Voltage = cal["Measured Voltage"] | Cal_Measured_Voltage; + Cal_calibrate_Measured_Voltage = cal["Calibrate Voltage?"] | Cal_calibrate_Measured_Voltage; + Cal_Measured_Current = cal["Measured Current"] | Cal_Measured_Current; + Cal_calibrate_Measured_Current = cal["Calibrate Current?"] | Cal_calibrate_Measured_Current; + } + + if (calibration_enable && cal_adavnced && !Cal_In_Progress) { + Num_Readings_Cal = cal[FPSTR("Number of samples")] | Num_Readings_Cal; + Cal_min_Voltage_raw = cal[FPSTR("Zero Point of Voltage")] | Cal_min_Voltage_raw; + Cal_min_Current_calc = cal[FPSTR("Zero Point of Current")] | Cal_min_Current_calc; + Cal_Voltage_Coefficient = cal[FPSTR("Voltage Coefficient")] | Cal_Voltage_Coefficient; + Cal_Current_calc_at_x = cal[FPSTR("Current at X (mV at ADC)")] | Cal_Current_calc_at_x; + Cal_Current_at_x = cal[FPSTR("Current at X (mA)")] | Cal_Current_at_x; + } + + if (!initDone) { + // first run: reading from cfg.json + VoltagePin = tmpVoltagePin; + CurrentPin = tmpCurrentPin; + DEBUG_PRINTLN(F(" config loaded.")); + } else { + DEBUG_PRINTLN(F(" config (re)loaded.")); + // changing paramters from settings page + if (tmpVoltagePin != VoltagePin || tmpCurrentPin != CurrentPin) { + DEBUG_PRINTLN(F("Re-init Power pins.")); + // deallocate pin and release memory + pinManager.deallocatePin(VoltagePin, PinOwner::UM_Power_Measurement); + VoltagePin = tmpVoltagePin; + pinManager.deallocatePin(CurrentPin, PinOwner::UM_Power_Measurement); + CurrentPin = tmpCurrentPin; + // initialise + pinAlocation(); + } + } + + return true; + } + + #ifndef WLED_DISABLE_MQTT + void onMqttConnect(bool sessionPresent) { + publishPowerMeasurements(); + } + + void publishPowerMeasurements() { + if (WLED_MQTT_CONNECTED) { + char subuf[64]; + char payload[32]; + + // Publish Voltage + strcpy(subuf, mqttDeviceTopic); + strcat_P(subuf, PSTR("/power_measurement/voltage")); + dtostrf(Voltage, 6, 2, payload); // Convert float to string + mqtt->publish(subuf, 0, true, payload); + + // Publish Current + strcpy(subuf, mqttDeviceTopic); + strcat_P(subuf, PSTR("/power_measurement/current")); + dtostrf(Current, 6, 2, payload); // Convert float to string + mqtt->publish(subuf, 0, true, payload); + + // Publish Power + strcpy(subuf, mqttDeviceTopic); + strcat_P(subuf, PSTR("/power_measurement/power")); + dtostrf(Power, 6, 2, payload); // Convert float to string + mqtt->publish(subuf, 0, true, payload); + + // Publish kilowatthours + strcpy(subuf, mqttDeviceTopic); + strcat_P(subuf, PSTR("/power_measurement/kilowatthours")); + ultoa(kilowatthours, payload, 10); // Convert unsigned long to string + mqtt->publish(subuf, 0, true, payload); + } + } + #endif + + uint16_t getId() override { + return USERMOD_ID_POWER_MEASUREMENT; + } + + uint32_t readADC_Cal(int ADC_Raw) { + esp_adc_cal_characteristics_t adc_chars; + esp_adc_cal_value_t val_type = esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_6, ADC_WIDTH_BIT_12, ESP_ADC_CAL_VAL_DEFAULT_VREF, &adc_chars); + if (val_type == ESP_ADC_CAL_VAL_EFUSE_VREF) { + // Handle error if calibration_enable value is not available + DEBUG_PRINTF("Error: eFuse Vref not available"); + return 0; + } + return (esp_adc_cal_raw_to_voltage(ADC_Raw, &adc_chars)); + } +}; + +// String used more than once +const char UsermodPower_Measurement::_name[] PROGMEM = "Power Measurement"; +const char UsermodPower_Measurement::_no_data[] PROGMEM = "No data"; \ No newline at end of file diff --git a/usermods/Power_Measurement/assets/example_schematic.kicad_sch b/usermods/Power_Measurement/assets/example_schematic.kicad_sch new file mode 100644 index 0000000000..7b0c9bb933 --- /dev/null +++ b/usermods/Power_Measurement/assets/example_schematic.kicad_sch @@ -0,0 +1,3266 @@ +(kicad_sch + (version 20231120) + (generator "eeschema") + (generator_version "8.0") + (uuid "2360a543-140e-4488-b7ed-7d45263c2314") + (paper "A4") + (lib_symbols + (symbol "Device:C" + (pin_numbers hide) + (pin_names + (offset 0.254) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "C" + (at 0.635 2.54 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "C" + (at 0.635 -2.54 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0.9652 -3.81 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "cap capacitor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "C_*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "C_0_1" + (polyline + (pts + (xy -2.032 -0.762) (xy 2.032 -0.762) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.032 0.762) (xy 2.032 0.762) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "C_1_1" + (pin passive line + (at 0 3.81 270) + (length 2.794) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 2.794) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "Device:C_Polarized" + (pin_numbers hide) + (pin_names + (offset 0.254) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "C" + (at 0.635 2.54 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "C_Polarized" + (at 0.635 -2.54 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0.9652 -3.81 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Polarized capacitor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "cap capacitor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "CP_*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "C_Polarized_0_1" + (rectangle + (start -2.286 0.508) + (end 2.286 1.016) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.778 2.286) (xy -0.762 2.286) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.27 2.794) (xy -1.27 1.778) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 2.286 -0.508) + (end -2.286 -1.016) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + ) + (symbol "C_Polarized_1_1" + (pin passive line + (at 0 3.81 270) + (length 2.794) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 2.794) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "Device:Fuse" + (pin_numbers hide) + (pin_names + (offset 0) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "F" + (at 2.032 0 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Fuse" + (at -1.905 0 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at -1.778 0 90) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Fuse" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "fuse" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "*Fuse*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "Fuse_0_1" + (rectangle + (start -0.762 -2.54) + (end 0.762 2.54) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0 -2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "Fuse_1_1" + (pin passive line + (at 0 3.81 270) + (length 1.27) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 1.27) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "Device:R_Small" + (pin_numbers hide) + (pin_names + (offset 0.254) hide) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "R" + (at 0.762 0.508 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "R_Small" + (at 0.762 -1.016 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor, small symbol" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "R resistor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "R_*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "R_Small_0_1" + (rectangle + (start -0.762 1.778) + (end 0.762 -1.778) + (stroke + (width 0.2032) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "R_Small_1_1" + (pin passive line + (at 0 2.54 270) + (length 0.762) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -2.54 90) + (length 0.762) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "Sensor_Current:ACS722xLCTR-10AB" + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "U" + (at 2.54 11.43 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "ACS722xLCTR-10AB" + (at 2.54 8.89 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" + (at 2.54 -8.89 0) + (effects + (font + (size 1.27 1.27) + (italic yes) + ) + (justify left) + (hide yes) + ) + ) + (property "Datasheet" "http://www.allegromicro.com/~/media/Files/Datasheets/ACS722-Datasheet.ashx?la=en" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "±10A Bidirectional Hall-Effect Current Sensor, +3.3V supply, 132mV/A, SOIC-8" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "hall effect current monitor sensor isolated" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "SOIC*3.9x4.9mm*P1.27mm*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "ACS722xLCTR-10AB_0_1" + (rectangle + (start -7.62 7.62) + (end 7.62 -7.62) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + ) + (symbol "ACS722xLCTR-10AB_1_1" + (pin passive line + (at -10.16 5.08 0) + (length 2.54) + (name "IP+" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -10.16 5.08 0) + (length 2.54) hide + (name "IP+" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -10.16 -2.54 0) + (length 2.54) + (name "IP-" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -10.16 -2.54 0) + (length 2.54) hide + (name "IP-" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 0 -10.16 90) + (length 2.54) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin input line + (at 10.16 -2.54 180) + (length 2.54) + (name "BW_SEL" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin output line + (at 10.16 5.08 180) + (length 2.54) + (name "VIOUT" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 0 10.16 270) + (length 2.54) + (name "VCC" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "power:+12V" + (power) + (pin_numbers hide) + (pin_names + (offset 0) hide) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "#PWR" + (at 0 -3.81 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+12V" + (at 0 3.556 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+12V\"" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "+12V_0_1" + (polyline + (pts + (xy -0.762 1.27) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 0) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0.762 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "+12V_1_1" + (pin power_in line + (at 0 0 90) + (length 0) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "power:+3.3V" + (power) + (pin_numbers hide) + (pin_names + (offset 0) hide) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "#PWR" + (at 0 -3.81 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+3.3V" + (at 0 3.556 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "+3.3V_0_1" + (polyline + (pts + (xy -0.762 1.27) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 0) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0.762 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "+3.3V_1_1" + (pin power_in line + (at 0 0 90) + (length 0) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "power:GND" + (power) + (pin_numbers hide) + (pin_names + (offset 0) hide) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "#PWR" + (at 0 -6.35 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 0 -3.81 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "GND_0_1" + (polyline + (pts + (xy 0 0) (xy 0 -1.27) (xy 1.27 -1.27) (xy 0 -2.54) (xy -1.27 -1.27) (xy 0 -1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "GND_1_1" + (pin power_in line + (at 0 0 270) + (length 0) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + ) + (junction + (at 153.67 107.95) + (diameter 0) + (color 0 0 0 0) + (uuid "1b07dc7b-9356-4ae8-9e9e-b57b58329148") + ) + (junction + (at 113.03 76.2) + (diameter 0) + (color 0 0 0 0) + (uuid "2d154cf4-f5b7-4323-b3e9-9eac8537ff79") + ) + (junction + (at 193.04 76.2) + (diameter 0) + (color 0 0 0 0) + (uuid "2db59dc4-ddf7-4b94-a277-fb8c5b964aea") + ) + (junction + (at 125.73 76.2) + (diameter 0) + (color 0 0 0 0) + (uuid "3c475897-b6ee-4b26-aabb-a108d9c0d018") + ) + (junction + (at 113.03 87.63) + (diameter 0) + (color 0 0 0 0) + (uuid "c840daac-a559-40e2-bec1-819a61bd16f0") + ) + (junction + (at 139.7 107.95) + (diameter 0) + (color 0 0 0 0) + (uuid "cab8a5f1-5511-4c6e-a5cc-7be5a16b3808") + ) + (junction + (at 99.06 87.63) + (diameter 0) + (color 0 0 0 0) + (uuid "ec34c1bf-1f80-4e09-b75a-207e2d51eee0") + ) + (wire + (pts + (xy 91.44 76.2) (xy 95.25 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "09e68bce-a76f-468d-bd1f-3498704202a5") + ) + (wire + (pts + (xy 193.04 76.2) (xy 193.04 78.74) + ) + (stroke + (width 0) + (type default) + ) + (uuid "0e106dab-edbd-4402-baed-7cfb8c61d0fb") + ) + (wire + (pts + (xy 125.73 76.2) (xy 153.67 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "382618b9-c8aa-4d10-94fb-aa43deac4ea5") + ) + (wire + (pts + (xy 113.03 93.98) (xy 113.03 95.25) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4bcdf674-c19f-4d9b-a412-c93407b26cea") + ) + (wire + (pts + (xy 139.7 111.76) (xy 139.7 107.95) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4c39f15a-8351-403a-9d89-fe42188e85a2") + ) + (wire + (pts + (xy 125.73 87.63) (xy 125.73 86.36) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4e53bfda-b832-4d7f-9baf-b0b01d5fdcb0") + ) + (wire + (pts + (xy 113.03 87.63) (xy 113.03 88.9) + ) + (stroke + (width 0) + (type default) + ) + (uuid "5241d529-f06d-413f-b170-da5727d7a0cf") + ) + (wire + (pts + (xy 193.04 76.2) (xy 200.66 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "548cd7f1-1ecc-42d5-9753-2b0cd4503ddb") + ) + (wire + (pts + (xy 193.04 87.63) (xy 193.04 86.36) + ) + (stroke + (width 0) + (type default) + ) + (uuid "633d110a-0f0e-41e8-b4ff-02cc1efb32dc") + ) + (wire + (pts + (xy 99.06 88.9) (xy 99.06 87.63) + ) + (stroke + (width 0) + (type default) + ) + (uuid "65593ed6-3469-4ce3-bb4d-c23dc0bac992") + ) + (wire + (pts + (xy 168.91 86.36) (xy 172.72 86.36) + ) + (stroke + (width 0) + (type default) + ) + (uuid "6e8528fd-746e-42ef-944b-bba142fa3f7f") + ) + (wire + (pts + (xy 144.78 86.36) (xy 144.78 83.82) + ) + (stroke + (width 0) + (type default) + ) + (uuid "6f12ed2d-ab77-4e6f-aa71-48b62d210b29") + ) + (wire + (pts + (xy 91.44 69.85) (xy 91.44 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "73e3453d-01b8-4011-ba4e-cbee25c77cd8") + ) + (wire + (pts + (xy 161.29 76.2) (xy 193.04 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "8fd82abc-2ff7-4ef7-b5f5-a611d22054ec") + ) + (wire + (pts + (xy 139.7 119.38) (xy 139.7 120.65) + ) + (stroke + (width 0) + (type default) + ) + (uuid "90109a20-1e33-4e88-b4cd-9b90e3d7275a") + ) + (wire + (pts + (xy 144.78 86.36) (xy 148.59 86.36) + ) + (stroke + (width 0) + (type default) + ) + (uuid "9068dd4f-f645-4baf-9b81-194e52f99ac6") + ) + (wire + (pts + (xy 125.73 76.2) (xy 125.73 78.74) + ) + (stroke + (width 0) + (type default) + ) + (uuid "970ce8ae-e94c-4e2f-bccc-11ad86d40bd2") + ) + (wire + (pts + (xy 138.43 107.95) (xy 139.7 107.95) + ) + (stroke + (width 0) + (type default) + ) + (uuid "973de61e-2303-4b5d-a962-023dd5f0e210") + ) + (wire + (pts + (xy 139.7 107.95) (xy 153.67 107.95) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a43648d4-9f86-4160-9f51-0bdc2feee276") + ) + (wire + (pts + (xy 153.67 120.65) (xy 153.67 119.38) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a46f7b49-f088-4aaf-8f04-e7699744187b") + ) + (wire + (pts + (xy 113.03 76.2) (xy 125.73 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "acb41acf-8594-442e-9d0a-dac74b40272f") + ) + (wire + (pts + (xy 99.06 87.63) (xy 113.03 87.63) + ) + (stroke + (width 0) + (type default) + ) + (uuid "c31c1aea-00f9-48f8-813e-f98f2c48866f") + ) + (wire + (pts + (xy 153.67 114.3) (xy 153.67 107.95) + ) + (stroke + (width 0) + (type default) + ) + (uuid "d703656b-3d51-44da-8626-4f4187e70bef") + ) + (wire + (pts + (xy 113.03 76.2) (xy 113.03 81.28) + ) + (stroke + (width 0) + (type default) + ) + (uuid "de954c79-1743-46bc-8ed2-bf76ba626004") + ) + (wire + (pts + (xy 99.06 96.52) (xy 99.06 97.79) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e2283c3f-7214-4471-9452-f46ed59fad2d") + ) + (wire + (pts + (xy 95.25 87.63) (xy 99.06 87.63) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e2dab855-68c4-4b49-a858-2d5e5b0d7830") + ) + (wire + (pts + (xy 113.03 86.36) (xy 113.03 87.63) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e527980f-78d5-4f87-9f2f-cefb29677c5f") + ) + (wire + (pts + (xy 153.67 96.52) (xy 153.67 99.06) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e68c62bd-c95a-4c05-bb15-b7259fbb2f1b") + ) + (wire + (pts + (xy 153.67 104.14) (xy 153.67 107.95) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f2d91e7a-679e-42c3-9e11-69d10d26f58f") + ) + (wire + (pts + (xy 102.87 76.2) (xy 113.03 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f370ca2a-777b-4e89-b9fc-7a1dbf365c8b") + ) + (wire + (pts + (xy 172.72 86.36) (xy 172.72 90.17) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f540e002-e775-4d10-b433-96e7a62da590") + ) + (wire + (pts + (xy 161.29 96.52) (xy 161.29 99.06) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f67391a0-35e9-4361-b34d-fe2d8426bffd") + ) + (text "0.33V - 2.97V\nZero Current Output Voltage = 1.65\n1.32V 10A swing" + (exclude_from_sim no) + (at 157.48 72.136 0) + (effects + (font + (size 1.27 1.27) + ) + ) + (uuid "67a60731-3184-4129-a037-edab08d612f7") + ) + (global_label "IO0X-Voltage" + (shape input) + (at 95.25 87.63 180) + (fields_autoplaced yes) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + (uuid "4cd9524b-ddbd-409c-b13a-b8f411a39577") + (property "Intersheetrefs" "${INTERSHEET_REFS}" + (at 79.323 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + (hide yes) + ) + ) + ) + (global_label "VIN_Measured" + (shape output) + (at 200.66 76.2 0) + (fields_autoplaced yes) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + (uuid "534fa94a-2362-42d7-a892-5ec26944b9f7") + (property "Intersheetrefs" "${INTERSHEET_REFS}" + (at 216.5266 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + (hide yes) + ) + ) + ) + (global_label "IO0Y-Current" + (shape input) + (at 138.43 107.95 180) + (fields_autoplaced yes) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + (uuid "551f3e47-8f86-4a64-81ac-10348a5ca32d") + (property "Intersheetrefs" "${INTERSHEET_REFS}" + (at 122.6843 107.95 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + (hide yes) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 139.7 120.65 0) + (mirror y) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "025dd409-0965-4b1b-b4b7-a70978a388b5") + (property "Reference" "#PWR05" + (at 139.7 127 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 139.7 124.714 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 139.7 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 139.7 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 139.7 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "b7b23158-8ed1-4860-b766-6b49aea9a474") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR05") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 125.73 87.63 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "0dd6af27-53f3-4b81-b860-78e0e2a7f4c6") + (property "Reference" "#PWR04" + (at 125.73 93.98 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 125.73 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 125.73 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 125.73 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 125.73 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "2cb6c609-62a5-4196-9689-ca66eed822b5") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR04") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 193.04 87.63 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "15b563e7-f8f8-4f8b-a72e-7a81c4e86445") + (property "Reference" "#PWR010" + (at 193.04 93.98 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 193.04 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 193.04 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 193.04 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 193.04 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "e5bd921a-8aac-4bcc-b564-5c8680cfd9f7") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR010") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:+12V") + (at 91.44 69.85 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "407df456-dee1-42cc-a267-d98fa7533233") + (property "Reference" "#PWR01" + (at 91.44 73.66 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+VIN" + (at 91.186 64.77 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 91.44 69.85 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 91.44 69.85 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+12V\"" + (at 91.44 69.85 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "aaaa8249-1eb5-42b2-8084-a2c6a598cc0c") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR01") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Sensor_Current:ACS722xLCTR-10AB") + (at 158.75 86.36 90) + (mirror x) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "56afd411-3977-437b-bb3a-8f28c710835e") + (property "Reference" "U1" + (at 177.8 80.0414 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "ACS722xLCTR-10AB" + (at 177.8 82.5814 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" + (at 167.64 88.9 0) + (effects + (font + (size 1.27 1.27) + (italic yes) + ) + (justify left) + (hide yes) + ) + ) + (property "Datasheet" "http://www.allegromicro.com/~/media/Files/Datasheets/ACS722-Datasheet.ashx?la=en" + (at 158.75 86.36 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "±10A Bidirectional Hall-Effect Current Sensor, +3.3V supply, 132mV/A, SOIC-8" + (at 158.75 86.36 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "2" + (uuid "72f645c4-4abf-4ed6-8444-41711e1da047") + ) + (pin "5" + (uuid "b2582dca-89d3-426c-abbb-c3fc19df7eab") + ) + (pin "8" + (uuid "2a6be634-5f04-46c7-8438-214e2044f43d") + ) + (pin "6" + (uuid "e8f38fe2-ecef-4bd0-8f8c-99f4b004dbb6") + ) + (pin "4" + (uuid "97ba3573-4081-4ca9-96e6-5cdb0ea88803") + ) + (pin "7" + (uuid "142838f0-c367-4e18-bf7b-ee3e7e9d7db5") + ) + (pin "3" + (uuid "b75ee556-6002-41b0-96db-16a7d7beea40") + ) + (pin "1" + (uuid "cde11bc5-dfa3-4dd4-9658-9eb7c8fed8a7") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "U1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 125.73 82.55 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "5fad63ef-f4d6-456d-b079-2b3217b553f2") + (property "Reference" "C2" + (at 127 80.01 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "100nF" + (at 127.254 85.09 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" + (at 126.6952 86.36 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 125.73 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 125.73 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 125.73 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 125.73 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 125.73 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 125.73 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "2" + (uuid "2cbac835-c714-454e-a097-f07e36ea31d4") + ) + (pin "1" + (uuid "d6ff9025-85f6-4ead-83e6-35d7daee59a5") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "C2") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:+3.3V") + (at 144.78 83.82 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "6017f11f-a4ef-46fa-bf62-b72b94c8bdfc") + (property "Reference" "#PWR06" + (at 144.78 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+3.3V" + (at 144.78 80.01 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 144.78 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 144.78 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 144.78 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "0147def6-8cae-4008-9c8a-fb5fa5d131c6") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR06") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C_Polarized") + (at 193.04 82.55 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "82226e50-0f54-4abb-ad36-90f7a425fbd1") + (property "Reference" "C4" + (at 196.85 80.3909 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "1000uF" + (at 196.85 82.9309 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Capacitor_THT:CP_Radial_D10.0mm_P5.00mm" + (at 194.0052 86.36 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 193.04 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Polarized capacitor" + (at 193.04 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 193.04 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 193.04 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 193.04 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 193.04 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "2" + (uuid "7ba46b09-0b39-4f1d-8c36-abf2cdc780df") + ) + (pin "1" + (uuid "683c3db6-7c90-44ef-ab5f-0091b7cee3da") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "C4") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:Fuse") + (at 99.06 76.2 90) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "89446d9b-f672-45df-9d3a-68373b75dc56") + (property "Reference" "F1" + (at 99.06 74.168 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "10A" + (at 99.06 78.486 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Fuse:Fuseholder_Littelfuse_Nano2_154x" + (at 99.06 77.978 90) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 99.06 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Fuse" + (at 99.06 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Can be found at" "https://www.digikey.cz/cs/products/detail/littelfuse-inc/0154010-DR/552684" + (at 99.06 76.2 90) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 99.06 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 99.06 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 99.06 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 99.06 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "81156747-e392-4f5d-891c-de789d1cc7df") + ) + (pin "2" + (uuid "94ced624-93d2-41f8-ba92-b05615e69e68") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "F1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 99.06 97.79 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "90a71c55-8ccd-4b79-ad25-d3ab6fc7ddc7") + (property "Reference" "#PWR02" + (at 99.06 104.14 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 99.06 101.854 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 99.06 97.79 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 99.06 97.79 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 99.06 97.79 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "d04aa806-3c19-4632-afa5-705e3b63bf07") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR02") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R_Small") + (at 113.03 91.44 0) + (mirror y) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "916b1f8d-6642-488e-af1d-84205ae4c834") + (property "Reference" "R2" + (at 115.57 90.1699 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "10k" + (at 115.57 92.7099 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor, small symbol" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "80da57cb-1acf-41ff-accf-438dbaa07ce8") + ) + (pin "2" + (uuid "d76cf884-9331-435b-a0fb-7c592b71d183") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "R2") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R_Small") + (at 153.67 116.84 0) + (mirror y) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "a2f78b9f-6eea-4b57-9350-7a56c8bf81fc") + (property "Reference" "R4" + (at 151.638 115.316 90) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "39k" + (at 155.702 114.808 90) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor, small symbol" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "4663be56-5d7b-4dde-981e-26590e75cb77") + ) + (pin "2" + (uuid "5ebf0633-3a93-4867-9db1-76976ac19143") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "R4") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R_Small") + (at 113.03 83.82 0) + (mirror y) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "b3f1d506-940d-4f50-933d-aeebc3a5b136") + (property "Reference" "R1" + (at 115.57 82.5499 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "220k" + (at 115.57 85.0899 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor, small symbol" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "70c05b2c-4e80-403a-9e92-8542d45d1206") + ) + (pin "2" + (uuid "c3cfea87-c544-4c8e-9eab-e26c8713801d") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "R1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 172.72 90.17 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "b404e6ac-da9a-4b38-9fcc-469610d9c102") + (property "Reference" "#PWR09" + (at 172.72 96.52 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 172.974 93.98 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 172.72 90.17 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 172.72 90.17 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 172.72 90.17 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "3c7ac4e1-3263-4e11-b848-2ee2b98850b3") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR09") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:+3.3V") + (at 161.29 99.06 180) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "d6678757-2ebb-4128-8030-6d8841bb6c75") + (property "Reference" "#PWR08" + (at 161.29 95.25 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+3.3V" + (at 161.29 102.87 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 161.29 99.06 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 161.29 99.06 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 161.29 99.06 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "b2fbe9f3-3222-4ae1-b583-970abdfc56ca") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR08") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R_Small") + (at 153.67 101.6 0) + (mirror y) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "db6a3718-e8ff-44ae-aa13-b57f45e4bd09") + (property "Reference" "R3" + (at 151.384 100.076 90) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "51k" + (at 155.956 99.568 90) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor, small symbol" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "6829eee2-48c3-428c-b395-aded09ed3da1") + ) + (pin "2" + (uuid "3f91b68a-7552-416e-b2ab-0e04c521fffd") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "R3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 113.03 95.25 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "dc1fb61f-7794-44b1-9c3f-9d8160f73445") + (property "Reference" "#PWR03" + (at 113.03 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 113.03 99.314 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 113.03 95.25 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 113.03 95.25 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 113.03 95.25 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "7a1a9ab3-e4f2-4afb-ade6-51fe3c60c5d4") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR03") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 139.7 115.57 0) + (mirror y) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "df3697c9-ae53-41d5-a282-976508338da5") + (property "Reference" "C3" + (at 143.764 113.03 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "100nF" + (at 146.812 118.364 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" + (at 138.7348 119.38 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 139.7 115.57 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 139.7 115.57 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 139.7 115.57 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 139.7 115.57 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 139.7 115.57 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 139.7 115.57 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "2" + (uuid "234d1c0f-c5de-4dc7-b16b-da5dc27fab1c") + ) + (pin "1" + (uuid "2b679a4b-9e23-47bd-a24d-6eded824d69c") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "C3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 99.06 92.71 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "e78fc402-ce31-495a-81f4-a4788b0342b0") + (property "Reference" "C1" + (at 100.33 90.17 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "100nF" + (at 100.584 95.25 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" + (at 100.0252 96.52 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 99.06 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 99.06 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 99.06 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 99.06 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 99.06 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 99.06 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "2" + (uuid "30c9c460-abed-45f7-a241-ed63555d80fc") + ) + (pin "1" + (uuid "f986288e-0ac9-4da5-9bcb-ea41a75dd84f") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "C1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 153.67 120.65 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "eb2dd32b-7175-4175-be49-b823cf64d88f") + (property "Reference" "#PWR07" + (at 153.67 127 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 153.67 124.714 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 153.67 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 153.67 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 153.67 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "ea5a2d61-5227-4a80-af48-dc2dd1529c05") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR07") + (unit 1) + ) + ) + ) + ) + (sheet_instances + (path "/" + (page "1") + ) + ) +) diff --git a/usermods/Power_Measurement/assets/img/example schematic.png b/usermods/Power_Measurement/assets/img/example schematic.png new file mode 100644 index 0000000000000000000000000000000000000000..2a25116fbd2faab79222618dbe0d58fcd9a5e372 GIT binary patch literal 53358 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 CieuRT literal 0 HcmV?d00001 diff --git a/usermods/Power_Measurement/assets/img/screenshot 1 - info.jpg b/usermods/Power_Measurement/assets/img/screenshot 1 - info.jpg new file mode 100644 index 0000000000000000000000000000000000000000..278d572463d64d8a3555800090a85f93a3c7c883 GIT binary patch literal 48340 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%0DcYFVo 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 Djb;n* literal 0 HcmV?d00001 diff --git a/usermods/Power_Measurement/assets/img/screenshot 2 - settings.png b/usermods/Power_Measurement/assets/img/screenshot 2 - settings.png new file mode 100644 index 0000000000000000000000000000000000000000..bb9a59d08d23589651194f560e655aa461e79b3e GIT binary patch literal 24762 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 literal 0 HcmV?d00001 diff --git a/usermods/Power_Measurement/assets/img/screenshot 3 - settings.png b/usermods/Power_Measurement/assets/img/screenshot 3 - settings.png new file mode 100644 index 0000000000000000000000000000000000000000..96c05e067edfa7f006bf99710edb306e72726208 GIT binary patch literal 35492 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 KsE~af_`d+&RW*D7 literal 0 HcmV?d00001 diff --git a/usermods/Power_Measurement/readme.md b/usermods/Power_Measurement/readme.md new file mode 100644 index 0000000000..4df846179c --- /dev/null +++ b/usermods/Power_Measurement/readme.md @@ -0,0 +1,94 @@ +# Voltage and Current Measurement using ESP's Internal ADC + +This usermod is a proof of concept that measures current and voltage using a voltage divider and a current sensor. It leverages the ESP's internal ADC to read the voltage and current, calculate power and energy consumption, and optionally publish these measurements via MQTT. + +## Features + +- **Voltage and Current Measurement**: Reads voltage and current using ADC pins of the ESP. +- **Power and Energy Calculation**: Calculates power (in watts) and energy consumption (in kilowatt-hours). +- **Calibration Support**: Offers calibration for more accurate measurements. +- **MQTT Publishing**: Publishes voltage, current, power, and energy measurements to an MQTT broker. +- **Debug Information**: Provides debug output via serial for monitoring raw and processed data. + +## Dependencies + +- **ESP32 ADC Calibration Library**: Requires `esp_adc_cal.h` for ADC calibration, which is a standard ESP-IDF library. + +## Configuration + +### Pins + +- `VOLTAGE_PIN`: ADC pin for voltage measurement (default: `0`) +- `CURRENT_PIN`: ADC pin for current measurement (default: `1`) + +### Constants + +- `NUM_READINGS`: Number of readings for moving average (default: `10`) +- `NUM_READINGS_CAL`: Number of readings for calibration (default: `100`) +- `UPDATE_INTERVAL_MAIN`: Main update interval in milliseconds (default: `100`) +- `UPDATE_INTERVAL_MQTT`: MQTT update interval in milliseconds (default: `60000`) + +## Installation + +Add `-D USERMOD_CURRENT_MEASUREMENT` to `build_flags` in `platformio_override.ini`. + +Or copy the example `platformio_override.ini` to the root directory. This file should be placed in the same directory as `platformio.ini`. + +## Hardware Example + +![Example Schematic](./assets/img/example%20schematic.png "Example Schematic") + +## Define Your Options + +- `USERMOD_POWER_MEASUREMENT`: Enable the usermod + +All parameters and calibration variables can be configured at runtime via the Usermods settings page. + +## Calibration + +### Calibration Steps + +1. Enable the `Calibration mode` checkbox. +2. Connect the controller via USB. +3. Disconnect the power supply (Vin) from the LED strip. +4. Select the option to `Calibrate Zero Points`. +5. Reconnect the power supply to the LED strip and set it to white and full brightness. +6. Measure the voltage and current and enter the values into the `Measured Voltage` and `Measured Current` fields. +7. Check the checkboxes for `Calibrate Voltage` and `Calibrate Current`. + +### Advanced + +![Advanced Calibration](./assets/img/screenshot%203%20-%20settings.png "Advanced Calibration") + +## MQTT + +If MQTT is enabled, the module will periodically publish the voltage, current, power, and energy measurements to the configured MQTT broker. + +## Debugging + +Enable `WLED_DEBUG` to print detailed debug information to the serial output, including raw and calculated values for voltage, current, power, and energy. + +## Screenshots + +Info screen | Settings page +:-----------------------------------------------------------------------:|:-------------------------------------------------------------------------------: +![Info screen](./assets/img/screenshot%201%20-%20info.jpg "Info screen") | ![Settings page](./assets/img/screenshot%202%20-%20settings.png "Settings page") + +## To-Do + +- [ ] Pin manager doesn't work properly. +- [ ] Implement a brightness limiter based on current. +- [ ] Make the code use less flash memory. + +## Changelog + +19.8.2024 +- Initial PR + +## License + +This code was created by Tomáš Kuchta. + +## Contributions + +- Tomáš Kuchta (Initial idea) \ No newline at end of file diff --git a/wled00/const.h b/wled00/const.h index 388b64c820..913af2fd64 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -152,6 +152,7 @@ #define USERMOD_ID_INTERNAL_TEMPERATURE 42 //Usermod "usermod_internal_temperature.h" #define USERMOD_ID_LDR_DUSK_DAWN 43 //Usermod "usermod_LDR_Dusk_Dawn_v2.h" #define USERMOD_ID_STAIRWAY_WIPE 44 //Usermod "stairway-wipe-usermod-v2.h" +#define USERMOD_ID_POWER_MEASUREMENT 45 //Usermod "Power_measurement.h" //Access point behavior #define AP_BEHAVIOR_BOOT_NO_CONN 0 //Open AP when no connection after boot diff --git a/wled00/pin_manager.h b/wled00/pin_manager.h index 39f2c6ec60..c54c6ae9cd 100644 --- a/wled00/pin_manager.h +++ b/wled00/pin_manager.h @@ -62,6 +62,7 @@ enum struct PinOwner : uint8_t { UM_SdCard = USERMOD_ID_SD_CARD, // 0x25 // Usermod "usermod_sd_card.h" UM_PWM_OUTPUTS = USERMOD_ID_PWM_OUTPUTS, // 0x26 // Usermod "usermod_pwm_outputs.h" UM_LDR_DUSK_DAWN = USERMOD_ID_LDR_DUSK_DAWN // 0x2B // Usermod "usermod_LDR_Dusk_Dawn_v2.h" + UM_Power_Measurement = USERMOD_ID_POWER_MEASUREMENT // 0x2C // Usermod "Power_measurement.h" }; static_assert(0u == static_cast(PinOwner::None), "PinOwner::None must be zero, so default array initialization works as expected"); diff --git a/wled00/usermods_list.cpp b/wled00/usermods_list.cpp index db016f5508..f04be9b383 100644 --- a/wled00/usermods_list.cpp +++ b/wled00/usermods_list.cpp @@ -181,6 +181,10 @@ #include "../usermods/Internal_Temperature_v2/usermod_internal_temperature.h" #endif +#ifdef USERMOD_POWER_MEASUREMENT + #include "../usermods/Power_Measurement/Power_Measurement.h" +#endif + #if defined(WLED_USE_SD_MMC) || defined(WLED_USE_SD_SPI) // This include of SD.h and SD_MMC.h must happen here, else they won't be // resolved correctly (when included in mod's header only) @@ -387,4 +391,8 @@ void registerUsermods() #ifdef USERMOD_STAIRCASE_WIPE usermods.add(new StairwayWipeUsermod()); #endif + + #ifdef USERMOD_POWER_MEASUREMENT + usermods.add(new UsermodPower_Measurement()); + #endif } From 4c0bd3ad882b1ec89fb4ec5a7cd88c8d41c35e2e Mon Sep 17 00:00:00 2001 From: Tomas Kuchta Date: Sun, 18 Aug 2024 22:32:05 +0200 Subject: [PATCH 2/3] Add Power Measurement usermod - Implement functions to measure power consumption --- .../Power_Measurement/Power_Measurement.h | 576 +++ .../assets/example_schematic.kicad_sch | 3266 +++++++++++++++++ .../assets/img/example schematic.png | Bin 0 -> 53358 bytes .../assets/img/screenshot 1 - info.jpg | Bin 0 -> 48340 bytes .../assets/img/screenshot 2 - settings.png | Bin 0 -> 24762 bytes .../assets/img/screenshot 3 - settings.png | Bin 0 -> 35492 bytes usermods/Power_Measurement/readme.md | 94 + wled00/const.h | 1 + wled00/pin_manager.h | 1 + wled00/usermods_list.cpp | 8 + 10 files changed, 3946 insertions(+) create mode 100644 usermods/Power_Measurement/Power_Measurement.h create mode 100644 usermods/Power_Measurement/assets/example_schematic.kicad_sch create mode 100644 usermods/Power_Measurement/assets/img/example schematic.png create mode 100644 usermods/Power_Measurement/assets/img/screenshot 1 - info.jpg create mode 100644 usermods/Power_Measurement/assets/img/screenshot 2 - settings.png create mode 100644 usermods/Power_Measurement/assets/img/screenshot 3 - settings.png create mode 100644 usermods/Power_Measurement/readme.md diff --git a/usermods/Power_Measurement/Power_Measurement.h b/usermods/Power_Measurement/Power_Measurement.h new file mode 100644 index 0000000000..d54ac790c5 --- /dev/null +++ b/usermods/Power_Measurement/Power_Measurement.h @@ -0,0 +1,576 @@ +// Filename: Power_Measurement.h +// This code was cocreated by github copilot and created by Tomáš Kuchta +#pragma once + +#include "wled.h" +#include "esp_adc_cal.h" + +#ifndef CURRENT_PIN + #define CURRENT_PIN 1 +#endif + +#ifndef VOLTAGE_PIN + #define VOLTAGE_PIN 0 +#endif + +#define NUM_READINGS 10 +#define NUM_READINGS_CAL 100 +#define ADC_MAX_VALUE (pow(2, ADCResolution) - 1) // For 12-bit ADC, the max value is 4095 +#define UPDATE_INTERVAL_MAIN 100 +#define UPDATE_INTERVAL_MQTT 60000 + +class UsermodPower_Measurement : public Usermod { + private: + bool initDone = false; + unsigned long lastTime_slow = 0; + unsigned long lastTime_main = 0; + unsigned long lastTime_energy = 0; + unsigned long lastTime_mqtt = 0; + boolean enabled = true; + boolean calibration_enable = false; + boolean cal_adavnced = false; + + int Voltage_raw = 0; + float AverageVoltage_raw = 0; + int Voltage_raw_adj = 0; + int Voltage_calc = 0; + + int Current_raw = 0; + float AverageCurrent_raw = 0; + int Current_calc = 0; + + float voltageReadings_raw[NUM_READINGS]; + float currentReadings_raw[NUM_READINGS]; + int readIndex = 0; + float totalVoltage_raw = 0; + float totalCurrent_raw = 0; + + // Low-pass filter variables + float alpha = 0.1; + float filtered_Voltage_raw = 0; + float filtered_Current_raw = 0; + + unsigned long long wattmiliseconds = 0; //energy counter in watt milliseconds + + + // calibration variables + int Num_Readings_Cal = NUM_READINGS_CAL; + bool Cal_In_Progress = false; + bool Cal_Zero_Points = false; + bool Cal_calibrate_Measured_Voltage = false; + bool Cal_calibrate_Measured_Current = false; + float Cal_Measured_Voltage = 0; + float Cal_Measured_Current = 0; + + float Cal_min_Voltage_raw = 17; + float Cal_min_Current_calc = 718; + + float Cal_Voltage_raw_averaged = 0; + float Cal_Voltage_calc_averaged = 0; + float Cal_Current_calc_averaged = 0; + + int Cal_Current_at_x = 1000; + int Cal_Current_calc_at_x = 775; + float Cal_Voltage_Coefficient = 22.97; + + // averiging variables + float Cal_Voltage_raw_Readings_Avg[NUM_READINGS_CAL]; + float Cal_Voltage_calc_Readings_Avg[NUM_READINGS_CAL]; + float Cal_Current_calc_Readings_Avg[NUM_READINGS_CAL]; + int Cal_Read_Index = 0; + float Cal_Total_Voltage_raw = 0; + float Cal_Total_Voltage_calc = 0; + float Cal_Total_Current_calc = 0; + + int8_t VoltagePin = VOLTAGE_PIN; + int8_t CurrentPin = CURRENT_PIN; + + int Update_Interval_Mqtt = UPDATE_INTERVAL_MQTT; + int Update_Interval_Main = UPDATE_INTERVAL_MAIN; + + // String used more than once + static const char _name[] PROGMEM; + static const char _no_data[] PROGMEM; + + public: + int ADCResolution = 12; + int ADCAttenuation = ADC_6db; + + //For usage in other parts of the main code + float Voltage = 0; + float Current = 0; + float Power = 0; + unsigned long kilowatthours = 0; + + void setup() { + analogReadResolution(ADCResolution); + analogSetAttenuation(static_cast(ADCAttenuation)); // Set the ADC attenuation (ADC_ATTEN_DB_6 = 0 mV ~ 1300 mV) + + // Initialize all readings to 0: + for (int i = 0; i < NUM_READINGS; i++) { + voltageReadings_raw[i] = 0; + currentReadings_raw[i] = 0; + } + + Current_raw = 1800; + filtered_Current_raw = 1800; + + Cal_Zero_Points = false; + Cal_calibrate_Measured_Voltage = false; + Cal_calibrate_Measured_Current = false; + Cal_In_Progress = false; + Num_Readings_Cal = NUM_READINGS_CAL; + + + #ifdef WLED_DEBUG + esp_adc_cal_characteristics_t adc_chars; + esp_adc_cal_value_t val_type = esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_6, ADC_WIDTH_BIT_12, ESP_ADC_CAL_VAL_DEFAULT_VREF, &adc_chars); + + if (val_type == ESP_ADC_CAL_VAL_EFUSE_VREF) { + // eFuse Vref is available + DEBUG_PRINTLN(F("PM: Using eFuse Vref for ADC calibration_enable")); + } else if (val_type == ESP_ADC_CAL_VAL_EFUSE_TP) { + // Two Point calibration_enable is available + DEBUG_PRINTLN(F("PM: Using Two Point calibration_enable for ADC calibration_enable")); + } else { + // Default Vref is used + DEBUG_PRINTLN(F("PM: Using default Vref for ADC calibration_enable")); + } + #endif + + + if (enabled) { + pinAlocation(); + } + + initDone = true; + + } + + void loop() { + if (!enabled || strip.isUpdating()) return; + + unsigned long currentTime = millis(); + + #ifdef WLED_DEBUG + if (currentTime - lastTime_slow >= 1000) { + printDebugInfo(); + lastTime_slow = currentTime; + } + #endif + + #ifndef WLED_DISABLE_MQTT + if (currentTime - lastTime_mqtt >= Update_Interval_Mqtt) { + publishPowerMeasurements(); + lastTime_mqtt = currentTime; + } + #endif + + if (currentTime - lastTime_main >= Update_Interval_Main) { + updateReadings(); + + if (Cal_Zero_Points || Cal_calibrate_Measured_Voltage || Cal_calibrate_Measured_Current) calibration(); + + lastTime_main = currentTime; + } + + + } + + void pinAlocation() { + DEBUG_PRINTLN(F("Allocating power pins...")); + if (VoltagePin >= 0 && pinManager.allocatePin(VoltagePin, true, PinOwner::UM_Power_Measurement)) { + DEBUG_PRINT(F("Voltage pin allocated: ")); + DEBUG_PRINTLN(VoltagePin); + } else { + if (VoltagePin >= 0) { + DEBUG_PRINTLN(F("Voltage pin allocation failed.")); + } + VoltagePin = -1; // allocation failed, disable + } + + if (CurrentPin >= 0 && pinManager.allocatePin(CurrentPin, true, PinOwner::UM_Power_Measurement)) { + DEBUG_PRINT(F("Current pin allocated: ")); + DEBUG_PRINTLN(CurrentPin); + } else { + if (CurrentPin >= 0) { + DEBUG_PRINTLN(F("Current pin allocation failed.")); + } + CurrentPin = -1; // allocation failed, disable + } + } + + + void printDebugInfo() { + DEBUG_PRINT(F("Voltage raw: ")); + DEBUG_PRINTLN(Voltage_raw); + DEBUG_PRINTLN(AverageVoltage_raw); + DEBUG_PRINT(F("Calc: ")); + DEBUG_PRINTLN(Voltage_calc); + DEBUG_PRINT(F("Voltage: ")); + DEBUG_PRINTLN(Voltage); + + DEBUG_PRINT(F("Current raw: ")); + DEBUG_PRINTLN(Current_raw); + DEBUG_PRINTLN(AverageCurrent_raw); + DEBUG_PRINT(F("Calc: ")); + DEBUG_PRINTLN(Current_calc); + DEBUG_PRINT("Current: "); + DEBUG_PRINTLN(Current); + + DEBUG_PRINT("Power: "); + DEBUG_PRINTLN(Power); + + DEBUG_PRINT("Energy: "); + DEBUG_PRINTLN(kilowatthours); + DEBUG_PRINT("Energy Wms: "); + DEBUG_PRINTLN(wattmiliseconds); + } + + void updateReadings() { + // Measure the voltage and current and store them in the arrays for the moving average and convert via map function: + totalVoltage_raw -= voltageReadings_raw[readIndex]; + totalCurrent_raw -= currentReadings_raw[readIndex]; + + if (VoltagePin == -1) { + Voltage_raw = 0; + DEBUG_PRINTLN("Voltage pin not allocated"); + } else { + Voltage_raw = analogRead(VoltagePin); + } + + if (CurrentPin == -1) { + Current_raw = 0; + DEBUG_PRINTLN("Current pin not allocated"); + } else { + Current_raw = analogRead(CurrentPin); + } + + if (millis() > 1000) { // To avoid the initial spike in readings + filtered_Voltage_raw = (alpha * Voltage_raw) + ((1 - alpha) * filtered_Voltage_raw); + filtered_Current_raw = (alpha * Current_raw) + ((1 - alpha) * filtered_Current_raw); + } else { + filtered_Voltage_raw = Voltage_raw; + filtered_Current_raw = Current_raw; + } + + voltageReadings_raw[readIndex] = filtered_Voltage_raw; + currentReadings_raw[readIndex] = filtered_Current_raw; + + totalVoltage_raw += filtered_Voltage_raw; + totalCurrent_raw += filtered_Current_raw; + + AverageVoltage_raw = totalVoltage_raw / NUM_READINGS; + AverageCurrent_raw = totalCurrent_raw / NUM_READINGS; + + readIndex = (readIndex + 1) % NUM_READINGS; + + Voltage_raw_adj = map(AverageVoltage_raw, Cal_min_Voltage_raw, ADC_MAX_VALUE, 0, ADC_MAX_VALUE); + if (Voltage_raw_adj < 0) Voltage_raw_adj = 0; + Voltage_calc = readADC_Cal(Voltage_raw_adj); + Voltage = (Voltage_calc / 1000.0) * Cal_Voltage_Coefficient; + if (Voltage < 0.05) Voltage = 0; + Voltage = round(Voltage * 100.0) / 100.0; // Round to 2 decimal places + if (VoltagePin == -1) Voltage = 0; + + Current_calc = readADC_Cal(AverageCurrent_raw); + Current = (map(Current_calc, Cal_min_Current_calc, Cal_Current_calc_at_x, 0, Cal_Current_at_x)) / 1000.0; + if (Current > -0.1 && Current < 0.05) { + Current = 0; + } + Current = round(Current * 100.0) / 100.0; + if (CurrentPin == -1) Current = 0; + + // Calculate power + Power = Voltage * Current; + Power = round(Power * 100.0) / 100.0; + + // Calculate energy - dont do it when led is off + if (Power > 0) { + unsigned long elapsedTime = millis() - lastTime_energy; + wattmiliseconds += Power * elapsedTime; + } + lastTime_energy = millis(); + + if (wattmiliseconds >= 3600000000) { // 3,600,000 milliseconds = 1 hour + kilowatthours += wattmiliseconds / 3600000000; // Convert watt-milliseconds to kilowatt-hours (1 watt-millisecond = 1/3,600,000,000 kilowatt-hours) + wattmiliseconds = 0; + } + } + + void calibration() { + if (Num_Readings_Cal == NUM_READINGS_CAL) { + DEBUG_PRINTLN("calibration_enable started"); + Cal_In_Progress = true; + serializeConfig(); // To update the checkboxes in the config + } + if (Num_Readings_Cal > 0) { + Num_Readings_Cal--; + // Average the readings + Cal_Total_Voltage_raw -= Cal_Voltage_raw_Readings_Avg[Cal_Read_Index]; + Cal_Total_Voltage_calc -= Cal_Voltage_calc_Readings_Avg[Cal_Read_Index]; + Cal_Total_Current_calc -= Cal_Current_calc_Readings_Avg[Cal_Read_Index]; + + Cal_Voltage_raw_Readings_Avg[Cal_Read_Index] = Voltage_raw; + Cal_Voltage_calc_Readings_Avg[Cal_Read_Index] = Voltage_calc; + Cal_Current_calc_Readings_Avg[Cal_Read_Index] = Current_calc; + + Cal_Total_Voltage_raw += Voltage_raw; + Cal_Total_Voltage_calc += Voltage_calc; + Cal_Total_Current_calc += Current_calc; + + Cal_Read_Index = (Cal_Read_Index + 1) % NUM_READINGS_CAL; + + Cal_Voltage_raw_averaged = Cal_Total_Voltage_raw / NUM_READINGS_CAL; + Cal_Voltage_calc_averaged = Cal_Total_Voltage_calc / NUM_READINGS_CAL; + Cal_Current_calc_averaged = Cal_Total_Current_calc / NUM_READINGS_CAL; + } else { + + DEBUG_PRINTLN("calibration_enable Flags:"); + DEBUG_PRINTLN(Cal_In_Progress); + DEBUG_PRINTLN(Num_Readings_Cal); + DEBUG_PRINTLN(Cal_Zero_Points); + DEBUG_PRINTLN(Cal_calibrate_Measured_Voltage); + DEBUG_PRINTLN(Cal_calibrate_Measured_Current); + DEBUG_PRINTLN("the averaged values are:"); + DEBUG_PRINTLN(Cal_Voltage_raw_averaged); + DEBUG_PRINTLN(Cal_Voltage_calc_averaged); + DEBUG_PRINTLN(Cal_Current_calc_averaged); + DEBUG_PRINTLN("Inputed values are:"); + DEBUG_PRINTLN(Cal_Measured_Voltage); + DEBUG_PRINTLN(Cal_Measured_Current); + + Calibration_calculation(); + + Cal_In_Progress = false; + Cal_Zero_Points = false; + Cal_calibrate_Measured_Voltage = false; + Cal_calibrate_Measured_Current = false; + Num_Readings_Cal = NUM_READINGS_CAL; + serializeConfig(); // To update the checkboxes in the config + + DEBUG_PRINTLN("calibration_enable finished"); + } + } + + void Calibration_calculation() { + DEBUG_PRINTLN("Calculating calibration_enable values"); + + if (Cal_calibrate_Measured_Current) { + Cal_Current_at_x = Cal_Measured_Current * 1000; + Cal_Current_calc_at_x = Cal_Current_calc_averaged; + + } else if (Cal_calibrate_Measured_Voltage) { + Cal_Voltage_Coefficient = (Cal_Measured_Voltage * 1000) / Cal_Voltage_calc_averaged; + + } else if (Cal_Zero_Points) { + Cal_min_Voltage_raw = Cal_Voltage_raw_averaged; + Cal_min_Current_calc = Cal_Current_calc_averaged; + } else { + DEBUG_PRINTLN("No calibration_enable values selected - but that should not happen"); + } + + } + + void addToJsonInfo(JsonObject& root) { + if (!enabled)return; + + JsonObject user = root["u"]; + if (user.isNull())user = root.createNestedObject("u"); + + JsonArray Current_json = user.createNestedArray(FPSTR("Current")); + if (Current_raw == 0 || CurrentPin == -1) { + Current_json.add(F(_no_data)); + } else if (Current_raw >= (ADC_MAX_VALUE - 3)) { + Current_json.add(F("Overrange")); + } else { + Current_json.add(Current); + Current_json.add(F(" A")); + } + + JsonArray Voltage_json = user.createNestedArray(FPSTR("Voltage")); + if (Voltage_raw == 0 || VoltagePin == -1) { + Voltage_json.add(F(_no_data)); + } else if (Voltage_raw >= (ADC_MAX_VALUE - 3)) { + Voltage_json.add(F(_no_data)); + } else if (Voltage_raw >= (ADC_MAX_VALUE - 3)) { + Voltage_json.add(F("Overrange")); + } else { + Voltage_json.add(Voltage); + Voltage_json.add(F(" V")); + } + + if (calibration_enable) { + JsonArray Current_raw_json = user.createNestedArray(FPSTR("Current raw")); + Current_raw_json.add(Current_raw); + Current_raw_json.add(" -> " + String(Current_calc)); + + JsonArray Voltage_raw_json = user.createNestedArray(FPSTR("Voltage raw")); + Voltage_raw_json.add(Voltage_raw); + Voltage_raw_json.add(" -> " + String(Voltage_calc)); + } + + JsonArray Power_json = user.createNestedArray(FPSTR("Power")); + Power_json.add(Power); + Power_json.add(F(" W")); + + JsonArray Energy_json = user.createNestedArray(FPSTR("Energy")); + Energy_json.add(kilowatthours); + Energy_json.add(F(" kWh")); + } + + void addToConfig(JsonObject& root) { + JsonObject top = root.createNestedObject(FPSTR(_name)); + top[FPSTR("enabled")] = enabled; + + JsonObject power_pins = top.createNestedObject(FPSTR("power_pins")); + power_pins[FPSTR("Voltage Pin")] = VoltagePin; + power_pins[FPSTR("Current Pin")] = CurrentPin; + + JsonObject update = top.createNestedObject(FPSTR("update rate in ms")); + update[FPSTR("update rate of mqtt")] = Update_Interval_Mqtt; + update[FPSTR("update rate of main")] = Update_Interval_Main; + + JsonObject cal = top.createNestedObject(FPSTR("calibration")); + cal[FPSTR("calibration Mode")] = calibration_enable; + if (calibration_enable && !Cal_In_Progress) { + cal[FPSTR("Advanced")] = cal_adavnced; + + cal["Zero Points"] = Cal_Zero_Points; + cal["Measured Voltage"] = Cal_Measured_Voltage; + cal["Calibrate Voltage?"] = Cal_calibrate_Measured_Voltage; + cal["Measured Current"] = Cal_Measured_Current; + cal["Calibrate Current?"] = Cal_calibrate_Measured_Current; + } else if (Cal_In_Progress) { + cal[FPSTR("calibration_enable is in progress please wait")] = "Non-Essential Data Entry Zone: Just for Kicks and Giggles"; + } + + if (calibration_enable && cal_adavnced && !Cal_In_Progress) { + cal[FPSTR("Number of samples")] = Num_Readings_Cal; + cal[FPSTR("Zero Point of Voltage")] = Cal_min_Voltage_raw; + cal[FPSTR("Zero Point of Current")] = Cal_min_Current_calc; + cal[FPSTR("Voltage Coefficient")] = Cal_Voltage_Coefficient; + cal[FPSTR("Current at X (mV at ADC)")] = Cal_Current_calc_at_x; + cal[FPSTR("Current at X (mA)")] = Cal_Current_at_x; + } + } + + bool readFromConfig(JsonObject& root) { + int8_t tmpVoltagePin = VoltagePin; + int8_t tmpCurrentPin = CurrentPin; + + JsonObject top = root[FPSTR(_name)]; + if (top.isNull()) { + DEBUG_PRINTLN(F(": No config found. (Using defaults.)")); + return false; + } + + enabled = top[FPSTR("Enabled")] | enabled; + + tmpVoltagePin = top[FPSTR("power_pins")][FPSTR("Voltage Pin")] | tmpVoltagePin; + tmpCurrentPin = top[FPSTR("power_pins")][FPSTR("Current Pin")] | tmpCurrentPin; + + Update_Interval_Mqtt = top[FPSTR("update rate in ms")][FPSTR("update rate of mqtt")] | Update_Interval_Mqtt; + Update_Interval_Main = top[FPSTR("update rate in ms")][FPSTR("update rate of main")] | Update_Interval_Main; + + JsonObject cal = top[FPSTR("calibration")]; + calibration_enable = cal[FPSTR("calibration Mode")] | calibration_enable; + + if (calibration_enable && !Cal_In_Progress) { + cal_adavnced = cal[FPSTR("Advanced")] | cal_adavnced; + + Cal_Zero_Points = cal["Zero Points"] | Cal_Zero_Points; + Cal_Measured_Voltage = cal["Measured Voltage"] | Cal_Measured_Voltage; + Cal_calibrate_Measured_Voltage = cal["Calibrate Voltage?"] | Cal_calibrate_Measured_Voltage; + Cal_Measured_Current = cal["Measured Current"] | Cal_Measured_Current; + Cal_calibrate_Measured_Current = cal["Calibrate Current?"] | Cal_calibrate_Measured_Current; + } + + if (calibration_enable && cal_adavnced && !Cal_In_Progress) { + Num_Readings_Cal = cal[FPSTR("Number of samples")] | Num_Readings_Cal; + Cal_min_Voltage_raw = cal[FPSTR("Zero Point of Voltage")] | Cal_min_Voltage_raw; + Cal_min_Current_calc = cal[FPSTR("Zero Point of Current")] | Cal_min_Current_calc; + Cal_Voltage_Coefficient = cal[FPSTR("Voltage Coefficient")] | Cal_Voltage_Coefficient; + Cal_Current_calc_at_x = cal[FPSTR("Current at X (mV at ADC)")] | Cal_Current_calc_at_x; + Cal_Current_at_x = cal[FPSTR("Current at X (mA)")] | Cal_Current_at_x; + } + + if (!initDone) { + // first run: reading from cfg.json + VoltagePin = tmpVoltagePin; + CurrentPin = tmpCurrentPin; + DEBUG_PRINTLN(F(" config loaded.")); + } else { + DEBUG_PRINTLN(F(" config (re)loaded.")); + // changing paramters from settings page + if (tmpVoltagePin != VoltagePin || tmpCurrentPin != CurrentPin) { + DEBUG_PRINTLN(F("Re-init Power pins.")); + // deallocate pin and release memory + pinManager.deallocatePin(VoltagePin, PinOwner::UM_Power_Measurement); + VoltagePin = tmpVoltagePin; + pinManager.deallocatePin(CurrentPin, PinOwner::UM_Power_Measurement); + CurrentPin = tmpCurrentPin; + // initialise + pinAlocation(); + } + } + + return true; + } + + #ifndef WLED_DISABLE_MQTT + void onMqttConnect(bool sessionPresent) { + publishPowerMeasurements(); + } + + void publishPowerMeasurements() { + if (WLED_MQTT_CONNECTED) { + char subuf[64]; + char payload[32]; + + // Publish Voltage + strcpy(subuf, mqttDeviceTopic); + strcat_P(subuf, PSTR("/power_measurement/voltage")); + dtostrf(Voltage, 6, 2, payload); // Convert float to string + mqtt->publish(subuf, 0, true, payload); + + // Publish Current + strcpy(subuf, mqttDeviceTopic); + strcat_P(subuf, PSTR("/power_measurement/current")); + dtostrf(Current, 6, 2, payload); // Convert float to string + mqtt->publish(subuf, 0, true, payload); + + // Publish Power + strcpy(subuf, mqttDeviceTopic); + strcat_P(subuf, PSTR("/power_measurement/power")); + dtostrf(Power, 6, 2, payload); // Convert float to string + mqtt->publish(subuf, 0, true, payload); + + // Publish kilowatthours + strcpy(subuf, mqttDeviceTopic); + strcat_P(subuf, PSTR("/power_measurement/kilowatthours")); + ultoa(kilowatthours, payload, 10); // Convert unsigned long to string + mqtt->publish(subuf, 0, true, payload); + } + } + #endif + + uint16_t getId() override { + return USERMOD_ID_POWER_MEASUREMENT; + } + + uint32_t readADC_Cal(int ADC_Raw) { + esp_adc_cal_characteristics_t adc_chars; + esp_adc_cal_value_t val_type = esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_6, ADC_WIDTH_BIT_12, ESP_ADC_CAL_VAL_DEFAULT_VREF, &adc_chars); + if (val_type == ESP_ADC_CAL_VAL_EFUSE_VREF) { + // Handle error if calibration_enable value is not available + DEBUG_PRINTF("Error: eFuse Vref not available"); + return 0; + } + return (esp_adc_cal_raw_to_voltage(ADC_Raw, &adc_chars)); + } +}; + +// String used more than once +const char UsermodPower_Measurement::_name[] PROGMEM = "Power Measurement"; +const char UsermodPower_Measurement::_no_data[] PROGMEM = "No data"; \ No newline at end of file diff --git a/usermods/Power_Measurement/assets/example_schematic.kicad_sch b/usermods/Power_Measurement/assets/example_schematic.kicad_sch new file mode 100644 index 0000000000..7b0c9bb933 --- /dev/null +++ b/usermods/Power_Measurement/assets/example_schematic.kicad_sch @@ -0,0 +1,3266 @@ +(kicad_sch + (version 20231120) + (generator "eeschema") + (generator_version "8.0") + (uuid "2360a543-140e-4488-b7ed-7d45263c2314") + (paper "A4") + (lib_symbols + (symbol "Device:C" + (pin_numbers hide) + (pin_names + (offset 0.254) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "C" + (at 0.635 2.54 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "C" + (at 0.635 -2.54 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0.9652 -3.81 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "cap capacitor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "C_*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "C_0_1" + (polyline + (pts + (xy -2.032 -0.762) (xy 2.032 -0.762) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -2.032 0.762) (xy 2.032 0.762) + ) + (stroke + (width 0.508) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "C_1_1" + (pin passive line + (at 0 3.81 270) + (length 2.794) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 2.794) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "Device:C_Polarized" + (pin_numbers hide) + (pin_names + (offset 0.254) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "C" + (at 0.635 2.54 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "C_Polarized" + (at 0.635 -2.54 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0.9652 -3.81 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Polarized capacitor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "cap capacitor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "CP_*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "C_Polarized_0_1" + (rectangle + (start -2.286 0.508) + (end 2.286 1.016) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.778 2.286) (xy -0.762 2.286) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy -1.27 2.794) (xy -1.27 1.778) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (rectangle + (start 2.286 -0.508) + (end -2.286 -1.016) + (stroke + (width 0) + (type default) + ) + (fill + (type outline) + ) + ) + ) + (symbol "C_Polarized_1_1" + (pin passive line + (at 0 3.81 270) + (length 2.794) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 2.794) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "Device:Fuse" + (pin_numbers hide) + (pin_names + (offset 0) + ) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "F" + (at 2.032 0 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "Fuse" + (at -1.905 0 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at -1.778 0 90) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Fuse" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "fuse" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "*Fuse*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "Fuse_0_1" + (rectangle + (start -0.762 -2.54) + (end 0.762 2.54) + (stroke + (width 0.254) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0 -2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "Fuse_1_1" + (pin passive line + (at 0 3.81 270) + (length 1.27) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -3.81 90) + (length 1.27) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "Device:R_Small" + (pin_numbers hide) + (pin_names + (offset 0.254) hide) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "R" + (at 0.762 0.508 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "R_Small" + (at 0.762 -1.016 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor, small symbol" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "R resistor" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "R_*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "R_Small_0_1" + (rectangle + (start -0.762 1.778) + (end 0.762 -1.778) + (stroke + (width 0.2032) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "R_Small_1_1" + (pin passive line + (at 0 2.54 270) + (length 0.762) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at 0 -2.54 90) + (length 0.762) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "Sensor_Current:ACS722xLCTR-10AB" + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "U" + (at 2.54 11.43 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "ACS722xLCTR-10AB" + (at 2.54 8.89 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" + (at 2.54 -8.89 0) + (effects + (font + (size 1.27 1.27) + (italic yes) + ) + (justify left) + (hide yes) + ) + ) + (property "Datasheet" "http://www.allegromicro.com/~/media/Files/Datasheets/ACS722-Datasheet.ashx?la=en" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "±10A Bidirectional Hall-Effect Current Sensor, +3.3V supply, 132mV/A, SOIC-8" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "hall effect current monitor sensor isolated" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_fp_filters" "SOIC*3.9x4.9mm*P1.27mm*" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "ACS722xLCTR-10AB_0_1" + (rectangle + (start -7.62 7.62) + (end 7.62 -7.62) + (stroke + (width 0.254) + (type default) + ) + (fill + (type background) + ) + ) + ) + (symbol "ACS722xLCTR-10AB_1_1" + (pin passive line + (at -10.16 5.08 0) + (length 2.54) + (name "IP+" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -10.16 5.08 0) + (length 2.54) hide + (name "IP+" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "2" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -10.16 -2.54 0) + (length 2.54) + (name "IP-" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "3" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin passive line + (at -10.16 -2.54 0) + (length 2.54) hide + (name "IP-" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "4" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 0 -10.16 90) + (length 2.54) + (name "GND" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "5" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin input line + (at 10.16 -2.54 180) + (length 2.54) + (name "BW_SEL" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "6" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin output line + (at 10.16 5.08 180) + (length 2.54) + (name "VIOUT" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "7" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + (pin power_in line + (at 0 10.16 270) + (length 2.54) + (name "VCC" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "8" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "power:+12V" + (power) + (pin_numbers hide) + (pin_names + (offset 0) hide) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "#PWR" + (at 0 -3.81 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+12V" + (at 0 3.556 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+12V\"" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "+12V_0_1" + (polyline + (pts + (xy -0.762 1.27) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 0) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0.762 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "+12V_1_1" + (pin power_in line + (at 0 0 90) + (length 0) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "power:+3.3V" + (power) + (pin_numbers hide) + (pin_names + (offset 0) hide) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "#PWR" + (at 0 -3.81 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+3.3V" + (at 0 3.556 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "+3.3V_0_1" + (polyline + (pts + (xy -0.762 1.27) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 0) (xy 0 2.54) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + (polyline + (pts + (xy 0 2.54) (xy 0.762 1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "+3.3V_1_1" + (pin power_in line + (at 0 0 90) + (length 0) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + (symbol "power:GND" + (power) + (pin_numbers hide) + (pin_names + (offset 0) hide) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (property "Reference" "#PWR" + (at 0 -6.35 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 0 -3.81 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "ki_keywords" "global power" + (at 0 0 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (symbol "GND_0_1" + (polyline + (pts + (xy 0 0) (xy 0 -1.27) (xy 1.27 -1.27) (xy 0 -2.54) (xy -1.27 -1.27) (xy 0 -1.27) + ) + (stroke + (width 0) + (type default) + ) + (fill + (type none) + ) + ) + ) + (symbol "GND_1_1" + (pin power_in line + (at 0 0 270) + (length 0) + (name "~" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (number "1" + (effects + (font + (size 1.27 1.27) + ) + ) + ) + ) + ) + ) + ) + (junction + (at 153.67 107.95) + (diameter 0) + (color 0 0 0 0) + (uuid "1b07dc7b-9356-4ae8-9e9e-b57b58329148") + ) + (junction + (at 113.03 76.2) + (diameter 0) + (color 0 0 0 0) + (uuid "2d154cf4-f5b7-4323-b3e9-9eac8537ff79") + ) + (junction + (at 193.04 76.2) + (diameter 0) + (color 0 0 0 0) + (uuid "2db59dc4-ddf7-4b94-a277-fb8c5b964aea") + ) + (junction + (at 125.73 76.2) + (diameter 0) + (color 0 0 0 0) + (uuid "3c475897-b6ee-4b26-aabb-a108d9c0d018") + ) + (junction + (at 113.03 87.63) + (diameter 0) + (color 0 0 0 0) + (uuid "c840daac-a559-40e2-bec1-819a61bd16f0") + ) + (junction + (at 139.7 107.95) + (diameter 0) + (color 0 0 0 0) + (uuid "cab8a5f1-5511-4c6e-a5cc-7be5a16b3808") + ) + (junction + (at 99.06 87.63) + (diameter 0) + (color 0 0 0 0) + (uuid "ec34c1bf-1f80-4e09-b75a-207e2d51eee0") + ) + (wire + (pts + (xy 91.44 76.2) (xy 95.25 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "09e68bce-a76f-468d-bd1f-3498704202a5") + ) + (wire + (pts + (xy 193.04 76.2) (xy 193.04 78.74) + ) + (stroke + (width 0) + (type default) + ) + (uuid "0e106dab-edbd-4402-baed-7cfb8c61d0fb") + ) + (wire + (pts + (xy 125.73 76.2) (xy 153.67 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "382618b9-c8aa-4d10-94fb-aa43deac4ea5") + ) + (wire + (pts + (xy 113.03 93.98) (xy 113.03 95.25) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4bcdf674-c19f-4d9b-a412-c93407b26cea") + ) + (wire + (pts + (xy 139.7 111.76) (xy 139.7 107.95) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4c39f15a-8351-403a-9d89-fe42188e85a2") + ) + (wire + (pts + (xy 125.73 87.63) (xy 125.73 86.36) + ) + (stroke + (width 0) + (type default) + ) + (uuid "4e53bfda-b832-4d7f-9baf-b0b01d5fdcb0") + ) + (wire + (pts + (xy 113.03 87.63) (xy 113.03 88.9) + ) + (stroke + (width 0) + (type default) + ) + (uuid "5241d529-f06d-413f-b170-da5727d7a0cf") + ) + (wire + (pts + (xy 193.04 76.2) (xy 200.66 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "548cd7f1-1ecc-42d5-9753-2b0cd4503ddb") + ) + (wire + (pts + (xy 193.04 87.63) (xy 193.04 86.36) + ) + (stroke + (width 0) + (type default) + ) + (uuid "633d110a-0f0e-41e8-b4ff-02cc1efb32dc") + ) + (wire + (pts + (xy 99.06 88.9) (xy 99.06 87.63) + ) + (stroke + (width 0) + (type default) + ) + (uuid "65593ed6-3469-4ce3-bb4d-c23dc0bac992") + ) + (wire + (pts + (xy 168.91 86.36) (xy 172.72 86.36) + ) + (stroke + (width 0) + (type default) + ) + (uuid "6e8528fd-746e-42ef-944b-bba142fa3f7f") + ) + (wire + (pts + (xy 144.78 86.36) (xy 144.78 83.82) + ) + (stroke + (width 0) + (type default) + ) + (uuid "6f12ed2d-ab77-4e6f-aa71-48b62d210b29") + ) + (wire + (pts + (xy 91.44 69.85) (xy 91.44 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "73e3453d-01b8-4011-ba4e-cbee25c77cd8") + ) + (wire + (pts + (xy 161.29 76.2) (xy 193.04 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "8fd82abc-2ff7-4ef7-b5f5-a611d22054ec") + ) + (wire + (pts + (xy 139.7 119.38) (xy 139.7 120.65) + ) + (stroke + (width 0) + (type default) + ) + (uuid "90109a20-1e33-4e88-b4cd-9b90e3d7275a") + ) + (wire + (pts + (xy 144.78 86.36) (xy 148.59 86.36) + ) + (stroke + (width 0) + (type default) + ) + (uuid "9068dd4f-f645-4baf-9b81-194e52f99ac6") + ) + (wire + (pts + (xy 125.73 76.2) (xy 125.73 78.74) + ) + (stroke + (width 0) + (type default) + ) + (uuid "970ce8ae-e94c-4e2f-bccc-11ad86d40bd2") + ) + (wire + (pts + (xy 138.43 107.95) (xy 139.7 107.95) + ) + (stroke + (width 0) + (type default) + ) + (uuid "973de61e-2303-4b5d-a962-023dd5f0e210") + ) + (wire + (pts + (xy 139.7 107.95) (xy 153.67 107.95) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a43648d4-9f86-4160-9f51-0bdc2feee276") + ) + (wire + (pts + (xy 153.67 120.65) (xy 153.67 119.38) + ) + (stroke + (width 0) + (type default) + ) + (uuid "a46f7b49-f088-4aaf-8f04-e7699744187b") + ) + (wire + (pts + (xy 113.03 76.2) (xy 125.73 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "acb41acf-8594-442e-9d0a-dac74b40272f") + ) + (wire + (pts + (xy 99.06 87.63) (xy 113.03 87.63) + ) + (stroke + (width 0) + (type default) + ) + (uuid "c31c1aea-00f9-48f8-813e-f98f2c48866f") + ) + (wire + (pts + (xy 153.67 114.3) (xy 153.67 107.95) + ) + (stroke + (width 0) + (type default) + ) + (uuid "d703656b-3d51-44da-8626-4f4187e70bef") + ) + (wire + (pts + (xy 113.03 76.2) (xy 113.03 81.28) + ) + (stroke + (width 0) + (type default) + ) + (uuid "de954c79-1743-46bc-8ed2-bf76ba626004") + ) + (wire + (pts + (xy 99.06 96.52) (xy 99.06 97.79) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e2283c3f-7214-4471-9452-f46ed59fad2d") + ) + (wire + (pts + (xy 95.25 87.63) (xy 99.06 87.63) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e2dab855-68c4-4b49-a858-2d5e5b0d7830") + ) + (wire + (pts + (xy 113.03 86.36) (xy 113.03 87.63) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e527980f-78d5-4f87-9f2f-cefb29677c5f") + ) + (wire + (pts + (xy 153.67 96.52) (xy 153.67 99.06) + ) + (stroke + (width 0) + (type default) + ) + (uuid "e68c62bd-c95a-4c05-bb15-b7259fbb2f1b") + ) + (wire + (pts + (xy 153.67 104.14) (xy 153.67 107.95) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f2d91e7a-679e-42c3-9e11-69d10d26f58f") + ) + (wire + (pts + (xy 102.87 76.2) (xy 113.03 76.2) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f370ca2a-777b-4e89-b9fc-7a1dbf365c8b") + ) + (wire + (pts + (xy 172.72 86.36) (xy 172.72 90.17) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f540e002-e775-4d10-b433-96e7a62da590") + ) + (wire + (pts + (xy 161.29 96.52) (xy 161.29 99.06) + ) + (stroke + (width 0) + (type default) + ) + (uuid "f67391a0-35e9-4361-b34d-fe2d8426bffd") + ) + (text "0.33V - 2.97V\nZero Current Output Voltage = 1.65\n1.32V 10A swing" + (exclude_from_sim no) + (at 157.48 72.136 0) + (effects + (font + (size 1.27 1.27) + ) + ) + (uuid "67a60731-3184-4129-a037-edab08d612f7") + ) + (global_label "IO0X-Voltage" + (shape input) + (at 95.25 87.63 180) + (fields_autoplaced yes) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + (uuid "4cd9524b-ddbd-409c-b13a-b8f411a39577") + (property "Intersheetrefs" "${INTERSHEET_REFS}" + (at 79.323 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + (hide yes) + ) + ) + ) + (global_label "VIN_Measured" + (shape output) + (at 200.66 76.2 0) + (fields_autoplaced yes) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + (uuid "534fa94a-2362-42d7-a892-5ec26944b9f7") + (property "Intersheetrefs" "${INTERSHEET_REFS}" + (at 216.5266 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + (hide yes) + ) + ) + ) + (global_label "IO0Y-Current" + (shape input) + (at 138.43 107.95 180) + (fields_autoplaced yes) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + (uuid "551f3e47-8f86-4a64-81ac-10348a5ca32d") + (property "Intersheetrefs" "${INTERSHEET_REFS}" + (at 122.6843 107.95 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + (hide yes) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 139.7 120.65 0) + (mirror y) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "025dd409-0965-4b1b-b4b7-a70978a388b5") + (property "Reference" "#PWR05" + (at 139.7 127 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 139.7 124.714 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 139.7 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 139.7 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 139.7 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "b7b23158-8ed1-4860-b766-6b49aea9a474") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR05") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 125.73 87.63 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "0dd6af27-53f3-4b81-b860-78e0e2a7f4c6") + (property "Reference" "#PWR04" + (at 125.73 93.98 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 125.73 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 125.73 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 125.73 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 125.73 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "2cb6c609-62a5-4196-9689-ca66eed822b5") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR04") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 193.04 87.63 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "15b563e7-f8f8-4f8b-a72e-7a81c4e86445") + (property "Reference" "#PWR010" + (at 193.04 93.98 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 193.04 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 193.04 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 193.04 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 193.04 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "e5bd921a-8aac-4bcc-b564-5c8680cfd9f7") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR010") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:+12V") + (at 91.44 69.85 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "407df456-dee1-42cc-a267-d98fa7533233") + (property "Reference" "#PWR01" + (at 91.44 73.66 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+VIN" + (at 91.186 64.77 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 91.44 69.85 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 91.44 69.85 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+12V\"" + (at 91.44 69.85 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "aaaa8249-1eb5-42b2-8084-a2c6a598cc0c") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR01") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Sensor_Current:ACS722xLCTR-10AB") + (at 158.75 86.36 90) + (mirror x) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "56afd411-3977-437b-bb3a-8f28c710835e") + (property "Reference" "U1" + (at 177.8 80.0414 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "ACS722xLCTR-10AB" + (at 177.8 82.5814 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Package_SO:SOIC-8_3.9x4.9mm_P1.27mm" + (at 167.64 88.9 0) + (effects + (font + (size 1.27 1.27) + (italic yes) + ) + (justify left) + (hide yes) + ) + ) + (property "Datasheet" "http://www.allegromicro.com/~/media/Files/Datasheets/ACS722-Datasheet.ashx?la=en" + (at 158.75 86.36 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "±10A Bidirectional Hall-Effect Current Sensor, +3.3V supply, 132mV/A, SOIC-8" + (at 158.75 86.36 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "2" + (uuid "72f645c4-4abf-4ed6-8444-41711e1da047") + ) + (pin "5" + (uuid "b2582dca-89d3-426c-abbb-c3fc19df7eab") + ) + (pin "8" + (uuid "2a6be634-5f04-46c7-8438-214e2044f43d") + ) + (pin "6" + (uuid "e8f38fe2-ecef-4bd0-8f8c-99f4b004dbb6") + ) + (pin "4" + (uuid "97ba3573-4081-4ca9-96e6-5cdb0ea88803") + ) + (pin "7" + (uuid "142838f0-c367-4e18-bf7b-ee3e7e9d7db5") + ) + (pin "3" + (uuid "b75ee556-6002-41b0-96db-16a7d7beea40") + ) + (pin "1" + (uuid "cde11bc5-dfa3-4dd4-9658-9eb7c8fed8a7") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "U1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 125.73 82.55 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "5fad63ef-f4d6-456d-b079-2b3217b553f2") + (property "Reference" "C2" + (at 127 80.01 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "100nF" + (at 127.254 85.09 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" + (at 126.6952 86.36 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 125.73 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 125.73 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 125.73 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 125.73 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 125.73 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 125.73 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "2" + (uuid "2cbac835-c714-454e-a097-f07e36ea31d4") + ) + (pin "1" + (uuid "d6ff9025-85f6-4ead-83e6-35d7daee59a5") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "C2") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:+3.3V") + (at 144.78 83.82 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "6017f11f-a4ef-46fa-bf62-b72b94c8bdfc") + (property "Reference" "#PWR06" + (at 144.78 87.63 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+3.3V" + (at 144.78 80.01 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 144.78 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 144.78 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 144.78 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "0147def6-8cae-4008-9c8a-fb5fa5d131c6") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR06") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C_Polarized") + (at 193.04 82.55 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "82226e50-0f54-4abb-ad36-90f7a425fbd1") + (property "Reference" "C4" + (at 196.85 80.3909 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "1000uF" + (at 196.85 82.9309 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Capacitor_THT:CP_Radial_D10.0mm_P5.00mm" + (at 194.0052 86.36 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 193.04 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Polarized capacitor" + (at 193.04 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 193.04 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 193.04 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 193.04 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 193.04 82.55 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "2" + (uuid "7ba46b09-0b39-4f1d-8c36-abf2cdc780df") + ) + (pin "1" + (uuid "683c3db6-7c90-44ef-ab5f-0091b7cee3da") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "C4") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:Fuse") + (at 99.06 76.2 90) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "89446d9b-f672-45df-9d3a-68373b75dc56") + (property "Reference" "F1" + (at 99.06 74.168 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Value" "10A" + (at 99.06 78.486 90) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "Fuse:Fuseholder_Littelfuse_Nano2_154x" + (at 99.06 77.978 90) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 99.06 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Fuse" + (at 99.06 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Can be found at" "https://www.digikey.cz/cs/products/detail/littelfuse-inc/0154010-DR/552684" + (at 99.06 76.2 90) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 99.06 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 99.06 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 99.06 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 99.06 76.2 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "81156747-e392-4f5d-891c-de789d1cc7df") + ) + (pin "2" + (uuid "94ced624-93d2-41f8-ba92-b05615e69e68") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "F1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 99.06 97.79 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "90a71c55-8ccd-4b79-ad25-d3ab6fc7ddc7") + (property "Reference" "#PWR02" + (at 99.06 104.14 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 99.06 101.854 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 99.06 97.79 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 99.06 97.79 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 99.06 97.79 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "d04aa806-3c19-4632-afa5-705e3b63bf07") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR02") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R_Small") + (at 113.03 91.44 0) + (mirror y) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "916b1f8d-6642-488e-af1d-84205ae4c834") + (property "Reference" "R2" + (at 115.57 90.1699 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "10k" + (at 115.57 92.7099 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor, small symbol" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 113.03 91.44 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "80da57cb-1acf-41ff-accf-438dbaa07ce8") + ) + (pin "2" + (uuid "d76cf884-9331-435b-a0fb-7c592b71d183") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "R2") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R_Small") + (at 153.67 116.84 0) + (mirror y) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "a2f78b9f-6eea-4b57-9350-7a56c8bf81fc") + (property "Reference" "R4" + (at 151.638 115.316 90) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "39k" + (at 155.702 114.808 90) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor, small symbol" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 153.67 116.84 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "4663be56-5d7b-4dde-981e-26590e75cb77") + ) + (pin "2" + (uuid "5ebf0633-3a93-4867-9db1-76976ac19143") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "R4") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R_Small") + (at 113.03 83.82 0) + (mirror y) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (fields_autoplaced yes) + (uuid "b3f1d506-940d-4f50-933d-aeebc3a5b136") + (property "Reference" "R1" + (at 115.57 82.5499 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "220k" + (at 115.57 85.0899 0) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor, small symbol" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 113.03 83.82 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "70c05b2c-4e80-403a-9e92-8542d45d1206") + ) + (pin "2" + (uuid "c3cfea87-c544-4c8e-9eab-e26c8713801d") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "R1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 172.72 90.17 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "b404e6ac-da9a-4b38-9fcc-469610d9c102") + (property "Reference" "#PWR09" + (at 172.72 96.52 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 172.974 93.98 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 172.72 90.17 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 172.72 90.17 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 172.72 90.17 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "3c7ac4e1-3263-4e11-b848-2ee2b98850b3") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR09") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:+3.3V") + (at 161.29 99.06 180) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "d6678757-2ebb-4128-8030-6d8841bb6c75") + (property "Reference" "#PWR08" + (at 161.29 95.25 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "+3.3V" + (at 161.29 102.87 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 161.29 99.06 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 161.29 99.06 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"+3.3V\"" + (at 161.29 99.06 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "b2fbe9f3-3222-4ae1-b583-970abdfc56ca") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR08") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:R_Small") + (at 153.67 101.6 0) + (mirror y) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "db6a3718-e8ff-44ae-aa13-b57f45e4bd09") + (property "Reference" "R3" + (at 151.384 100.076 90) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Value" "51k" + (at 155.956 99.568 90) + (effects + (font + (size 1.27 1.27) + ) + (justify right) + ) + ) + (property "Footprint" "Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Resistor, small symbol" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 153.67 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "6829eee2-48c3-428c-b395-aded09ed3da1") + ) + (pin "2" + (uuid "3f91b68a-7552-416e-b2ab-0e04c521fffd") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "R3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 113.03 95.25 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "dc1fb61f-7794-44b1-9c3f-9d8160f73445") + (property "Reference" "#PWR03" + (at 113.03 101.6 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 113.03 99.314 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 113.03 95.25 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 113.03 95.25 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 113.03 95.25 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "7a1a9ab3-e4f2-4afb-ade6-51fe3c60c5d4") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR03") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 139.7 115.57 0) + (mirror y) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "df3697c9-ae53-41d5-a282-976508338da5") + (property "Reference" "C3" + (at 143.764 113.03 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "100nF" + (at 146.812 118.364 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" + (at 138.7348 119.38 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 139.7 115.57 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 139.7 115.57 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 139.7 115.57 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 139.7 115.57 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 139.7 115.57 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 139.7 115.57 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "2" + (uuid "234d1c0f-c5de-4dc7-b16b-da5dc27fab1c") + ) + (pin "1" + (uuid "2b679a4b-9e23-47bd-a24d-6eded824d69c") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "C3") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "Device:C") + (at 99.06 92.71 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "e78fc402-ce31-495a-81f4-a4788b0342b0") + (property "Reference" "C1" + (at 100.33 90.17 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Value" "100nF" + (at 100.584 95.25 0) + (effects + (font + (size 1.27 1.27) + ) + (justify left) + ) + ) + (property "Footprint" "Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolder" + (at 100.0252 96.52 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "~" + (at 99.06 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Unpolarized capacitor" + (at 99.06 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MANUFACTURER" "" + (at 99.06 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "MAXIMUM_PACKAGE_HEIGHT" "" + (at 99.06 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "PARTREV" "" + (at 99.06 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "STANDARD" "" + (at 99.06 92.71 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "2" + (uuid "30c9c460-abed-45f7-a241-ed63555d80fc") + ) + (pin "1" + (uuid "f986288e-0ac9-4da5-9bcb-ea41a75dd84f") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "C1") + (unit 1) + ) + ) + ) + ) + (symbol + (lib_id "power:GND") + (at 153.67 120.65 0) + (unit 1) + (exclude_from_sim no) + (in_bom yes) + (on_board yes) + (dnp no) + (uuid "eb2dd32b-7175-4175-be49-b823cf64d88f") + (property "Reference" "#PWR07" + (at 153.67 127 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Value" "GND" + (at 153.67 124.714 0) + (effects + (font + (size 1.27 1.27) + ) + ) + ) + (property "Footprint" "" + (at 153.67 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Datasheet" "" + (at 153.67 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (property "Description" "Power symbol creates a global label with name \"GND\" , ground" + (at 153.67 120.65 0) + (effects + (font + (size 1.27 1.27) + ) + (hide yes) + ) + ) + (pin "1" + (uuid "ea5a2d61-5227-4a80-af48-dc2dd1529c05") + ) + (instances + (project "example_schematic" + (path "/2360a543-140e-4488-b7ed-7d45263c2314" + (reference "#PWR07") + (unit 1) + ) + ) + ) + ) + (sheet_instances + (path "/" + (page "1") + ) + ) +) diff --git a/usermods/Power_Measurement/assets/img/example schematic.png b/usermods/Power_Measurement/assets/img/example schematic.png new file mode 100644 index 0000000000000000000000000000000000000000..2a25116fbd2faab79222618dbe0d58fcd9a5e372 GIT binary patch literal 53358 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 CieuRT literal 0 HcmV?d00001 diff --git a/usermods/Power_Measurement/assets/img/screenshot 1 - info.jpg b/usermods/Power_Measurement/assets/img/screenshot 1 - info.jpg new file mode 100644 index 0000000000000000000000000000000000000000..278d572463d64d8a3555800090a85f93a3c7c883 GIT binary patch literal 48340 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%0DcYFVo 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 Djb;n* literal 0 HcmV?d00001 diff --git a/usermods/Power_Measurement/assets/img/screenshot 2 - settings.png b/usermods/Power_Measurement/assets/img/screenshot 2 - settings.png new file mode 100644 index 0000000000000000000000000000000000000000..bb9a59d08d23589651194f560e655aa461e79b3e GIT binary patch literal 24762 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 literal 0 HcmV?d00001 diff --git a/usermods/Power_Measurement/assets/img/screenshot 3 - settings.png b/usermods/Power_Measurement/assets/img/screenshot 3 - settings.png new file mode 100644 index 0000000000000000000000000000000000000000..96c05e067edfa7f006bf99710edb306e72726208 GIT binary patch literal 35492 zcmb?@byytzmS!Wtf(L?If@^Sh2yTr#3GRUa!68V1;O@}4ySpSnaCZyt?!HC7yL;z; zbLZKeeTIK%n(FGR>i)gwoL4GHQC$u3u}zNi%9q zZ-1*oXNi|Ut+0QKP0vm?-BdtMm7QdhGm9K#Cf+>cXTl5Svf)pYx_ z<)VBnx$}I0aa&bb-f6v-rgtVT$y&teC)sTZn5hp$XT84bD9J6?A>}lkJau%%d!_Sx zA^7F*RT3%Ca`;wKdl&HY;^Hp#jCTtYjsNj_?dTN<2>Vq4)XNWj0_uduP1ww`aFdYRs29V9kI zz(Z@9wjE->mhqpqu8z32kE`4vm)pJrfkOTKM#yQMP2;Ick8py=!Etq(j4k5gYf{o@ z0&%$)4=s`;hEpx|OJ6q5CarMHJgq~gPWv4j-QNqsj*vy5Cy~bu9Y2XqsMBgFT%BZb zYc=4H)6Hqyu*-KCC^FIX!M=6NuY2438;hvfE%f&8Zt`>te>8F{0t-?_O2*bd!BY@} zera>o{evtlion58t!$f`8DH;r)hpa=rPOzZqEXb}ZX#20TI^F$$A}s^?3K#Mq|-e7 zZEU`bMh@$YSVELM&p5rJFOQbXjfhDqk6#&Z0{fN=*;M~5)*%qiBAIgQlY(Zm z2=UWX*3l|Z6o@<+Mgx1>etVBJT-7J>Dn>T>t}^aCMcr+o#X4!szAgWvR7R)Usn_m7 zk-^5+?kO;TOKDG)a&xR%VU3?)<6TjT5mP7=9nr$Hc=dy~vJZ{a)$#^O_rX%e%N@xdHR6FUa3L6w9HoH+YY(h=ZU zbn(6yZL`$=OeOh{B<3_uK4bm?OPZYN0{^<4uL*QCk`dvfq$P@cZ3oEK+Y)CgpTZQw zl`ezIFj3OVSZS_FdrO(DNwibc?A`V7wJg4mJxW~nG+lAO;97Jkmz$^wcS9SY_PX!! zlD#@wR!3}?M{;7h&e6Z6xR@b%7$w;$`H)9O#x}l>GWR=>2%iN8x9(TKfPG|Zx*T4I zjx;sT^(5PN3dC$i)pN85b9=Kih=ciy&#PBdVV|l;lvlK`YR~2T!;kO|gN{%9dqPUO zO|Gw@C+<{2Gj0?)uWUlHHGIgMI$fkjLbZ406jyX7_DH4RGpaqRN!Ach-afXdcj3O%?ck0c4_29GHct!bPkBICMR zpr_AZ7`a$j!Ct&~6baGfh$0T~Y=+z9@^2AaZ+E9GZWk&(UO4j=1AF4ng_0T7@sh`8 zj1iAKOrOh{;j+?@;_VYjA`F_uTcDC`w42xUJ=BEwE;d`+1Xtd+>Yt3W%+U8j?5dmw z?2vj^sX1deQ=IS}V$z+|cRCD@I!w&4c>l2rIn$WXT>d_$OD@sT^9e+rkwL-Q!yBY} zaau~ubc%wgo@s$*_;49C4$(D9uy+d#;s^K{+^R5cU z)(pK>wsuUvNmI3`bv~oFoU#$^%;hHQGw39PMh+v;ojR>zULR~WPLm!^lqbEOGo08d zx%JA4QV98Gyj!4iQIwt+g>*EW^jd31Uw_UJSy(|gb|?SRY4(^WXF>NRcdNm7j==*X zyqy#F*Ogbg*`tq^4qFwTJ^856{K=Osj~qsM~7HO`f@&nPQ!zQ=tM=f&6x2ya(%R3 zMnMVXb>c!-Gn6sInvvj&n(>{ZgFr&UA^=#vK!gH;u*hLSAjNn2$N(t2{tb`2(IF)( ztJRm^g2(Y+@;`4E@wXQv(~4^UsLQQEbGOtw`_GvA2iePER{Oi-XXg9ubp+>J0lc^; zj{9}Qd+h!+%SO?20r!zl%3Lo!EqR2_Y4q%@x|Tx$=UmrY{;S`JEYC0TMs@1L>o<2; z#y%K*xzW||oy(}bihW%0C#snpXPR0`Q)owcN{#OOkXDotO#pdKe4>Vt!K6LCq=Y$s zdX_<>@8G*87(D7=D7sC|C?v4($E55yq(2BytuSvT&T;?2Za28$u}H=iq@+zwuQN{b zr^km|y|2XpXx_1VpgG}Vid4ylj~RH+cl93{DWVgMhwr3`DOtL>7UWlF_A!lBjSSPo zq_0+I%P^`*^|%f!w^K!J?hKOMG+OD;^t3*KDwC~@J$O${PeY&p| zG4FF75J=mMnP(g`^Afx`I~|*=)q@`-?G=inQ!nL;@>zIHUA`fzA*ISmW@=LrL z1>Oqs?oKTIjog+jShfL=G?U1m;}Uz9mM3;wK9Q?y-{MYs02p+5di00|?PnWM`Rd>1 z=!3%n419=O!gs>N6k*+{r7p7Nh%v?Mi_#9oiPfdtq-?0`gj#SPvWhX`Du+iUaSSu8 zzv8bM%1F=O8hsD{`_Iy?+{2CvA}4;kGOz?e8It&FQ=|`7A_4t4TV+Zl)gcQ*)~9yXW6GsjHffFxb{Ch+#Mue#4l zdirj$U;c&hR`vL17_U%Kc{FrX$C9_-2z}#aTDsZ}nSiN6L$gHkeb$MiYb1oA&VE63 zyXXTYy3m;vfHzQx8Rj3^=vhA+P05c|%Ua?aua~#VXwF4_1%LKd&rKvv%A*nm&)===AA#>Y?Uy8 z<^XVjpTqwLLL{O6eVrO2j7&8HE7`*UIiq4k^k3KgpY_}UVF8-4?f+&UMi)C9`Bvhb z0R+ke>y$ffA_wB2cf@%%O7O=pLx=| zn?M1~lbn-d?m+_5g2ogH2xKy)N!HD*Z#^nkhjxw*`{8=jCF5!%Vyl#6LYTLdw}uah008Uax1$qDLUrTt!AE6!1%t7B?HxLT^O<4&72`q-5GErqf;LWRh@sw1)?) zir6v%gp$VS+4f4|;`A*@5@Dnu_Zv;@MtX<9k)AR^pAqZ5r$W6eq8&aFf=0M-kEjSp zp>QBde(dLYR947}riq<(G{2z6#A-@{3~ybe_+=T1y79}0<`Kyc1XX@Y)#2aj4ymXU zIWEg^dfb*`*FwfIk0io=G#p`4K)_>X)ln}MkCgqdSb^Zzp@vBpT3UH27Tgt;mFt1)76%e)ayv6#Nd!eL8~;@kBJFrh z5mBf9C0fpPHB)MyBDI(p+?QLvxm`%|SlhV}J!MSzJjr)GQl>KqI?VW+u&S25rXOvh z;9#1E#iPR;?;=Y;egnOmg}6AW0C&$Ry?kpsI|@NQN-j_q`lN zl=?KD<&MfyZMHxD8ZBUAOYrFVfcyr}UL3$7LKQ|WviMv(kOagLS~u^oiq%V_Gs{zY zLMLITaBP3$-C0;#Rlg!Y7sX=MzdMHO^8GL@wwV%(wFc>>^QaCX_?$9{qXQ zSZ2?(a;zlXcVaS~il|s6V0ze*AvU2Dfo=f5J=a_W`(ZHuM9L=`V`MVZ;>Hu^V+K~X zUi=m34l&y3IMZ90@uZFdef-9|5V#jw* zkz*yu5l6h7?W)Xaor!R{rx9SC4AT@U5*FD;5BkD!^F+3LR)1`^I!gTL^=*m{j@}ZT zMc+g*2fdA9nb3N1inA!&V&khG&s_VIxs{~WBQaE|S;TCc3886KzJdOvBdRNXws{WI z%*zOL9)EsPzEvdeahbxnBku8^6oTlM@puk0;|;@H3=Mgy@+C!6Ioyk*p1J|EZrNjM zGm~(smANvn>*RB=R4s$qg-7F!YZU|ExaLNy3xzZ7F~g3B5pNwv*kN6%_EYpoLaa&2 z9MH|NyVczYeT$rQms47zwh9BZ$7xbwDk_InrU=UqvMw^s^A;K>#yQW*2=uOSMaygZ z@fNbI};YDe<~(pY)J;=`X|mihlhD8YE;2TtU$C<7M5BFUdWmRXq{; zO%kH8DKpOD8`0rnp`0S8A*Yi?>K6<%!Sd+>CAQcGig+N<+`r89 z6BP0?v-CMzl;<91X^7IfRWTc93@?Ych1P2HMQ|0sjk4{5OrM3MsJNT=OLGYWJdd14 z=;>ur8ZAZ_{5YB8FS(}vG>6}=?L*+q{Z~6kU$`KKQ=Gr;nrMjiU~p^OyI-qG@$v|Z z&%N*vRrab&OV6vRsp+izBrIsa^*OOLdA@isx<_pvdXTraNj`pfJAm-srbnAGVZLPa zf==lHp&IiXeNNGaz0@bS=BGIYPNrm#P?I*fb2l6`aSuMEjqJ;(GRakjF!l(5e|4UhAcmS4%tzBmEG=|Qk$D-#^9}4iC2!aCxdYEgjutTt#N!m? z6b280sZSAL&CC%=yE2orRN66NMo~N|#=KOw!~|YpvWo=0iXQPYo#_sz7#*7Sl}^(z z#pz2q*9|Lh8CfHjedytcFpmxF=638_^S3Kg@|g8m_3ce39HJXpGRNyhdCbw1p1{Lq z8^UGFt?k$v>)ls_eDYTr5uViHzPc-RZgz(~)9 z*APNg&Um!h+EP~ZMAFyzL#4~sr+5T+yB>HWa;q2W1PNT)w&1yIl6pQ~n9zFV*3=8- z-8PxI9caxOwXY;!3U&%EwJ7*IkRFcsT4$Dez+ZS|`rb7L){-2*%_U#-iudBHOusTZ zX(IB!#2_K#|E+8-z2w#Yv@CHa6O&+ID(pk}!t|f49JDk(lq+o+MI0qbmC6y7GP!(~xf$ zcdT{&b=&+y0e2p*;}psJJZ&O~Raa)wUVfdGRApVABW^nq+E=A{SK9?zlCS>^>i=cPBLULf6mpK zf&|s!EpdmUM$sGqjd<9gLReZ+Keirw>ngs^ZEpCGc)QHWXoF`>$J;4;&OS zLp<)7!$zbd(4|L9CekFh5yDAw^lUzwjrXftJmVgip&~PUtxjK7B{G#uncgBvBX5AaV%-kJcgh!$%WJ99HCsseWVaGr_=K`Ymv@5gCjoIczz){o>F=jc6&Dog;$jMT=9q zv~|IH5A^w&bft`-XWckOHVg5>7o1cBCd)QIi1y_Y&?nWk&LS_Y3Ut`XLsvEtDx*{h z9B34lO7)m&Og01U!`3?II@jlF``$HN}kS<>%ryA2_eLGCfAx2Ir~Qxa1Z0X|*^^ zFnjm+l;%pmhPO?eR6fK0q5Q)FE+m8@|7EK?iD|*QMLJrGps$X{z9V*-uN~je75UZ# zZMgAk_aSl%^vU2)4@1A)lyZ2Y4dG&l7)JzZI9<+(&~+y1uIw93%U>;I5fnyt=$(&vAo2 zzKN#0Lrq$EvpD5`!EuF)BivBEOuaO=|J*Io?&~Tz0#>`I+mA0tS*#pta5K}i)8-BBL!#^1g$Kf^ zDV;pN^~FK*`B=qgf3-$A{SuvoE9G4u4iD_g)*jyMWG3RQ&*CL6ZSzv6kwvi=M71rK zm_)3YO1$P)T!nEa^+k46nRZ6sR!BsfJ8$3Km5^ObL8`@I{nQLpm1`5e{27} z-vCIa^5El8^Ah;w1fb=yM*AoK6oI~ru0I6kNX0wc=cMhK^5;_;9Q&e zMy|rvI+hugK{URxXnGEdmg;q$Q=`BY_gJv77h_Hz$F#PIo|ZgD!(ZSt;cTmT;aHco zh-~SN7j3@@ZS@S;u2^%p3DN6fbl*g9v|i3uAELa#U$Xa$h9}BiGj=5zdF0_G+pg>y zt7c>`0E-mZ`?w|3i~HPW@Eui#;w@wwVGu;9Sp>ehu}&$=lVKe&d~Ecd`DBap zXIYAFo?}Zc`)~Mi-UdiL*VKb zHgF%xdsX2gU)!2xql;x@)8}BAcjcbWqbSSrTfE4Xtg8r@p%a6tn2YYbhT2^rX<(S{ zP~#e!iSYE=baD#Td(r(&*PIQ9|Iro*5mavimhW79)tr0|txv)Y(xs#HdRB`31pv&o zhr;J8Q9ig<+C^D6+bDF*4NgplXHrf1Li1T}O!l!sEwOaePz>Ae(r#us7k-S04X7u? z$Kf7#2XRlrbI;mId#YBH!;|jg$uCcNype(kbPW?S*->{79$*;Can#HgRv1YAt;PT! zk^%1c`8w;vmG>6Vazq2PTi;jXk2c^~Ht?o^Nfz7Nnu{M2p|Be`R0*cVS`PyWE-DuQ zwPDI3{=qOkr~*$u8*101uSaRKHeY9wvWWt*O7EVVQRZgHPa1qOZa)y*y=Ap({lf`7 zr6RIou&g_QLLasE(=07mLn~E^XQW+EgktnzOpuyk`E;5;D5~+&uFqTE-|x5aC9(A> z8Xec}*I)aMtOhabjDlh+LD}{OG!HyMU#`ud7ge~~n6s**HuU6<7;L(leA~clc7<^q zRHF`~N`-MP>7YhKl^dxjm8je6^6%lZy_$t<#2G4=jcCV-h2q|gXgkRu257{L$cbt( zRC1#@!(w6GWkM)jCKiOfx~{}@WAYp(R2i7)F5?t9!n~OHg`NV72Ty1-|Ml1VagqxN zh>dnKCX6WHKsTwg9BDaMD^g6h{`XTime{>_U|d=T{WoJ2*-^D5F~oV^wbLeu!qe$8 z3C=2oJA<7JHh9%BT6Lzu3slq9qn#h)YVIRg0%31JC<2CI0c@LGtS|L?e#!WIXl=xx zU&IpPra@p9?|*y=FKz~U7HJ0x_=-eYsuQ(>dky)QwD^2e-{F#FP>AF4t-i^RIq}1) zdN~a+(kL=02%gPO$|e9T1Pz%O6<%A8Z(*)PQt?zVf5IFtGk&X4XuwaM&v%vr^19k( zF8D>nMbt@{7Rt(^bn##A*FLug6|M?7_}hi@mzf=F(BWG#vODWol;iP8%~Qa-eHx#o z-E`X0(TZj3tHENhvrKDd2H`0yZ)J)mJb_nhvWBHjk?3u7LH&qTz*y0c2=C{Tn*uhtPCqjj!>fB4r^VN={r@Q zZn*mYne0rTxRI6~57~D~8uIH#^mrwD^qQrNjsoJ9!xu9wAF@)^AkmJOIP1R*R&Rvo zbY^af6rf-Mn)U(^asb`?fb5xY9h*fI?uNS`5P|}2gRY}Iymi;vzky2N4FM@;MD6cX z05UBMpq2mI!Ti4#)a${CMBMgb%g`Xw+mmoF*&PS1J~$^q}@FXhundRB3qM zVnZoqKuppLxUSr{4Eix9Plt^FaH5-r(o{E7@|9sdE@7d@J>l>WprE2=Ltj2$egyD4 z4UIn|-RMWFdaFLWv@;nlX~Y)9c0GXnH_wfy#w73i#DbePwpaaABf%$L%}i#wOw~#f zdg)!)`NLv7#0(b-7lKLd7sevon}M!mzE6sBL`^63I zjYn$VR!6}nV&fA{%yTJ12gejbU%@0Maln=u@unHyLX|E*m^yb)!YWK*Ja1Es-N{B2LQDO8T{g&>szpr z>5VTV^Xni3h8Kh3NOf_Ve)oKr1^e97N$-9`K1Wxk?t<6P*+ zM~rpXBk7KtBgTY|*jI^QycNU!6ARga|F-@oub&a}qXX~(U zm*#3BWS!L)i<)yI;UimH(pkzZc^d&ry6OuzR7??gFix1R78%RtUOy(mOt#7hqr|T+ z9h$xbRwE;6BYs1K0IJaGV8!qdxof0WW_%|STj#|rr_ylET-)6PX+5TQ?8QUEXjJdr z(j!T!d`)x|x4y(FiF*$FQcQbvI`hjrX%~ElnZ4`^+H{E&_vD;P)+zN}yc$^x7kq4O zMFD|`kP$OP2?ae<9)F`f3N6Fr58B>$+m2}4w&WZMH~lqVJR{}*pNZ(dhRnZ@JO9ls z|1v%8&4WO47lIzYNk)gg*ksX8ye3`KpYHaKa(74`AA4L;*zke!itQ0ik1K`+)G&qG<-C~58=rPGRhoHVs;+OGVa_mvkpjtu2o{mpp z;vX-_$J_`)l%=@HfVm^Q2i$3Mmi`j?+*?OriT5bQ9tbar{9f6y4R}RhbO&r`b~?m1RdpP;Y)N5 z8}{zbJ%0}dBkJ}$S|pRoMOHD^OD9og%a(JCeaG9Ij7X7pvLXI7t+WRUX9)of%WGZI zPGOariC2_m9PQ|>MD{%4Bq!|cOv+uC&Afmf=E4x3{zWlRHosHnMZ z7S-Fn%!+?ssy*bDjM!>#ZGh;9$E&DCHL}v=lM0Tl(YN)wjfKyXCw9Scgf2trB9)NQ z{7Ue4E7yRF9IWusCwwH77UxAk%ow%T{)xgxf{BIF1ikxgobvkm^$?<`^a9by=@X9f zk9)NAA8}1fI)y14dYu383gCBE+EkP_TkR`L>(WZeZNeln{OBlDw2^)`Mv+IfRiOi9 z{CmqujRoQ6(>;~X#9Yit^QU*oD}H#mxD2yRi3!Q;XW&(rfbd%dZ{@R;foqTSP4(5O zry$bwy&}DWSy~D}5~SYh`sTng0Dr<2YJbF3$0Itb+0yrtDn77zisI}lZWzz26lW2fDa!Ij84V0}Nlh7h zFvHXW+~Ozr_<8MxRpe*=udSGv=QrK!3EupD&(yhL(bZJBN3Vjlv}daF$6zTh0hBEN z@YNQ1J#&TCi5uo+7t)BVy64{=6bfZ7j}q}ChDN)S!&Ee~@3(fZ&g@Zf zWiTTEdj>*sOrWRn>GG~yxpD+L{@{_ImF{#X>>y@H^}_iYuhe81H(sPBqf|kho#^1w zTWl7~9mjpYR4z2IUN03vONeCO35g>1DX>Trg3*K$k05qqy=xgLx4F0i=?xH`1&f3UEM zIu^C$vAsvtzG{B7>x#d?6=Bd>^s)q1O&DbL(kV(2Ef%IG7vndC6G!lG--JZoXNz%Q z7V>>+u)I%)4=(zd1*cPBbwkNqo8QOR#hQQpC5r}!e$EgDqX*P<;nv-v?1tHCHIdZE z^YL-$lo^mU=hF9Fu8wL`@-US(>E1;{!$p1}!4%2bdD&B3;9*k2F2Y}QA`)z4k+52{ zoG+e9Yx7;XRLTXMTR;D)(72{S>n_oSNgK?h*ouS5ms`nZh>N=j(#3ZVP>y zg&`;nUZ!_uEoO5C7Y%@5s?#=~Vo>XTDaJ2}8Nq__e2lFCrI&Qr{$%g>ShswGcB}XB z`0#XNyS?<}ro8O?{+aPhl5gFSZC%L4F#2aLx|x%?$*ppY_IU_3zs4Wj6zW9)IU%CWUDmv0jK{GJNoSp_uLL#6UPjAfA8;qADoQl|~3pEBzVrQZRfx zDEi(nL`%wO7L<$m+>&(_)|tlhrfyInx^T#!nC!? zuN)1^6jnj(W5!>QR(gj!z*JD|sSz~VxWFV$-AEp*o4sAE*M&%Jyiet9?r%oA$?Qy! zDOnpn6?$Ob5opQlVO1?+XP91Kg+`=^_zV9&48;n+EHM-Ls3#JO+&q;ed(gjAV8ZEk z#iIA`)neomaN-0_Ix%q$?IyPQl}f*ll~C7Sy!uSV#r7GUWNbbby{Qjso*#9^6Gd8) zjjtF}G3}voF^myD`sW9$y$apOnNFpp&%##JRurVD=aB|sYK)0xcv&kiP%m!Qjj2ko zP!tNV9U~!3hOj2K?ZjfWQg0B_NAO-kzDA%!DE;jt^*YE@V?&`^9N0*TQd$Bl9ojj1 z$iD0U$jmL?lwn=y+=_=B!i0&bfIXY~dS0XTd*8q<{<@N{p4U!kc3{e+HlG|Kd>2Pf zD%By6&Ow9m(6`<;c?H6Mi3nx!n@F~#@>$tE#ZJ=Qw+noAa{}!Wy0GiM!tRhN@Ju$@ zX|3e3%Nay`yjjnRKl8n3gqiS=v>hkK+|R)>I+KRO75fJCE#A93YRpm$E!2vy<3sPI z0Sk+l5LL{MlFbb;&7|udzB`UzBX`4 zcB>CoDn0X*Xl)yWsAnwo^oSIig*wsmZ+e^^25ARFRHKCUO|b!lyY8CS;L-(@X`t z|C5P_%3n*@Np}HnZBDGopncts+>mEjcWKAz~_Aouo{r;!(^Mg+hf z@za|4Q#sQM$`^M8SeNUESZUpm|Bo&(Gfy3mF4@b(;`H;}=W6U#Hr6OL7yar`&SnapZR1O<+56ceIwy zt@6zeR4(DMtDFw*{oS)k6aCaOaDEn+TQ3YS$PPdg#L&rRC2``mMjTw}0 z6wy2JXq=LvC`sY3LhFBuq2ecO?9Km+m^DAg)Sxn5zaJOYftVbY`h!oD`C0HrOB}^s z@cEZ{KwQ!5snhu}D#ui?#VEITry9s~W|}XiK%zKx*tvYaGJ$LD)7MH;MiD?oq zJz!O*nDyTBZ|w?h8&b!F6dT4Kq#QBH_1d){MnAmwarb?tIIu+dwA9>ZJG2G!{F(h; zK953jP4s^!ZhFBZ2mR5?AR2raC8tCrC>Ci&QUWk3jvpiE9-fJ#@^q4H6}4LH2`+!^ zn74~`Sate$V@RVy#auMb2**y*Y=(r|fa?t>jDdrE?;7qZ<@8SdNKP+4ni_A<1;`>e zl2oR>ELR6SKMD(AVnhsM<*p5^SnB%ePv$eY$|DrX2I+JVQ!ev_c|_DC(XP8NlrD3M z9;uADjt_SE$-G@V+mGj`QgtpRzIveC-}P9_}bLFqNw%eeuwljnCHPR&aaXz z!e1j4lIM`bw!c=j&An%av#=_;b6(o#pIax%z=#PnI1&}{{tnoEOQveF;D3Ld8amjx zCk+_T@-3lgie2;g5*@Qe7g-s0Ge=$(#)p~Ui#oH(C2DA=AT`(*g&A#UV{vc+V#5Hw zB0UTTyD@x7NpC-33jd(jJt0qp&#C8O(=a=HlqQxJo-Ec20 z>rpQ_swck(58zbpcuAQ#MCl6G*7BBN%0B~Nt?cVcV$O0?=vWr^VW=VQz3w-LXr3mB z6x5CMFe4Z}*qu{Y>PL3Lg|j`^A(lydlKJ*WJyb=_8`3OI3j>h{>9ie^!4BJ$AF@XKVYeNvpZRI z`+8qIPa%D(4(U%UfC#8)|9m4z^9gxQ)n77dpG^y+5d7Z0AH-LlBl(X{wofpuU1jPV z-1QktKklp^U?SRHTaf%oRWTe47&o@ozPG$FPGj5-06D#MMUeJ}Q@{x*1p1#FjC?bT zRF?aS&X3gvv|DsI|zocMO4#v@vfJ9)w~kTFari`O9{Oh0Is9mI=< zD4e|oIKKd54XG2}welj~Pdp;Y6F5_6hzqUA!M?tR|M#E?> z_uP2hBu(u-o7)V#%1mRek%FzX#p1nA`)`ExTe4>+u~BaT2PHK@*AKEoVylr*%@&^< zp4YxsBrAGwFW_iQ1cw<(8p1UhmNp79r{$W4v%2^KEHp1=9oYl_kx?p$K>bPN`W#X^ zg0!NQpGBa@z%JIuX0^BHqar`6%MgbkQD}7dzCnM|7rs+becz~8QRy47zwh--Rz_ru z1ma~=;QcgOf$+fyh4{hiAd^LB8S#_Y2ddpF6ZWW&?`)&-9{VC$o5yM)rKI>@ypE@R}2?kME=DC9*6{8}jmIDG6 zq@uxwdK9QOLE(NXph}+-3XY$`KSo8uM$0kEv2-nuTvXs&0sg!Hgt}^fff1(=d9MCEHI7Scc+9-^ZbQvw$aiVy zlxpKj@0PZxvOVzQbqFlX$hQb|WLn4zICDj_mq(<%Z;W&)P`1mD^Jx(;p2?^83oI^SooHxX%Mx87v)q#3iYAlI~c!m5e zJEym|U6;c?+CJ#yp6d!s?yQb)RHDVP!8de|Sy~~sE*}5fL&rpiuv^!u>#}(0nu$}vDL3W8- ztadjeAWCaRCRkjt?K0%d2seTsnhvKcu=?KH4TEC~5BB_4KIJE;$7Yqx-+IQ%c zy+5#nGrSCImbdceJnbcZ7mlU7L6Aq`mU>9!|6WH~(?gzju&Vz(42G&me;e9-413p? zW4twub-w(sx2G_3YKmW8SeDJoxq9W^bHD4iYhKL0 z10YT~A!Gv8tJ0f>VVbI$OIx}ZXp6B%k!VRbNgnNYlbX5Bz)o&EWS0$(|T`#FB*5_Wmj@<(B5MV+(AXr*KPR1pn=HR>0K|oDGhSEX<9)Tc+e-zLE5cS3V z<9z;mVC6qn8z8FIQLXHaIyE^dPI5aEaL)hadHsWA?DDd<75)Gk5efpse?B65-mBml zC2$%UzRf;)w{+DiVcUEH*YYGFBH09R2irpFw-b3PEZ2u$+GLiW9WG32f(@8PAt2rW%Em?kEC4i+x9B(S-Ud~BIR{fGF`%E9L;PvzuglWka&HI>n-%~f= za;p}cx>e}0HtF;hnVgDQhzd=;eFZj%|*b}~K zwqYS#2HFOsqY@j}pf|#qAwBV3R6wAsxmrZ~*0bcJXq3UX0tS)wzhc9OP(Oc=Wdej` z!XzDt2LV$=CK<9G0b7op#B^bNQl<2LF5K?)Q(TNufeunqf=v8On7*K{iT?YYpR|*| zKE_rQdn65SbSVYIkIDII?}>f=s^Li>ag(1fyO~#v{p=s1~G#bxF(g)a30x%(N6oT zq?^b%M}X#tX={#Sgsc#WM4Dxg8Vo2KXF5vipPIp>_G=D7AJ z;xNYc#a`5nW=nGh30r!Ep(gtUF^{4ssFxng zhc`g;d+Wg0ckd*#N`RD>|lQ?a`qGDgctctQb8s~YTONPRmExM zt53^jM9I`tXB;1V{$SO2fzNXSM1%*nsP}1Gb_@|6=8qbW8^eYz0DsJG^6RBTAR1g> zD-$w!eDWgyisp+JTt1+8jn~Uy5NdD}DqWH7tu$^!CeQMR4c4DU&+L)ax7-cdr!Jav ztG~5wE)LemWh4%!?SY{210aOjM*%`8^|(j7B;_Pc%rLOTATIgC-3>QA zsay@U%CNGukYM@lf6WE|BKLL0eC@zU?x$uFPk>5Navz@VJBo;k1vasZ4|Q5N&qrF& z%OQUPB76lAvV{E+;Wvt5pE-pk(9WQYaY8XQ%sXtBIO@6{B6oi(^cz%>`*sh`*oXbV zmEp3uZ~zqovi#Won1tP;K=>=+G3S9RXHf>}IQ!;xv%T6@O$K(y>Ls2AC61&^>b99R zWbtujs^@glOryGXdr6GsecYlnF^SMY1iDrV@=z{Ur{qpMKZTOq0iU2GW*Z+&V9dJ- zToLOO;ePz>i^;xAr0sDTSL6<(P(-XN@8W_i7NSXy(bQ(sHk{Sjf8>h~@z?*6F5YKq zr8lOr*@)ls--aBbPFaAK3F{1|9?yxoJZ+=H5=BmoEs<=5SFXS3W}Y^jr}QByLSc#! zDB^_e>;#)IaC4LwSWK#EzBj4Qrv3p%-Zlv6Iu{{iglTMg3JPB5%B7JsIfrW~Wo{v4 z+lHIOin6w*@H}^!O~mRbx=U58;5AWT#?nSPUyh7?CVABXW5(P0mvk{@>uvatkrFOkSzX`_MUt&TF!Tx=jYtp`|utjPZ@!t#j-TF5t*_lx|pkDAlXsWD(V`LFKT;0^X1F$jwd?RX^)_%@p`7ys%G|)j&)+-+*Cr!P$HP=w(M>|-tC%`=t_jyxe zEQWA8ybk}t^ZC9FaE;~V?=3C;H*RC|Jz)*LKmtg8sQ94OfO{d_QeJ0bZvU%QB>9z! zb}YH?UxuEC38wyF&Y;_Laj>_pzh6YZA|(!_V|+-j^XCF0QbEr-616RW&nZHzDahaQ z&UqM^U+4bL!JZqt;$2GYcerQHx0}*XoO1|K^z%>3_3uoAXse2^=wHpW%R+hmD_| zfPp~qy9+K*jS+9Yx3$r-SoMYT(=htr%pLysf=SHdk1)wGmDBLbF^KPVfZ&V`VATZs z8?I1nI3g`{hl80U1{X>QVn&Mass5s6da%M?>t+4Ci(UHO=xpxetIyGFxW5$pkYx$EOxAA#!Z&?eVx&^Oz7^)Qu`@$-h{iso0?6~Q zOh70dD#U(`DB@&L^tx_jZPN}>wXfH143A?8xCsDGO3NG7H*4exg%>rmo4lb4@PriH zk%>Jv$F6NrGw;{Wf_aC$tOBD++kObB?=5Mr+IzhpwELtV-@0MF>>2X5{ZL3`1V|98 zwI@VR*@ST{og>*eq3bgtDFVs7V3?q4m9rcK^BkFzi~!VpsD0SQXjiPdiADb4_um6@ zVyc8W2eRJ+cjxGz7Kj@=D%!|jN}b+{&tV9=;19p$p1yQ}+NOUVXS9Yf{o&wfe%sVE zNi}pKoLj7@nUh6qyK%~<=dK#T- zZxV@BJ9;d;LzR6pKdjvp>RC^e6NpRGg{{%kUrhaoeRkFa4N@l_Fw#W2v@PFr{a~c! z{*!eu$Rj07$o8~_cT{NX-cN{Bk^bYD@!Y8h6xorAk8MPoAT%>H4`T#kiCVR=;G?~n znk&GI%?<+yB2o_;Y8IS>h2uqt(17LDqU>CaF9w&7k$VQYTr>i`&?uZ8t8R6z+NkUd zN%~J2pfskq!fx)Wai?=mg3>jC5x+)oPfE(eZWvl^Zo;A{)7Qvzl^`6U3Ozwie6e9W zSCA54o)k%5<;0iwJB=jU#zQ}}?w7NifXlB64T{v;*;lY1#m7ZA{#S4B71q?czI&rI zMFj-}>7ddDlqMZP=^X^5tMo2iLWwjHsZyo)UZPa#QY6xQhtLTbhT{`=n?n3HY%}EzI!LOm z)Qk&W_e9XNmQ}v=tqHwb}8I3r)1U7IvF7JtnI1&y=vZ&&rvtjI_HSUz7?{7aZV4Q^PjfAGSdZ}@xF zJ?RhgL43cj*gXDsJ@Ahc8Ap=%h&S}w6fm8GfLDNm=l^IP;nMm4E3W(FCh=E|lu$3Lkn4{r;76@h@sj_y z#Rd3zoe>A6wh~K%a<=an5zzi3rEs(DvBF`1e8O;!@jua~9Qx08`3^9}c9bRDEVDP@ zrJnFhG1W%@F&Su9QD}?~O!FSZ^nVpHxxWvXGiio3BB}TZt`3rNwXVJ_-fQ{)u(?@S9n3xGef_F-t%> zPRv48$XX?slk_>Cc|PR?5VOSXuu8%m^x-N}ASOW15?k#1=x|Ok#+d-h1G6?ZJjxz%y5$km;G=3rJfIw)K@sbTg~CexozGwzuqvDXu!va9cH ze(QqybW@5~Ug5YD34;NHb5I3WYXaRdS{)&Zz**3J@I`W^kIc_`nZO5P)28 zk9w@;G&BQ13JJjS5!RjMe!Wwt9~%3INm031>PVy}1b4t`?W5PnHn)A5@YHZA^IJh* zUnkT8LZ;#+BM)@Sj~?C$JliO}3O!|FO!P0>IG}@GF{1R=;Y$$c z(|tMWm;;}R_gcvdZfuo#q;2$z39d<8n`4j`l$L6wE%v*_lPu3XfaLUw z*lnOQ{vH@V5HApd_M1*~|EH$?~^NFN1wU?wfT z1`Bp%8~+J?0hpR!Q@_8(W!4PRT?lO6INBUN*Smr%WS~!e*31Kp%J3LU94Tad>s9f#Pw`%}7Rbg-_EstsCAkTa=k&?O1j-nE zP$(o)=r4r<$_+R`BY@H*Z$}Z*bU3&V5(d+@~34M9Qjw9fT!_A zo1)fY#`}__t4+J-@upf6fOE>=Gl2=3w15MEhuw>nbIF>05}qX-Q|Nh8G5yq}2w@u+A%%c|;S+ARv0(fYfgrA*g>yWY#cxPV4FS>bo|4zq zen&06g-6zZC=7tOZ*@-&II<|714q`4mQ^DpJK2_yDeq7*hIhu)CuE?xKz~?{*6)&Z z*c`ffNYmVd@*L`(@xRF;Ui*8A@5LR6t767@B@b^h<>UqX`bb`nX2Xs}(u*C(w6$2k z@-@D7-@mrXw0CO2!}rYmiORDz!=)94;-^0k{5)WdJ2;#{)I~st!nl+L_WKq8!0NqY z%r*`7Q=}YcwsR7fQGM_GEs1U)*9h~e+08+oR+uhhUlI|wgZ}4jffJDFuyv*%|Nhai(L0%%(%?E81pw)1tCj6=d6!!0o_2ruys8-~Y4^ts-9teX2Tx)+Tl)gR+> zS=KKhH&L>0x$dP+eTJ*B;usj2oTNjQj%G8wg&VsA;z5xF?NdJsv_MK)^2%azO5xG0 zvjBd_^NqlUn88{m;PEi9yP=+Cx7eWdCl>Lu^ZDWP{>|A)tLVXBTMsY^@N z<8WfCd*sXb`~lFxh>dCAKHFXWYSHK*EI;3Sf?TPNMXFz9e^JUwGMUxoGE=%LCasuy z_MPG^ZPl1sikd5-9<_M|J5^^EEq)680t|^C z5?pr}Q7O8wsoQyF4wT|7z`d&mcXh&=^7c>QyWLqeCliaOUKtXHvU6+Twz!>&N)hTv?p z*-3Tb<9498uaZNlG`3b(`03Sm1NeYxvHL8F`?kJ(*?zuYU0Z?Laf+7<#aCcuKj-PwIm_fzayz0&KL#-EZfkf@wiGU_HFO$ z4RybyPn&Dz1mAuj7kkLEFTL;)MV``EGz(8c@-x$C?L7yjro?M-P(+_>7#)9c)oF=n z4hm)Rabh_&T@n!!`C6NN>o*vYT&?Oe`vYQD^1^ z-~OoW&*ihRh=8tp5RNe{S3u~(4Z4ax>e^igXfF9i)oo5R9w!^=V@e5whuslAM9)WV zETdjo^_hDqbq}B~h>@(>00X59l$_6ME+#J8TsxNa&FA(s@V3KZ94z;mgR@PWy9yey z^TeKeOqEK5nC`stXF7H}*-k*;>UoWgifRXg#>jQ2i*={@B2GnUl1g1vd4>XzV;i9o z%6%H+ZYn1R3koG_Nx6VhB1a+w#jeg*n|Ji&6NSv<9LYgZ6IwXXh23jm<`8OjH_u49 z0y#sWU3s^O-}N<*CW+qJd&8X0H2O!C)s?CC@VJFgAZ2pUGhM^)dm|q+bRR&U=vc97 zc~>qt9K5=MFj6z?C;JJyh1ct2KXB$*NfZ%I6vR*l%Zm@36UeZz(t6WV>eKK|a;Ry* zXNr@0bB4C=5}oO3?Dm*%l6TIp*QGz8br*2oypny*HMKQMRP1duD!ps?O?AydT}>R& zo)?KiZQgOOrSRG%++Qx0)cfG!U}XL6i^1b9zs*HQJ}$+E=v*=WtTLjw`KkzcP}yO) zsE%T~GxDB=osHW-ositP>HV=PS}*!=Y9S&(^8lhBtSPu^r0=Mr{a{ig2=jH=L!J2PYC!g$*a_*HKBSf zuWtRvt~>C5J9kd0Y9>aV7IOXr07Q+vFyA4u5@e7vQJOjcnm?Mu^EEH97iLmWj8+04SHVO+WNlUQ=bw13}vQ6ca_q1 zJ9fBp?%}@_DdeDe7)9<<$W4V`e@j;aE3JDQ+scqOtoZQlgYTtzbXjfIbJuwkjOvd2 zW69lD5-oyF#kR)r_fubq$!8yfx1Kcj@a<{Q!{H7PliYC7-48}+w%|?H&$kGE2ubOT zH9X>aQm-Q15YMvqRW`ZPh7gdvH1)9Q{%HQSgmZezDtaVYf9~PxdNOmEe`oR_c`(5- zFQ4x^hn2HVtyhlGCaaIZ_0PO2vZFF4rsxZ1!qe6^WCAMlp3$nQJRnTtg1rTpkNyvz zZ?A7}X&d+#4^?qt{nJODcL(r>#5Y>3XhF#$EsFUZovCZd!wHB;->1rNK1@icRLaFH zZ6B%v9mQR9U}zzD8~Id|D*yp_kkIvW=xh6KyFc&J#jdQ;(Jvy=WJ#Mcn|h$ViO7-J zqTqs{a~xl*DR%L2E#DOlH|-K*(r}sn%}ZU5qyj}gJp96FSf7XDZl+j98L@G`^le=S z8Jzld!<~pg+aAvcT&EA&TFsLRuufxJS0w{rS5Ai#ud}q!vtZyV#Vq>80oXSAKv7bT zjx**szG(vVXUs5FlA_2fGJ~)#VLi^jqtTv4EyPR8=jSDyjbA?~A`-vwU$;HUmiQ&tFhGQ!$Fr}{)V$xof z1qN~#(~WVu!)KLdPxmfNhMF6$mfl&0@d{f+RvmdCi+L&@^|*+A!dJSXX%rTvY^U{rmmnFllMmt~<+^N{mN5iCOJogwBPu0yi`(atj3 zV)Kb7ZO?wkl3jxQX^&jX*_0wJ6|)tyuvPiUV&@Omi!Re#{?Zlv{m<-q>2yo&cTFP> zzA_|^XEwvl^6p*wkzIdspJ8S5Mv7N?o1R5^(F_0f*!XvSlWfTzt9$)FHuX-O2oozI z;{G2-Z6(VpwX&0_3Z+E9$k!KDi^YDYrT$kK9G>jC_q3a@3GDP@M^CmEL_B+x?wsX? zmr$c6yO;E z&DU+v7o-G|ImX>y?j0fLmi{$XqMP(}c_WlG%F4Dw+g_7P@9>_-P`N}x)$mSnc7DOH znSk-!KHXcn4yy*jI?+D;@+7ed;g@-D$r7XlTJsxXp>;kxu(p0k&MN{;wSuf>&@XrSD0o!Bo>W>20Sb3yp=whIx2v%2P6j}eB#{H=q$ z$s#<%??HY#t1dZb=BLZ=z4CXC4X6g~J`Z1Tg<3&>HuyT-A<^Bq3u-k>-=L4XeuO!a zv;?O0zQ);ikf@-#I9O4O_4jDV?@ZA1&+pYwPFnIna85Fmrhrv+Px!txLmgOT(h(Rv`Th zhu$tLF0I&2+%@OXgu>6~W8?}%#VhiQk`Jso)frdOChn`E+ZceuWKXf%-p+YMnq_wy zNdLjG=*B+Cc17DfHXFcJ{Gn7l3;hxsjm&vw!r#8|Do{8m7;iDiyyP3#lLAlMbpXl; zM8}s|T|_6Hg4!R}0n+JD#-)D;#>4-Yz*ta2Y>eYl@cbWKioaS`KN$m@RqZ8#niHU5 zsQl4<{vDRpSj<#2v82oHv3-yt;t$Qm$HWPRNgU$jBVJ8wdMlKSDjPnH?11WAQFEcY zcep1Xr#Un+W8+AU`U5Yf&o6;Z1M*5Zv8@}6VuubWos4|Z9RG^npx*M-xb=w68sPHO z7M9)9;MZAm*<+YMZx%0mL6)-)0a&W%VOGn^(qA5A#Jw@(r;6j~SZFRIdcNQf6$G-` zs7X$gfJ!M|TIPE;slvrgXJO+)_An^$W`2Zu1de7fI5JZ0|DG)N1zYzsa{Hx=E3!bVH={dKPWQ1HIak?VK#1Xd*GY&Jxd<+J&y!I=VzFjmz`iHqA{C0jX zRGIw?K+{OOdE#=FV+Zjk(I@)yUcX{i{pqA49W8W(qQahiHQ zyADULa0ytSoUn1+H4q!g*S{M!5*K>f*61t>!tbtv45f9p#zRL`rbL6{Ljmw5D(Jhg(!D*y~=!wBBBGgTMx{C`8;6u&;vi7K`TXK|iS94H} zeTD0g9BqHyX+Bo7>j7F+2(Q{wb`kI3CUNo{$*)jjKm5BKY5CVnEmklJ&X>NA!`vY;QlO?A$rlsFMoxhlR^2vLW)Y+GgYVMW8w+)z z2n8@jJ>V5`%8nL0JzHMN*}eYa*}D+ zv)UXjAeCW!6z*B6;G(SGP?48&RbjW3nlpmFPLrHGT%nK;b2uS#e0N0V4o5QzbvqWf zeI>7~W~C`0T|=2Qj^K|}AoIph=sPMZr-*F)iq2tU91A5$0r9hSb=n+sbD23^o0ZLU z3{Q|KL0rp+mB7iwC@53lSCtVkb#ngjTxMpTszzBjA!z+iinwpn&j$MVLheU~Hkt7tQkbQ=D;%|HUR88EEuqTxdM`?~a#l-St4>Zgr0 z5E^i^P(zh{{lq;SbZ7@E@EJ0;GPZm$R*En*7YgC5n0WHLe%NbU8;b~y6PjWa@vUCU zFZg&w+6i#+${XkIY=9@c@5~^P?pwIYZPJfQni;)b_FzD(S|4IZ_{eMbY3o#gyxB(e zCd@N06d2Tvo+NGtyBKcr_I*#1P8}YShA=|`+YBheuvTbb=u_~6Q^^eg1&-lXOHL@x zJIgB1j7!+8@{>}{3Ze;wkp zwby0UWO$;fs{g~^`~whK)F)uvB;Qce!TSULL8E7lTUo&|xZe5;V1y`E zp*UgmnM_#KK2a?3ql+WUofU$qLA8e9U)ICK&V+6Xv z);zYLad~oh&LH-FgrSUYhyq6gS@-0FJ=_8(PEcJ0+i)MGfjZyw48qOww2(rFy(;c* zsZ22cXI^EuvTu33?B+OFCt4FZI+9wuyMyy(1oR>_!SmhDc0jZB zv+&V;SMTtIqu*%!Y))BAai2VA-}RD>(;h8og%3mda*dn&&XlO~R%1_+!sd)gPQ`N# z*L!tJS&VB~y3=|{nM=I?PFPR*30!0NONC>@8F80=x4qk8HZ*E}5G&E>`%=!kV8dgy#8URK7rl?K zL_KVj#AS#pjuNm-{A=Lkd0l>MX`*9}#5DW8za(FSggMdUZI6DC7+-IyuLEzapvX@r z+S&Zd*iT%nAtJ|w0E{9dhM@i4EvLI%7*nXp!TY>lVA~Khv9ITjW4qS*t!OvBO8qRe zAbQIRO3Mbac=a*eG>z%L&SzS!)3 zKIecUIpQTob$c?JHVzIZ&grlnD;nHr4vHFbxgG#ioJ>M>+8U`#%<8!#%KgMj+x|H9 zbCn&Til$)Sl>np4IH4L6(X4lP?!japk6uVd&!DS-g7cBj985c)`a_T)`z@5`cb4m~ z0HL~FbK`0)Jz+{L+q(Kbqv$I#noV=NSA+*cpBP?lOK0@_NaF9@MLP7{4VE0RH}!zB zhLwCvms}rHi9cu{NX2B~ ztOTUY+vGQb{KUR~-;~lN`JEI#c8P;5lL{EjXg|rBxV^;Nyg?rPmlAsEl;nDWX+Bh! z9N}tzK0FD9q9i^99-tiita`v8?H}eeatAc=RsLMiPaz?naSr7#G%mi#1CvK&J#e>> z{iY(6{q5*ZSqjL>qowGsu>;P%99{0is!W-`;Tjsj6935gCAW2i^AD=3CY{dQ(3jx= z;MuO9=6MaHM%C{4itCfO03YEmLCH6xhU-bpiPe?Fy!u4bkEZ-+e!vQdO?fEh#ivXg z*9A78m2US1zb2A{R0c9yb7W-D<~cbToR_y!7so4pHk@aTmyiPQFph-9nzOhlmq6Va z<{x;gO3ZX%7xH}gyR_j4r~EjOq-NQ}y-{^~{RdOsuZ=41?8n`FX!|ntW|PVLW#-}e zIti2|iWJ6W)DY-7l6^hWa`5YO!KpP9V)!YMIrA4l^%pxn-Nr zop6&%u1t0}ahQC;XDg~5nwK7o(R@Ik3u#Ri@uL9LWm~-32a#t=Vtjs>QftgDKy%7P zp}QsXc)Bn?xX1LHm2uI!5K#b3Mqz6z_?Zr}x*hvN4(K%HBsQwD+~RehJ+?N%De1Zg ze}2!jCiI%l6q+A4l~y`(J-8?9@H>Ob)}hWpZBnp!rLkI863|&B0&^V*xBocO@@5cz z*_p3TiQ^l#Xw|xiQRTYt=^0e^19Qcw_r70l44w-8{z3Z8#BulFY?{``I3(F>z@E*H z`mz)H7XqXV)y&5G6O1P_ zgwFqMa+*cBlsaXo!R<>y_dl14{9&o^d;uCUC)5LUe=P+WLo2b{$}XUs0n_33Wg)yN zgP|}#Hu`SW;Pyzh>C)@n(h(Q+zWnmR+)mFkXq8Hnf-t}`2{EtEh{L&#v}7=-+)l&` z|Xx$K~pFG|8>Inb1?$VA=TW zmpCvJP%Jy+E^EsZo2%iSF{`JzV~&~ z^U{5{LIU$)ueCt<(Nv2PpSOebx#guub+u&L?H?W|eawWeX*WLyYDauLW6}ghu(K@7 zOSctTZlxFuybIpS&y_M7%4g*`KO|Wb`Kpm3V*|((=`Da#+_&KJw6msc;J)i81^ z0`7D2H!Ad4z)ZO28>58wS;HCAe?nSM4}pXvux>?SUAac5Bki7cbv8nH4q3RNNIjgs4Hvl^@3PL%0FE%n&IqaV3@M#B$!fL* z<9E1jQrS7EN_So9EA4z;)9GF;%NhTYB>(0mnI1}h)ie9%BCtnAV$rF4O@#tvW;)v~ zOzw~`$HSvo6A8&sPdm?J_1z|7Etn7`AOfmLq`@I9Pj|49@l%3C*ZnH3l%=0{0jDt{ z0VP1LeZ~I0vg1AF*IG6mdmRwM~SMl zB~x#|-0t&wT@*#or--@{l)W`R}Y}C-HdRZs#Jn-{<4nna*V(K*)W^2 z?B`uzxDXp3uYHGUR<%Y(iO>QDwe@>ZlAoEIP-@EK=XW7zdGEo`Z6Qlh5Jdz0j>MAU za=-Y3|5S6fQ*4?AJIw+D@?}6mi3vF>o^|8sMLkSr5{Opx(yzYBKgg2Y*?kf`N7dcB zCXd{yuumqm4!jL$BTJ5!iVA0W?7cMIl7770js<2ATZTzao@dJ+D@vgwm6P%biX{2D zZOp_6Nqz)<_nXK#%Qrrh8Ma$?T^Tz-Zi{v??3lhuSi9di9P?hMM}E9+wOR1Q7d3R{ zfzn!S%7KwdhTSoGgW&~)zA%UtL`L;&S5`zeygKs&(LfbPkC=W zYIB)Dy>U{d%PD^*3;9kF+4w@c70-idhwC{pGe_-~OS-?3VOG zs{7yu=lG;ZQHCVjek}ynChP~N!$3)67fwl~bHh)%r3r1keS}#AYafo_(LdU4Xma}w zrAdL>i4xoFHwmy5w~Y{`<@zc)aL7NQphgvT}&S*bn6H-Y-G^F!ZWVSIoG0R-^NEcvKXxL8Z^)k7y4wZPh$>JA{@S;)R7dvFL@s#dX!+G z6X@5k$=~yMFU8N>g*M?QA~~PH5lPC~P8mb?4#xoYftO2rGC0&CKh?RIB5c%QO$x@>VJ94zJnN9M8a`VnD<4ae`9kdYKj8phi+zz58mC-^HEr zbI-AzUajUZZF9j(uPyB{mL2Nhp z?4O=_gKATr5KkdbPVQZ;)9aYySFsemM`wb%(9JlTmJsv4=i#5M$A#UeeQtKG&a%(4 zF1o|{wg9k3=^`T{_C(76EJL9s*C zz(`AmR*t*D;kvZGwGg*&g+GN6zO!?!nIW7#rjo3p85iRx>&QR#NNaI>0x;%uKHX+8 zekGz?@3lYU2U^T<1syWadpBoBErCL618}-anbW|u37i5G??YlhFd(q}i#mV{n{sSm9HSvw_;X--Ho5ue-5+1`_cr^hsT%zms{Lj%`@!DP0 zzI@Kqez7DRacqSL2O;q%!}+7`F87{a@ipoUP+h;H5Jg#T?%Z`e*{_+D=$9~KGC+D6-e4_sGpya@OJhNSZA0uDeSdA zdXC4+%o1-w7&rBkEk96(WIaiwe2Dp1rAm_=@zM*|`-<_sYo7xBj$2X1Kz-NKqE1Qd zr%rXpzr0Ttr?fL61Q=v51m_iiT`i-3BK<|ir>mjS!hGFsx1}*(TXtn)+o~>KJT==X z#P}Oj45vfY@3IpD9A^d=LmwsQNsYg^J;b*CbK65`9^M)YOZ;uKsCSRM0h(mNS5s>x zO+otA*R}ZwuaAGiDct;E?N-l0@@8pv=u+an)a(RfKr!?rNR)l~4(ZA?z%AL-y}MdT z(*syQ$6QqB&Y4IIqBn({4j#9vI|W%K3Z&fuZQ4x36mMl@))~U-I~$Km-u`FSa}=Kc zl0Z`?fDZ4O&NJ;Wih6gL736-Q{1Wnoz%6ZZF54auAkgOgdqc#gDG45VAa$cqlNdso zh%oGXk-usZ!)IkCJ+h8Ra;qv_4G!jssy&iypOy71CaV~eOjWW~wX4&2fDtpXr;}DR zWo@xBuowW~Tp3JzeC`LfenoxD{)RkWJI&YCp#N%qVz2**$;H*rTaFN^YI>8xWVL;%?Yf0!^`C;olM`ZIw#GycIi4Mz_{A(9n(^8ZbJx$oY=g1V7JeI z1}e=s$4B7Jiu_P38oAT!<&sm4y@NT}^K*6b4rSbLX*^*VLxqvuY&A*yI zXt!^>V+ob%7kvd*6Wy+U|*8ywvkUkbH9GAmumXpZ1b4GPY-lt$RxG@nlDO%N&kO zyHJs<@gIV}LF@7LVY@t}J(BJ}HRc=9&q7AjMCI!hA>HgLY&Sb6GMdOK6TaiA$0{kk zHibVL$w z`8+L|q$svkF3Sl7ee$85%QWEC@pO$3chH+IVi71RiD}{s$sRdmy>9~8Go`IwM{>rW zeAt5%L$0L7+?Eh*c&PofiWgycG0<6@pv$|QSoP!@k4i)kuXXVG;PCrcHr5Y(H+57K z{8nr1(nsiWy_0)-;Px$j-dfGPQYUT50aPB*FRuoNmxAxh?%oonCSx?3GbhR?j&3GS zy+RUmy9rSI@drgvxB=bkz`gDli48sc`NcDy0tGM5$qTivUrfg<@P95{G%=gzP*)il z?bdiQUKJ(6q41fg?@}ouq?gR9^nh@Hrqm@G6+d%UsWrU#T~Bbzm}`idOxTBvF^SQE z2oSWskF~$`P~>+R18Tf-LU42n*eEf0;M!{<^`$t|mEk%5R8T&AzT8SQiq>%C54q=* z1a#icYhC|a&sdmCifnBSa{SoZaMM7+BO$7XLpsReX^%WkDuudpo{0l4KSQ#MrY-mZ zz~z9ti!HU8Juz7gx=DH<{`?BSk~Ui!r^ZO2sUV_?g%LMqbM!L`9+=F!BTGZMTrHArQvi$a-m>B=PcLQr7&A+XvtdM|lm#aC#^G?13 zpVBQ2b|4}Z}@T_yI8bGCnOsCH5Hihen zqBQA%O$cn|BfwRxP+lWAN(n44=g}pNsr(5Tzqu$B>!0-yH7Y5yYs-GoR@T=~;wo1R z%WrHna@LCJUEAQpEc3nW_29Gph2))CntSdSb9-it4|~Wry3`SREE!IaNlo)4RgU6w*Uiz)hg2tyY!jTd3`2Y zwE5%Mhefl?akCmVdv(Lb*8Ll;Swyyuz~)f!bHI20k))+Dn_{4GDjd#83w+|pi=9Et zBfs;}OwV{O3=)hPEP_hBc<)r+Pcl-h$8DvJXlMl99{ah)ZTXd0kLF^zN9W z*o_%3`@8;&+n9|A0_M3q_uLJ*sK;kj*MyT1uqYk+Qdao0fslR)g~&kUo+JB!q#!l9 zY@`7Jrd#oOJlm2yX9(y?u4< zI~hn(rnh>Zn=YhQ452ns=0?^JeE)%~gG67!%Jt{dJk&O(SHDdjQZM9e-$>eQwY?9Uo}n!+hyw=XL|K!51MB6-k97p0xwA*78+V!Aj2R-)Zoi&21pM>9f1MKotqDX zsUDhDzKv_mm>!b;dJ+&?y#4)w`_>Kp4L}=TLD((&#m!t`(4c%v8iD3KUnXxp57BX7 z{mu(I#Rt_aA~EkKAGq&RXXgEO_WP1CQEH_1zu#3qXl7M|b8-(j{1Anh3)k2I6XoGq z=@@9k#_v{;p5u5)pPP9`mEpJ_Y|uEXQ2OASq$*i+6cRr%}8D`k{ z9Dz}EUTCNF+k0aTSbvz$#E)ycOfTFroiI>pn+rOxvPLp-?3hdGlfg*u0XtoUceMYq zd74!i4DA_9@$*Lfd6(n%6;JRkkD>1|;ra5k7A>Ze1K4tHq?I>G9QZ90c2g%#(V|1R zLpR1&^*7qtMZR7vvR$GV8Ve@vfl$S;vzZghG=UN-_G3CfqTcLLeF^z4sYH$0*F9e@ zBpZHU(iQgue(-x~MG&)nr@4JL&TR36`ysPrAM_C2>Jeq-yh-fK|M%SkZ)5O}tG2_g zHEYUc&3i3oiGlZ?gjQrccW-|((E;By(u1tLK1HT6&Z%ovo00!&bVnW=*x#MSZYOPy z^C@g9P5zMg$F`bY-uC+6_t(tLCJtg&HZLQVZxl4auRtw@dbo@IKoB9<;H}|o1vn5H z+#*Ex54T&@TCp|a55fCCO0oLC={-b_myzyV9AU3h_k4F*#ZZtnQTEL_EC%iFxJ&AY zZLUdAVh7vn)u=bxsS>qIJY5$p)oq4fVoE1B3L*w2nlhu@Ds?3DL%dTi>snQ)*&ZBO zgfVI!?mU5u!Yy~|7YcthZk365f%dSl)T7!68F~@fVGX10Lv_Z&=x!#fW-M0o(8K;N z!>PpOUgsUqDn4Sk(Vny6{Yl<2?YY~0;$^g&3s~<2S@COTYEx?q@11 z15o3!T8bZr@EnQuMdO>yrPSzA$ZfuuICNgULP=)HgSjI!~jqB|&@9LP3cx|jB7hc+5#2o%g zs8XPfy-7P6S1GvKw4gG4gMxiC6Ko7pHp^MScF2M3cZKJ%0mu3LWC(cTC00mbuz~y_ zJ1(=3njCp_PUkzY)}&GnUjLDB4b%O=-PqBxzV?(sn{$a;Lu+XiEpZth?drUXa30Mx z`#ySQ_#i7mnGs{Xa@3Gp$I-h@c~&GbBNvdVpL#a&_wyuFBjtl&Gf6$WABkC-ExCF0 zE(SmT_!G&53dA()z+7Xf?b76EpO}f4R^zugKw#<~+$ByU_XVwr^j}i3hmWu|TQRQ2;biyy|Y*mjpDiRcHPZke5jyl;}esfw%OJ2H6XSzK$nDc(! z3~O9Cjjbx&FqCgC6GoQ*ec3Z%qA;|EoBd0ti^VI&-rSiOvrYJ#bHn9^qjCm)As+_z zh{xaYON&9tT`)rYXp(D!9$DEn7n;dyqH>8MTTF9d zNdKkr$xUvGH7jbD4boQu?r7o(hir;aa7IUi?uxYNfgEUQTuutHP%Rb5e;CxuBq^%_ z22PRHCkD1R+3ZjH3Kc-${H=f$*S|wbmX#?XXoG^?=HlW}^Essa=keZbczi6~g8wtS zlM7<9kvKDve2D0jhJuu+IyE_D6he7Rirw}JPlAK`b#}9?dZd0Xs*S;&-XvbJViawgxm% z&e+G#1c>7tQD$qa_bp2lGV+Qc{Urugo;{WR)V!k?Bip)InmGAPpDCKZcL5CDUyTm& z+jGktMSZF;Y1Fe!*TejnFaDgLhT1dD<%=+WXs`HQS`s~TRnGEtr|Sg~v>YFyu}AMCACz9oq;yXX-5OmLj8jlq~Sh$2PBP>3UkO#H!-IVSnd7`QDQ ziFurf`fJZzTA+!#e@LPTO;Nom7@Vs8z&z>zKed7M%?KAU$jz_fuHedC$G|f(AV^AA z_@GFzmAiZ*&YxQ0%t(CO?3QPlz3lidnWkb$Lgk8iK4a;hvrY?_Y^;OPLz!ErYw!4! zS}!;Gh7e}0Y6vHzDw}vzt*)f+37P3IchkJt>HYL(*SL=1j=A1b$rSkFdJ-S!ymte0bsi$Y;JTOpFU$heWKy3td^Er9*ssPO=t2E#%1NOdg zoGpJbhej389$H_;tZHCh%oFwEvgUPSVTf6)`oh_O*Vry-sY!q0Plm_{WSd|M>GLng z)=$=$m|8yN0r@CH%qqPQKl4&k(q!LXX=FRhzi}T5_g|v+5Aa`R_m^GRHg+XlHJ<8o z8{_y#YWvMyOszgm=!P7TM90!MAU9v7pIR7Vh070U2xdW;3%%&s zr0JORNvb@!YPO{>N2T*oFt>iBbF8`~;%yy}@H3LjrpADS5lu)^ztsm!-Nfvi=DtA9 z@DePx$b?y98f)-m5ineht~fq90V<_u=QEQnwYgx`@=>79;s)w0GU|dFnq+(ojsxbu z2lrQpe6RR+S=xHe-DANI6r^#9#j4KL*45WIb(;>l=o(`Hp=po?~@Y1QHbGb!{uX?y(`ycDNK^aKmkajFZmCcB<6xzaSBA^_-4 z7dJ5nmBzS`5L^YRwM|SUa@i`D8(mE#;5xG^MJ+7Mn}volf)xE`6A4(ZOC4Irukl&W zRC%jv7sPBv`jivGKEq9_JL*Hvff5?8{`E!}dxoaRt|v2?T&5y$ep`ob_TTj|>3#55 zHA4u$Zspx>vw?Uj+tN$Fw0~CC-5(ZnqoqoEu4q%8CTE_}=(5GQ2E^a;jEh%;LE znf(2J{$0-Rzg08zumU|kXHDUrQmDnhc2J)h{cWAbdvK1u!g|$^c@X<#5tuLFDaon7 KsE~af_`d+&RW*D7 literal 0 HcmV?d00001 diff --git a/usermods/Power_Measurement/readme.md b/usermods/Power_Measurement/readme.md new file mode 100644 index 0000000000..4df846179c --- /dev/null +++ b/usermods/Power_Measurement/readme.md @@ -0,0 +1,94 @@ +# Voltage and Current Measurement using ESP's Internal ADC + +This usermod is a proof of concept that measures current and voltage using a voltage divider and a current sensor. It leverages the ESP's internal ADC to read the voltage and current, calculate power and energy consumption, and optionally publish these measurements via MQTT. + +## Features + +- **Voltage and Current Measurement**: Reads voltage and current using ADC pins of the ESP. +- **Power and Energy Calculation**: Calculates power (in watts) and energy consumption (in kilowatt-hours). +- **Calibration Support**: Offers calibration for more accurate measurements. +- **MQTT Publishing**: Publishes voltage, current, power, and energy measurements to an MQTT broker. +- **Debug Information**: Provides debug output via serial for monitoring raw and processed data. + +## Dependencies + +- **ESP32 ADC Calibration Library**: Requires `esp_adc_cal.h` for ADC calibration, which is a standard ESP-IDF library. + +## Configuration + +### Pins + +- `VOLTAGE_PIN`: ADC pin for voltage measurement (default: `0`) +- `CURRENT_PIN`: ADC pin for current measurement (default: `1`) + +### Constants + +- `NUM_READINGS`: Number of readings for moving average (default: `10`) +- `NUM_READINGS_CAL`: Number of readings for calibration (default: `100`) +- `UPDATE_INTERVAL_MAIN`: Main update interval in milliseconds (default: `100`) +- `UPDATE_INTERVAL_MQTT`: MQTT update interval in milliseconds (default: `60000`) + +## Installation + +Add `-D USERMOD_CURRENT_MEASUREMENT` to `build_flags` in `platformio_override.ini`. + +Or copy the example `platformio_override.ini` to the root directory. This file should be placed in the same directory as `platformio.ini`. + +## Hardware Example + +![Example Schematic](./assets/img/example%20schematic.png "Example Schematic") + +## Define Your Options + +- `USERMOD_POWER_MEASUREMENT`: Enable the usermod + +All parameters and calibration variables can be configured at runtime via the Usermods settings page. + +## Calibration + +### Calibration Steps + +1. Enable the `Calibration mode` checkbox. +2. Connect the controller via USB. +3. Disconnect the power supply (Vin) from the LED strip. +4. Select the option to `Calibrate Zero Points`. +5. Reconnect the power supply to the LED strip and set it to white and full brightness. +6. Measure the voltage and current and enter the values into the `Measured Voltage` and `Measured Current` fields. +7. Check the checkboxes for `Calibrate Voltage` and `Calibrate Current`. + +### Advanced + +![Advanced Calibration](./assets/img/screenshot%203%20-%20settings.png "Advanced Calibration") + +## MQTT + +If MQTT is enabled, the module will periodically publish the voltage, current, power, and energy measurements to the configured MQTT broker. + +## Debugging + +Enable `WLED_DEBUG` to print detailed debug information to the serial output, including raw and calculated values for voltage, current, power, and energy. + +## Screenshots + +Info screen | Settings page +:-----------------------------------------------------------------------:|:-------------------------------------------------------------------------------: +![Info screen](./assets/img/screenshot%201%20-%20info.jpg "Info screen") | ![Settings page](./assets/img/screenshot%202%20-%20settings.png "Settings page") + +## To-Do + +- [ ] Pin manager doesn't work properly. +- [ ] Implement a brightness limiter based on current. +- [ ] Make the code use less flash memory. + +## Changelog + +19.8.2024 +- Initial PR + +## License + +This code was created by Tomáš Kuchta. + +## Contributions + +- Tomáš Kuchta (Initial idea) \ No newline at end of file diff --git a/wled00/const.h b/wled00/const.h index d5cd049d5e..4eabffd43a 100644 --- a/wled00/const.h +++ b/wled00/const.h @@ -202,6 +202,7 @@ #define USERMOD_ID_LD2410 52 //Usermod "usermod_ld2410.h" #define USERMOD_ID_POV_DISPLAY 53 //Usermod "usermod_pov_display.h" #define USERMOD_ID_PIXELS_DICE_TRAY 54 //Usermod "pixels_dice_tray.h" +#define USERMOD_ID_POWER_MEASUREMENT 55 //Usermod "Power_measurement.h" //Access point behavior #define AP_BEHAVIOR_BOOT_NO_CONN 0 //Open AP when no connection after boot diff --git a/wled00/pin_manager.h b/wled00/pin_manager.h index 2fc0038803..342944568e 100644 --- a/wled00/pin_manager.h +++ b/wled00/pin_manager.h @@ -65,6 +65,7 @@ enum struct PinOwner : uint8_t { UM_MAX17048 = USERMOD_ID_MAX17048, // 0x2F // Usermod "usermod_max17048.h" UM_BME68X = USERMOD_ID_BME68X, // 0x31 // Usermod "usermod_bme68x.h -- Uses "standard" HW_I2C pins UM_PIXELS_DICE_TRAY = USERMOD_ID_PIXELS_DICE_TRAY, // 0x35 // Usermod "pixels_dice_tray.h" -- Needs compile time specified 6 pins for display including SPI. + UM_Power_Measurement = USERMOD_ID_POWER_MEASUREMENT, // 0x32 // Usermod "Power_measurement.h" }; static_assert(0u == static_cast(PinOwner::None), "PinOwner::None must be zero, so default array initialization works as expected"); diff --git a/wled00/usermods_list.cpp b/wled00/usermods_list.cpp index 25d9ee9ab9..5bd6983d7b 100644 --- a/wled00/usermods_list.cpp +++ b/wled00/usermods_list.cpp @@ -182,6 +182,10 @@ #include "../usermods/Internal_Temperature_v2/usermod_internal_temperature.h" #endif +#ifdef USERMOD_POWER_MEASUREMENT + #include "../usermods/Power_Measurement/Power_Measurement.h" +#endif + #if defined(WLED_USE_SD_MMC) || defined(WLED_USE_SD_SPI) // This include of SD.h and SD_MMC.h must happen here, else they won't be // resolved correctly (when included in mod's header only) @@ -470,4 +474,8 @@ void registerUsermods() #ifdef USERMOD_POV_DISPLAY usermods.add(new PovDisplayUsermod()); #endif + + #ifdef USERMOD_POWER_MEASUREMENT + usermods.add(new UsermodPower_Measurement()); + #endif } From 03eb5211ead0d98a6f3f96a1ff4cca9b55c3406f Mon Sep 17 00:00:00 2001 From: Tomas Kuchta Date: Mon, 11 Nov 2024 15:08:09 +0100 Subject: [PATCH 3/3] Refactor Power Measurement usermod: rename kilowatthours to watthours and update calculations --- .../Power_Measurement/Power_Measurement.h | 35 +++++++++++-------- usermods/Power_Measurement/readme.md | 2 +- wled00/usermods_list.cpp | 4 --- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/usermods/Power_Measurement/Power_Measurement.h b/usermods/Power_Measurement/Power_Measurement.h index d54ac790c5..297d007c75 100644 --- a/usermods/Power_Measurement/Power_Measurement.h +++ b/usermods/Power_Measurement/Power_Measurement.h @@ -100,7 +100,7 @@ class UsermodPower_Measurement : public Usermod { float Voltage = 0; float Current = 0; float Power = 0; - unsigned long kilowatthours = 0; + unsigned long watthours = 0; void setup() { analogReadResolution(ADCResolution); @@ -177,6 +177,8 @@ class UsermodPower_Measurement : public Usermod { } + + void pinAlocation() { DEBUG_PRINTLN(F("Allocating power pins...")); if (VoltagePin >= 0 && pinManager.allocatePin(VoltagePin, true, PinOwner::UM_Power_Measurement)) { @@ -222,7 +224,8 @@ class UsermodPower_Measurement : public Usermod { DEBUG_PRINTLN(Power); DEBUG_PRINT("Energy: "); - DEBUG_PRINTLN(kilowatthours); + DEBUG_PRINT(watthours); + DEBUG_PRINTLN(" Wh"); DEBUG_PRINT("Energy Wms: "); DEBUG_PRINTLN(wattmiliseconds); } @@ -287,14 +290,18 @@ class UsermodPower_Measurement : public Usermod { // Calculate energy - dont do it when led is off if (Power > 0) { - unsigned long elapsedTime = millis() - lastTime_energy; - wattmiliseconds += Power * elapsedTime; - } - lastTime_energy = millis(); + unsigned long currentTime = millis(); + unsigned long elapsedTime = currentTime - lastTime_energy; + lastTime_energy = currentTime; - if (wattmiliseconds >= 3600000000) { // 3,600,000 milliseconds = 1 hour - kilowatthours += wattmiliseconds / 3600000000; // Convert watt-milliseconds to kilowatt-hours (1 watt-millisecond = 1/3,600,000,000 kilowatt-hours) - wattmiliseconds = 0; + unsigned long long wattMilliseconds = static_cast(Power) * elapsedTime; + wattmiliseconds += wattMilliseconds; + + // Convert watt-milliseconds to kilowatt-hours + if (wattmiliseconds >= 3600000ULL) { // 3,600,000 milliseconds = 1 hour + watthours += static_cast(wattmiliseconds) / 3600000.0; + wattmiliseconds = 0; + } } } @@ -415,8 +422,8 @@ class UsermodPower_Measurement : public Usermod { Power_json.add(F(" W")); JsonArray Energy_json = user.createNestedArray(FPSTR("Energy")); - Energy_json.add(kilowatthours); - Energy_json.add(F(" kWh")); + Energy_json.add(watthours); + Energy_json.add(F(" Wh")); } void addToConfig(JsonObject& root) { @@ -546,10 +553,10 @@ class UsermodPower_Measurement : public Usermod { dtostrf(Power, 6, 2, payload); // Convert float to string mqtt->publish(subuf, 0, true, payload); - // Publish kilowatthours + // Publish watthours strcpy(subuf, mqttDeviceTopic); - strcat_P(subuf, PSTR("/power_measurement/kilowatthours")); - ultoa(kilowatthours, payload, 10); // Convert unsigned long to string + strcat_P(subuf, PSTR("/power_measurement/watthours")); + ultoa(watthours, payload, 10); // Convert unsigned long to string mqtt->publish(subuf, 0, true, payload); } } diff --git a/usermods/Power_Measurement/readme.md b/usermods/Power_Measurement/readme.md index 4df846179c..edbceb193d 100644 --- a/usermods/Power_Measurement/readme.md +++ b/usermods/Power_Measurement/readme.md @@ -91,4 +91,4 @@ This code was created by Tomáš Kuchta. ## Contributions -- Tomáš Kuchta (Initial idea) \ No newline at end of file +- Tomáš Kuchta (Initial idea and code) \ No newline at end of file diff --git a/wled00/usermods_list.cpp b/wled00/usermods_list.cpp index 115cfe9078..5bd6983d7b 100644 --- a/wled00/usermods_list.cpp +++ b/wled00/usermods_list.cpp @@ -186,10 +186,6 @@ #include "../usermods/Power_Measurement/Power_Measurement.h" #endif -#ifdef USERMOD_POWER_MEASUREMENT - #include "../usermods/Power_Measurement/Power_Measurement.h" -#endif - #if defined(WLED_USE_SD_MMC) || defined(WLED_USE_SD_SPI) // This include of SD.h and SD_MMC.h must happen here, else they won't be // resolved correctly (when included in mod's header only)