Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
ich habe nun was implementiert um über modbus lesen und schreiben zu können. Im bitlash gibt es nun die "modbus" funktion. Eine Adresse kann durch
Code:
print modbus(0)
ausgelesen werden. Damit sieht man die aktuelle Stufe. Wenn man die Stufe ändern möchte, so kann man mit folgendem Befehl das zugehörige Register schreiben:
Code:
modbus(0,1)
Damit wird Stufe "1" eingestellt. Ich rate dringend davon ab in unbekannte/undokumentierte Register zu schreiben!
Das Sensor-Kommando und das Clock-Kommando funktionieren noch nicht (vollständig).
Hier mal ein Beispiel um die Register 0-48 auszulesen:
ich habe mal bitlash eingebaut. Es geht noch nicht alles aber die Befehlsstruktur steht soweit fest. Die Sensoren werden nun zum Beispiel abgefragt durch:
Code:
print sensor(2,1)
Die Kommandos werden durch p300help aufgelistet. clock und modbus sind noch nicht implementiert.
Im EEPROM kann eigene Software hinterlegt werden. Der EEPROM wird aber mit jeder Softwareaktualisierung gelöscht. Zum sichern der Funktionen kann "ls" aufgerufen werden.
Nur mal einen Hinweis für den Fall, dass Bedarf an einer autarken Stromversorgung besteht. Der Teensy kann auf externe Versorgung umgebaut werden. Dazu ist eine Brücke auf der Platine durchzutrennen. Es gibt dann noch 12V->5V Spannungswandler in einem Bauteil.
Im Moment schaue ich ob sich Bitlash auf den Teensy bringen und mit meiner Applikation vereinen lässt. Dann könnte man seine Lüftungsanlage einfach programmieren. Dann würde die autarke Stromversorgung durchaus Sinn machen. https://github.com/billroy/bitlash
Einen Kommentar schreiben:
Ein Gast antwortete
Hi Uwe,
vielen Dank für die Info. Damit sollte ich weiter kommen.
Natürlich lass ich den Laptop nicht dauerhaft angeschlossen. Die Steuerung soll ja später über meinen Raspi erfolgen, der ebenfalls im gleichen Raum im Netzwerkschrank hängt. Mir fehlt nur noch ein entsprechend langes USB-Kabel.
Habe gerade noch mal in Putty geschaut. Tatsächlich gibts da ja nen Button für serielle Verbindungen. Hatte den bisher nie beachtet, weil ich halt nur Telnet und SSH Verbindungen genutzt habe. Sobald ich ausm Urlaub komme, probier ich das direkt mal aus.
Ja, die Schaltung bekommt über den USB-Port des Teensy Saft. Über den Laptop aber nur zum Testen, Du willst den ja wohl nicht dauerhaft neben der Anlage betreiben. Bei mir ist es glücklicherweise so, dass der Netzwerkschrank 3m neben der Anlage hängt und dort drinnen ist mein SheevaPlug mittels langem USB-Kabel angeschlossen. Du sollstest Dir vielleicht überlegen, Deinen Raspi in der Nähe aufzustellen.
Aber zum Test mit dem Laptop: Man braucht entspr. USB-Treiber, der sollte eigentlich mit der Teensyduino-Installation schon installiert sein, Anleitung siehe: Teensyduino: Download and Install Teensy support into the Arduino IDE. Damit hast Du dann einen virtuellen COM-Port auf dem Rechner eingerichtet. Ansonsten könnte die Arduino-Software auch keine Sketche draufladen. Für die serielle Kommunikation kannst Du putty nehmen, ein weiteres empfehlenswertes Terminal-Programm für Windows ist HTerm (der-Hammer: HTerm - A Terminal Program for Windows and Linux). Die Benutzung ist bei beiden eigentlich ziemlich intuitiv. Probiers mal aus, bei konkreten Fragen kann ich dann vielleicht helfen.
Für Linux käme minicom in Frage, sollte eigentlich bei jeder Distro dabei sein oder einfach zu installieren sein.
Der Teensy muss vor der Anlage mit Energie versorgt werden.
Ahhhhh, das könnte die Ursache sein. Ich habe angenommen, dass der Teensy über die Anlage mit Strom versorgt wird. Jedenfalls habe ich das aus dem Schaltplan so abgeleitet. Also: USB-Kabel anschließen und mim PC verbinden, damit der Teensy darüber Saft bekommt?
Gibt dann mal "DEBUG 1" mit einem Terminalprogramm ein. Dann müsste...
Ok, jetzt mal für mich Noob. Ich schließe den Teensy per USB z.B. an nen Laptop (Win8) an. Wie greife ich denn per Terminal auf die USB-Schnittstelle zu? Sorry für die vielleicht saudumme Frage, aber bisher logge ich mich per Telnet meist nur auf Linux-Plattformen (Raspi) über LAN ein.
hab die Platine mal eingebaut, aber irgendwie funktioniert es nicht so wie es soll. Nach dem Einschalten geht leuchtet direkt eine grüne LED an dem Empfangsmodul der P300. Nach der Einschaltkalibriereung leuchtet sie dann rot. Mit der Fernbedienung kann ich nichts abfragen.
Das ist das Verhalten wenn die Fernbedienung nicht mit der P300 kommunizieren kann. Diese sendet einige Zeit an die P300 und wenn keine Antwort kommt geht die rote LED an.
Was mich aber auch wundert ist, dass auf der Platine ja nur vier PINS von dem Stecker belegt sind, der auf die Platine der P300 gesteckt wird. An dem Stecker, welcher zum Empfangsmodul der P300 gehört, sind jedoch 6 PINs belegt.
Die zwei zusätzlichen Pins werden nicht gebraucht. Du kannst diese ja gerne Verkabeln. Es könnte sein, dass ich diese bei mir mal zum Fehlersuchen verbunden habe und diese Verbindung immer noch besteht. Es gibt ja Nachbauten. Hat jemand auf die Verbindung der beiden Pins verzichtet?
Die Verdrahtung habe ich schon mehrfach kontrolliert und keinen fehl finden können (siehe Bilder).
Ich finde da auch keinen Fehler.
Welcher Softwarestand ist auf dem Teensy?
Der Teensy muss vor der Anlage mit Energie versorgt werden. Gibt dann mal "DEBUG 1" mit einem Terminalprogramm ein. Dann müsste beim Einschalten der Anlage zu sehen sein, dass Daten von der Fernbedienung an die P300 gesendet wird. Wenn das nicht zu sehen ist, wird nichts von der Fernbedienung empfangen. Wenn da was zu sehen ist wird was an die P300 gesendet und eine Antwort müsste zu sehen sein. Fehlt die Antwort empfängt die P300 nichts oder es wird nichts Empfangen. Kommt die Antwort an müsste zu sehen sein wie diese an die Fernbedienung übertragen wird. Wenn dann die Fernbedienung nicht reagiert gibts ein Problem zwischen Teensy und Fernbedieung.
Viele Grüße
Frank
Einen Kommentar schreiben:
Ein Gast antwortete
Hi Frank,
hab die Platine mal eingebaut, aber irgendwie funktioniert es nicht so wie es soll. Nach dem Einschalten geht leuchtet direkt eine grüne LED an dem Empfangsmodul der P300. Nach der Einschaltkalibriereung leuchtet sie dann rot. Mit der Fernbedienung kann ich nichts abfragen.
Was mich aber auch wundert ist, dass auf der Platine ja nur vier PINS von dem Stecker belegt sind, der auf die Platine der P300 gesteckt wird. An dem Stecker, welcher zum Empfangsmodul der P300 gehört, sind jedoch 6 PINs belegt.
Die Verdrahtung habe ich schon mehrfach kontrolliert und keinen fehl finden können (siehe Bilder).
Wenn ich das richtig verstehe, dann kann ich den Sensor mit der aktuellen Version zwar auslesen, aber es wird noch nix gesteuert!?
Genau so ist es. Nur den Hinweis für die Inbetriebname. Für 15 Minuten wird 0 als Sensor-Wert ausgegeben. Das ist die Zeit die der Sensor laut Datenblatt zum aufwärmen braucht.
Wie funktioniert das denn mit dem Modbus-Code? Was muss da gemacht werden. Für meine Zwecke würde es eigentlich reichen, wenn ich die Sensorwerte sowie die Statuswerte der P300 per RS232 Schnittstelle (über USB) auslesen und die entsprechenden modbus-Befehle per RS232 an die P300 könnte.
Mit Modbus-Code meine ich eine Ansteuerung vom Teensy aus. Was jetzt geht ist die Daten per USB auszulesen und dann per USB Modbus zu sprechen. Es könnte eventuell eine Pause zum Wechsel zwischen USB und Modbus notwendig sein.
Ich möchte ja die Anlage später von FHEM aus steuern können.
Mit etwas Software sollte das dann schon gehen ohne was an meinem Code zu ändern. Ich habe als nächstes vor Befehle zum Auslesen und setzen der Register zu implementieren. Dann muss man kein Modbus über USB sprechen. Wann ich soweit sein werde kann ich aber nicht versprechen.
Einen Kommentar schreiben:
Ein Gast antwortete
WOW! Nicht schlecht. Hast ja echt viel Arbeit investiert. Habe meine Platinen nun endlich zusammengelötet und werde versuchen sie heute mal einzubauen. Ab Sonntag bin ich für ne Woche nicht zu Hause, danach helf ich gern mit.
Wenn ich das richtig verstehe, dann kann ich den Sensor mit der aktuellen Version zwar auslesen, aber es wird noch nix gesteuert!?
Wie funktioniert das denn mit dem Modbus-Code? Was muss da gemacht werden. Für meine Zwecke würde es eigentlich reichen, wenn ich die Sensorwerte sowie die Statuswerte der P300 per RS232 Schnittstelle (über USB) auslesen und die entsprechenden modbus-Befehle per RS232 an die P300 könnte.
Ich möchte ja die Anlage später von FHEM aus steuern können.
die aktuelle Version gibt eine bewertete Luftqualität aus. Mit meinen Testdaten seit Mai sieht das Verfahren ganz gut aus. Die Kalkulation der Qualität hängt von den Bestwerten der letzten 24h ab.
Ich denke mal bei etwa 75 ist ein guter Punkt die Anlage zu stoppen. Dann müsste man nach einer Wartezeit auf Stufe 1 anschalten und prüfen ob sich die Qualität verbessert. Wenn nicht wird wieder gewartet. Das Anhalten habe ich noch nicht implementiert. Dazu muss erst einmal modbus-Code her ;-)
ich habe nun einen Algorithmus zur Auswertung des Gas-Sensors. Die Tabelle aus dem Datenblatt ist mit meinen Einstellungen nur bedingt zu gebrauchen. Ich lasse die niedrigsten Werte der letzten 24h lernen und setze die ins Verhältnis zum aktuellen Wert. Das funktioniert in der Theorie mit meinem alt-Daten ganz gut. Die Güte-Werte schwanken so gut, dass die Schwankungen durch die Lüfterstufe keine große Auswirkungen haben.
Jetzt muss ich den Code noch Microkontroller-tauglich machen. Die Karte benötigt einiges an RAM.
Hier mal ein Beispiel aus dem Protokoll. Da habe ich den Grill angeworfen. Das war Geruchsmäßig noch kein Grund die Anlage zu stoppen.
Der Sensor reagiert sehr gut. Wer an einer Straße wohnt wo viel Verkehr ist dürfte aber Probleme mit zu häufigen Abschaltungen oder einem nicht-reagieren bekommen. Es gibt ja noch alternative Sensoren. Meine Routine ist unabhängig von der Kurve des Sensors.
ich hatte gestern mal geantwortet und meine umfangreichen Daten wieder gelöscht. Im Moment sehe ich mir den Gas-Sensor genauer an. Laut Datenblatt und meinen Auswertungen gibt es feuchtigkeits- und temperaturabhängige Werte. Das Datenblatt ist entweder ungenau oder meine Kalibrierung ist nicht so toll. Hinzu kommen Schwankungen der Werte unter gleichen Bedingungen.
Ich werde versuchen die Wertekorrektur anhand der gemessenen Minimalwerte vorzunehmen. Dazu muss eine dynamische Tabelle zur Wertekorrektur aufgebaut werden.
Hat jemand schon den Gas-Sensor in Betrieb und kann mir über einen längeren Zeitraum den SQLDUMP mitschreiben? Das würde mir das Testen erleichtern. Ansonsten kann ich nur meine eigenen Daten verwenden.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: