Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!
  • Fermate
    Fermate

    ESP32/MQTT Viftestyring (4)

    Her er basis kode for PWM styring av en PC vifte:

     

    Sitat
     // fan PWM
    const int pwmFanPin           = GPIO_NUM_14;
    const int pwmFanFreq          = 25000; // 25kHz for PC vifter
    const int pwmFanChannel       = 0; //PWM Kanal
    const int pwmFanResolution    = 8;
    int iFanSpeed =1; // Init speed

     

    void setup() {

     

      // configure Fan PWM
      ledcSetup(pwmFanChannel, pwmFanFreq, pwmFanResolution);
      // attach the channel to the GPIO to be controlled
      ledcAttachPin(pwmFanPin, pwmFanChannel);
      // Init speed
      ledcWrite(pwmFanChannel, iFanSpeed);
    }

     

    void loop() {
        // Sett ønsket hastighet fra 0 - 255
     
        iFanSpeed= 255;
        ledcWrite(pwmFanChannel, iFanSpeed);
     }

     

    Mange PC vifter kan en styre hastigheten på, men ikke alle. Dersom vifta har 4 kabler (og ikke bare 3) kan den styres. Lederne er:

    • 12V
    • Jord
    • PWM (plus bredde modulasjon) styresignal inn
    • Puls informasjon om hvor fort vifta faktisk går (Tach)

     

    pins - Is the PWM rail of a 4pin pwm Computer fan Positive ...

     

    PC vifter har PWM signal på 25kHz (antakeligvis for at en ikke skal kunne høre den med ørene) og tidligere var det litt klønete å få til med en Arduino, men med en ESP32 går det som en lek.

    Vi bruker en av de 6-16 (avhengig av ESP32 type) innebyggede PWM kanalene i ESP32'en og styrer dette med noen få linjer kode.

     

    Her er koden satt inn for å styre vifta fra MQTT:

     

    Sitat
    #include <EspMQTTClient.h>

     

    // fan PWM

     

    const int pwmFanPin           = GPIO_NUM_14;
    const int pwmFanFreq          = 25000; // 25kHz for PC vifter
    const int pwmFanChannel       = 0; //PWM Kanal
    const int pwmFanResolution    = 8;
    int iFanSpeed =1; // Init speed

     

    //MQTT

     

    EspMQTTClient MQTTclient(
      "ThePromisedLAN", // SSID
      "Hallelujah!", // WiFi Password
      "192.168.1.2",  // MQTT Broker server ip
      "",   // MQTTUsername Can be omitted if not needed
      "",   // MQTTPassword Can be omitted if not needed
      "vifteClient",     // Client name that uniquely identify your device
      1883              // The MQTT port, default to 1883. this line can be omitted
    );

     

    void setup() {

     

      Serial.begin(115200);

     

      // configure Fan PWM

     

      ledcSetup(pwmFanChannel, pwmFanFreq, pwmFanResolution);
      // attach the channel to the GPIO to be controlled
      ledcAttachPin(pwmFanPin, pwmFanChannel);
      // Init speed
      ledcWrite(pwmFanChannel, iFanSpeed);

     

     // MQTTclient.setKeepAlive();

     

     MQTTclient.setKeepAlive(60);

     

    }

     

     

    void loop() {

     

        MQTTclient.loop();
     
      }

     

    void onConnectionEstablished()

     

     {
     Serial.println("onConnectionEstablished");
     MQTTclient.publish("vifteClient/status", "started");   // Denne MÅ ikke være med

     

      MQTTclient.subscribe("vifteClient/fanSpeed", [](const String & payload) {

     

       Serial.print("fanSpeed: ");
       Serial.println(payload);
       iFanSpeed=payload.toInt();
       iFanSpeed= map(iFanSpeed,0,100,0,255); // la den går fra 0 til 100 istedet for 0 til 255
       ledcWrite(pwmFanChannel, iFanSpeed);
      });
      }

     

    Det er også mulig å LESE den REELLE hastigheten på vifta ved å telle pulser fra den siste ledningen fra PC vifta men det må bli en annen gang. 

     

    OBS:

    • Pulsene fra vifta er 12V og vil skade ESP32 om de kobles direkte.
    • Det er ofte 2 eller 4 pulser / rotasjon

    Brukertilbakemelding

    Anbefalte kommentarer

    Kanskje dette er løsningen jeg er på utkikk etter.. Jeg tok litt for mye møllers tran, og kjøpte to Noctura-vifter til nettverksskapet mitt på 3000rpm. Disse bråker mer enn ventilasjonanlegget inne på teknisk rom, og såpass at det ble en del mer sjenerende enn jeg så for meg. Så jeg må finne en enkelst mulig måte å styre hastigheten på disse, men ESP32 og MQTT har jeg aldri vært borti.
     

    Lenke til kommentar
    Del på andre sider

    OlavT skrev (På 27.1.2024 den 8.37):

    Har du skrevet noe om hvordan dette skal kobles?


    Nei jeg har ikke gjort dette selv så jeg bare nevnte det på slutten. (Jeg trengte ikke dette da jeg hadde prosjektet på gang)

    Jeg har en følelse av at noen vifter sender disse pulsene som 12V og at de må ha en motstand eller to for å ta spenningen ned til 3,3V for ikke å svi av ESP32en.

    Har en vag følelse av at jeg målte 12V med et multimeter.


    Men andre steder står det at pulsene kommer som kobling mot ground og at de trenger en pullup resistor.

    Det siste er jo unødvendig siden sensor pinnen kan defineres med pinMode( X, INPUT_PULLUP )

     

    Si gjerne ifra om du finner ut noe så oppdaterer jeg guiden.

     

    Im_IB skrev (På 27.1.2024 den 1.03):

    Så jeg må finne en enkelst mulig måte å styre hastigheten på disse, men ESP32 og MQTT har jeg aldri vært borti.


    Du trenger jo ikke MQTT for dette da. Bruk et Potensiometer sammen med ESP32en for å regulere hastigheten.
    Goggle så finner du eksempler på dette.

    • Thanks 1
    Lenke til kommentar
    Del på andre sider

    On 02/02/2024 at 14:39, Fermate said:

    Si gjerne ifra om du finner ut noe så oppdaterer jeg guiden.


    Veldig bra utgreiing om viftestyring.
    Bruker du Arduino IDE?

    Disse 2 epistlene forteller mye om dette med signalgangen angående PWM og Tacho.
    https://noctua.at/pub/media/wysiwyg/Noctua_PWM_specifications_white_paper.pdf
    https://www.intel.com/content/dam/support/us/en/documents/intel-nuc/intel-4wire-pwm-fans-specs.pdf
    Håper dette er det du trenger for eventuelt å videreføre prosjektet til å inkludere Tacho avlesning.

    Setpunkt / Feedback er jo alltid greit å holde styr på i et regulert system.
     

     

    On 27/01/2024 at 01:03, Im_IB said:

    men ESP32 og MQTT har jeg aldri vært borti.

     

    Om du ikke ønsker å involvere deg i ESP per. nå så kan kanskje det enkleste for øyeblikket være å justere ned supply spenningen til vifta.
    Jeg har i ei 4x4x1cm 12 V Noctua vifte uten PWM styring(3 pins) som nå spinner stille og rolig på 9,5V / 0,02A og holder Pi’en på 35’ish C.
    Forøvrig så kommer enkelt av Noctua viftene med ekstra "kabler" som jeg tror gjør akkurat dette. 
    Disse er benevnt: Low-Noise Adaptor og/eller Ultra Low-Noise Adaptor.
    Muligens dette er kun for vifte uten PWM styring(3 pins).

    Om du derimot skulle ønske å involvere deg i ESP verdenen så kan du kanskje tenke at en temperatur sensor (feks DS18B20) leser temp og justerer vifta.
    Se Fermante sin post her :

     

    Eventuellt bytte ut DS18B20'en med en sensor som måler både temperatur og fuktighet feks DHT11 bare for å nevne en.
    Om du bruker Arduino IDE er www. fullt av eksempler for dette og Arduino IDE er enklere å komme i gang med enn andre.
    Det er jo også et eget forum om ESP: https://www.hjemmeautomasjon.no/forums/forum/103-mikrokontrollere/
     

    Om du har videre spørsmål rundt dette så tenker jeg at basert på denne posten er nok Fermante mye bedre istand til å hjelpe deg videre på vegen enn meg.
    Ikke det at jeg nekter å svare altså. Kan jeg være til noen hjelp så selvfølgelig.
     

    Endret av Per-Chr
    • Like 1
    Lenke til kommentar
    Del på andre sider

    Per-Chr skrev (På 14.6.2024 den 20.53):

    Veldig bra utgreiing om viftestyring.

     Takk
     

    Per-Chr skrev (På 14.6.2024 den 20.53):

    Bruker du Arduino IDE?


    ja, jeg burde jo egentlig bruke Visual Studio (som jeg bruker på jobb) men du vet, det var det å ta seg tid til å sette det opp da.... 😉
    (Noen brukde skrive en guide...)

     

    Per-Chr skrev (På 14.6.2024 den 20.53):

    Disse 2 epistlene forteller mye om dette med signalgangen angående PWM og Tacho.
    https://noctua.at/pub/media/wysiwyg/Noctua_PWM_specifications_white_paper.pdf
    https://www.intel.com/content/dam/support/us/en/documents/intel-nuc/intel-4wire-pwm-fans-specs.pdf
    Håper dette er det du trenger for eventuelt å videreføre prosjektet til å inkludere Tacho avlesning.


    Dette ser velig bra ut. Skal vurdere det til høsten når all reising er over og jeg kommer i smarthus-fikle-modus igjen.

    Takk!

    Lenke til kommentar
    Del på andre sider

    On 01/07/2024 at 14:29, Fermate said:

    ja, jeg burde jo egentlig bruke Visual Studio (som jeg bruker på jobb) men du vet, det var det å ta seg tid til å sette det opp da.... 😉
    (Noen brukde skrive en guide...)

     

    Om du fortsetter med Arduino IDE er det veldig kjekt for oss som er på begynner stadiet og ikke har vært borti Visual Studio før og som definitiv ville trenge en guide. 

    • Like 1
    Lenke til kommentar
    Del på andre sider

    Har slitt såpass mye med Arduino IDE siste året (noen bibliotek jeg enten ikke har eller har dobbelt opp av) selv etter full sletting og reinstallering at jeg så meg nødt til å bruke MicroPython på mitt siste ESP32 prosjekt...

     

    MicroPython/Thonny er nok en del mer begrenset men det funker i alle fall fint til MQTT o.l....

    Lenke til kommentar
    Del på andre sider

    17 hours ago, SveinHa said:

    Har slitt såpass mye med Arduino IDE siste året (noen bibliotek jeg enten ikke har eller har dobbelt opp av) selv etter full sletting og reinstallering

     

    Jeg kom over en tråd tror det var på Arduino forumet om noe lignende.
    Mener det gjaldt biblioteker som var lagret både her og der samt dobbelt opp og lang nedi obskure mappe strukturer.
    Om jeg ikke husker feil så var medisinen å installere Arduino IDE som ”portabel” fordi da ble dette lagret ”lokalt” i den mappa, og ikke ”all over”.
    Med alle forbehold om mulig ”memory corruption” på min side!
     

    Edit:

    ”portabel” installasjonen skal visstnok også gjøre ny installering / oppgradering enklere ved at man kopierer ”portabel” mappa over og da får med seg ”gamle synder”.

    Endret av Per-Chr
    • Like 1
    Lenke til kommentar
    Del på andre sider



    Bli med i samtalen

    Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

    Gjest
    Skriv en kommentar...

    ×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

      Du kan kun bruke opp til 75 smilefjes.

    ×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

    ×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

    ×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.




×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.