Ankündigung
Einklappen
Keine Ankündigung bisher.
ARDUINO am KNX
Einklappen
X
-
Die Leistung des Busankopplers könnte zudem auch knapp sein, um den Uno zu versorgen. Leuchten denn am Uno die LEDs, wenn er über den Busankoppler versorgt wird? Falls nein: die 5V des Busankopplers nicht verwenden und den Arduino extern versorgen (aber nur zum Testen aufm Testbrett, später muss da eine galvanische Trennung hin).
Kommentar
-
So, erste Erfolge zeichen sich ab, mein "Wetterstation-Prototyp" läuft und sendet Daten auf den Bus...
Echt schade dass ich das Thema so lange nicht bemerkt habe ...
Eine Frage habe ich doch, es scheint Rundungsfehler zu geben wenn ich Float Werte sende ... wo ist mein Fehler?
Die Variable im Arduino ist definiert als
Code:float adjustedpressData;
client.print(F("Luftdruck "));
client.print(adjustedpressData);
client.print(" Pa");
client.println("<br />");
Luftdruck 997.08 Pa
ich sende so:
Code:knx.groupWrite2ByteFloat("0/0/22", adjustedpressData); // Luftdruck
997,12 Pa
an... nicht tragisch aber verwunderlich...
Uwe
Kommentar
-
Es könnte sein (lange kein Arduino mehr gemacht), dass der "float" in Wirklichkeit ein "double" ist. Ob das Auswirkungen auf die Verarbeitung im "knx" Objekt hat, weiß ich natürlich nicht. Aber danach würde ich zuerst schauen.
Kein Support per PN: Fragen bzw. Fehlermeldungen bitte im Forum posten.
Kommentar
-
Die Genauigkeit auf dem Bus kann man einfach mit der ETS selber prüfen:
Sende einfach mit dem Gruppenmonitor einen Wert in DPT 9.x und schaue, welcher Wert wirklich gesendet wurde.
997.08 auf 997.12 halte ich für realistisch. Es ist ja ein 2 Byte float, nicht 4 Byte.
Gruß, Waldemar
Kommentar
-
Zitat von boardman Beitrag anzeigenBist du da sicher?
Kannst Du ja mal nachrechnen - oder auch hier nachrechnen lassen.
Zitat von mumpf Beitrag anzeigenDie Genauigkeit auf dem Bus [...] ist ja ein 2 Byte float, nicht 4 Byte.
Kein Support per PN: Fragen bzw. Fehlermeldungen bitte im Forum posten.
Kommentar
-
Klugscheissen kann ich auch (-:
https://en.wikipedia.org/wiki/Half-p...g-point_format
man kann also durchaus auch 16 Bit mit IEEE 754 codieren...
https://en.wikipedia.org/wiki/IEEE_754-2008_revision
okay, geht erst seit 2008 und nennt sich IEEE 754r, aber dass wir von der ETS/EIB reden war ja klar und was die dort treiben kannte ich auch nicht...
Kommentar
-
> Klugscheissen kann ich auch
Vielen Dank. Das wird auch durch das Alibi-Smiley nicht besser.
Oder meinst Du vielleicht das hier?
> Ich hab mich etwas in die Datentypen eingelesen und gehe nun davon aus, dass das die normalen Rundungsfehler bei IEEE 754 sind
Und
> dass wir von der ETS/EIB reden war ja klar
Ach so. Ich dachte, Du redest vom Arduino und von IEEE 754. Wo Du Dich ja eingelesen hast.
Mal kurz und knapp: Du hast gefragt und ich habe eine präzise Antwort zu Deiner (falschen) Vermutung, woher die Rundunsfehler kommen, gegeben.
Passiert mir nicht noch mal.
Viel Spaß noch.Zuletzt geändert von emax; 20.11.2022, 01:19.Kein Support per PN: Fragen bzw. Fehlermeldungen bitte im Forum posten.
Kommentar
-
Hey emax , sorry! Das war wirklich nicht ernst gemeint und daher mein gescheiterter Versuch das als Ironie zu kennzeichenn, bitte nicht böse nehmen... ich entschuldige mich und nehem es zurück...
Also ich fasse zusammen:
Arduino schickt ein float mittels KNXTPUART auf den Bus, damit sind wir in der ETS Welt... dort kommt HEX an und wird mit Rundungsfehlern interpretiert...Zitat von boardman Beitrag anzeigenCode:
knx.groupWrite2ByteFloat("0/0/22", adjustedpressData); // Luftdruck
in der ETS kommt
997,12 Pa
http://www.knx.org/fileadmin/downloa....5.00%20AS.zip
Unbenannt.png
und damit hast du auch Recht dass es kein IEEE 754 half precision ist... da geht auch hier im Forum einiges durcheinander...
Uwe
Kommentar
Kommentar