Variateur de puissance pompe piscine ou pompe à vitesse variable

C’est ce convertisseur ?


Côté Wifi/Ethernet, tu ressors avec quel protocole ? ModbusIP, MQTT, ??

oui, c’est bien celui ci, j’ai bien galérer à le paramétrer pour communiquer avec le logiciel de paramètre de Schneider mais c’est bon, j’ai réussi. Et le protocole c’est du modbus ( le seul compatible pour configurer avec somove), après vu la vitesse de transmition il est possible que je passe en canopen bien plus rapide, mais je ne sais pas si la carte le prendra en charge.

Maintenant c’est avec home assistant que j’ai des erreurs, je n’arrive pas à l’intégrer avec l’intégration modbus. Il ne doit pas manquer grand chose.

Et en ce qui concerne les sensors je cherche une solution ( rapide ) pour récupérer les différentes adresses ( j’ai la liste complète des instructions en pdf ). Et là je me vois mal tout taper à la main. Je vais sûrement créer un post pour ça par ce que je sent bien le truc galère.

Tu veux dire ModbusIP plutôt pour le protocole côté Wifi/Ethernet.
Tu n’as pas besoin de lire/écrire tous les registres Modbus, il faut sélectionner les plus pertinents.
Tu aurais le lien vers le pdf ?

Alors j’ai trouver pour intégrer la passerelle, j’ai utiliser cette intégration via hacs:
Modbus via tcp/ip

Une fois fait je penses qu’il faut créer sa propre config dans le répertoire devices de l’intégration.

Pour le fichier pdf oui je peux mettre le lien:
Tu le trouvera ici: Registre Modbus et Canopen

Oui après c’est sur qu’il ne faut faire que les plus pertinent mais il faut aussi prévoir pouvoir paramétrer certaines choses de l’appareil. Je penses que ce serra la grosse partie.

Et si j’amais oublier, j’ai aussi paramétrer la passerelle pour le MQTT mais je ne sais pas encore comment et quoi publier.

Je vais essayer de créer un fichier yaml aujourd’hui avec cette intégration modbus, au pire j’irais sur le github et discuter avec l’auteur voir si c’est possible d’intégrer le variateur.

Je viens d’y penser mais avec node red peut être plus simple non? Le protocole modbus a l’air d’être bien intégrer mais pas encore fait quoi que ce soit avec….

En fait je ne sais pas qu’est ce qui est le plus efficace et le plus simple à mettre en place

  • côté homeassistant:

    • passer en mqtt
    • passer via nodered
    • passer avec l’intégration modebus
  • côté machine:

    • passer en modbus ( chaque fabriquant a ses propre registre )
    • passer en CanOpen ( plus standardisé et en théorie compatible entre tous les fabriquants )

edit: j’ajoute le lien vers un fichier excel comportant la totaliter des commande en CanOpen.
c’est peut etre hors sujet mais au moins il y a une trace ici.
fichier excel canopen

Bonjour à tous, ce sujet est passionnant et je suis en plein dans cette même réflexion.

Concernant la commande à distance, avez-vous pensé à utiliser un module variateur 0-10v ?

L’avantage par rapport aux contacts secs combinés évoqués plus haut, c’est un controle total sur la fréquence, non ??

Ce type de module permettrait de commander les variateurs chinois présentés plus hauts.

J’ai envisagé d’acheter ce type de variateur aliexpress mais chez moi il y a beaucoup de fourmis et j’ai un peu peur qu’elles fassent leur nid dans le variateur. C’est pourquoi je cherche un produit a minima ip44 mais impossible d’en trouver pour <300€
Si vous en connaissez un (pour pompe de 1,1kW) je suis preneur :slight_smile:

Mais n’ayant pas trouvé je m’oriente vers un appareil tout fait pour piscine tel que celui-ci qui revient finalement moins cher :
# Variateur de vitesse pour pompe piscine - iSaver+ 1.1 Mono
identique à la Varipool 50963

Voici la page de la doc qui nous intéresse concernant la commande à distance :


Il y a évidemment la commande par contact sec, mais également l’entrée analogique (en bas).

Je ne sais pas à quoi correspondent :

  • 10MA
  • S12V
  • SGND

Mais peut être est-ce justement une entrée analogique sur laquelle on pourrait brancher le shelly que j’ai indiqué plus haut ???
Si l’un de vous pouvait m’éclairer, ce serait très sympa.

Merci :slight_smile:

Bonjour « un contrôle total de la fréquence », a mon avis ça ne sert pas à grand chose. Tu n as besoin que de 2 ou 3 mode: le 100% pour éventuellement nettoyer, 60 ou 50 pour l’hiver puis 70 ou 80 pour l’été!
Le variateur que tu proposes est quand même 3 fois plus chère qu’une solution chinoise…
Comme toi j’ai lu la doc mais ça ne parle pas de l’entree analogique.

J’écris pour suivre vos avancées sur le sujet. J’ai bien vu un autre poste sur le isaver, mais pas la conclusion.

Cela ressemble à un morbus non standard

Pour ma pars je penses utiliser le modbus uniquement pour la programmation du variateur,
Et ensuite tout ce qui est pilotage j’utiliserai un esp avec un convertisseur de sortie optoélectroniques, 1 bouton marche, arrêt, 3 vitesse programmée, une sortie pour piloter une lampe UV-C, et un bouton suplementaire pour passer en mode manuel/auto. Je crois qu’il y aurais même assez pour ajouter une sonde de température, un debitmetre ( important pour ma lampe uv ) et 1 ou 2 ventilos suplementaire pour refroidir en cas de forte chaleur ( le miens est dans un coffret ). Je réserve la place pour y installer les sonde I2C de chez atlas scientific.

Le pcb avec 8 sorties sur optocoupleur:

Sinon pour ne pas cité de nom tu peux aller sur LBC, il y a pas mal de bonnes affaires,

Perso j’éviterais les marques chinoises, faut pas oublier que a l’autre bout il y a des personnes, je conseil même de mettre un départ spécifique dans le tableau avec une protection de 10ma, par ce que 30ma dans l’eau c’est juste inutile car en cas de problèmes les personnes sont déjà plus de ce monde.

Pour ma pars je me suis résolu à n’utiliser le modbus UNIQUEMENT pour programmer la machine, j’utiliserais un esp32 comme énoncer juste au dessus. C’est à mon avis plus simple et sans prise de tête; cette il n’y a pas toutes les données mais le but c’est aussi que cela reste pratique et simple à l’utilisation.

Bonjour,

j’ai également acheté un NFLixin 9600 pour piloter ma pompe [KRIPSOL KS75] (3/4cv donnée pour 11,5m3/h) trop puissante.

La charge Filtrante Bayrol achetée préconise une vitesse de passage dans le filtre entre 15 et 30m/s, ce qui correspond à 3 m3/h ~6 m3/h, alors que je suis à 10m3/h (testé avec remplissage bassine).

J’ai branché le variateur (mono-mono) et j’arrive à faire varier la vitesse à 35hz, ce qui correspond à 6m3/h.

Néanmoins, j’ai plusieurs problème :

  • La montée en fréquence au démarrage est trop lente, et le moteur à du mal à démarrer, et parfois fait disjoncter le thermique avant d’avoir atteint les 45hz nécessaire au démarrage. J’ai la notice, mais j’ai du mal à comprendre quel paramêtre je dois modifier (il y en a une sacré liste…)
  • Je souhaiterai qu’au démarrage (j’ai un relais simple Sonoff qui alimente la pompe, et donc maintenant le Variateur), le variateur s’enclenche tout seul à 50hz assez rapidement pendant quelque seconde, puis se stabilise à 35hz sans autre intervention de ma part.

Savez-vous quel paramètre permettrait de faire cela ?

Attention, il ne faut pas que ton Sonoff alimente directement le variateur. En effet il met un certain temps à s’initialiser.

Le variateur doit être alimenté en permanence en 230V AC.
Le variateur peut ensuite être démarré à l’aide d’un contact sec.

Ok, merci pour le conseil. Apriori, il me faudrait câbler le contact du SONOFF entre le DCOM et le X1 ?

bonjour
si tu installes un variateur pour aussi faire des eco d’energie, alors il ne faut pas le connecter en permanence au secteur ! il te faut une prisse connecté pour le couper ou le mettre en route, puis qq seconde plus tard activer la sortie du variateur (a l’aide de contacte sec). si ton moteur a du mal a démarrer l’ideal serais de le démarrer à 50htz pdt qq seconde puis le descendre a 35hz, mais pour cela il te faut plus de relais pour contacte sec.

Bonjour,
ayant moi même une pompe hayward, et je serais intérréssé par ta config
Merco

Salut,

La pompe est pilotable par des contacts secs : marche-arrêt, vitesses 1, 2 et 3. Sur mon modèle, j’ai 4 fils qui sortent du boitier pour ce pilotage. Je n’ai pas utilisé (et vus) de prise RJ45 sur mon modèle.

En été je fais marcher la pompe 20 heures sur 24 : en général vitesse 1 sauf 1 heure en vitesse 2 en milieu de journée (pour enlever les saletés en surface).

J’ai dans le local piscine un IPX800. Mais si tu as un cable réseau tu peux utiliser une carte relai éthernet qui sera moins chère :

En espérant que cela réponde à tes questions.
@+

attention, si il chauffe au demarrage c’est que tu n’as pas rentrer les bonnes valeurs de ta plaques signaletique, il est tres imortant de mettre :

  • la tension nominale ( bien faire la difference entre 220/230/etc )
  • l’intensité nominale en A
  • le rendement
  • chez Schneider il est même possible de rentrer la valeur des résistances des enroulement ( mesure a froid)
    cela permet au variateur de voir si il y a un problème ( surchauffe )
    de plus si ton moteur est un mono en règle générale il faut une fréquence minimale sinon il aura du mal a se lancer.
  • autre chose: a vitesse trop basse le moteur a tendance a chauffer il faut donc lui ajouter un ventilateur supplémentaire piloté via une sonde ntc.

Pour ceux que cela intéresse, je peu partager mon code esp home pour:

  • récupérer la vitesse de rotation du moteur ( capteur optique )
  • récupérer la température du moteur ( sonde NTC )
  • récupérer le débit de filtration ( capteur effet hall )
  • piloter 2 ventilateurs ( pour refroidir le moteur a basse vitesse )
  • piloter le moteur via contact sec ( vitesse prérégler en Modbus)
  • alimenter la lampe uvc sur certaines vitesse
substitutions:
  name: esphome-web-c52254
  friendly_name: ESP piscine
  # Pins GPIO
  gpio_pompe_arret: '26'
  gpio_pompe_marche: '18'
  gpio_lampe_uvc: '33'
  gpio_pompe_v1: '19'
  gpio_pompe_v2: '23'
  gpio_pompe_v3: '27'
  gpio_fan1: '14'
  gpio_fan2: '32'  # Changement de GPIO 15 à GPIO 32
  gpio_pulse_counter: '17'
  gpio_debit_filtration: '35'  # Changement de GPIO 32 à GPIO 35
  # Autres valeurs
  freq_pwm: '25000Hz'

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  name_add_mac_suffix: false
  project:
    name: esphome.web
    version: '1.0'

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

# Allow Over-The-Air updates
ota:

# Allow provisioning Wi-Fi via serial
improv_serial:

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

# In combination with the `ap` this allows the user
# to provision wifi credentials to the device via WiFi AP.
captive_portal:

# Sets up Bluetooth LE (Only on ESP32) to allow the user
# to provision wifi credentials to the device.
esp32_improv:
  authorizer: none

# To have a "next url" for improv serial
web_server:

time:
  - platform: sntp
    id: sntp_time
    timezone: Europe/Paris

i2c:
  sda: 21
  scl: 22
  scan: true
  id: bus_a

globals:
  - id: filtration_time
    type: int
    restore_value: yes
    initial_value: '0'

interval:
  - interval: 1min
    then:
      - if:
          condition:
            switch.is_on: pompe_marche
          then:
            - lambda: |-
                id(filtration_time) += 1;
                ESP_LOGD("Filtration Time", "Filtration Time: %d minutes", id(filtration_time));

  - interval: 24h
    then:
      - lambda: |-
          id(filtration_time) = 0;
          ESP_LOGD("Filtration Time", "Filtration Time Reset");

sensor:
  - platform: template
    name: "Filtration Time"
    id: filtration_time_sensor
    # Convert to hours
    lambda: |-
      return id(filtration_time) / 60.0;
    unit_of_measurement: "h"
    accuracy_decimals: 2
    update_interval: 60s

  - platform: wifi_signal
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"

  - platform: copy
    source_id: wifi_signal_db
    name: "WiFi Signal Percent"
    filters:
      - lambda: "return min(max(2 * (x + 100.0), 0.0), 100.0);"
    unit_of_measurement: "%"
    entity_category: "diagnostic"

  - platform: internal_temperature
    name: "Temperature ESP"

  - platform: pulse_counter
    name: "Vitesse moteur"
    id: pump_speed
    unit_of_measurement: 'RPM'
    pin:
      number: GPIO${gpio_pulse_counter}
      inverted: true
      mode: INPUT_PULLUP
    update_interval: 1s

  - platform: pulse_counter
    name: "Débit filtration"
    icon: mdi:water
    id: water_speed
    unit_of_measurement: 'l/mn'
    filters:
      - lambda: "return x / (45.0 / 100.0);"
    pin:
      number: GPIO${gpio_debit_filtration}
      inverted: false
      mode: INPUT
    update_interval: 3s
  
  - platform: adc
    pin: GPIO34
    name: "NTC Sensor Raw Value"
    id: ntc_raw_value
    update_interval: 10s
    filters:
      - multiply: 3.3  # Assuming 3.3V reference voltage

  - platform: resistance
    sensor: ntc_raw_value
    configuration: UPSTREAM
    resistor: 10000  # Resistance of the reference resistor in ohms
    name: "Resistance of NTC"
    id: resistance_of_ntc

  - platform: ntc
    sensor: resistance_of_ntc
    name: "Temperature NTC"
    id: ntc_temp
    calibration:
      b_constant: 3950
      reference_resistance: 10000
      reference_temperature: 25°C
    on_value_range:
      - above: 30
        then:
          - fan.turn_on: fan_1
          - fan.turn_on: fan_2
          - logger.log: "Fans turned on due to high temperature (NTC)"
      - below: 25
        then:
          - fan.turn_off: fan_1
          - fan.turn_off: fan_2
          - logger.log: "Fans turned off due to low temperature (NTC)"

output:
  - platform: ledc
    pin: GPIO${gpio_fan1}
    id: pwm_fan1
    frequency: ${freq_pwm}

  - platform: ledc
    pin: GPIO${gpio_fan2}
    id: pwm_fan2
    frequency: ${freq_pwm}

fan:
  - platform: speed
    output: pwm_fan1
    name: "Fan 1"
    id: fan_1

  - platform: speed
    output: pwm_fan2
    name: "Fan 2"
    id: fan_2
    
switch:
  - platform: gpio
    pin: GPIO${gpio_pompe_arret}
    name: "pompe_arret"
    id: pompe_arret

  - platform: gpio
    pin: GPIO${gpio_pompe_marche}
    name: "pompe_marche"
    id: pompe_marche

  - platform: gpio
    pin: GPIO${gpio_lampe_uvc}
    name: "lampe_uvc"
    id: lampe_uvc
    interlock: 
      - pompe_v3
    
  - platform: gpio
    pin: GPIO${gpio_pompe_v1}
    name: "pompe_v1"
    id: pompe_v1
    internal: true
    interlock: 
      - pompe_v2
      - pompe_v3
    disabled_by_default: true

  - platform: gpio
    pin: GPIO${gpio_pompe_v2}
    name: "pompe_v2"
    id: pompe_v2
    internal: true
    interlock: 
      - pompe_v1
      - pompe_v3
    disabled_by_default: true

  - platform: gpio
    pin: GPIO${gpio_pompe_v3}
    name: "pompe_v3"
    id: pompe_v3
    internal: true
    interlock: 
      - pompe_v1
      - pompe_v2
      - lampe_uvc
    disabled_by_default: true

select:
  - platform: template
    name: "Vitesse pompe"
    options:
      - "Off"
      - "V1"
      - "V2"
      - "V3"
    id: vitesse_pompe
    initial_option: "Off"
    optimistic: true
    on_value:
      then:
        - if:
            condition: 
              lambda: "return id(vitesse_pompe).state == \"Off\";"
            then:
              - logger.log: "All outputs OFF"
              - switch.turn_off: pompe_arret
              - switch.turn_off: pompe_marche
              - switch.turn_off: pompe_v1
              - switch.turn_off: pompe_v2
              - switch.turn_off: pompe_v3
              - switch.turn_off: lampe_uvc
        - if: 
            condition:
              lambda: "return id(vitesse_pompe).state == \"V1\";"
            then:
              - logger.log: "V1 selected"
              - switch.turn_on: pompe_arret
              - switch.turn_off: pompe_v3
              - switch.turn_off: pompe_v2
              - switch.turn_on: pompe_marche
              - switch.turn_on: pompe_v1
              - switch.turn_on: lampe_uvc
        - if: 
            condition:
              lambda: "return id(vitesse_pompe).state == \"V2\";"
            then:
              - logger.log: "V2 selected"
              - switch.turn_on: pompe_arret
              - switch.turn_off: pompe_v1
              - switch.turn_off: pompe_v3
              - switch.turn_on: pompe_marche
              - switch.turn_on: pompe_v2
              - switch.turn_on: lampe_uvc
        - if: 
            condition:
              lambda: "return id(vitesse_pompe).state == \"V3\";"
            then:
              - logger.log: "V3 selected"
              - switch.turn_on: pompe_arret
              - switch.turn_off: lampe_uvc
              - switch.turn_off: pompe_v1
              - switch.turn_off: pompe_v2
              - switch.turn_on: pompe_marche
              - switch.turn_on: pompe_v3

A l’heure actuelle je n’ai pas encore intégrer les sondes de PH, ORP, température, EC.
réaliser en grosse partie avec chatGPT

1 « J'aime »

J’ai corriger mon code car j’avais omis de mettre le contact arrêt en marche car sécurisé sur le Schneider.

Pour le capteur de débit avec le capteur de rotation du moteur certains vont me dire que c’est pas nécessaire, oui ça ne l’est pas mais ça permet de pouvoir calculer la vitesse qui donne le meilleur rendement, je penses que j’ajouterais un truc qui permettrais de calculer le meilleur M3/h x Watt, ce qui permettrais d’identifier la vitesse correspondante, pour le moment je ne peux pas encore afficher de courbe car j’attend le débitmètre.

Pour ce qui est de la lampe UV-C j’ai désactivé à haute vitesse car: pas assez efficace à partir d’un certains débit, de plus j’utilise la grande vitesse pour aspirer les saleté au fond de la piscine donc généralement en mode égout, du coup plus d’eau ne circule dans la lampe.