Steuerung der Lüftungsanlage Pluggit Avent P300

Begonnen von SvenJust, 24 April 2014, 13:37:15

Vorheriges Thema - Nächstes Thema

Starsurfer

Nur die Temperaturen jeweils eine Zeile nach unten.
Ansonsten ist alles gleich, komme da auch die nächsten Tage nicht zu. Terminkalender ist voll.
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

SvenJust

Hallo,

für die Gestaltung der Bedienoberfläche würde ich mich gerne auf ein Display mit der Auflösung 480x320 festlegen. Wenn das Gerät bedient werden soll, ist vermutlich ein Touch-Display am einfachsten zu realisieren. Diese Touchdisplays kosten etwa 10 Euro und man benötigt keine weiteren Hardware-Taster.

Beim Suchen nach Bedienkonzepten, habe ich die folgende Seite gefunden: http://kll.engineering-news.org/kllfusion01/articles.php?article_id=37
Bei dem dort vorgestellten Konzept stehen rechts Softbuttons zur Verfügung, über die Eingaben gemacht werden können.

Da ich keine Erfahrung mit Bedienoberflächen auf dem Arduino habe, habe ich erstmal ein Bild gemalt, wie der Standardbildschirm später aussehen könnte. In der Mitte leuchtet in Großschrift die aktuelle Lüftungsstufe, darunter stehen die Temperaturen und Lüfterdrehzahlen für die verschiedenen Luftströme. Der erste Button (->) blättert auf die nachfolgende Bildschirmseite. Button Nummer drei (+) erhöht die Lüftungsstufe, Button Nr. vier verringert die Lüftungsstufe.

Die verschiedene Farben können per define definiert werden, so lassen sie einfach unterschiedliche Farbkonzepte realisieren.

Weitere Bildschirme für das Einstellen der Lüfterdrehzahl in der Standardlüftungsstufe und das Starten der Kalibrierung lassen sich hinzufügen.

Ob sich die Idee der Bedienoberfläche so technisch umsetzen lässt, dass die Anzeige ausreichend schnell ist, weiß ich noch nicht, ich vermute aber, dass man dies mit der aktuellen Hardware lösen kann.

Was denkt ihr dazu?

VG Sven
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

Starsurfer

Sieht doch schick aus.
Ich habe schon einmal versucht ein Menü zu schreiben, bin da aber nicht wirklich weitergekommen und muß da passen. Zumal ich auch einen TFT ohne Touch habe.
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

Edelsteine

Tolle Idee, Touchdisplay macht die Bedienung intuitiver. In dieser Hinsicht würde ich dann aber auch die "+"- und "-"-Tasten direkt links und rechts neben den Wert legen, den man damit verändern kann. Sprich: " -  2  + ".  Entsprechend auch auf der nächsten Seite bei den Werten für die Lüfterdrehzahlen.
Kalibrierung? Hattet ihr nicht geschrieben, dass die Software im Prinzip permanent nachregelt? Was soll dann kalibriert werden? Wobei ich noch einmal bei einem alten Thema wäre: Ich habe zumindest mal den Versuchsaufbau mit den Optokopplern und PC-Lüftern gemacht. Und auch dort relativ stark schwankende Tachowerte festgestellt - allerdings ohne eure Software, nur mit einer eigenen rudimentären Lüfteransteuerung. Vielleicht liegt das einfach in der Natur der Sache, dass es nicht sehr genau läuft. Was ich damit sagen will: Vielleicht sollte man die Lüfter gar nicht versuchen in Echtzeit nachzusteuern - wäre vermutlich so, als würde man bei einem schleudernden Auto ständig versuchen gegenzulenken (womit man das Schleudern noch verstärkt). Vorschlag: Über einen gewissen Zeitraum Drehzahldaten sammeln (5 Minuten?), Mittelwerte bilden und dann erst nachjustieren. Was meint ihr?

SvenJust

Die Stecker für den Anschluss des Lüfters sind gekommen und ich konnte dann einen Lüfter an der Steuerung für eine halbe Stunde betreiben. Die Ansteuerung und die Drehzahlmessung funktionieren ohne Fehler. Ich habe dann eine Referenzfahrt gemacht, um den PWM Wert für die Lüfterdrehzahlen zu bestimmen, funktioniert. Das Wechseln der Lüfterstufen funktioniert ebenso. :)

Voraussichtlich erst im neuen Jahr werde ich den DAC 0-10V zusammenlöten und am Lüfter testen.

Der aktuelle Sourcecode steht in: https://github.com/svenjust/room-ventilation-system Hier ist jetzt mein aktueller Stand, auf diesem Stand werde ich auch die weiteren Änderungen machen.

Hier habe ich auch das angekündigte Readme hinzugefügt, es steht unter https://github.com/svenjust/room-ventilation-system/tree/master/Docs/Readme
Das Readme ist gegliedert nach Hardware, Schaltplan, Grundeinstellungen Sourcecode, Build der Software, Inbetriebnahme und Einstellungen im Betrieb. Es enthält die Informationen, die wir hier in Thread in den letzten Wochen diskutiert haben.

Sven
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

SvenJust

Zitat von: Edelsteine am 23 Dezember 2017, 00:04:06
Tolle Idee, Touchdisplay macht die Bedienung intuitiver. In dieser Hinsicht würde ich dann aber auch die "+"- und "-"-Tasten direkt links und rechts neben den Wert legen, den man damit verändern kann. Sprich: " -  2  + ".  Entsprechend auch auf der nächsten Seite bei den Werten für die Lüfterdrehzahlen.
Halte ich von der Bedienung auch für einfacher, allerdings ist die Implementierung wesentlich aufwendiger, als wenn das Menü immer am rechten Rand steht.


Zitat von: Edelsteine am 23 Dezember 2017, 00:04:06
Kalibrierung? Hattet ihr nicht geschrieben, dass die Software im Prinzip permanent nachregelt? Was soll dann kalibriert werden?
Ja, dass war der erste Entwurf. Mit dem Ziel Laufruhe bin ich davon abgegangen. Die Lüfter werden standardmäßig mit einem festen PWM Wert für jede Lüfterstufe angesprochen. Diese PWM Werte werden bei der Kalibrierung ermittelt. Eigentlich ist Kalibrierung auf das falsche Wort, richtiger wäre wohl Referenzfahrt. Aber da Pluggit auch von Kalibrierung redet, benutze ich auch den Begriff. Diese Kalibrierung kann per mqtt Kommando gestartet werden, siehe Abschnitt 6.3. im Readme. Allerdings kann auch die permanente Nachregelung mit PID Regler eingeschaltet werden:
mosquitto_pub -t d15/set/kwl/fans/calculatespeed -m PID


Das folgende schaltet wieder auf fester PWM Wert.
mosquitto_pub -t d15/set/kwl/fans/calculatespeed -m PROP

Ich habe mir zwischenzeitlich auch die technischen Unterlagen von der Firma Helios angesehen. Dort werden die Spannungen für die Ansteuerung der Lüfter nur bei der Inbetriebnahme eingestellt und bleiben dann unverändert. Auch verwendet Helios keine Differenzdrucksensoren, sondern lässt die Differenzdrucke dem Inbetriebnehmer einmalig messen und die Anlage danach einstellen.

Zitat von: Edelsteine am 23 Dezember 2017, 00:04:06
Wobei ich noch einmal bei einem alten Thema wäre: Ich habe zumindest mal den Versuchsaufbau mit den Optokopplern und PC-Lüftern gemacht. Und auch dort relativ stark schwankende Tachowerte festgestellt - allerdings ohne eure Software, nur mit einer eigenen rudimentären Lüfteransteuerung.
Da Du keinen Code hier gepostet hast, kann ich wenig konkretes zu evtl. fehlerhafter Ermittlung der Tachosignale sagen. Wie es richtig geht steht hier: https://forum.arduino.cc/index.php?topic=145226.msg1102102#msg1102102

VG Sven
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

Starsurfer

Habe mir den Code gerade mal angesehen, ich muss sagen, sieht auf dem ersten Blick super aus. Bin echt erstaunt wie schnell du das hinbekommst.
Testen kann ich momentan nicht, muss erst fertig löten. Geht leider erst wieder Ende der Woche.
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

Edelsteine

Sven, genauso meinte ich das im Prinzip, dass nicht permanent versucht werden sollte, die Drehzahlen nachzusteuern. Ich sehe schon, du hast an alles gedacht, ich habe es nur nicht mitbekommen! Perfekt!
Das mit der Anordnung auf dem Display wäre auch Kosmetik für hinterher, nicht wirklich wichtig.

BTW: Meine Programmzeilen für den Lüstertestaufbau basierten auf die Programmzeilen von Starsurfer. Ich habe einfach die Interupts innnerhalb von 4 Sekunden nach dem Ein- und Ausschalten gezählt und die Werte seriell ausgegeben. Die Werte varierten um 10 Prozent (gefühlt).

//Ventilatoren
#define ENABLE_FAN1 45 //Lüfter Zuluft
#define ENABLE_FAN2 46 //Lüfter Abluft
#define rpm_FAN1 20 // Umdrehungen Lüfter Zuluft
#define rpm_FAN2 21 // Umdrehungen Lüfter Abluft
#define INTERRUPT_FAN1 3  // Interrupt 2 == Digitaler Pin 21
#define INTERRUPT_FAN2 2  // Interrupt 3 == Digitaler Pin 20

// Variablen
int counter_rpm1;
int counter_rpm2;

void setup() {
  Serial.begin(9600);
  pinMode(ENABLE_FAN1, OUTPUT);
  pinMode(ENABLE_FAN2, OUTPUT);
  //---Lüfter mit 100% starten
  analogWrite(ENABLE_FAN1, 255);
  analogWrite(ENABLE_FAN2, 255);
  attachInterrupt(INTERRUPT_FAN1, rpm_fan1, FALLING);
  attachInterrupt(INTERRUPT_FAN2, rpm_fan2, FALLING);
  delay (4000);
}

void loop() {
  counter_rpm1 = 0;
  analogWrite(ENABLE_FAN1, 0);
  delay (4000);
  Serial.print("0: "); Serial.println(counter_rpm1);
 
  counter_rpm1 = 0;
  analogWrite(ENABLE_FAN1, 255);
  delay (4000);
  Serial.print("255: "); Serial.println(counter_rpm1);
   
}

// Interrupt zaehlt den RPM-Counter hoch
void rpm_fan1(){
  counter_rpm1++;
}

void rpm_fan2(){
  counter_rpm2++;
}

SvenJust

Zitat von: Edelsteine am 24 Dezember 2017, 11:07:02
BTW: Meine Programmzeilen für den Lüstertestaufbau basierten auf die Programmzeilen von Starsurfer. Ich habe einfach die Interupts innnerhalb von 4 Sekunden nach dem Ein- und Ausschalten gezählt und die Werte seriell ausgegeben. Die Werte varierten um 10 Prozent (gefühlt).
Nur auf die Schnelle: Du bekommst viel bessere Ergebnisse, wenn Du die Zeiten seit dem letzten Impuls immer aufaddierst und bei der Berechnung berücksichtigst. Wenn Du in dem von mir geposteten Code schaust und nach den Funktionen loopTachoFan und countUpFan1 bzw countUpFan2 suchst, siehst Du wie es besser geht. Das Verfahren ist auch nicht von mir, sondern ich habe es beim Lesen gefunden. Man kann dann auch in kleineren Zeiträumen korrekt messen.
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

Edelsteine

Möglich, dass das genauer ist, danke, werde ich mir mal aufheben (würde in meinen Augen bedeuten, dass die Delay-Funktion nicht korrekt arbeitet?). Ich glaube aber, das große Schwankungen eher einen anderen Grund haben: Ich saß daneben, und da kann schon ein kräftiges Ausatmen an den winzigen PC-Lüftern zum Abbremsen führen. Auch bei der Lüftungsanlage gibt es externe Einflüsse: Wenn zum Beispiel Windböen auf die Ein- und Auslässe drücken. Deswegen kam ich auf die Idee, dass man besser längere Zeiträume messen und Mittelwerte bilden sollte.

Starsurfer

Moin,
So ich bin fertig mit löten. Noch einmal muss ich das aber nicht unbedingt machen...
Anbei mal ein paar Bilder.
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

SvenJust

Sehr gut! Hast du Vorlieben für die Anschlüsse der VOC und DHT22 Sensoren? Der CO2 Sensor braucht einen Interrupt, da bleibt nicht viel Auswahl.  VOC benötigt  einen Analogeingang.
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)

Edelsteine

Sven, schon mal dickes Lob für deine Dokumentation! Wo nimmst du nur die Zeit dafür her?!? Ins Detail würde ich in einer fortgeschritteneren Version gehen. Selbst ich als Elektronik-Laie komme mit dieser Art sehr gut zurecht. In der ersten Hardwareliste unter 3.1 kann man auch schon die Netzteile aufführen (5V und 12V). Kannst du noch nährere Angaben zum optionalen Display machen? Welche Anforderungen gibt es? Kannst du gute Beispiele nennen? (BTW: würde ich gern auch schon mal bestellen ;-) Für später: Man kann vielleicht doch noch nähere Angaben darüber gebrauchen, wie man die Anlage in fhem einbindet (auch wenn du Kenntnisse darüber voraussetzt, das wäre z.B. für mich das Schwierigste).

Die von dir empfohlenen Temperatursensoren (DS18B20) sind bei mir angekommen. Getestet, sie funktionieren sehr gut und sind genau. Ich stelle allerdings eine ziemliche Trägheit fest (kommt vermutlich durch die Ummantelung). Bis der endgültige Temperaturwert ermittelt ist, braucht es schon mal bis zu 10 Minuten (also keine Wertveränderung mehr). Das sollte in der Lüftungsanlage nicht zu großen Problemen führen, ist aber vielleicht nützlich zu wissen beim Testen und informativ für die Leser der Doku.

Starsurfer

#178
Moin,
habe das jetzt mal alles mit der Anlage verkabelt, funktioniert soweit bis auf einem Lüfter, da kommt am PWM zum Lüfter nichts an. Muß ich noch einmal die Lötstellen kontrollieren.
Habe bei mir ein paar Pin Belegungen der Sensoren geändert, war einfacher zu verlöten.
Auf der Platine wird nichts mehr weiter drauf passen, ziel ist es aber noch zwei DHT22 und den VOC Sensor mit unter zu bringen.
@Sven Hast Du dein PID Bausatz schon getestet?
Dann würde ich eventuell diesen bestellen, spart Lötarbeit. Habe mal versucht mit Fritzing eine Platine zu erstellen, aber irgendwie stürzt das Ding bei mir immer ab.

@Edelsteine
Ich verwende momentan diese Komponenten:
LAN Shield: http://amzn.to/2C6dF4u
TFT ohne Touch, da habe ich gerade kein Link, aber Sven hat seinen ja gerade erst gekauft. Den würde ich mir dann auch noch einmal bestellen, damit wir auf dem gleichen Stand sind.
Habe hier zwar noch zwei 4.5 Touch TFT mit extra Shield liegen, aber das Shield wird auf alle Pins drauf gesteckt.
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

SvenJust

Schau auch noch mal Reihe Q Kabel zum Pin sieht nicht gut aus...
FTUI, Raspberry PI/SSD, CUL CC1101, HMLAN, 10x HM-LC-Bl1PBU-FM, HM-LC-Sw4-WM (KWL Pluggit P300), HM-WDS30-OT2-SM (Sonnensensor), HM-Sec-SCo, LW-12 Wifi LED, CUL Selbstbau nanoCUL 433 (IT), Arduino (S0-Stromverbrauch), OW DS2480 (OWX_ASYNC) 8x DS18B20, MQTT (Fröling P4), MYSENSORS (Roto Rollläden)