Posts by Gnatz

    Der ADS1115 ist hat eine Auflösung von 16 Bit . Schon bei 8 Bit misst man auf 0,5% genau. Bei einem Spannungsbereich von etwa 3 V Spannung sind das 15 mV pro Bit (Stufe). Bei guten Layouts ließ sich das Rauschen auf der Leiterplatte kaum unter 10 mV bringen. Mit einem solchen Aufbau mit gesteckten Baugruppen kann man schon eine 8 Bit Auflösung nicht mehr sicherstellen. Von den Messwerten deshalb auf die obersten 8 Bit runden. Eventuell kommen dann keine Zufallszahlen mehr. Mit 16 Bit misst man mit den unteren Bits nur das Rauschen. Wenn man einen Zufallszahlengenerator braucht, ist eine Rauschquelle der beste Weg.

    Schon "einfaches" Getreide benötigt in der Wachstumsphase Feuchtigkeit und in der Reifephase Trockenheit. Für ein Expertensystem muss für die jeweiligen Pflanzen hinterlegt werden, welche Bedingungen überhaupt benötigt werden (siehe auch Beispiel der Tomatenpflanzen oben). Das kann - wie der Name schon sagt - nur ein Experte. Dann muss der Regler aus den vorherrschenden Bedingungen versuchen, die optimalen Bedingungen zu erzeugen. Durch den Soll- / Ist- Vergleich und Einflüsse der verschiedenen Stellmöglichkeiten in der Vergangenheit kann ein (in bestimmten Bereichen) selbstoptimierendes System geschaffen werden.

    Im Prinzip war das Ganze ja schon im Ansatz angedeutet, aber nicht in der für ein Expertensystem (und darum handelt es sich) ausreichend formuliert. Anfangs müssen die vorherrschenden Randbedingungen wie "Luft kalt und trocken, kalt und nass, heiß und trocken oder heiß und nass" und auch die Windstärke und die Lichtverhältnisse aufgelistet werden und dann auch die Innenbedingungen, ob es Gewächshaus eher Wunschbedingungen herrschen oder ob dringender Handlungsbedarf vorliegt. Für alle diese Fälle muss der Experte (Betreiber des Gewächshauses) definieren, was er in dieser Situation machen würde um (welche ?) Idealbedingungen herzustellen. Herrschen beispielsweise im Gewächshaus schon fast Idealbedingungen würde man kaum lüften, wenn dadurch eher eine Verschlechterung eintreten würde. Bei schlechten Bedingungen im Gewächshaus würde man dagegen vermutlich versuchen, durch Lüften die Bedingungen zu verbessern. Das nur als Beispiel. Die Reaktion des Systems hängt also erst einmal von den Randbedingungen ab und kann von Fall zu Fall völlig unterschiedlich ausfallen.


    Der "selbstlernende" Regler muss diese Bedingungen kennen - und das, was von den Maßnahmen an Verbesserung erreicht werden soll. Nur dann kann er "entscheiden", ob die getroffenen Maßnahmen der Zielerreichung dienen, eher zu schwach, zu stark oder sogar kontraproduktiv sind und danach seine Regelparameter anpassen.


    Übrigens: Ein Regler, auf dem die Daten zusammenlaufen und der Algorithmus läuft, ist besser als viele verschiedene Regler. Da gilt die Erkenntnis, dass viele Köche den Brei verderben. Es muss in einem solchen System einen "Master" geben, wobei "Slave"-Rechner (pfui, darf man heute nicht mehr sagen) nur die Daten zusammenfassen und als Paket an den Hauptrechner liefern oder Steuerbefehle ausführen. Die Daten dürfen aber bei der Zusammenfassung nicht verfälscht werden, sonst wird der Regler leicht instabil.


    Nicht vergessen: In Gewächshäusern ist auch die CO2-Konzentration (eventuell sogar abhängig von der Tageszeit) für das Pflanzenwachstum bedeutsam. Auch hier gibt es mehr oder weniger empfindliche Pflanzen.


    Man redet gern in Begriffen wie "Fuzzy Logik", "künstlicher Intelligenz" u.ä.. Diese täuschen eine Intelligenz vor, die ein System einfach nicht haben kann. Das Wissen liegt einzig in der Kenntnis und Erfahrung des Experten und diese ist durch kein System ersetzbar.

    Generell wird nicht der Raspi überfordert, eventuell aber der Programmierer. Bei selbstlernenden Systemen sind immer Konflikte vorprogrammiert. Wenn z.B. ein Kriterium ein Öffnen der Klappe erfordert, ein anderes aber gleichzeitig ein Schließen, liegt solch ein Konflikt vor. Da muss vorher überlegt - und im Programm berücksichtigt - werden, die Erfüllung welches Kriteriums Vorrang hat. Eventuell kann der Vorrang sogar abhängig davon, welche Werte aktuell vorliegen, wechseln. Speziell bei Luftfeuchtigkeit und Temperatur gilt die Frage zu beantworten, ob die Pflanzen im Konfliktfall durch zu hohe Luftfeuchtigkeit durch Pilzbefall erkranken oder durch "falsche" Temperaturen oder gar Luftzug verdorren oder erfrieren können. Da ist die Steuerung ein echtes Expertensystem, das auch Expertenwissen bezogen der Pflanzen erfordert. Dieses Wissen muss in das Programm mit aufgenommen werden, sonst geht das Ganze irgendwann schief. Eventuell hängt es auch von den (wechselnden ??) Bepflanzungen ab, welche Werte erreicht werden müssen und wie schnell sich die Werte ändern dürfen. Neben Temperatur und Luftfeuchte muss sicherlich auch die Windgeschwindigkeit berücksichtigt werden - nicht alle Pflanzen vertragen Zugluft.

    Gibt es zur Temperaturregelung neben einem Öffnen von Lüftungsklappen noch die Möglichkeit einer Beschattung? Benötigen die Pflanzen viel oder eher weniger direktes Licht? Ohne genaue Vorgaben was muss wann wie gemacht werden, kann solch ein System nicht funktionieren. Da muss der Pflanzenfachmann gründlich überlegen, wann das System wie reagieren muss. Die Intelligenz kommt nicht vom Rechner sondern an erster Stelle vom Aufgabensteller und an zweiter vom Programmierer, der aus der Aufgabenstellung Widersprüche oder Lücken erkennen und schließen muss.

    Die GPIOs direkt untereinander zu verbinden, halte ich für keine gute Idee. Ich würde jeden GPIO über eine (Schottky-)Diode mit dem Schalter verbinden. Wenn der Schalter nach GND geschlossen wird, zieht er alle GPIOs nach GND. In der Gegenrichtung verhindern die Dioden Störungen zwischen den Modulen.

    Ich gebe zu, die Bewegung ist bei den meisten Exemplaren (ich habe 3 unterschiedliche Typen ausprobiert) ziemlich ruckartig und wird auch durch Reduzierung der Spannung nicht sonderlich langsamer. Lediglich ein Exemplar aus der Heckklappe von einem alten Renault Nevada ließ sich mit einer Spannung von 3,3 V moderat bewegen. Aber bei dem muss man die Endposition (über die Stromaufnahme) detektieren und die Richtung durch Wechsel der Polarität vornehmen. So einfach, wie ich es mir vorgestellt habe, war es doch nicht. Sorry!

    Für ähnliche Zwecke habe ich mir mal ein paar Hubmagnete aus Türverriegelungen von Autos besorgt. Gibt es immer mal wieder als Sonderangebot bei Pollin u.ä.. Wenn der Hub nicht ausreicht, lässt er sich einfach über einen Hebel vergrößern. Die haben sich bei mir bewährt.

    Über diesen Ansatz bzw. meine Fragen dazu hat man sich hier an anderer Stelle nach meinem Empfinden eher belustigt.

    Meist haben diejenigen, die sich über die Fragestellung oder Lösungsansätze lustig machen, noch nicht einmal die Frage verstanden. Solche Einwürfe sollte man einfach ignorieren.


    Noch ein paar Kommentare zu den Magnetrührern. Dazu wird ein Permanentmagnet in die Lösung gebracht. Dieser muss so gekapselt sein, dass er chemisch nicht mit der Lösung reagiert. Unter dem Boden des Gefäßes wird ein weiterer Magnet gedreht (alternativ kann man natürlich auch ein Drehfeld erzeugen) und durch gegenseitige Anziehung dreht sich der Magnet in der Lösung mit. Das klappt gut bei Glasgefäßen. Schon bei Gefäßen aus leitenden Stoffen wird das äußere Magnetfeld durch Wirbelströme in der Gefäßwand geschwächt - besonders wenn die Drehzahl hoch ist. Das gilt auch für nichtmagnetische Gefäße. Bei magnetischen Gefäßen wird das äußere Feld abgeschirmt.


    Der Magnet in der Flüssigkeit liegt durch sein Eigengewicht immer in Nähe des Bodens und rührt dort. In der Flüssigkeit bildet sich - wenn der Füllstand nicht zu hoch ist - durch Verwirbelung ein Trichter. Nur so werden auch die oberen Schichten mitgerührt. Natürlich sind auch Flügelkonstruktionen denkbar, in die der "Antriebsmagnet" eingebettet ist und die so berührungslos von außen in Drehung versetzbar sind.


    Wenn die Flüssigkeit elektrisch leitend und sehr empfindlich ist, kann das drehende Magnetfeld auch in der Flüssigkiet Wirbelströme erzeugen, die die Eigenschaften der Flüssigkeit nachteilig beeinflussen können. Das ist zwar extrem selten, man sollte aber auch an diese Möglichkeit denken. Ansonsten sind richtig eingesetzte Magnetrührer eine prima Sache.

    ...... Auch prima. Das würde ja eine echte Präzisionslösung ermöglichen. Die Idee mit dem Quetschventil hätte den Vorteil, dass das Ventil nicht mit der Säure in Kontakt kommt. Andererseits: Es ist vermutlich eine relativ hohe Kraft erforderlich, um den Schlauch per Quetschung dicht zu bekommen?


    Mir kam noch die Idee, einen luftdichten Säurebehälter zu nehmen, den Bürettenhahn als Auslauföffnung anzubringen und oben ein Loch in den Behälter zu bohren, das per Elektromagnet geschlossen werden kann, damit es nur tropft, solange das Loch geöffnet ist und Luft nachströmen kann ...

    Die Quetschung erfolgt auch bei der Peristaltikpumpe. So wird halbwegs genau ein definiertes Flüssigkeitsvolumen abgetrennt.

    Die Methode mit der Auslauföffnung ist weniger gut. Die Temperaturausdehnung wurde ja schon erwähnt, aber durch das Auslaufrohr kann auch bei geschlossenem Behälter Flüssigkeit nach unten und entsprechend Luft zum Ausgleich des Volumenverlusts nach oben kriechen (hängt vom Durchmesser des Auslaufrohres ab). Die Kapillarkräfte sollte man nicht unterschätzen.


    In Krankenhäusern verwendet man Perfuser zur genauen Dosierung über lange Zeit. Die sehen aus wie eine große Spritze, die mit dem Medikament (oder hier mit der Säure) gefüllt sind und bei dem der Kolben mit einem Schrittmotor langsam hineingeschoben wird. Da die beim Betrieb waagerecht (oder sogar leicht mit der Öffnung nach oben) gelagert werden, fließt nur das aus, was vom Kolben herausgedrückt wird.

    Den Kessel hängend zu montieren hat den Vorteil, dass nur eine Wägezelle benötigt wird. Gemessen wird das Gewicht von leerem Kessel plus Aufhängung. Bei der Befüllung entspricht die Gewichtsänderung genau der zugeführten Masse. Eine Temperaturkorrektur ist damit nicht nötig. Rühren kann man auch, wenn das Rührgerät an einem Schwenkarm angebracht ist und über den Kessel geschwenkt wird ohne das Gewicht zu verändern (darf Kessenboden oder -Wand nicht berühren). Alternativ kann das Rührgerät fest mit dem Kessel verbunden sein und wird so am Anfang als Teil des Kesselgewichts mitgewogen (Gewicht der Zuleitung zum Rührgerät darf sich beim Rühren nicht ändern und sollte so gering sein, dass leichte Bewegungen keinen Einfluss haben).

    Scheint mir nach allen Argumenten auch der beste Weg zu sein. Wenn man 3 Wiegezellen in Form eines gleichseitigen Dreiecks anordnet und den Behälter möglichst genau über dem Schwerpunkt anordnet, spart man etwas Kosten. Vor dem Befüllen wird das Gewicht von Behälter und Trägerplatte gewogen und mit der gewünschten Füllmenge das Endgewicht errechnet.


    Es kann sogar sein, dass das Rühren das gemessene Gewicht kaum verändert. Das einfach mal ausprobieren. Würde die Steuerung einfacher machen.


    Viele Wiegezellen ändern den Auflagepunkt der Last bei Belastung nur minimal. Wenn das so ist, kann es sogar möglich sein, statt 3 nur eine Wiegezelle zu verwenden und die restlichen beiden Auflagepunkte als eine Art "Spitzenlagerung" auszuführen. Dann muss nur die Höhe so eingestellt werden, dass die Trägerplatte genau waagerecht liegt. Die Wiegezelle nimmt dann ein Drittel des Gewichts auf und jede der "Spitzen" ein weiteres Drittel. Aber das muss dann sehr sorgfältig und mit Schutz geen Veränderungen ausgeführt und regelmäßig überprüft werden (z.B. indem eine genaue Flüssigkeitsmenge eingefüllt und gewogen wird).

    Die Ziffern der Wasseruhr per Kamera und Bildverarbeitung auszulesen, ist zu aufwändig. Da die Ziffernanzeige über eine feste Zahnradübersetzung von der Drehung der rot/schwarzen Scheibe abgeleitet wird, wäre es einfacher die Drehungen mit 2 um 90° versetzt angebrachte Reflexlichtschranken (mit rotem Licht) zu erfassen. (2 Lichtschranken, damit keine Fehlmessungen erfolgen, wenn der rot-schwarz-Übergang genau unter der Lichtschranke stehen bleibt.) Dann zählt man das Volumen. Wird für die Rezeptur die Masse des Wassers benötigt, muss die Dichte über die Temperatur berücksichtigt werden.


    Zur Genauigkeit von Wasseruhren: Auch in diesen kann sich Kalk ablagern und die Genauigkeit verändern. Deshalb endet die Eichfrist nach einer gewissen Zeit. Wenn diese Veränderung nicht akzeptabel ist, muss doch das Gewicht des gesamten Kessels gewogen werden und die Differenz beim Zugeben von Wasser für die Wassermenge (Masse) ausgewertet werden. Aber bei einem "Gesamtgewicht" (genauer einer Gesamtmasse) von über 1000 kg für Kessel plus Füllung eine Genauigkeit von 1 bis 3 l zu erhalten, ist schon "sportlich" (Messung genauer als 0,1%). Wenn man den Vorschlag von insight-er (unten) nimmt und den Kessel auf 4 Wägezellen fest aufbaut (statt ihn abzusetzen), wäre es am einfachsten, wenn jede der Wägezellen das gemessene Gewicht in Form eines Datentelgramms direkt ausgibt. Dann muss nur die Summe der 4 Gewichte gebildet werden. Eine eigene Auswertelogik mit A/D-Wandlung aufzubauen verlangt sehr viel Expertise, sonst ist die Genauigkeit nicht erreichbar.

    Hi

    Wie stark variiert den die Größe der Kessel (ca. von / bis) ?

    Man könnte ja auch einen Befüllplatz bauen, wo man den Kessel per Hubwagen hineinfährt und auf 4 Wägezellen absetzt. Die gesamte Mimik mit Bildschirm und Bedieneinheit könnte dann dort fest verbaut sein = einfacher, denke ich ...

    Mach´ doch bitte mal ein paar Fotos :)

    Gruß, Holger

    800 l sind schon eine beachtliche Größe. Um solch einen Kessel mit einem Hubwagen mit der geforderten Genauigkeit zu wiegen, muss der schon gut ausbalanciert sein und auf einem ebenen Untergrund stehen. Querkräfte werden von der Befestigung aufgenommen und gehen üblicherweise nicht in die (senkrechte) Gewichtskomponente ein. An den Hubwagen eine Auswerteelektronik anzubringen, die das Ergebnis per Funk überträgt, wäre das geringere Problem. Dann wäre es einfacher, den Kessel an einem Seilzug mit Wiegevorrichtung hängend zu befüllen. (Während des Gießens liefert das "fallende" Wasser aber einen Impuls, der das Ruhegewicht vergrößert. Das ist wie das Hüpfen im Fahrstuhl, mit dem man die Seilrisssicherung auslösen kann.)


    Die Füllhöhe am Kessel selbst zu messen, liefert nur bei schlanken Kesseln eine ausreichende Genauigkeit, da dann sich die Füllhöhe pro Liter genügend groß verändert.


    Man kann die Eimermethode auch einfacher machen: Eimer bis zum Überlaufen füllen, dann mit einem verschiebbaren Kragen den Rand erhöhen, damit beim Transport überschwappendes Wasser wieder in den Eimer zurückfließt und den Eimer gezielt in den Kessel kippen. Es gibt viele Variationsmöglichkeiten - je nach der vorhandenen konstruktiven Erfahrung und der Werkstattausrüstung.

    Bleibt das Problem, dass der volumetrische Fehler durch die Temperatur schon 2% betragen kann.

    Ich plädiere nach wie vor für eine gravimetrische Methode.

    Stimmt! Bei meinem Vorschlag müsste man das "Sollvolumen" unter Berücksichtigung der Temperatur korrigieren. Die Gewichtsmessung von 800 l wäre nicht ganz trivial. Deshalb müsste man wohl die Teilmengen gewichtsmäßig erfassen, was auch bei meinem Vorschlag machbar wäre. Gravimetrische Durchflussmesser, die den Massendurchfluss erfassen haben (im "vernünftigen" Preisbereich) nicht die geforderte Genauigkeit.

    Es bleibt spannend! Mich würde interessieren, welche Lösung letztlich zum Erfolg führt. Das wird hier hoffentlich berichtet. (Auch was warum nicht geklappt hat, damit alle Leser dazulernen können.)

    Das ist eine echte Herausforderung. Die erste Frage wäre, ob die Befüllung unter Druck oder drucklos erfolgen muss / kann und ob beim Befüllen Wasser verloren gehen kann. Sehr vereinfacht gesprochen könnte man einen Behälter (ähnlich einem Eimer) mit einer definierten Menge befüllen und diesen in den Kessel entleeren. Das klingt erst einmal lächerlich primitiv, aber wenn der "Eimer" einen Deckel hat und bis zum Rand gefüllt wird (mit Überlauf ??), kann man ihn dann komplett entleeren und hat pro Vorgang eine genau definierte Menge in den Kessel gefüllt. Nimmt man statt des Eimers einen Kolben, geht das technisch eleganter. In der Medizin dosiert man auf diese Weise (mit einem "Perfusor") Medikamente, bei denen es auf Genauigkeit ankommt. So kann man viele Ableitungen überlegen, wobei es aber auf die oben genannten Randbedingungen ankommt.


    Nur als Beispiel: Ein Rohr ist nach unten offen, steht aber auf einem dichtenden Untergrund. Von oben wird es befüllt, bis das Wasser überläuft. Das übergelaufene Wasser muss abfließen können. Das Rohr wird auf dem Untergrund verschoben, bis es über dem Kessel ist. Hier hat der Untergrund ein Loch und das Wasser läuft komplett in den Kessel. Randbedingungen wie dass das beim Befüllen überlaufende Wasser natürlich durch eine Sperre gehindert werden muss, in den Kessel zu laufen, müssen natürlich gelöst werden und während der Bewegung darf natürlich auch kein Wasser überschwappen. Klingt komplizierter als es ist. Ähnliche Methoden sind in der Verpackung (sogar von Lebensmitteln) nicht unüblich.

    Da sehr viele hardwarenahe Aktivitäten ablaufen sollen (Schalter abfragen, Heizung, Licht und Sirene anschalten usw.) scheint mir der Raspberry nicht die beste Wahl. Hierfür würde ich einen Arduino oder (wegen der Netzwerkanbindung) einen ESP32 oder ESP8266 nehmen. Für die Batteriepufferung würde ich einen Bleiakku nehmen, da dieser wie eine Autobatterie - unter Einhaltung der Ladeendspannung - dauerhaft "geladen" werden kann. Lediglich ein Schutz gegen Tiefentladung ist erforderlich. Alle anderen Forderungen halte ich für nicht problematisch.


    Ein Raspberry wäre (zusätzlich) sinnvoll, wenn eine Kamera angeschlossen und die Bilder verarbeitet werden sollten (Bewegungserkennung als Schutz gegen unberechtigtes Betreten). Da hätte der Arduino Schwächen.

    Von alten Drehspulinstrumenten abgesehen messen die meisten Instrumente Ströme über den Spannungsabfall, der an einem Messwiderstand entsteht, wenn der Strom durch diesen fließt. Der Widerstand wird möglichst klein gemacht, um den Spannungsabfall gering zu halten, ABER es ist schwierig, diese Widerstände umzuschalten um den Messbereich anzupassen. Deshalb haben viele Messgeräte unterschiedliche Buchsen für den Messbereich 10 A und mA. Die Widerständemacht man so groß, dass der kleinste Strommessbereich gerade eine genügend hohe Messspannung liefert. Bei größeren Strömen teilt man die Messspannung ähnlich wie bei normalen Spannungsmessungen. Wenn man ein Messgerät hat, welches Ströme unter 1 mA messen kann, ist es für höhere Ströme besser, einen niederohmigen Messwiderstand außen zu verwenden und die Spannung über diesem zu messen. Damit kann man den Spannungsabfall verringern, muss aber den Strom aus der gemessenen Spannung berechnen.

    Eine "einfache" Handhabung zieht oft Nachteile mit sich. Das gilt auch bei sehr teuren Geräten.

    Ich würde auch für die ersten Schritte Phyton nehmen, da es die Sprache ist, die ursprünglich "mitgeliefert" wurde. Auch ist die Ähnlichkeit mit C sehr groß, was einen Umstieg auf C erleichtert. Andere "exotischere" Programmiersprachen sollte man nur in Betracht ziehen, wenn man da schon Erfahrungen hat.

    Hallo Markus,

    danke für die Info. Das passt gut. Ich habe das aus dem Diagramm nicht herauslesen können - auch weil ich die Zeitachse nicht genau genug ablesen konnte. Sorry für die Mehrarbeit. Leider kann ich im Moment nicht viel Zeit aufbringen, aber ich verfolge das Ganze weiter und melde mich, wenn ich meine, dass ich Hilfreiches beitragen kann.


    Noch eine Frage: Soll der Raspi nur mithören oder soll er aktiv (Daten gehen erst zum Raspi und werden dann von ihm nach Auswertung weitergeleitet) in die Kommunikation eingebunden werden? Bei einem aktiven Eingriff ist es vielleicht sinnvoll, die dazu nötige Unterbrechung der Kommunikationsleitung über eine Schaltung automatisch wieder herzustellen, wenn der Raspi ausgeschaltet oder "abgestürzt" ist (z.B. durch ein 2-poliges Umschaltrelais, das von einem Raspi-Watchdog immer wieder getriggert wird). Nur wenn die Watchdog-Impulse regelmäßig kommen, ist die "Umleitung" über den Raspi aktiv. (Überwachung durch ein retriggerbares Monoflop, das das Relais bedient.)

    Also nach einer UART-Schnittstelle sehen mir die Daten nicht aus. Wenn der erste Impuls (von high nach low) das Startbit wäre, müssten die Zeiten für ein Bit genau so breit sein wie das Startbit und nach spätestens 9 Bit müsste dann ein Stopbit (high-Pegel) anliegen, wobei die Zahl der Bits zwischen Start- und Stopbit bei jedem Datenwort immer gleich sein muss. Das habe ich für verschiedene Anzahl an Bits zwischen Start und Stop ausprobiert, Es passte aber nicht. Außerdem konnte ich die Zeit der Pulsbreite nicht so genau herausfinden, dass sich eine "vernünftige" Baudrate ergab. Da würde ich erst noch einmal nachforschen um herauszufinden, ob es sich wirklich um ein UART-Datentelegramm - mit welcher Baudrate, mit wieviel Datenbits und ob mit oder ohne Parity (odd oder even) gesendet wird. Dann würde ich für den ersten Versuch die Daten über einen Optokoppler an den Raspi übertragen. Da stellt sich die Frage einer unterschiedlichen Potentialdifferenz erst einmal nicht. Die würde ich dann in einem zweiten Schritt klären. (Falls die Datenleitung einen Optokoppler nicht treiben kann, einen Transistor - als Emitterfolger geschaltet - zwischen Datenleitung und Optokoppler schalten.