Pompa IBO AMG PWM

Co do wyłączenie PWM i 3 biegu to niestety ta pompa tak ma, też ubolewam nad tym że w jakiś magiczny sposób nie da się wybrać np. 1 bieg.

Tak w wielkim skrócie, da się bez problemu wyłączyć przez PWM, jak instrukcja głosi → 95<PWM<=100 Tryb czuwania: wyłączony.
Przykład:

switch:
# Test pompa PWM OFF
  - platform: template
    id: pompa1_pwm_50_off
    name: "Pompa 1 50%-OFF"
    icon: mdi:engine
    restore_mode: RESTORE_DEFAULT_ON
    turn_on_action:
      - switch.template.publish:
          id: pompa1_pwm_50_off
          state: ON
      - lambda: |-
          id(ledc_pump1).set_level(0.63);
    turn_off_action:
      - switch.template.publish:
          id: pompa1_pwm_50_off
          state: OFF
      - lambda: |-
          id(ledc_pump1).set_level(1);

ważne jest wypełnienie pwm w zakresie 0.96 - 1 (id(ledc_pump1).set_level(0.96) lub id(ledc_pump1).set_level(1))
W przykładzie gdy włączam pompę ustawiam na około 50%, oczywiście gdy off można sobie zachować poziom i przywrócić podczas włączenia.

gdzie ledc_pump1 to

output:
# Ppompa 1
  - platform: ledc
    pin: 26
    frequency: 1000Hz
    id: ledc_pump1
  - platform: template
    id: custom_fan_pump1
    type: float
    write_action:
      - lambda: |-
          if (id(on_boot_pump1)) {
            id(on_boot_pump1) = false;
            return;
          }
          float in_min = 0.01;
          float in_max = 1.0;
          float out_min = 0.84;
          float out_max = 0.42;
          id(fan_pump1_state) = state > 0;
          float value = state == 0 ? 0 : (state - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
          ESP_LOGD("debug", "pwm1_value=%f", value);
          id(ledc_pump1).set_level(value);

fan:
# Ppompa 1
  - platform: speed
    id: fan_pump1
    output: custom_fan_pump1
    name: "Pompa 1 PWM"

ja odczytuję jeszcze dane z pompy i dla poboru w tym przypadku pokazuje mi 96W (pewnie związek z wypełnieniem pwm) trzeba by jeszcze to uwzględnić żeby do HA wysyłało ładnie 0W ew po stronie HA

1 Like

Wczoraj już to przetestowałem robiąc podobnie switch, mi też pokazywało 96W więc poprawiłem

else if (id(pump1_power).state > 94 && id(pump1_power).state < 96) {
            id(pump1_status).publish_state("Tryb gotowości przez sygnał PWM (STOP)");
            id(pump1_power).publish_state(0);

Dodałem od razu przyciski do pozostałych trybów, natomiast muszę jeszcze doczytać co dokładniej robi tryb “obszar histerezy”.
Ustawiałem sygnał po środku przedziału czyli dla off 0.97.
Rozumiem że

float out_max = 0.10;

to wartość najmniejszych obrotów pompy, ale u mnie czy jest 0.10 czy 0.40, pompa pracuje podobnie. Jak więc najlepiej ustawić tą wartość?

1 Like

Obszar histerezy nie mam pojęcia. Co do out_max to już nie pamiętam, chyba eksperymentalnie.

Jak poprawić ten fragment, aby zwracany był tylko realny pobór prądu, czyli aby nie pokazywało wartości > 70. Obecnie jak pompkę przełączę w tryb gotowości to pokazuje mi pobór 96W.

Hello Artur,

thanks a lot for the helpful information. I got my IBO pump (same as yours) working with your configuration. However, there is one serious problem: the speed of the pump is not constant, it is always fluctuating and even stops for a few seconds frequently. I tried with 4,7kOhm resistor on the converter, with 10kOhm resistor and even without resistor, but I cannot get it working constantly. Has anybody experienced that as well? Any ideas what the problem could be?

Many thanks in advance!

Thomas

  - platform: duty_cycle
    pin:
      number: 23
      mode: INPUT_PULLUP
    id: pump2_power_internal
    name: Pompa obiegowa CO 2 pobór internal
    internal: true
    update_interval: 5s
    accuracy_decimals: 0
    device_class: "power"
    unit_of_measurement: 'W'       
    on_value:
      - lambda: |-
          ESP_LOGD("pompa_co2", "state=%f", id(pump2_power_internal).state);
          if (id(pump2_power_internal).state == 0 && id(pump2_stop_pwm) == 0) {
            id(pump2_status).publish_state("Wyłączona");
          }
          else if (id(pump2_power_internal).state > 74 && id(pump2_power_internal).state < 76) {
            id(pump2_status).publish_state("Ostrzeżenie");
          }
          else if (id(pump2_power_internal).state > 84 && id(pump2_power_internal).state < 86) {
            id(pump2_status).publish_state("Zatrzymanie alarmowe, awaria elektryczna");
          }
          else if (id(pump2_power_internal).state > 89 && id(pump2_power_internal).state < 91) {
            id(pump2_status).publish_state("Zatrzymanie alarmowe, blokada");
          }
          else if (id(pump2_power_internal).state >= 94 && id(pump2_power_internal).state < 96) {
            id(pump2_status).publish_state("Tryb gotowości przez sygnał PWM (STOP)");
            id(pump2_stop_pwm) = 1;
          }
          else if (id(pump2_power_internal).state >= 100) {
            id(pump2_status).publish_state("Wyłączona");
            id(pump2_stop_pwm) = 0;
          }
          else {
            if (id(fan_pump2_state)) { 
              id(pump2_status).publish_state("PWM"); 
              id(pump2_stop_pwm) = 0;
          }
            else if (id(pump2_stop_pwm) == 0)
            { id(pump2_status).publish_state("Ręczny"); }
          }


  - platform: copy
    id: pump2_power
    source_id: pump2_power_internal
    name: Pompa obiegowa CO 2 pobór
    accuracy_decimals: 0
    device_class: "power"
    unit_of_measurement: 'W'
    filters:
      - lambda: |-
          return x > 70.0 ? 0.0 : x;

Jak zrobisz filtrowanie w pierwotnym sensorze, to statusy po PWM nie będą aktualizowane. W tym wypadku należy wykorzystać sensor copy.

1 Like

Connect pwm signals to esp without level converter.

a powiedz z jakiego transoptora korzystałeś i czy na powrocie sygnału PWM też coś montowałeś czy bezpośrednio pod pin w esp podłączyłeś?. Możesz podesłać link???

bo z esp masz maksymalnie 3,3v (0-3,3v) a pwm pompy jest 0-5V

bo użyłeś pompy do CO a nie do solarów. one mają odwrotne charakterystyki

Cześć. Robię sterownik do tej pompki. Sterowanie PWM działa, ale za chorobę nie mogę odczytać sygnału zwrotnego. Czy ktoś może mi na schemacie pokazać jak to podłączyć? Dodam, że w aktualnej instrukcji jest informacja o akceptowanym poziomie wejściowym 3V - i chodzi sterownie z 3.3V bez żadnego konwertera poziomów. Pytanie jak to podłączyć żeby coś przeczytać. W tej chwili mam na zółtym przewodzie 0V :frowning:

Ponieważ wyjście jest typu OC i wymaga rezystora podciągającego.
Patrz na schemat str.13

Gdy podłączysz rezystor 10kOhm do wyjścia i +3.3V wtedy coś zmierzysz.

dzięki :slight_smile: teraz działa