[Concours] VMC double flux au doigt et à l'oeil

Bonjour
j’ai depuis 15 ans une VMC double flux duolixMAX, pilotée via une télécommande qui remonte pas mal d’info


mais pas très paramétrable ni domotisable : réduire les ventilateurs quand il n’y a personne, augmenter le débit quand l’humidité monte dans la SDB pour ainsi optimiser la conso. La bébête consommait 50w 24h/24h ! Très utile quand on a tempo en jour rouge ou il faut optimiser sa conso.
j’ai donc démonté la carte interne, regarder la ref des ventilateurs :des embpapast, qui se pilotent par PWM ! bingo c’est pilotable via un ESP.
j’utilise donc une alim 230V/10V qui alimente une carte ESP32 4 relay :

  • les relais me permettent de piloter le bypass et le grand début cuisine
  • 2 sorties pwm pour piloter les ventilateurs (je peux ainsi piloter différemment l’aspiration ou le soufflage de manière à être bien à l’équilibre dans la maison). Il faut utiliser 2 transistors pour convertir le pwm qui sort de l’esp en 3v en pwm 10v. Ce convertisseur se trouve facilement sur Amazon ou alim pour qq euros. C’est souvent utilisé pour convertir le 3.3v en 5v.
  • 2 entrées pour récupérer leur vitesse reel (RPM / rotation par minute)
  • 4 sondes Dallas pour les températures des entrées/sorties d’air de la VMC
  • 3 entrée analogique pour mesurer la tension d’alim + relire les tensions pwm.
    Le tout monte dans un boîtier plastique a l’extérieur de la Vmc pour pouvoir intervenir facilement. Déjà 6 mois que ça tourne sans soucis.

Quelques automatisation pour déclencher un boost Sdb quand l’humidité est élevé, et me prévenir quand les filtres sont salles ( la conso augmente que c’est salle): ca m’a servie hier soir, il y avait un bouchon dans mes gaines → légère surconso détectée par une automatisation

la partie pilotage:


et

la partie contrôle :

et un affichage (image issue d’un autre post :))

code de l’ESP :

esphome:
  name: esp32-vmc
  friendly_name: ESP32-VMC
  on_boot:
    priority: 600
    then:
      - output.set_level:
          id: pwm_extraction
          level: "20%"
      - output.set_level:
          id: pwm_insertion
          level: "20%"
      - switch.turn_off: relais1
      - switch.turn_off: relais2
      - switch.turn_off: relais3
      - switch.turn_off: relais4
esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "1Iq5/NWe6JTwkEOU0hekxBtY9MOoOHs/KgjigJUkD6M="

ota:
  - platform: esphome
    password: "bd190d8325db3f67478f98241d3f373b"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.1.87
    gateway: 192.168.1.1
    subnet: 255.255.255.0
    
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32-Vmc Fallback Hotspot"
    password: "FwtY86Teh3ew"

captive_portal:
web_server: # creates a web server where you can access all this stuff without home assistant (good for debugging or working headless (no HA))
  port: 80
  include_internal: true
  ota: true


#pour sonde Dallas
one_wire:
  - platform: gpio
    pin: 18

sensor:

## tension alim
  - platform: adc
    pin: 34 # entre analogique ADC1_CH6 entree 0-1V
    name: "Alim PWM"
    update_interval: 120s
    filters:
     - sliding_window_moving_average:
         window_size: 10
         send_every: 10
     - multiply: 15.87 # resistance 15k + 220k
  - platform: adc
    pin: 39 # entre analogique ADC1_CH6 entree 0-1V
    name: "Alim PWM out"
    update_interval: 1ms
    filters:
     - sliding_window_moving_average:
         window_size: 10000
         send_every: 10000
     - multiply: 15.87 # resistance 15k + 220k
  - platform: adc
    pin: 36 # entre analogique ADC1_CH6 entree 0-1V
    name: "Alim PWM in"
    update_interval: 1ms
    filters:
     - sliding_window_moving_average:
         window_size: 10000
         send_every: 10000
     - multiply: 15.87 # resistance 15k + 220k



  # Send WiFi signal strength & uptime to HA
  - platform: wifi_signal
    name: WiFi
    update_interval: 120s

  - platform: dht
    pin: 19
    temperature:
      name: "Temperature air SDB "
    humidity:
      name: "Humidity air SDB "
    update_interval: 60s
  - platform: dallas_temp
    address: 0xdc00000e68dd4c28
    name: "VMC temp air insufle"
    id: vmc_temp_air_insufle
    update_interval: 60s
    filters:
    - offset: 0.0
  - platform: dallas_temp
    address: 0x9a00000e6a1aee28
    name: "VMC temp air extrait"
    id: vmc_temp_air_extrait
    update_interval: 60s
    filters:
    - offset: -0.0
  - platform: dallas_temp
    address: 0x2400000e69845128
    name: "VMC air neuf ext"
    id: vmc_temp_air_neuf_ext
    update_interval: 60s
    filters:
    - offset: 0.0
  - platform: dallas_temp
    address: 0xcf00000e6a26a928
    name: "VMC temp vicie ext"
    id: vmc_temp_vicie_ext
    update_interval: 60s
    filters:
    - offset: -0.0
  


  
  - platform: homeassistant
    name: "vmc pwm extraction de HA"
    entity_id: sensor.vmc_pwm_extraction 
    unit_of_measurement: "%"
    accuracy_decimals: 0
    id: vmc_pwm_extraction_de_ha
    on_value:
      then:
        - output.set_level:
            id: pwm_extraction
            level: !lambda |-
              return id(vmc_pwm_extraction_de_ha).state ;            
  - platform: homeassistant
    name: "vmc pwm insertion de HA"
    entity_id: sensor.vmc_pwm_insertion
    unit_of_measurement: "%"
    accuracy_decimals: 0
    id: vmc_pwm_insertion_de_ha
    on_value:
      then:
        - output.set_level:
            id: pwm_insertion
            level: !lambda |-
              return id(vmc_pwm_insertion_de_ha).state ;

  - platform: pulse_counter
    pin:
      number:  21  # Connect to any input PIN on the ESP
      mode:
        input: true
        pullup: true
    unit_of_measurement: 'RPM'
    id: fan_speed_extraction
    name: Fan Speed extraction
    accuracy_decimals: 0
    update_interval: 10s
    filters:
      - multiply: 1  # Depending on how many pulses the fan sends per round - should be 0.5 or 1 - try...
  - platform: pulse_counter
    pin:
      number: 22   # Connect to any input PIN on the ESP
      mode:
        input: true
        pullup: true
    unit_of_measurement: 'RPM'
    id: fan_speed_insertion
    name: Fan Speed insertion
    accuracy_decimals: 0
    update_interval: 10s
    filters:
      - multiply: 1  # Depending on how many pulses the fan sends per round - should be 0.5 or 1 - try...



output:
## commande ventilateur extraction air
  - platform: ledc
    pin: 16
    frequency: 10000 Hz
    channel: 0
    id: pwm_extraction
    #inverted: true
    # my fans stop working below 10% powerful.
    # also they're  powerful and loud, cap their max speed to 80%
    # At 0, actually turn it off, otherwise the power keeps going.
    zero_means_zero: true
    min_power: 0
    max_power: 1
## commande ventilateir insertion air
  - platform: ledc
    pin: 17
    frequency: 10000 Hz
    channel : 5
    id: pwm_insertion
    #inverted: true
    # my fans stop working below 10% powerful.
    # also they're  powerful and loud, cap their max speed to 80%
    # At 0, actually turn it off, otherwise the power keeps going.
    zero_means_zero: true
    min_power: 0
    max_power: 1

switch:
#relais 1
  - platform: gpio
    name: "relais1"
    pin: 32
#    inverted: True
    id: relais1
  - platform: gpio
    name: "relais2"
    pin: 33
#    inverted: True
    id: relais2
  - platform: gpio
    name: "relais3"
    pin: 25
#    inverted: True
    id: relais3
  - platform: gpio
    name: "relais4"
    pin: 26
#    inverted: True
    id: relais4
# bypass (= boost des ventilateur + le volet by pass se ferme)
  - platform: template
    name: "Bypass"
    optimistic: True
    on_turn_on:
      then:
        - switch.turn_on: relais1
        - switch.turn_off: relais2
        - delay: 60s
        - switch.turn_off: relais1
        - switch.turn_off: relais2

    on_turn_off:
      then:
        - switch.turn_on: relais1
        - switch.turn_on: relais2
        - delay: 60s
        - switch.turn_off: relais1
        - switch.turn_off: relais2


# turbo Cuisine (= boost des ventilateur + le volet salle de bain se ferme)
  - platform: template
    name: "turbo Cuisine"
    optimistic: True
    on_turn_on:
      then:
        - switch.turn_on: relais3
        - switch.turn_on: relais4
        - delay: 60s
        - switch.turn_off: relais3
        - switch.turn_off: relais4

    on_turn_off:
      then:
        - switch.turn_on: relais3
        - switch.turn_off: relais4
        - delay: 60s
        - switch.turn_off: relais3
        - switch.turn_off: relais4

Et la partie électronique ( je sais peut mieux faire en routage de fil!) a droite l’entrée 230v et l’alim 230/10v et a gauche l’esp avec ses 4 relais.

11 « J'aime »

Salut, beau projet.
Comment fais tu pour récupérer la vitesse des moteurs ?
Merci.

Bonsoir
Merci
Pour la vitesse les ventilateurs ont une sortie faite pour ça ( 1 pulse par tour) qu’il suffit de mettre sur une gpio de l’esp et de la configurer en mesure pulse_counter

Bonjour

Aurais tu une photo de ton installation pour l’ESP ?

Bonne journée et bonne fête

Bonjour
Je ne suis pas chez moi, je te fais une photo demain! Bonnes fêtes aussi

Bonjour
Photo ajoutée au premier post.

Merci pour les photos. A quoi te servent les résistances que tu as rajouté ?

Bonne journée

Je sais c’est un peu moche…
C’est 3 ponts diviseur de tension (220k et 15k) pour diviser par 16 pour mesurer

  • la tension de mon alim qu il sort du 10v afin de pouvoir la surveiller
  • Les 2 signaux pwm qui sont aussi en 0/10v. Mais là ça marche pas bien car l’adc de l’esp n’est très performant / rapide donc je n’arrive pas en moyennant a mesurer la tension moyenne du pwm. ( La vitesse des ventilo est proportionnelle a cette tension). Via ha et donc les sorties pwm de l’esp je joue sur la rapport cyclique ce qui fait bouger cette valeur moyenne. J’aurais aimé la remesurer pour être sûr de ce qui sort de l’esp. Il existe des adc en i2c qui j’espère font l’affaire, ça sera pour une prochaine évolution m’

Merci pour ta réponse, je cherche a faire quelque chose de similaire sur ma Helios double flux. Mais mes compétences dans les esp ou autres sont très limitées. Donc je cherche des projets similaires a ce que je veux faire et le tiens en fais partie.

Merci et bonne fête

J’ai pas encore eu le temps de faire le schéma mais ça ne saurait tarder ( semaine prochaine normalement).
Pour la partie programmation c’est simple et le forum sera la pour t’aider. Par contre pour les soudures on ne peut pas le faire a distance !
Il te faut aussi un peu de matos pour vérifier que tout va bien ( multimètre, idéalement un oscillo pour voir la gueule du pwm, fer a souder, …).
Tu peux commencer par monter un esp avec 4 sondes dallas pour te familiariser et faire remonter les 4 températures ( une par bouche de ta Vmc) a home assistant. Pour ça il ne te faut que qq composant qui se trouve sur le net ( ali ou autre), y a plein de tuto sur internet.