NEWS
Druckmessung
-
Ich zitiere mal aus einem meiner Posts ein Stück weiter vorn:
> Nun mal theoretisch: lt. Datenblatt misst der Sensor von 0-1,2Mpa, also 0-12bar und gibt dementsprechend eine Spannung von 0,5-4,5V aus das bedeutet letztlich 4V/12bar = 0,333V/bar. Der gelesene Wert im Arduino entspricht 1024/5V = 204/V. Dementsprechend 68/bar.
Somit wirst du bei der Messung auf 0,01bar letztlich trotzdem nur eine Auflösung in Schritten von ca. 0,02 bar erhalten. Aber das ist schon mal besser als nix, oder eben als 0,1.
-
Es läuft nicht!!
kann aber nur an einem kleinen Problem hängen.
erst einmal das Positive.
Nachdem es gestern schon hing, habe ich mal den Impuls auf D10 auf 300msec verlängert; außerdem die 2x 10 gegen 100 getauscht und die Meldediffrenz erst auf 12, dann immer weiter runter bis auf 4.
int sensorPin = A7; int firstDigitPIN = 2; int sendPIN = 10; int sensorValue = 0; int DruckValue = 0; int lastValue = 0; int MeldeDifferenz = 4; const int Zykluszeit = 10; //Messintervall in Sekunden const int Nullpunkt = 97; //dieser Analogwert entspricht 0 bar const int Messfaktor = 60; //durch diesen Wert wird der Analogwert geteilt void sendValue(int intVal){ String binZahl; byte aktBit; for (int b = 0; b < 8; b += 1){ aktBit = bitRead(intVal, b); binZahl = aktBit + binZahl; digitalWrite(firstDigitPIN + b,!(boolean) aktBit); } digitalWrite(sendPIN, HIGH); delay(100); digitalWrite(sendPIN, LOW); Serial.println("Binärwert = " + binZahl); Serial.println(""); } void setup() { Serial.begin(9600); for (int digitPIN = firstDigitPIN; digitPIN <= firstDigitPIN + 7; digitPIN += 1){ pinMode(digitPIN, OUTPUT); digitalWrite(digitPIN,LOW); } pinMode(sendPIN, OUTPUT); digitalWrite(sendPIN, HIGH); delay(300); digitalWrite(sendPIN, LOW); Serial.println("Gestartet"); } void loop() { // read the value from the sensor: sensorValue = analogRead(sensorPin)*100; Serial.println("Analogwert = " + (String) sensorValue); DruckValue = (sensorValue - (Nullpunkt * 100)); if (DruckValue < 0) DruckValue = 0; DruckValue = (int) DruckValue / Messfaktor; Serial.println("Druckwert in 0.01bar = " + (String) DruckValue); if (abs(DruckValue - lastValue) > MeldeDifferenz){ sendValue(DruckValue); lastValue = DruckValue; }; delay(Zykluszeit*1000); }
sah alles ganz gut aus, bis das System wieder einfror.
Soll heißen. in der seriellen Konsole lief alles prima weiter, in HM aber nicht.
Sketch neu hochgeladen, Kosole restart, lief . . . . bis es wieder einfror.
Das konnte ich mehrfach wiederholen.
Gestartet Analogwert = 15700 Druckwert in 0.01bar = 100 Binärwert = 01100100 Analogwert = 15800 Druckwert in 0.01bar = 101 Analogwert = 15700 Druckwert in 0.01bar = 100 Analogwert = 15900 Druckwert in 0.01bar = 103 Analogwert = 15800 Druckwert in 0.01bar = 101 Analogwert = 15900 Druckwert in 0.01bar = 103 Analogwert = 16000 Druckwert in 0.01bar = 105 Binärwert = 01101001 Analogwert = 15900 Druckwert in 0.01bar = 103 Analogwert = 16000 Druckwert in 0.01bar = 105 Analogwert = 15600 Druckwert in 0.01bar = 98 Binärwert = 01100010 Analogwert = 15600 Druckwert in 0.01bar = 98 Analogwert = 15700 Druckwert in 0.01bar = 100 Analogwert = 15600 Druckwert in 0.01bar = 98 Analogwert = 16000 Druckwert in 0.01bar = 105 Binärwert = 01101001 Analogwert = 16000 Druckwert in 0.01bar = 105 Analogwert = 15600 Druckwert in 0.01bar = 98 Binärwert = 01100010 Analogwert = 15600 Druckwert in 0.01bar = 98 Analogwert = 16000 Druckwert in 0.01bar = 105 Binärwert = 01101001 Analogwert = 16000 Druckwert in 0.01bar = 105 Analogwert = 15600 Druckwert in 0.01bar = 98 Binärwert = 01100010 Die 98 wurden nicht mehr an die CCU gesendet, danach auch nichts mehr Analogwert = 15800 Druckwert in 0.01bar = 101 Analogwert = 15600 Druckwert in 0.01bar = 98
Ab einem bestimmten Punkt wurde nichts mehr gesendet.
Dann habe ich den Läppi abgeklemmt und die externe Stromversorgung angeklemmt.
Wenn der DC des Sendemoduls am Ende gewesen sein sollte hätte der jetzt wieder resettet sein müssen, der Arduino ebenfalls.
Aber kommt nix neues mehr
Der Wert steht in der CCU immer noch auf 105, der DC der CCU ist auf 1
ich bin ratlos.
EDIT:
Sehe gerade dass ich das falsche Timeout auf 300 gesetzt habe.
Gruß
Rainer
-
Nach langem probieren läuft es jetzt, wobei ich immer noch nicht weiß warum es nicht lief und ob es jetzt dauerhaft stabil laufen wird.
Hier sieht man schön meine ganzen Versuche zwischen 17:15 und 17:30Nachdem es dann da immer noch nicht lief hatte ich alles abgebaut und mit reingenommen. In der Box zu arbeiten macht wirklich keinen Spaß.
Dann hatte ich mir nochmal die https://files.elv.com/Assets/Produkte/1 … 17_web.pdf mehrfach durchgelesen. Ich habe nicht alles verstanden, aber da stand etwas zu dem Triggerimpuls:
` > DU30Datenübernahme Kanal 3, low-aktiv
(Anlernen Kanal 3)
DUI30
Datenübernahme Kanal 3, 2–24 V,
high-aktiv, (Anlernen Kanal 3) `
ich habe den D10 des Arduino aber an den DUI 30 angelötet.In der Online-Hilfe zu den Modi in der BebUI ist immer nur vom DU30 die Rede.
Dann habe ich noch überlegt dass es in der Konfig ja eine "Datenstabilitätsfilterzeit" gibt. Die stand auf eine Sekunde.
Daraufhin habe ich diese auf 0.2sec gestellt und das Delay für den Impuls auf 0.5sec (ich hatte schon überlegt das auf 5-9 Sekunden zu stellen.
Dann habe ich diverse Modi versucht - mit deinem zweiten Sketch leif es ja sauber durch - und dann doch Mode 1 genommen. Mit offenen Enden gestartet und etwa alle 10 Sekunden einen Wert in der CCU. Inkl. der dauernden Konfigurationsänderungen stieg der DC so gaaanz langsam (in 10 Minuten) auf 6. Damit könnte man ja sogar noch leben.
Dann bin ich wieder raus und habe den Drucksensor angeschlossen - lief, und lief und lief.
Dann wieder alles verdrahtet und in das Gehäuse gepackt - hing!!!
externe Spannung ab, USB an den Arduino - lief!
Spannung geprüft; 5,21 volt am Arduino, anderes Netzteil 5,4 V lief auch nicht
Alle Kabel und Lötstellen gewackelt, keine Änderung
Ich wollte schon irgendwo einen Ferritkern drum wickeln, als es auf einmal stabil lief, nachdem ich die Antenne anders verlegt hatte. Also doch ein Funkproblem, die Konfigdaten klappten aber immer.
Ich bin erst einmal Froh, dass es läuft, werde mir ggf. mal ein zweites Modul kaufen; Arduinos hab ich ja noch…..
Noch mal VIELEN Dank
Rainer
-
Also mit dem DU30 bzw. DUI30 das ist ein bisschen verwirrend. Im Prinzip ist's in deinem Fall mehr oder weniger egal, einer schaltet auf High, einer auf Low, da der Arduino beide Flanken auslöst sollte die Übertragung in jedem Fall getriggert werden.
Die Datenstabilitätsfilterzeit dürfte nur in den Modi 4 und 6 relevant sein, ist aber bestimmt kein Fehler die sehr klein einzustellen.
Das ist natürlich blöd wenn du jetzt ein Funkproblem von deinem Modul zur CCU hast. Müsstest du ja in der CCU sehen können wie der RSSI-Wert ist…
Wenn es dann mal läuft und der DC noch etwas zu hoch geht kannst du ja das Messintervall (Zykluszeit) ohne weiteres noch hochsetzen.
-
Wegen Antenne möchte ich noch vorsichtig auf Seite 13 der Anweisung von ELV verweisen:
> Für die Steuerung mit einem Mikrocontroller können auch die Spannungseingänge genutzt werden. Diese Eingänge reagieren ab einer Spannung von ca. 2 V. ****Es ist darauf zu achten, dass die Spannung im inaktiven Fall wirklich 0 V beträgt.****
Wer zieht den Triggereingang auf 0V? Macht das der Arduino? Ich denke: ja. Ansonsten Pull down-Widerstand.
Passt das?
` > Pins configured as OUTPUT with pinMode() are said to be in a low-impedance state. This means that they can provide a substantial amount of current to other circuits. Atmega pins can source (provide positive current) or sink (provide negative current) up to 40 mA (milliamps) of current to other devices/circuits. This is enough current to brightly light up an LED (don't forget the series resistor), or run many sensors, for example, but not enough current to run most relays, solenoids, or motors.
Short circuits on Arduino pins, or attempting to run high current devices from them, can damage or destroy the output transistors in the pin, or damage the entire Atmega chip. Often this will result in a "dead" pin in the microcontroller but the remaining chip will still function adequately. For this reason it is a good idea to connect OUTPUT pins to other devices with 470Ω or 1k resistors, unless maximum current draw from the pins is required for a particular application. `
-
Es ist darauf zu achten, dass die Spannung im inaktiven Fall wirklich 0 V beträgt. `
Das hatte ich gelesen, und gehofft, dass Thilo das auch hat, weil och dazu nochts sagen kann.Dann stand noch etwas, dass bei high die spannung ab 2v gilt.
Da wir auf high triggern, habe ich vermutet, dass die 0v nur für low gelten.
Aber alles nur Halbwissen, wenn überhaupt.
Habe heute nacht nochmal gegrübelt und keine glaubhafte andere Ursache aus meinen Versuchen ableiten können. Die Ursache muss im arduino oder der Stromversorgung liegen.
Der rssi ist brauchbar, habe gerade nachgesehen. Auf der anderen Installation hatte ich devconfig noch nicht aktiviert, da hätte er wegen des neuen Funkmoduls noch besser sein müssen
Gruß Rainer
-
Sehr mysteriös, aber vielleicht isr an der Theorie von@stabilostick was dran.
Warum?
Pumpe angestellt
Innerhalb von 10 secunden erschien der Wert in ioBroker; funk steht also
Huch nur 0,65 bar??.
Runter gerannt in den Garten, auf dem Manometer steht der Druck bei knapp 1bar wie immer.
Früher gab das etwa 0,96 an.
Jetzt kann ein wissender das mal beides in binär umrechnen und sagen welcher Pin nicht sauber schaltet
Seit gestern abend wurde nichts verändert.
Das System hängt seitdem am Strom
Gruß Rainer
-
Hallo Rainer,
nur ganz kurz zwischen Hausputz und Besuchsvorbeitung;-)
Kannst du den Druckwert vielleicht mal mit im Diagramm darstellen damit man evtl. Änderungen sieht? So ist ja immer nur ein "Snapshot"
Die 0V bei LOW und die 5V bei HIGH sind soweit ich das sehe bei der Konfiguration der Arduino-Pins als OUTPUT definitiv gegeben.
` > digitalWrite()[Digital I/O]
Description
Write a HIGH or a LOW value to a digital pin.
If the pin has been configured as an OUTPUT with pinMode(), its voltage will be set to the corresponding value: 5V (or 3.3V on 3.3V boards) for HIGH, 0V (ground) for LOW. `
Ich schalte auf die Art ja auch die verschiedensten Sachen damit. Allerdings kenne ich eben nicht die speziellen Befindlichkeiten des HM-8bit-Moduls… Direkt ein Fehler kann es nicht sein die besagten Widerstände zwischen Arduino und Modul einzulöten - wenn du solche Widerstände sowie Lust zum Löten hast
-
Kannst du den Druckwert vielleicht mal mit im Diagramm darstellen damit man evtl. Änderungen sieht? So ist ja immer nur ein "Snapshot" `
Werde ich machen, im Moment läuft sie nur manuell, da wegen Overtemperature die Steuerung aus istwenn du solche Widerstände `
NopeLust zum Löten `
Ist nicht das Problem, aber das Wissen was und wie fehlt.Stelle gleich den chart um und melde mich später wenn genug Daten da sind
Gruß Rainer
-
Sorry!
Mein Fehler!
Ich hatte gestern alles auf dem Notebook gemacht. Jetzt bin ich am Tablet mit der App. Da musste ich erst einen Recync fahren. Jetzt passt es!
Hatte es im Chart gesehen, dass der Druck 98 centibar war!
Werde den Druck aber dauerhaft im Chart lassen.
Danke
Rainer
-
Hätte ein Oszilloskop hier, so für den Fall…
-
Da das Problem anscheinend nur bei der Stromversorgung vor Ort am Sandfilter existiert musst du dann die 400km mit dem oszi zu mir kommen
Gruß Rainer
-
Pech, regnet gerade.
-
Ähm - ja. Das mit der Stromversorgung ist gar nicht ohne. Wie schliesst du denn das Teil im Garten genau an die Stromversorgung an? Ist das ein USB-Netzteil? Was hat das denn so für Werte? (ob du evtl. einen ElKo herumliegen hast frag ich lieber nicht
Wo ist denn evtl. ein Unterschied zwischen "Drinnen" und "Draußen"?
-
Wo ist denn evtl. ein Unterschied zwischen "Drinnen" und "Draußen"? `
Drinnen nur über usb am arduino. Und das ohne Probleme.Draußen über USB am arduino ebenfalls ohne Probleme.
Die treten nur auf, wenn ich die Stromversorgung über ein 5v netzteil an den 5v eingang des Arduino und von dort an den 5v eingang des Sendemoduls gehe.
Das Netzteil liegt im Keller und ist über eine 2x2 jysty 0.8 angeschlossen.
Jetzt kommts mir. :shock:
Parallel dazu läuft die 230v für die Pumpe!
ob du evtl. einen ElKo herumliegen hast frag ich lieber nicht `
Was denn für einen?Und wie anschließen,?
Oder doch das 5v kabel um einen Ferritkern wickeln?
Im Moment läuft es Spitze
Gruß Rainer
-
Oh ja. Das lange Kabel vom Netzteil zum Arduino und noch dazu parallel zur 230V-Leitung ist zumindest "suboptimal"
Das Kabel um einen Ferritkern zu wickeln kann zumindest nicht schaden. Von einem Elko direkt am Eingang des Arduino würde ich mir allerdings mehr versprechen. Das kann irgendein Elko mit ca.100µF oder größer sein.
-
Hallo Thilo,
Das kann irgendein Elko mit ca.100µF oder größer sein. `
Irgend etwas hab ich noch (und wenn ich es aus einem Schrottgerät ausbaue!)zwischen (+) und (-) am 5V Eingang?
Im Moment läuft alles stabil und ich werde das erst in Angriff nehmen, wenn unbedingt nötig
Irgendwann fiel mir ein, dass centiBar = kPa ist, das klingt professioneller.Gruß
Rainer
-
Ja, zwischen + und - möglichst nahe am 5V-Eingang.
Aber wenn's jetzt stabil läuft ist ja erstmal alles gut.
Schönen Sonntag noch!
-
Ich wollte mal den Zwischenstand vermelden.
Ein Ziel ist erreicht
Nachdem der Druck immer höher stieg, habe ich mich in den Garten bemüht und den Filter rückgespült.
Der Sensor zeigt dies deutlich an.
Jetzt noch die Leckage Erkennung so programmieren, dass sie sicher anschlägt und alles ist wie gehofft.
Gruß
Rainer
-
@Schubi
Ist es möglich das du die kompillierte bin datei vllt hier rein stellen kannst!?
Da ich weder über Arduino IDE noch über Atom es hin bekomme eine bin zu erstellen.
Atom hat mega viele Fehler und Arduino meckert über Json 5 und 6 rum.
Das wäre sehr nett
Nur wie ich meine WLAN daten dann da rein bekomme weiß ich auch nicht.
Also die Tasmota Software mit aktiviertem ADS1115 Analog erweiterungboard
Vllt kann ich dir per PM meine WLAN Login Daten geben!? und vllt kannst du mir die bin dann vllt mit meinen Login Daten kompillieren !?