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



    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.