Arduino Forum

International => Deutsch => Topic started by: Hayley_Hay on May 14, 2018, 09:38 am

Title: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 14, 2018, 09:38 am
Hallo!

Ich bin neu - sowohl hier im Forum als auch in der Arduino-Welt.

Der Grund für meinen Thread ist, dass ich ein für meine Verhältnisse größeres Projekt plane, und dafür lieber zu früh als zu spät hier um Meinungen und Tipps bitten möchte.

Zu meinem Hintergrund: Ich studiere Umwelttechnik, bin daher sowohl mit Elektronik als auch mit Informatik schon grundlegend in Berührung gekommen. Ich traue mir zu, einfache Schaltungen aufzubauen und habe (meistens) genug Ausdauer, um bildschirmweise Code nach der einen fehlenden Klammer zu durchforsten.

Zum Projekt: Für eine abwassertechnische Anlage sollen neue Füllstandsensoren getestet werden. Das sind bisher einfache Schwimmerschalter an einer SPS. Da in Zukunft die Steuerung auf RasPi umgestellt werden soll (nicht von mir), besteht die Möglichkeit, andere Sensoren auszuprobieren und gegebenenfalls die alten zu ersetzen. Dies insbesondere in Hinblick auf die langfristige Zuverlässigkeit. Dafür habe ich jetzt eine Auswahl unterschiedlicher Sensoren (über Temperatur, Druck, Kapazität, ...) und einen Versuchsaufbau erdacht. Dieser besteht aus zwei Behältern, zwischen denen zwei Pumpen in festen Intervallen Wasser hin- und her pumpen, jeweils mit ebenfalls festen Pausen. In einem (oder beiden) Behältern befinden sich die Sensoren zur Füllstanderfassung.
Die Aufgabe besteht nun darin, die Ausgabe der Sensoren aufzuzeichnen, außerdem die Pumpenintervalle zu steuern und ebenfalls aufzuzeichnen, um den sich dadurch ergebenden tatsächlichen Füllstand mit dem Sensor-output vergleichen zu können. Das ganze soll tageweise unbeaufsichtigt durchlaufen können.

Zur Verfügung stehen mir bisher ein RasPi 3 B+ sowie je ein UnoRev3 DIP und ein Leonardo.

Da ich wie gesagt - bis auf die Auswahl der Sensoren - noch ganz am Anfang stehe, freue ich mich über jeden Hinweis. Mir ist klar, dass das kein Anfängerprojekt ist, daher würde ich mich insbesondere über Tipps freuen, wie das ganze sinnvoll schrittweise aufzubauen sein könnte um die Lernkurve möglichst steil halten zu können. Ich hatte daran gedacht, erst mit der einfachen Temperatur- und Druckmessung am Arduino zu beginnen, mich dann um die Aufzeichnung und dann um die Steuerung der Pumpen zu kümmern. Aber das ist nur meine erste Überlegung, vielleicht gibt es da ja ganz andere Varianten. Oder jemand hat grundlegende Gedanken, darüber würde ich mich auch freuen!

Gruß

Hay
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Johannes81 on May 14, 2018, 10:22 am
Klingt wirklich interessant. Was ich mir hier gut vorstellen könnte, dass du bei deinem Projekt die Vorteile vom Arduino und vom Raspy nutzt! Spontan würde ich sagen, nimm doch den Arduino für die Aufnahme der Sensorwerte und Steuerung der Pumpen. Die gemessenen Sensorwerte übergibst du an den Raspy, der sich um die Aufzeichnung und Darstellung der Informationen kümmert.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Tommy56 on May 14, 2018, 11:44 am
Zur Info: Crossposting (https://www.arduinoforum.de/arduino-Thread-Projekt-zur-Ermittlung-der-Dauerbetriebseigenschaften-unterschiedlicher-Sensoren?pid=49883#pid49883) ist aus guten Gründen im Netz verpönt. Informiere Dich mal.

Gruß Tommy
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 14, 2018, 11:57 am
Zur Info: Crossposting (https://www.arduinoforum.de/arduino-Thread-Projekt-zur-Ermittlung-der-Dauerbetriebseigenschaften-unterschiedlicher-Sensoren?pid=49883#pid49883) ist aus guten Gründen im Netz verpönt. Informiere Dich mal.

Gruß Tommy
Hallo Tommy! Danke für den Hinweis und das Verlinken. Ich freue mich weiterhin auch über inhaltliche Tipps und versuche, das Crossposten zukünftig zu vermeiden.

@Johannes81: Danke für Deinen Kommentar und Deinen Vorschlag! Die Arbeitsteilung kam mir auch schon in den Sinn, also ist meine Herangehensweise vielleicht nicht vollkommen unsinnig. Schön!
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: uwefed on May 14, 2018, 12:34 pm
Entscheide Dich für das eine oder andere Forum.

User fühlen sich auf den Arm genommen wenn Du doppelt Hilfe frägst und sie Dir Antworten geben die auf der anderen Seite bereits gegeben wurden oder noch schlimmer Du Antworten nur in einem Forum gibst weil dort rückfragen gemacht wurden. So kann leicht eine Diskussion ins Leere gehen.

Grüße Uwe
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 14, 2018, 03:00 pm
Entscheide Dich für das eine oder andere Forum.

User fühlen sich auf den Arm genommen wenn Du doppelt Hilfe frägst und sie Dir Antworten geben die auf der anderen Seite bereits gegeben wurden oder noch schlimmer Du Antworten nur in einem Forum gibst weil dort rückfragen gemacht wurden. So kann leicht eine Diskussion ins Leere gehen.

Grüße Uwe
Danke, den anderen Thread habe ich gerade versucht zu schließen. Ich hoffe es ist klar, dass ich niemanden "auf den Arm nehmen" will, sondern einfach auf viele Hinweise und Gedanken zu dem Projekt hoffe.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: combie on May 14, 2018, 03:12 pm
Quote
Oder jemand hat grundlegende Gedanken, darüber würde ich mich auch freuen!
Das grundlegende Konzept für alle Ablaufsteuerungen, und so was wirds ja wohl werden, ist der "endliche Automat".

Übrigens:
Messwert aufnehmen, und weiter reichen, ist auch ein Job für einen Automaten.
Da dürfte also ca 1/2 Dutzend von zusammen kommen.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Tommy56 on May 14, 2018, 04:08 pm
Wie sind denn die geometrischen Gegebenheiten? Relativ freie Volumen oberhalb der Füllungen?
Dann würden sich wasserdichte Ultraschallsensoren anbieten. Diese haben allerdings bedingt durch die Umschaltung von Sender zu Empfänger einen Mindestmeßabstand von 25 cm.

Gruß Tommy
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Rentner on May 14, 2018, 07:46 pm
Hallo,

Kappazitive Sensorne zur Füllstandsmessung würde ich in dem Fall nicht nehmen , bei Abwasser kann die Kappazitive Leitfähigkeit sicher stark schwanken. Sauer / Lauge / viel / wenig Schei... drin usw.

Ultraschall ist sicher gut , kommt aber auf die Behälter an . Gibts da Refektionen in dem Behälter, (Stahl ) , Gibts Rührer in dem Behälter, das können die meisten aber ausblenden.

Noch mal die Frage, warum keine  SPS zur Steuerung der letztlichen Anlage, hier wird 24V Technik verwendet, wie auch bei den meisten in der Industrie verwendeten Sensoren. Für Deinen Versuch ist ein UNO ja ok.

Gehts darum den Füllstand zu messen oder müssen letztlich Pumpen eingeschartet werden (Ein /AUS )  Derzeit sind da anscheinend Schwimmerschalter verwendet. Wozu was messen wenn nur was eingeschaltet werden soll? Schwimmerschalter sind zuverlässig , sind z.B an jeder Tauchpumpe dran.

Um ein Messystem zu testen benötigst Du eventuell ein zweites System als Reverenz. Wie willst Du heausfinden wie genau ein Sensor arbeitet / misst , wenn Du mit dem selben Sensor deine Pumpe schaltest und damit die Behälter umpumpst.

ich denke Du solltest Dich auf jeden Fall bei der Auswahl der Sensorik an den letzlichen Anforderungen  orientieren. Werden die Dinger letztlich im Freien benötigt.

Schutzart beachten (IP Klassen)
bei der Porzesstechnik wird auch heute noch viel 4-20mA  verwendet (Einfach zwei Drähte ) 
Wenn digitale Schnittstelle was (Can-Bus, Profi-Bus, Profi-Net)

Gruß Heinz


 




Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: postmaster-ino on May 14, 2018, 07:48 pm
Hi

Abwassertechnische Anlage - kann Alles sein - vom Klärwerkseinlauf (wo halt Alles durch kommt, dafür viel Wasser), bis zu der Plörre, Die 'entwässert' (kA, komme nicht auf das richtige Wort) wird, wo's schon etwas dickflüssiger zu geht.

Da Du hier ja einen Versuchsaufbau planst, soll Dieser in Zukunft wohl auch längerfristig im Einsatz bleiben.
Mit Abwässern hatte ich bisher nur in Klärwerken zu tun, dort ist aber Alles, was mit dem Abwasser in Berührung kommt (oder drüber hängt) recht schmutzig - klar, macht ja auch Keiner dort sauber.

Bei den Ultraschall-Sensoren hätte ich Bedenken, daß sich Diese zusetzen können - dürfte aber schon einige Zeit dauern.
Wenn man hier zwei Sensoren nimmt, könnte man eine Verschmutzung detektieren und zur Reinigung (... Besen??) auffordern.

Sonst wäre die Füllhöhe per Druck (stehende Wassersäule) unabhängig von Fremdkörpern erfassbar - braucht halt eine Luftpumpe, Die diesen Druck aufbringt (Menge wie ein Perlstein im Aquarium wäre ausreichend) und einen Sensor, Der diesem Druck ebenfalls ausgesetzt ist - und muß nicht zwingend in direkter Nähe der Wassersäule angebracht werden.
Ggf. kann man die Luftpumpe zur Messung abschalten, um Druckschwankungen durch die Pumpe auszuschließen.

MfG
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 14, 2018, 08:18 pm
Wie sind denn die geometrischen Gegebenheiten? Relativ freie Volumen oberhalb der Füllungen?
Dann würden sich wasserdichte Ultraschallsensoren anbieten.
Es sind leider keine freien Volumina, sondern alles ziemlich eng verbaut. Außerdem werden die Tanks belüftet und es ist mit Schaumbildung zu rechnen. Daher habe ich die US-Sensoren auch schon verworfen. Ich setze nach einer ersten Beschäftigung mit dem Thema auf ein Steigrohr mit oder ohne Membran, an dessen Ende ein Drucksensor sitzt oder auf eine Kaskade von Thermistoren.


Hallo,

Kappazitive Sensorne zur Füllstandsmessung würde ich in dem Fall nicht nehmen , bei Abwasser kann die Kappazitive Leitfähigkeit sicher stark schwanken. Sauer / Lauge / viel / wenig Schei... drin usw.
Die kapazitive Messung wäre nur ein Versuch, ich denke aber auch, dass es auf Grund von Ablagerungen etc. auf Dauer nichts bringt.

Noch mal die Frage, warum keine  SPS zur Steuerung der letztlichen Anlage, hier wird 24V Technik verwendet, wie auch bei den meisten in der Industrie verwendeten Sensoren. Für Deinen Versuch ist ein UNO ja ok.

Gehts darum den Füllstand zu messen oder müssen letztlich Pumpen eingeschartet werden (Ein /AUS )  Derzeit sind da anscheinend Schwimmerschalter verwendet. Wozu was messen wenn nur was eingeschaltet werden soll? Schwimmerschalter sind zuverlässig , sind z.B an jeder Tauchpumpe dran.
Es sind momentan Schwimmerschalter als Füllstandgrenzschalter, richtig. Denen machen aber mechanisch die Belüftungsintervalle auf Dauer Probleme. Und es soll insgesamt mit dem Hashtag Industrie 4.0 experimentiert werden, in Richtung Fernüberwachung etc. Daher das RasPi-Projekt, an das ich sozusagen nur andocke. Und wenn zukünftig ein genauerer Füllstand als nur wie bisher Voll/Leer gemessen werden könnte, hätte es auch noch andere Vorteile (effizienterer Energieeinsatz z.B.).

Um ein Messystem zu testen benötigst Du eventuell ein zweites System als Reverenz. Wie willst Du heausfinden wie genau ein Sensor arbeitet / misst , wenn Du mit dem selben Sensor deine Pumpe schaltest und damit die Behälter umpumpst.
Ich dachte daran (hier bin ich aber nicht sicher, inwieweit das realisierbar ist) die definierten Pumpintervalle als Referenz zu nehmen. Also lediglich einmal aufzuzeichnen, wieviel Wasser z.B. in fünf Minuten gepumpt wird, und dann lediglich die Pumpvorgänge selber aufzuzeichnen, also die Stellung(-sänderung) der Relais und Ventile. Das würde insofern reichen, weil es beim Füllstand nur auf +/- fünf Zentimeter in einem 1000-Liter-Tank ankommt. Aber dafür wäre es eben wichtig, in Echtzeit aufzuzeichnen.

ich denke Du solltest Dich auf jeden Fall bei der Auswahl der Sensorik an den letzlichen Anforderungen  orientieren. Werden die Dinger letztlich im Freien benötigt.

Schutzart beachten (IP Klassen)
bei der Porzesstechnik wird auch heute noch viel 4-20mA  verwendet (Einfach zwei Drähte ) 
Wenn digitale Schnittstelle was (Can-Bus, Profi-Bus, Profi-Net)

Gruß Heinz
Das ganze findet eher im kleinen Maßstab statt, und wie gesagt bin ich was die neue Prozesssteuerung angeht nur am Rande involviert. Und da wird eben auf RaspberryPi gesetzt und daher beschäftige ich mich jetzt erst einmal grundlegend mit solchen Fragen.





Hi

Abwassertechnische Anlage - kann Alles sein - vom Klärwerkseinlauf (wo halt Alles durch kommt, dafür viel Wasser), bis zu der Plörre, Die 'entwässert' (kA, komme nicht auf das richtige Wort) wird, wo's schon etwas dickflüssiger zu geht.

Da Du hier ja einen Versuchsaufbau planst, soll Dieser in Zukunft wohl auch längerfristig im Einsatz bleiben.
Mit Abwässern hatte ich bisher nur in Klärwerken zu tun, dort ist aber Alles, was mit dem Abwasser in Berührung kommt (oder drüber hängt) recht schmutzig - klar, macht ja auch Keiner dort sauber.

Bei den Ultraschall-Sensoren hätte ich Bedenken, daß sich Diese zusetzen können - dürfte aber schon einige Zeit dauern.
Wenn man hier zwei Sensoren nimmt, könnte man eine Verschmutzung detektieren und zur Reinigung (... Besen??) auffordern.

Sonst wäre die Füllhöhe per Druck (stehende Wassersäule) unabhängig von Fremdkörpern erfassbar - braucht halt eine Luftpumpe, Die diesen Druck aufbringt (Menge wie ein Perlstein im Aquarium wäre ausreichend) und einen Sensor, Der diesem Druck ebenfalls ausgesetzt ist - und muß nicht zwingend in direkter Nähe der Wassersäule angebracht werden.
Ggf. kann man die Luftpumpe zur Messung abschalten, um Druckschwankungen durch die Pumpe auszuschließen.

MfG
Hey! Richtig, die Bedingungen sind durchaus erschwerend und zudem sehr unterschiedlich. Ultraschall habe ich schon verworfen (s.o.), und allgemein zu den Sensoren hab ich auch was geschrieben, das mit dem Druck war auf jeden Fall auch eine Idee. Wenn die erste Bestellung mit den Sensoren ankommt will ich damit wie gesagt erst einmal versuchen, überhaupt etwas brauchbares (im Wasserglas) zu messen. Dann würde ich mich mit der Ansteuerung der Pumpen beschäftigen. Dafür habe ich ja die zwei Arduinos - reichen die bei vielleicht vier oder fünf zu testenden Sensoren und zwei Relais und zwei Ventilen?
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: postmaster-ino on May 14, 2018, 08:30 pm
Hi

Fünf Sensoren - 6 analoge Eingänge, noch mehr Digitale, PWM-Ausgänge und 'Normale', I²C, SPI ... ja, denke, Das reicht!
Magnet-Artikel (aka Relais): Freilauf-Diode nicht vergessen

Mit BME280 wollte ich eigentlich auch schon lange im Wassertank gespielt haben ... (I²C, unter Anderem auch Luftdruck - als 3,3V und 5,0V-Variante zu bekommen)

Ausgabe der Messwerte im Terminal oder per LCD sind auch kein Hexenwerk - mit graphischen Displays habe ich selber leider noch keine große Erfahrung - die Beispiele klappen aber.

MfG
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: themanfrommoon on May 14, 2018, 08:31 pm
Moin,
Ich habe ne Jung Doppelpumpenanlage zur Hausabwasserförderung.
Da hängt eine Glocke über dem Wasserspiegel. Steigt der Wasserspiegel so drückt dieser die Luft im der Glocke zusammen. Diese drückt dann über einen kleinen Schlauch auf einen mechanischen Druckschalter.
Ich denke die machen das so weil dies die zuverlässigste Variante über lange Zeit ist.
In Waschmaschinen wird das auch so gemacht. Nennt sich dort Luftfalle.

Viel Erfolg und Lieben Gruß,
Chris
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: uwefed on May 14, 2018, 09:53 pm
Da hängt eine Glocke über dem Wasserspiegel. Steigt der Wasserspiegel so drückt dieser die Luft im der Glocke zusammen. Diese drückt dann über einen kleinen Schlauch auf einen mechanischen Druckschalter.
Ich denke die machen das so weil dies die zuverlässigste Variante über lange Zeit ist.
In Waschmaschinen wird das auch so gemacht. Nennt sich dort Luftfalle.
Da von Schaumbildung ausgegangen wird ist eine solche Anordnung nicht dauerhaft verläßlich da sicher Schaum und damit Schmutz in den Drucksensor gelangt.

Grüße Uwe
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: themanfrommoon on May 14, 2018, 10:08 pm
Quote
Da von Schaumbildung ausgegangen wird ist eine solche Anordnung nicht dauerhaft verläßlich da sicher Schaum und damit Schmutz in den Drucksensor gelangt.
Weit gefehlt!

Das System ist mit Sicherheit die zuverlässigste Variante, sonst würden Abwasserpumpen und Waschmaschinen ja nicht dauerhaft zuverlässig funktionieren.
Du kannst dir gar nicht vorstellen was da alles drin rumschwimmt!
Schaum ist überhaupt kein Problem.
Zentimeterdicke Beläge aus was auch immer, Papiertücher, Feuchttücher, Extremente jeder beliebigen Viskosität, eine Badewannenschildkröte, jede Menge und Variante von Damenhygieneartikeln, alles was es aus der Küche durch den Abfluss dahin schafft. Man kann sich nicht vorstellen was diese Konstruktion aushalten muss. Und das tut sie bei uns seit Jahren absolut problemlos.
Ich habe die Glocken letztes Jahr mal kontrolliert. Die sahen so aus, als ob die noch 30 Jahre so weitermachen ohne das irgendwas passiert.
Bis dahin sind Ultraschallsensoren schon von der Wand ab gerostet.
Gerade die Luftfalle in der Waschmaschine hat doch auch kein Problem mit Schaum.
Der Drucksensor ist einige Meter entfernt, und deutlich höher als der Wasserspiegel jemals sein kann. Da kommt niemals irgendwas aus der Leitung hin. Unmöglich!
Hier mal ein Video wie sowas aussieht:
https://www.youtube.com/watch?v=wKnQfjJ3zG0 (https://www.youtube.com/watch?v=wKnQfjJ3zG0)

Lieben Gruß,
Chris
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 15, 2018, 09:15 am
Das System ist mit Sicherheit die zuverlässigste Variante, sonst würden Abwasserpumpen und Waschmaschinen ja nicht dauerhaft zuverlässig funktionieren.
Du kannst dir gar nicht vorstellen was da alles drin rumschwimmt!
Schaum ist überhaupt kein Problem.
Danke für den Link! Ich habe wie gesagt auch Hoffnung in dieses oder ein ähnliches Prinzip. Was die Sensoren angeht habe ich keinen Zweifel, dass etwas dabei rauskommen wird, das funktioniert. Da ich aber den Langzeittest benötige muss ich mir irgendwann eben auch Gedanken zur Steuerung des Versuchs und zur Aufzeichnung der Ergebnisse machen. Aber erst mal werde ich heute anfangen, die Elektronik aufzubauen und irgend welche LEDs leuchten zu lassen oder so.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 23, 2018, 08:04 am
So, da bin ich wieder.

Ich habe inzwischen drei der Sensoren am Arduino soweit, dass sie mir einen Output geben, sogar auf ein kleines OLED. Leider bekomme ich fritzing aus mir unerfindlichen Gründen gerade nicht zum Laufen, daher muss die Darstellung meiner bisherigen Schaltung noch etwas warten.
In der Zwischenzeit habe ich aber noch ein paar Fragen, die mir im Lauf der Bastelei begegnet sind. Vielleicht hat hier ja irgendwer ein oder zwei passende Antworten parat.
1. Ich möchte einen Arduino mit den Sensoren bestücken, und den anderen die Pumpensteuerung übernehmen lassen. Wie muss/sollte ich die beiden koppeln, damit ich später in den Daten die genaue Referenz beziehen kann, welcher Sensor bei welchem Pumpenintervall welche Ausgabe hatte? Reichen zwei Clock-Module, und den Rest übernimmt der Raspi?

2. Und apropos Raspi: Welche Verbindung / Module benötige ich hier zu den Arduinos?

Und 3.: Welches Datenformat wäre hier angemessen? Hängt das von der Art der Auswertung ab, oder gibt es da irgend einen empfehlenswerten Standard?
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: HotSystems on May 23, 2018, 10:52 am
1. Ich möchte einen Arduino mit den Sensoren bestücken, und den anderen die Pumpensteuerung übernehmen lassen. Wie muss/sollte ich die beiden koppeln, damit ich später in den Daten die genaue Referenz beziehen kann, welcher Sensor bei welchem Pumpenintervall welche Ausgabe hatte? Reichen zwei Clock-Module, und den Rest übernimmt der Raspi?

2. Und apropos Raspi: Welche Verbindung / Module benötige ich hier zu den Arduinos?

Und 3.: Welches Datenformat wäre hier angemessen? Hängt das von der Art der Auswertung ab, oder gibt es da irgend einen empfehlenswerten Standard?
1. Wenn die Arduinos dicht beieinander liegen, dann empfehle ich (bei einem Master) I2C.

2. Auch hier könntest du I2C verwenden. Wird aber schwierig, wenn es 2 Master sind. Alternativ geht da sicher auch seriell.

3. Was du mit Datenformat meinst, verstehe ich nicht.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Theseus on May 23, 2018, 11:02 am
Leider bekomme ich fritzing aus mir unerfindlichen Gründen gerade nicht zum Laufen, daher muss die Darstellung meiner bisherigen Schaltung noch etwas warten.
Zeichne lieber einen aussagekräftigen Schaltplan per Hand. Es gibt kaum was schlimmeres als die Fritzing-Breadboard Zeichnungen. Sie helfen nur Einsteigern für die ersten Aufbauten. Danach sollte man richtige Schaltpläne nutzen. Zur Ehrenrettung von Fritzing: Mit Fritzing kann man auch richtige Schaltpläne erstellen, nur nutzen das die wenigsten.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: postmaster-ino on May 23, 2018, 08:18 pm
Hi

'Schreibt' der RasPi nur mit, oder soll Der entscheiden, daß die Pumpe angeworfen/abgestellt werden soll?
Wenn der RasPi der Master über die beiden Arduino werden soll, würde ich die Sensor-Werte sekündlich(?) zum Raspi schicken und gut.
Der andere Arduino wartet eigentlich nur darauf, daß Er den Befehl bekomt, die Pumpe zu starten (zu stoppen) - könnte also im Dauerschlaf auf einen einschlagenden Interrupt warten.

Wenn der RasPi nur mitschreibt, wäre der Sensor-Arduino der I²C-Master und würde die Sensor-Werte an die beiden Slaves schicken - wenn Beide die gleiche ID haben, braucht Das auch nur 1x verschickt werden.

Wenn eine irgendwie anders geartete Kommunikation angedacht ist, bin ich von den MCP2515 CAN Bus Modul - TJA1050 Transceiver 5V Arduino Raspberry Pi, erster eBay-Treffer (http://www.ebay.de/i/253369172743) recht angetan - keine Probleme mit Protokoll, Arbitrierung, verlorenen oder verstümmelten Übertragungen - zugegeben, zu den zwei Daten-Adern wird wohl noch Vdd(+5V) und Vss(hier=GND) benötigt.
Meine Module liegen aber nur überall im Haus verteil rum, also Nichts mit Umwelt oder verschärften Bedingungen durch größere Pumpen in der Nachbarschaft.

MfG
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 24, 2018, 03:31 pm
Wenn der RasPi nur mitschreibt, wäre der Sensor-Arduino der I²C-Master und würde die Sensor-Werte an die beiden Slaves schicken - wenn Beide die gleiche ID haben, braucht Das auch nur 1x verschickt werden.
Im Prinzip hatte ich es mir so gedacht, ja. Also wären dann RasPi und Steuerungs-Arduino beide Slave, richtig?

Eine neue Schwierigkeit hat sich aufgetan: Es wird vermutlich notwendig sein, mit 230V zu arbeiten. Das liegt daran, dass sowohl die im Betrieb eingesetzten Pumpen (bzw. Verdichter, es handelt sich um sog. Mammutpumpen) als auch die Magnetventile damit betrieben werden. Da gibt es sicherlich einiges zu beachten; wer mir da mit Stichworten weiterhelfen kann, dem wäre ich sehr dankbar!
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: agmue on May 24, 2018, 05:58 pm
wer mir da mit Stichworten weiterhelfen kann, dem wäre ich sehr dankbar!
Finger weg von Netzspannung!

Jeder andere Rat würde mich mitschuldig machen, wenn was passiert.

Mache Dich bitte kundig, was Du darfst und was nicht. Unwissenheit schützt nicht vor Verantwortung. Auch das gehört zum Studium!
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Rentner on May 24, 2018, 06:20 pm
Hallo

Du wolltest ja nur ein Stichwort Relais

Es gibt fertige Relaismodule mit mehreren Relais drauf 4, 8 da sind dann auch schon die Freilaufdioden mit verbaut.

Achtung!!  

Wenn Du das für Dein Projekt offiziell benötigst, also nicht für privaten Bastelkram,  solltest Du darüber nachdenken das zumindest die Bauteile die mit Netztspannung in Berührung eine Zulassung zum Betrieb in el. Anlagen haben. Es gibt da die VDE 0100 bzw IEC60204 ff. die das regeln.

Wenn es sich um grössere Pumpen mit grösserer Leistung handelt > 2,2KW wird es sich mit Sicherheit um Drehstrommotoren handeln 3*400V dann kommst Du um Schütze und Motorschutzschalter nicht drumherum. Schütze gibt es u.a mit 24 DC oder 220V AC Spulen. Schutzbeschaltung nicht vergesssen für die Schütze und die Ventile.

Es gibt auch industrielle optokoppler Bausteine für die Hutschiene Input 5 V, ich kenne die aber nur für 24V DC output.  

Das darfst Du dann, zumindest für den Leistungsteil aber nicht mehr selber bauen , es sei denn Du bist ausgebildetet Fachkraft.

Heinz  

Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 25, 2018, 07:12 am
Danke für die Hinweise in Bezug auf Sicherheit im Umgang mit Netzspannung! Ich habe zum Glück jemanden, der ausgebildet ist und vor dem Einschalten alles mit mir durchgehen wird. Leider hat er auch noch andere Aufgaben, sodass ich die Arbeit bis dahin so weit wie möglich alleine machen muss. Aber das hat den Nebeneffekt, dass ich Neues lernen darf ;-)

Die verwendeten Verdichter arbeiten zum Glück nur mit einer Phase und ich glaube 10 A, also unter 2,2 kW.

Wie steht es denn bei bezahlbaren Relais mit der Schaltfrequenz? Ich habe ja schon so ca. 1 Vorgang pro Minute geplant, vielleicht sogar mehr. Das müssten die so ca. zwei bis vier Wochen lang aushalten, länger wäre natürlich besser. Sollte ich da eher halbleiterbasierte Bausteine nehmen ()billig hier (https://www.sainsmart.com/products/2-4-8-ch-5v-solid-state-relay)? Was wäre da wiederum zu beachten?

Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: noiasca on May 25, 2018, 07:54 am
Die verwendeten Verdichter arbeiten zum Glück nur mit einer Phase und ich glaube 10 A, also unter 2,2 kW.

[...]
Sollte ich da eher halbleiterbasierte Bausteine nehmen ()billig hier (https://www.sainsmart.com/products/2-4-8-ch-5v-solid-state-relay)? Was wäre da wiederum zu beachten?
das findest sogar im Drüberlesen dass das nicht zusammenpasst:

Rated output load: 2A at 100 to 240VAC.(50/60Hz).

Schau dir bitte mal die Datenblätter anständiger Schütze/Relais für Schaltschränke an, welche Kontaktlebensdauer die haben.

So als Idee zum Lesen https://www.eltako.com/fileadmin/downloads/de/Technische_Daten/Technische_Daten_elektromechanische_Schaltrelais_und_Installationsschuetze%20Kapitel_19.pdf (https://www.eltako.com/fileadmin/downloads/de/Technische_Daten/Technische_Daten_elektromechanische_Schaltrelais_und_Installationsschuetze%20Kapitel_19.pdf)

Netzspannung ist kein Kinderspielzeug.

Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 25, 2018, 09:04 am
das findest sogar im Drüberlesen dass das nicht zusammenpasst:
Du hast natürlich Recht, danke. Da hätte ich mit dem Posten wohl bis nach dem Frühstück warten sollen ;-)
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Theseus on May 25, 2018, 09:21 am
Danke für die Hinweise in Bezug auf Sicherheit im Umgang mit Netzspannung! Ich habe zum Glück jemanden, der ausgebildet ist und vor dem Einschalten alles mit mir durchgehen wird. Leider hat er auch noch andere Aufgaben, sodass ich die Arbeit bis dahin so weit wie möglich alleine machen muss.
Dann sprich vorm Aufbau mal mit ihm. Ich kann mit gut vorstellen, dass in der Uni/Hochschule auch das ein oder andere in den Kramskisten in den Laboren rumliegt. So war es jedenfalls in meinem Studium. Man sprach die Idee mit dem technischen Mitarbeitern ab. Erst danach kaufte man ein, was nicht schon vorhanden war. Das ein oder andere Teil wurde dabei sogar noch aus der Entsorgungskiste gerettet.

Zu den elektrinischen Relais (SSR): Sie müssen bei dem Verdichter für induktive Lasten geeignet sein. Bei induktiven Lasten sind sie nur für einen Bruchteil der nominalen Leistung geeignet, so dass man vermeintlich krass überdimensionieren muss  
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 25, 2018, 09:50 am
Dann sprich vorm Aufbau mal mit ihm. Ich kann mit gut vorstellen, dass in der Uni/Hochschule auch das ein oder andere in den Kramskisten in den Laboren rumliegt. So war es jedenfalls in meinem Studium. Man sprach die Idee mit dem technischen Mitarbeitern ab. Erst danach kaufte man ein, was nicht schon vorhanden war. Das ein oder andere Teil wurde dabei sogar noch aus der Entsorgungskiste gerettet.
Das tue ich auf jeden Fall. Hier liegt aber tatsächlich leider relativ wenig herum, was die Elektronik angeht. Nur Magnetventile und Verdichter sind da, soweit ich es bisher herausgefunden habe. Dafür ist das Geld für die fehlenden Komponenten auf jeden Fall da.

Zu den elektrinischen Relais (SSR): Sie müssen bei dem Verdichter für induktive Lasten geeignet sein. Bei induktiven Lasten sind sie nur für einen Bruchteil der nominalen Leistung geeignet, so dass man vermeintlich krass überdimensionieren muss 
Danke auch für diesen Hinweis! Ist hier der Abschaltstrom das Problem und wäre das mit einer Diodenschaltung zu beheben oder liegt der Punkt ganz woanders?
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: combie on May 25, 2018, 09:59 am
Quote
Diodenschaltung
Freilaufdioden machen dir einen hübschen Kurzschluss bei Wechsel- oder Drehstrom Versorgung.
Willst du das?

Aufzeichnen und berechnen!
Oder auch per  LtSpice mal durchspielen

Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: agmue on May 25, 2018, 10:03 am
Ich habe zum Glück jemanden, der ausgebildet ist und vor dem Einschalten alles mit mir durchgehen wird. Leider hat er auch noch andere Aufgaben, sodass ich die Arbeit bis dahin so weit wie möglich alleine machen muss.
Das ist gut, nimm es aber bitte auch ernst! Auf diese Weise habe ich in der Schule physikalische Versuche vorbereitet und viel gelernt.

Dann sprich vorm Aufbau mal mit ihm.
Das kann ich nur unterstreichen. Der nimmt dann sowieso das SSR, das er "immer nimmt".

Induktivitäten können Energie speichern, die sie beim Abschalten los werden wollen. Meist wird Wärme draus.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Rentner on May 25, 2018, 10:57 am
Hi,

wozu willst Du Ventile oder Pumpe mehrfach in der Minute schalten ? Klar das kann man machen bringt aber u.U zusätzliche Erwärmung zumindest für den Motor, wegen des erhöhten Anlaufstromes. Dazu gibt es dann letztlich die Art der Betriebsart (ED in % ). Aber das führt jetzt hier zu weit, Stichwort Wiki.

https://de.wikipedia.org/wiki/Einschaltdauer (https://de.wikipedia.org/wiki/Einschaltdauer)

Industrie Schütze haben schon 1-10 Millionen Schaltspiele  z.B techn. Daten ohne Werbung zu machen. ist halt nur weil ich die kenne. Vergleichbare Bauteile git es auch von anderen Herstellern.

https://support.industry.siemens.com/cs/pd/399602?pdti=td&dl=de&lc=de-WW (https://support.industry.siemens.com/cs/pd/399602?pdti=td&dl=de&lc=de-WW)


Wenn Du das mal rechnest überlebt Dich das Ding die Testphase auf jeden Fall.

Heinz





Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 25, 2018, 11:41 am
Hi,
wozu willst Du Ventile oder Pumpe mehrfach in der Minute schalten ?
[/quote]

Hi!

Ich muss die Vorgaben des Verdichters beachten, klar, danke für den Hinweis! Notwendig ist das Ganze aus dem Grund, weil ich die Dauerfestigkeit der Füllstandsensoren testen will, und dafür brauche ich in kurzer Zeit möglichst viele Füllstandänderungen. Wenn Du (oder irgendwer sonst!) eine andere Idee zur Realisierung hast, gern her damit!
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: combie on May 25, 2018, 12:28 pm
Quote
und dafür brauche ich in kurzer Zeit möglichst viele Füllstandänderungen.
2 über eine Röhre kommunizierende Behälter

In einem Behälter deine Messmittel
Im anderen ein über einen Motor mit Getriebe bewegter Verdrängerkolben.
Den Motor schaltest du einmal ein, und die Frequenz wird über einen FU eingestellt.


Das System kann dann Monate vor sich hin wobbeln, ohne dass 1/2 Dutzend Schütze schnattern.

Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 25, 2018, 12:39 pm
2 über eine Röhre kommunizierende Behälter

In einem Behälter deine Messmittel
Im anderen ein über einen Motor mit Getriebe bewegter Verdrängerkolben.
Den Motor schaltest du einmal ein, und die Frequenz wird über einen FU eingestellt.


Das System kann dann Monate vor sich hin wobbeln, ohne dass 1/2 Dutzend Schütze schnattern.
Gute Idee, das werde ich mal weiterverfolgen. Allerdings sind für realitätsnahe Bedingungen auch Intervallabschnitte erforderlich, in denen nicht gepumpt sondern nur belüftet wird. Das ist zwar nicht oberste Priorität, aber wenn es irgendwie geht sollte es schon möglich sein.
edit: Außerdem wüsste ich in dieser Variante noch nicht, wo ich die Referenz für die Testsensoren hernehmen sollte. In dem Vorschlag mit der Steuerung würde ich die Intervalle einfach aufzeichnen und darüber auf den Füllstand kommen.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: combie on May 25, 2018, 01:04 pm
Quote
edit: Außerdem wüsste ich in dieser Variante noch nicht, wo ich die Referenz für die Testsensoren hernehmen sollte.
Die augenblickliche Kolbenstellung.

Quote
Allerdings sind für realitätsnahe Bedingungen auch Intervallabschnitte erforderlich, in denen nicht gepumpt sondern nur belüftet wird.
Auch einen solchen Getriebemotor kann man anhalten.

Quote
In dem Vorschlag mit der Steuerung würde ich die Intervalle einfach aufzeichnen und darüber auf den Füllstand kommen.
Das kann ich kaum glauben.

Vergleichbar mit einem Beschleunigungsmesser, eine Wegstrecke aufzeichnen zu wollen.
Auf kurzen Strecken evt. machbar, aber es wird sich eine starke Drift ausbilden. Und sich der Fehler auf Dauer akkumulieren.


Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 25, 2018, 01:19 pm
Das kann ich kaum glauben.
Vielleicht liege ich falsch, aber wenn beide Controller im gleichen Takt arbeiten kann ich doch jeden Sensorwert des einen einem Pumpensteuerungsintervall des anderen eindeutig zuordnen. Und wenn ich vorher ein Mal - per Hand oder wie auch immer - ausgemessen habe, welcher Pegelstand z.B. bei 10s, 30s, 60s des Intervalls im Messbehälter auftritt, dann habe ich den Wert den ich brauche. Es kommt mir ja nicht auf 3 cm Genauigkeit, sondern eher auf <10cm an. Aber ausprobiert habe ich es noch nicht, es kann also auch ganz anders sein.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Rentner on May 25, 2018, 03:45 pm
Hallo

ich muss noch mal fragen,

Du willst mehrere verschiedene Sensoren testen. Das machst Du in einem Modell Versuchsaufbau. Dabei  geht es um die Reproduzierbarkeit und Linearität ( bei steigen Messwerten) und die Zuverlässigkeit der Sensoren. Und das Ganze machst Du mit Abwasser und willst die Füllstände mit Pumpen ändern. Die Pumpen willst Du über Zeit laufen lassen,  z.B eine Minute in den einen Behälter und dann wieder zurück. Aus den sich ergebenden Füllständen nach jeweils einem Pumpvorganges, oder auch wärend dessen , willst Du auf die Messgenauigkeit und Reproduzierbarkeit schliessen. Aus der Anzahl der gesamten Umfüllvorgänge nach z.B 3 Monaten willst Du auf die Zuverlässigkeit schliessen.

Zwischendurch wird in bestimmten Zeitabständen der Behälter über Ventile belüftet und dabei der Pumpvorgang ausgesetzt.

Das ist so im Groben die Aufgabenstellung ?

ja dann mach es doch so , bezüglich der Bauteile, Schütze Relais usw.  hab ich bei richtiger Auswahl der  Bauteile da keine Bedenken. Bezüglich der Aussage zu deinen Versuchsergebnissen hast Du ja was die Füllstände betrifft keine besonders hohen Ansprüche < 10mm. Die Ergebnisse dazu musst sowieso Du unter den gegebenen Randbedingungen bewerten.

Heinz 




Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 28, 2018, 09:30 am
Hallo

ich muss noch mal fragen,
...
Das ist so im Groben die Aufgabenstellung ?
Hallo! Ja, das ist es.

Ließe sich das Relais zum Verdichter (und auch die Magnetventile?) so schalten, wie hier (https://www.mikrocontroller.net/articles/Relais_mit_Logik_ansteuern#Schaltstufe_f.C3.BCr_gro.C3.9Fe_Lasten)? Nur mit Logic Level MOSFETS?
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Rentner on May 28, 2018, 10:02 am
Hallo,

warum willst Du es Dir so kompliziert machen,

Google einfach mal nach Relais 5V  da gibt jede Menge hier mal ein Beispiel

https://www.roboter-bausatz.de/1165/4-kanal-solid-state-relais-modul-5v/230vac (https://www.roboter-bausatz.de/1165/4-kanal-solid-state-relais-modul-5v/230vac)


zum einschalten der Pumpe musst Du dann warscheinlich noch ein Schütz verwenden das Du mit einem dieser Relais anteuerst. Für die Ventile reichen 2A auf jeden Fall.

Heinz
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 30, 2018, 10:51 am
Hallo,

warum willst Du es Dir so kompliziert machen,
...
Heinz
Hey!

Das will ich ja gar nicht, deshalb danke ich Dir für Deinen Tipp! ;-)

In der Zwischenzeit habe ich eine neue Frage entdeckt, deren Beantwortung ich mir hier erhoffe:

Ich habe die bisher bestellten Sensoren jeweils erst mal einzeln am Uno getestet, der Praktikabilität wegen gleich mit Ausgabe sowohl am Serial Port als auch auf einem Grove Display. Jetzt ist der Code für einen solchen Sensor allerdings laut IDE schon ca. 40 % des Speichers groß. Ich gehe zwar davon aus, dass mein Code bisher alles andere als schlank ist und da noch einiges kürzer gehen könnte, aber angesichts des Vorhabens, ungefähr acht oder mehr Sensoren auszulesen und dies dann an den Raspberry zu senden stellt sich mir gerade die Frage, ob das die Kapazität sprengt und ich aufrüsten sollte.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: combie on May 30, 2018, 11:15 am
Du hast mein volles Mitgefühl....

Wenn du dann irgendwann mit jammern fertig bist, und etwas Gehirnschmalz für eine Lösung frei wird...
Dann könntest du den Mist ja mal zeigen, den du da verzapft hast.


Übrigens, zum optimieren, haben wir hier (http://forum.arduino.cc/index.php?topic=509196.0) im Forum schon mal gemacht....
Quote
2738 Bytes zu 178 Bytes FLASH
262 Bytes zu 18 Bytes SRAM
Also alles auf deutlich unter 10% eingedampft.

Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: RIN67630 on May 30, 2018, 11:19 am
Zum Projekt: Für eine abwassertechnische Anlage sollen neue Füllstandsensoren getestet werden. Das sind bisher einfache Schwimmerschalter an einer SPS. Da in Zukunft die Steuerung auf RasPi umgestellt werden soll (nicht von mir), besteht die Möglichkeit, andere Sensoren auszuprobieren und gegebenenfalls die alten zu ersetzen. Dies insbesondere in Hinblick auf die langfristige Zuverlässigkeit. Dafür habe ich jetzt eine Auswahl unterschiedlicher Sensoren (über Temperatur, Druck, Kapazität, ...) und einen Versuchsaufbau erdacht. Dieser besteht aus zwei Behältern, zwischen denen zwei Pumpen in festen Intervallen Wasser hin- und her pumpen, jeweils mit ebenfalls festen Pausen. In einem (oder beiden) Behältern befinden sich die Sensoren zur Füllstanderfassung.
Die Aufgabe besteht nun darin, die Ausgabe der Sensoren aufzuzeichnen, außerdem die Pumpenintervalle zu steuern und ebenfalls aufzuzeichnen, um den sich dadurch ergebenden tatsächlichen Füllstand mit dem Sensor-output vergleichen zu können. Das ganze soll tageweise unbeaufsichtigt durchlaufen können.

Zur Verfügung stehen mir bisher ein RasPi 3 B+ sowie je ein UnoRev3 DIP und ein Leonardo.

Da ich wie gesagt - bis auf die Auswahl der Sensoren - noch ganz am Anfang stehe, freue ich mich über jeden Hinweis.
Tu Dir ein Gefallen und nutze keine Sensoren der Arduino-Welt.
Ein Klärwerk ist eine raue Umgebung und da gehört Industrietechnik hin.
Wenn die Bearbeitung im Raspi erfolgen soll, dann nimmt man ein Feldbus interface.
Aber da draußen gehört keine improvisierte Sensorik.
Feldinstrumente sind teuer, aber Noteinsätze und Nachbesserunge sind VIEL teurer. Wenn es nacher nicht klappt, zeigen sie allen auf Dich.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: RIN67630 on May 30, 2018, 11:24 am
Du willst mehrere verschiedene Sensoren testen. Das machst Du in einem Modell Versuchsaufbau. Dabei  geht es um die Reproduzierbarkeit und Linearität ( bei steigen Messwerten) und die Zuverlässigkeit der Sensoren. Und das Ganze machst Du mit Abwasser und willst die Füllstände mit Pumpen ändern. Die Pumpen willst Du über Zeit laufen lassen,  z.B eine Minute in den einen Behälter und dann wieder zurück. Aus den sich ergebenden Füllständen nach jeweils einem Pumpvorganges, oder auch wärend dessen , willst Du auf die Messgenauigkeit und Reproduzierbarkeit schliessen. Aus der Anzahl der gesamten Umfüllvorgänge nach z.B 3 Monaten willst Du auf die Zuverlässigkeit schliessen.
Um auf die Zuverlässigkeit schliessen muß man das Ganzes mal 3-4 Jahren unter realen Bedingungen (Frost, Hitze, UV Strahlung, Gewitter, Marderbisse, Korrosion usw...) testen. Da dürfte von dem Arduino-China-Schund nicht mehr viel übrig bleiben.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Theseus on May 30, 2018, 11:27 am
Was ist ein Grove-Display?

Es ist bestimmt sinnvoll noch einen Mega mit erheblich mehr Speicher und mehr Anschlüssen in der Schublade liegen zu haben.
Bei 8 oder mehr verschiedenen Sensoren kann es sehr sinnvoll sein, die Auslesung selber zu programmieren, statt komplett auf die Libraries zu setzen. Die sind manchmal blockierend oder nicht besonders effizient programmiert. Auch kann es passieren, dass sie sich nicht "vertragen". Noch ein Weg wäre die Verteilung der Aufgaben 2-3Nanos kümmern sich um die Sensoren und die Pumpensteuerung, ein weiterer sammelt alle Daten ein und gibt sie an den Raspi weiter.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: themanfrommoon on May 30, 2018, 08:56 pm
Moin,

ich würde die unterschiedlichen Sensoren nicht testen. Ich glaube nicht, das da in angemessener Zeit irgendeine Erkenntnis bei rumkommt.
Wenn du auf Nummer sicher gehen willst, dann bau einfach ein paar Sensoren redundant ein.
Dann wirst du die Ergebnisse im Live-Test irgendwann auch haben.
Du kannst dir ja eine email schicken lassen, wenn ein Sensor was anderes anzeigt als die anderen :-)

Lieben Gruß,
Chris
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 31, 2018, 07:49 am
Danke für die vielen Kommentare! Ich versuche mal, auf einige zu antworten.

Moin,

ich würde die unterschiedlichen Sensoren nicht testen. Ich glaube nicht, das da in angemessener Zeit irgendeine Erkenntnis bei rumkommt.
Wenn du auf Nummer sicher gehen willst, dann bau einfach ein paar Sensoren redundant ein.
Dann wirst du die Ergebnisse im Live-Test irgendwann auch haben.
Du kannst dir ja eine email schicken lassen, wenn ein Sensor was anderes anzeigt als die anderen :-)

Lieben Gruß,
Chris
Um auf die Zuverlässigkeit schliessen muß man das Ganzes mal 3-4 Jahren unter realen Bedingungen (Frost, Hitze, UV Strahlung, Gewitter, Marderbisse, Korrosion usw...) testen. Da dürfte von dem Arduino-China-Schund nicht mehr viel übrig bleiben.
Da ich mir die Aufgabe nicht selber gesucht sondern sie zugewiesen bekommen habe, ist das leider keine Alternative ;-) Außerdem gehe ich schon davon aus, dass auch nach z.B. zwei Wochen erhöhter Belastung eine Erkenntnis entsteht - und sei es, dass die einfachen Schwimmerschalter immer noch am besten funktionieren wenn man sie vielleicht auch nach zwei Jahren wechseln muss. Vielleicht noch in Kombination mit einigen Temperatursensoren. Natürlich sind die Aussagen immer einzuschränken in Hinblick auf die Testbedingungen, aber das sind Grundlagen wissenschaftlichen Arbeitens.

Tu Dir ein Gefallen und nutze keine Sensoren der Arduino-Welt.
Ein Klärwerk ist eine raue Umgebung und da gehört Industrietechnik hin.
Wenn die Bearbeitung im Raspi erfolgen soll, dann nimmt man ein Feldbus interface.
Aber da draußen gehört keine improvisierte Sensorik.
Feldinstrumente sind teuer, aber Noteinsätze und Nachbesserunge sind VIEL teurer. Wenn es nacher nicht klappt, zeigen sie allen auf Dich.
Die Sensoren sind (bis auf einen US-Sensor, den ich aber selber nicht gewählt hätte, s.o.) keine Arduino-Technik. Lediglich dieser zeitlich begrenzte Versuch soll auf Arduino/Raspberry basieren, das ist ohne weiteres zu rechtfertigen.

Du hast mein volles Mitgefühl....

Wenn du dann irgendwann mit jammern fertig bist, und etwas Gehirnschmalz für eine Lösung frei wird...
Dann könntest du den Mist ja mal zeigen, den du da verzapft hast.


Übrigens, zum optimieren, haben wir hier (http://forum.arduino.cc/index.php?topic=509196.0) im Forum schon mal gemacht....
Also alles auf deutlich unter 10% eingedampft.
Danke für den Link. Was Du allerdings mir 'Jammern' meinst, verstehe ich nicht. Ich habe hier mein geplantes Projekt vorgestellt und um Gedanken dazu gebeten. Mitgefühl ist auch nur insofern notwendig wie eben für jeden Verfasser einer für einen staatlich anerkannten Ausbildungsabschluss notwendigen Arbeit. Aber auch dafür: Danke!
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: combie on May 31, 2018, 08:39 am
Quote
Was Du allerdings mir 'Jammern' meinst, verstehe ich nicht.
Dann lese dein Posting #39 nochmal durch!

Aus meiner Sicht ist ein Forenposter, wenn er eine Frage beantwortet haben möchte, verpflichtet die notwendigen Angaben zu machen, damit die Helfer eine Chance haben.

Bei dem 40% Problem wäre es nötig/unabdingbar den Code zu sehen, damit man ihn auf Größe optimieren kann, oder zumindest Vorschläge in die Richtung geben kann.

Tut dieser Forenposter das nicht, so wie du in dem Beitrag, dann jammert er nur.
Und ich wende mich ab....

Dem Link, könntest du entnehmen, dass sich aus einem "Ressourcen Mangel Problem" durchaus eine interessante Diskussion, incl. Lösung, entwickeln kann.

Das "jammern" war als "Wink mit dem Zaunpfahl" gedacht, an dem noch ein ganzer Garten mit dran hängt. Den darfst du natürlich auch gerne falsch verstehen und beleidigt sein. Aber ob dir das dann weiterhilft ist eher fraglich.



Zusammengefasst:
Da du mit den nötigen Fakten hinter dem Berg hältst, kann ich dir bei deinem konkreten 40% Problem nicht helfen, sehe aber die misslichen Lage in der du dich befindest.
Das einzige was ich dir in der Situation geben kann, ist Mitgefühl!



Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 31, 2018, 09:03 am
Zusammengefasst:
Da du mit den nötigen Fakten hinter dem Berg hältst, kann ich dir bei deinem konkreten 40% Problem nicht helfen, sehe aber die misslichen Lage in der du dich befindest.
Das einzige was ich dir in der Situation geben kann, ist Mitgefühl!
Dann gab es da wohl ein Missverständnis. Die 40% sind kein konkretes Problem, denn der Code ist nicht annähernd im Bereich der Vollständigkeit. Daher habe ich es als überflüssig erachtet ihn zu posten, sondern der Umstand war nur Anlass für mich, mal über die Kapazität nachzudenken und hier die Frage zu stellen. Ansonsten stimme ich Dir natürlich zu, dass konkrete Hilfe nur am konkreten Fall funktioniert. Aber da es eine allgemeine Frage war hat mir wie gesagt Dein Link zu dem allgemeinen Einsparen für's erste schon weitergeholfen.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: noiasca on May 31, 2018, 09:14 am
Neben dem Zwischenmenschlichen Geplänkel: BTT

Gibts jetzt noch einen offenen Punkt der geklärt werden muss?
Wenn ja - Welchen?
Wenn nein, könntest ja mal zum Abschluss ein paar Bilder von deinem Projekt als Dankeschön posten.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on May 31, 2018, 09:44 am
Neben dem Zwischenmenschlichen Geplänkel: BTT

Gibts jetzt noch einen offenen Punkt der geklärt werden muss?
Wenn ja - Welchen?
Wenn nein, könntest ja mal zum Abschluss ein paar Bilder von deinem Projekt als Dankeschön posten.
Danke für die Nachfrage!

Also der Stand ist, dass ich gerade auf die zweite Bestellung der Hardware (weitere Sensoren, Relais, Displays, Raspberry, Platinen, Gehäuse, etc.) warte und dann hoffentlich nächste Woche mit dem Aufbau der Steuerung anfangen kann. So lange setze ich mich daran, die bisherigen Sensoren in einen einzigen Sketch zu bekommen. Da wird es sicherlich noch einige Fragen geben. Bilder poste ich sehr gerne, wenn es so weit ist, ebenso natürlich wie Ergebnisse etc.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Jun 07, 2018, 07:48 am
Da ich immer noch auf die Bestellung warte ist vielleicht Zeit für noch ein paar kleine Fragen zum Code:

Ich habe nach Lektüre einiger Seiten und vorläufiger Überlegung folgenden Plan:

Steuerung
-> Arduino_1
write
--> USB (timestamp, quasi-kontinuierliche Werte der Durchflussmessung, Änderung der Relaiszustände)
--> mySQL(RasPi)

Sensoren
-> Arduino_2
write
--> USB (timestamp, Sensorwerte quasi-kontinuierlich, bzw. bei Schaltern nur bei Zustandsänderung)
--> mySQL(RasPi)

Welche Frequenz ist für die Lese-/Schreibvorgänge sinnvoll, so dass ich ohne große Kniffe die Datenbank nicht überlaste?
Sollte der Arduino_2 jeweils einen Sensor lesen und das Ergebnis seriell an die Datenbank schicken, oder erst einen Durchlauf durch alle Sensoren machen und die Ergebnisse dann in einem Zug schreiben? Ist es einfacher, die Arduinos in die Datenbank schreiben zu lassen oder den RasPi sich die Daten holen zu lassen?
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: noiasca on Jun 07, 2018, 08:17 am
der Vorteil von einem Pull-System wäre, du kannst einfach an einer zentralen Stelle (nämlich am Raspberry) den Intervall der Abfragen bestimmen auch wenn mal mehrere Sensor-Arduinos hinzukommen hast du trotzdem noch zentral die volle Kontrolle wer wann was Antworten soll.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Tommy56 on Jun 07, 2018, 10:44 am
Welche Frequenz ist für die Lese-/Schreibvorgänge sinnvoll, so dass ich ohne große Kniffe die Datenbank nicht überlaste?
Sollte der Arduino_2 jeweils einen Sensor lesen und das Ergebnis seriell an die Datenbank schicken, oder erst einen Durchlauf durch alle Sensoren machen und die Ergebnisse dann in einem Zug schreiben? Ist es einfacher, die Arduinos in die Datenbank schreiben zu lassen oder den RasPi sich die Daten holen zu lassen?
Die hHäufigkeit richtet sich nach der realen Änderung der Werte, z.B. bei einer Raumtemperatur ist 1 min ausreichend, bei einer Wassertemperatur in einem großen Volumen genügen auch 15 min.

Die Belastung der DB ist am geringsten, wenn Du die Werte aller Sensoren eines Arduino zu einem Insert-Statement bündelst.

Gruß Tommy
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Jun 19, 2018, 02:03 pm
Hallo mal wieder!

Da ich leider immer noch auf die Bestellungen warten muss, hier mal eine in der Zwischenzeit aufgetauchte Frage:

Ich möchte die Steuerung ungefähr folgendermaßen realisieren:
Phase 1 (Pumpen von Behälter A nach B): Magnetventil 1 auf - Magnetventil 2 zu - Verdichter an - Wartezeit lang - Verdichter aus - Wartezeit kurz
Phase 2 (von B nach A): entsprechend umgekehrt
Belüftungsphase: Beide Ventile zu - Verdichter an - Wartezeit - Verdichter aus

Da ich den Durchfluss nicht als Referenz messen kann benötige ich ja in der Auswertung den eindeutigen Zustand der Steuerung in jedem Moment. Dafür müsste es doch reichen, jeden Beginn einer neuen Phase mit timestamp in die Datenbank zu schreiben, oder?
Außerdem möchte ich die Restzeit der aktuellen Phase gerne auf ein Display geben, das würde dann mittels eines am Anfang der Phase gestarteten Countdowns funktionieren, weil die Phasen immer die einmal festgelegte Dauer haben, richtig?
Und zuletzt möchte ich die wichtigen Funktionen gerne auch manuell auslösen können, was aber auch protokolliert werden muss. Das wäre dann wahrscheinlich nur per Interrupt möglich?

Vielen Dank schon einmal!
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: postmaster-ino on Jun 19, 2018, 05:25 pm
Hi

Was denkst Du, wird dort dann der Interrupt machen sollen?
Ernst gemeinte Frage!!

Dem Arduino ist es vollkommen wurscht, ob die 'Phase' durch einen Tastendruck, oder Ablauf einer zuvor eingestellten Zeit gestartet wird.

MALE Dir doch einfach ein Ablauf-Diagramm, Wo Du angibst, von welchem Zustand Du zu Welchem wechseln kannst und unter welchen Umständen dort hin gewechselt wird.

Und bitte bringe mir bei, was Du laufend mit den Interrupts vor hast - oder verinnerliche, was Die eigentlich in den Tiefen des µC machen sollen.

MfG

PS: Wofür wird der Verdichter gestartet beim Belüften?
PPS: Wenn Du eh gerade einen Stift in der Hand hast - ein Bild, wie das Ganze zusammen aussehen könnte, schadet hier ganz bestimmt auch nicht!!

MfG²
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Jun 19, 2018, 06:27 pm
Hey!

Was denkst Du, wird dort dann der Interrupt machen sollen?
Also wenn ich zehn Minuten lang in eine Richtung pumpe und während dessen z.B. pausieren, belüften oder in die andere Richtung pumpen lassen möchte, dann muss ich - wenn ich es nicht unter Umgehung der Elektronik sozusagen hard-wired erledigen möchte (wobei ich dann nicht wüsste, wie ich diese Unterbrechung aufzeichnen sollte) - das doch als Unterbrechung der laufenden Funktion machen. Aber vielleicht habe ich da auch etwas falsch verstanden.

Quote
MALE Dir doch einfach ein Ablauf-Diagramm, Wo Du angibst, von welchem Zustand Du zu Welchem wechseln kannst und unter welchen Umständen dort hin gewechselt wird.
Das ist eine sehr gute Idee, die ich zeitnah umsetzen werde!

Quote
PS: Wofür wird der Verdichter gestartet beim Belüften?
Der Verdichter IST sozusagen die Belüftung, bzw. in Kombination mit einem Belüftungsmodul auf dem Boden des Tanks. Wenn beide Ventile zu sind kann die Luft nur noch durch das Modul. Wenn eines geöffnet ist ist der Widerstand des Moduls zu groß als das dadurch belüftet würde.

Quote
PPS: Wenn Du eh gerade einen Stift in der Hand hast - ein Bild, wie das Ganze zusammen aussehen könnte, schadet hier ganz bestimmt auch nicht!!
Stimmt. Ungefähr so:
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Theseus on Jun 19, 2018, 09:33 pm
Also wenn ich zehn Minuten lang in eine Richtung pumpe und während dessen z.B. pausieren, belüften oder in die andere Richtung pumpen lassen möchte, dann muss ich - wenn ich es nicht unter Umgehung der Elektronik sozusagen hard-wired erledigen möchte (wobei ich dann nicht wüsste, wie ich diese Unterbrechung aufzeichnen sollte) - das doch als Unterbrechung der laufenden Funktion machen. Aber vielleicht habe ich da auch etwas falsch verstanden.
Beschäftige dich bitte mit Zustands-Maschine und Ablaufsteuerungen mit millis(). Du nimmst eine Zustandsvariable, die bei jedem Schritt weitergezählt wird. Dann baust deine loop, wo du mit Hilfe von millis() und deiner Zustandsvariable deinen Ablauf mit Hilfe von If-Abfragen ablaufen lässt. Deine loop() sollte mindestens einige Zig-mal in der Sekunde durchlaufen werden. Dann ist auch gar kein Problem auf Tastendrücke zu reagieren und diese zu Protokollieren. Das geht alles super ohne Interrupt.

GuntherB - BlinkwithoutDelay - Die Nachtwächtererklärung
http://forum.arduino.cc/index.php?topic=423688.0 (http://forum.arduino.cc/index.php?topic=423688.0)
Ich erkläre millis()
 (http://forum.arduino.cc/index.php?topic=400102.msg2752141#msg2752141)http://forum.arduino.cc/index.php?topic=400102.msg2752141#msg2752141 (http://forum.arduino.cc/index.php?topic=400102.msg2752141#msg2752141)



Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Rentner on Jun 19, 2018, 11:20 pm
Hallo,

tut mir leid , mit Deinem Schema kann ich nicht viel anfangen,

was ist das blaue Ding ? Ausgleichsleitung ?

wo ist der Verdichter
wo ist die Saugseite der Pumpe angeschlossen. 
warum ist die Druckseite der Pumpe unten nur an nur einem Behälter angeschlossen, warum unten ?.
was schalten die beiden Ventile.

Ich denke Du bist kurz vor Ende Deines Studium , da solltest Du im Stande sein  ein Schema zu zeichnen in dem zwei Behälter eine Pumpe, einige Ventile und ein Verdichter enthalten sind. Zudem sollte man erkennen können das man damit aus einem Beghälter in den anderen und umgekehrt Pumpen kann, und wo wie ein Verdichter in dem System enthalten ist. Und das Ganze mit  normgerechten Symbolen. Zudem solltest Du im Stande sein eine Aufgabenstellung Gedanklich durchzugehen und daraus eine Lösung zu realisieren, das ist schliesslich Deine Aufgabe , das Projekt ist nur das nötige Beiwerk.

Das was Du messtechnisch und steuerungstechnisch so vorhast ist für einen Anfänger eh schon viel, fang einfach mal an wenn Du den Arduino hast. Die Ventile und Pumpen,Verdichter kannst Du erst mal mittels LED simulieren. Die Bedienelemente Taster usw. gibts als mini Taster für wenige Cent. alles baust Du auf ein Steckbrett auf und kannst es so simulieren. Und dann gaaanz langsam Schritt für Schritt und nich alles auf einmal.

Mir ist auch noch nicht klar warum Du zwei UP einsetzen willst , das schafft zusätzliche Schnittstellen mit denen Du dich beschäftigen must. Aber es ist Dein Projekt. 

Gruß Heinz

Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Aug 18, 2018, 04:52 pm
Nach längerer Auszeit wegen Krankheit, Urlaub und Warten auf Bauteile melde ich mich jetzt endlich wieder. Inzwischen bin ich was den Aufbau betrifft schon deutlich weiter, hier ein Mal ein paar Bilder. Zuerst eine Übersicht mit beiden Behältern, den Pumpen und der Steuer- und Auswerteelektronik. Dann einige der Sensoren, und noch ein Einblick in den Steuerkasten mit Arduino1.

edit: Außerdem habe ich inzwischen zumindest die vom Arduino2 erfassten Daten seriell zum RasPi und dort in eine SQlite3 DB geschrieben bekommen (mittels dieser Anleitung: http://combustory.com/wiki/index.php/Arduino_Communications_-_SQLite).
Probleme habe ich immer noch mit der komplexen Version der Steuerung (s.o.). Ich habe zwar je ein Programm zum manuellen Pumpen/Belüften mittels dreier Schalter und eines zum kontinuierlichen Hin- und Herpumpen für jeweils 5 Minuten, aber die Verbindung der beiden Programme schaffe ich leider noch nicht, später mehr dazu.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: postmaster-ino on Aug 18, 2018, 05:29 pm
(http://forum.arduino.cc/index.php?action=dlattach;topic=547323.0;attach=270815)
(http://forum.arduino.cc/index.php?action=dlattach;topic=547323.0;attach=270817)
(http://forum.arduino.cc/index.php?action=dlattach;topic=547323.0;attach=270819)
Der Upload-Script bietet zwar auch ein Thumbnail, Das wird aber genau so groß angezeigt und mit deutlich weniger Inhalt wird das Bild verwaschen.
*Edit*
Im IMG-Tag werden width und height mit angegeben - liegt daran, daß der 'Daumennagel' dann verwaschen rüber kommt.
*/Edit*
Also die hier gezeigten Bilder sind bereits 'in volle Kanne schön'!
Wenn man die Adresse der Bilder kopiert und die Nummer um 1 erhöht, hat man den 'Daumennagel':
(http://forum.arduino.cc/index.php?action=dlattach;topic=547323.0;attach=270820)
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Aug 18, 2018, 05:46 pm
Der Upload-Script bietet zwar auch ein Thumbnail...
Danke!
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Aug 21, 2018, 11:32 am
So, hier habe ich jetzt eine erste Version der Steuerung, mit der ich sowohl im Kreis pumpen lassen als auch manuell die Relais ansteuern kann:

Code: [Select]
#include<Wire.h>

// Belegung der Ein- und Ausgaenge, Relais und Switches
const byte RY_V1_pin = 10; // Verdichter
const byte SW1_pin = 4;    // Schalter 1
const byte RY_M1_pin = 5;  // Magnetventil 1
const byte SW2_pin = 6;    // Schalter 2
const byte RY_M2_pin = 7;  // Magnetventil 2
const byte SW3_pin = 8;    // Schalter 3
const byte RY_M3_pin = 9;  // Magnetventil 3
//
bool SW1_status, SW2_status, SW3_status;
//
const int pump_intervall = 3000;
const int pause_intervall = 1000;
const int schreib_intervall = 50;
unsigned long Millis;
unsigned long Intervall;
unsigned long timestore;
unsigned long Rest;
//
enum ZUSTAENDE {A_to_B, pause1 , B_to_A, pause2};
byte zustand = pause2;

void setup() {
  Wire.begin();
  Serial.begin(9600);
  pinMode(RY_M2_pin, OUTPUT);
  pinMode(RY_M1_pin, OUTPUT);
  pinMode(RY_V1_pin, OUTPUT);
  pinMode(SW1_pin, INPUT);
  pinMode(SW2_pin, INPUT);
  pinMode(SW3_pin, INPUT);
  digitalWrite(SW1_pin, HIGH);
  digitalWrite(SW2_pin, HIGH);
  digitalWrite(SW3_pin, HIGH);
}

void A_B () {
  digitalWrite(RY_V1_pin, HIGH);
  digitalWrite(RY_M1_pin, HIGH);
  digitalWrite(RY_M2_pin, LOW);
  digitalWrite(RY_M3_pin, LOW);
  //Serial.println(clock.dateFormat("Y-m-d H:i:s", dt));
  Serial.print("AB");
  return;
}

void B_A () {
  digitalWrite(RY_V1_pin, HIGH);
  digitalWrite(RY_M1_pin, LOW);
  digitalWrite(RY_M2_pin, HIGH);
  digitalWrite(RY_M3_pin, LOW);
  //Serial.println(clock.dateFormat("Y-m-d H:i:s", dt));
  Serial.print("BA");
  return;
}

void Air () {
  digitalWrite(RY_V1_pin, HIGH);
  digitalWrite(RY_M1_pin, LOW);
  digitalWrite(RY_M2_pin, LOW);
  digitalWrite(RY_M3_pin, HIGH);
  //Serial.println(clock.dateFormat("Y-m-d H:i:s", dt));
  Serial.print("air");
  return;
}

void pause () {
  digitalWrite(RY_V1_pin, LOW);
  digitalWrite(RY_M1_pin, LOW);
  digitalWrite(RY_M2_pin, LOW);
  digitalWrite(RY_M3_pin, LOW);
  return;
}

void programm() {
  if (millis() - Millis >= Intervall) {
    switch (zustand) {
      case A_to_B:
        A_B();
        zustand = pause1;
        Millis = millis();
        Intervall = pump_intervall;
        break;
      case pause1:
        pause();
        zustand = B_to_A;
        Millis = millis();
        Intervall = pause_intervall;
        break;
      case B_to_A:
        B_A();
        zustand = pause2;
        Millis = millis();
        Intervall = pump_intervall;
        break;
      case pause2:
        pause();
        zustand = A_to_B;
        Millis = millis();
        Intervall = pause_intervall;
        break;
    }
  }
}

bool readingSwitches(int SW1_pin, int SW2_pin, int SW3_pin) {
  SW1_status = digitalRead(SW1_pin);
  SW2_status = digitalRead(SW2_pin);
  SW3_status = digitalRead(SW3_pin);
  return SW1_status, SW2_status, SW3_status;
  delay(50);
}

void schreiben() {
  if (millis() - timestore >= schreib_intervall) {
    Serial.print(",");
    Serial.println(zustand);                      // bzw. Schaltzustände der Relais
    timestore = millis();
  }
}


void loop() {

  readingSwitches(SW1_pin, SW2_pin, SW3_pin);

  if (SW1_status == HIGH && SW2_status == HIGH && SW3_status == HIGH) {  // Schalter 1+2+3
    programm();
  }

  if (SW1_status == HIGH && SW2_status == HIGH && SW3_status == LOW) {   // Schalter 1+2
    A_B();
  }

  if (SW1_status == HIGH && SW2_status == LOW && SW3_status == HIGH) {   // Schalter 1+3
    B_A();
  }

  if (SW1_status == HIGH && SW2_status == LOW && SW3_status == LOW) {  // Schalter 1
    Air();
  }

  if (SW1_status == LOW && SW2_status == LOW && SW3_status == LOW) {   // kein Schalter
    pause();
  }

  schreiben();

  delay(50);
}


Es gibt allerdings noch einige Punkte, die ich gern um-/einarbeiten würde.



Und über alle weiteren Hinweise und Tipps freue ich mich natürlich auch!
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: postmaster-ino on Aug 21, 2018, 05:46 pm
Hi

Der Rückgabewert von readingSwitch (drei Werte hinter dem return) funktioniert??
Auch, weil Du den/dir Rückgabewert(e) nicht benutzt.
Das funktioniert gearde nur, weil z.B. SW1_status global definiert ist!!

1. Die Berechnung der Restzeit machst Du entweder zentral in loop() und gibst Diese nur aus, wenn Die auch auf's Display soll (und sich geändert hat), oder direkt vor der Ausgabe auf dem Display.

2. Wenn Du Dir gemerkt hast, was Du zuletzt gemacht hast, kannst Du dahin auch zurück springen - nimm eine neue Variable 'Letzte_Aufgabe' und setze Diese auf 'zustand' bevor Du Den änderst.
So kannst Du nach der Pause auf den 'zustand' davor springen und eben ein weiteres Mal Pumpen o.Ä..

3. 'pause1' und 'pause2' sind verschiedene Status, welche bei Dir aber genau das Gleiche auslösen.
So solltest Du Beide auch zusammen fassen können.
Weitere Status kannst Du ja einfach in die enum Zeile einfügen und in Deiner loop drauf prüfen, ob und in welchen Status jetzt gewechselt werden muß.

MfG

Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Aug 28, 2018, 07:07 pm
Danke! Ich fang mal an:

1. Die Berechnung der Restzeit machst Du entweder zentral in loop() und gibst Diese nur aus, wenn Die auch auf's Display soll (und sich geändert hat), oder direkt vor der Ausgabe auf dem Display.
Das klappt soweit, allerdings gibt es einen Speicherüberlauf. Ich berechne
Code: [Select]
remaining_time = (Intervall - ( millis() - Millis)) / 1000;
  elapsed_time = (millis()-Millis)/1000;

elapsed funktioniert, remaining erzeugt (allerdings gerade nur bei pause1) einen Speicherüberlauf an Stelle der 0.

Außerdem möchte ich das Programm insofern abändern, als dass nach jedem x-ten Durchlauf ein neuer Zustand air() angefahren wird. Ich habe es mit einem Zähler am Ende des letzten case versucht, und im loop() dann eine if(counter<=x)-Abfrage vor den Programmdurchlauf gesetzt:

Code: [Select]

  if (SW1_status == HIGH && SW2_status == HIGH && SW3_status == HIGH) {  // Schalter 1+2+3
    if (count_programm <= 3) {
      programm();
    } else {
      Air();
      count_programm = 0;
    }
  }


Leider funktioniert es so nicht, air() wird nicht angefahren.

Ansonsten hätte ich noch eine Frage zu einem bash-Skript das ich gefunden habe und mit dessen Hilfe ich die Daten in eine SQLite-DB schreiben will. Vielleicht kann mir dazu auch jemand hier helfen? Leider habe ich von bash noch viel weniger Ahnung als von C... Der Code macht im Grunde was er soll, allerdings muss ich (nach einem Neustart/Upload des Arduino) die Gerätedatei (ACM0 ... 1 ... ) in Zeile 16 manuell ändern. Wenn der Versuch läuft und aus irgend einem Grund ein Neustart passiert muss das aber automatisch erkannt werden - wie bekomme ich das hin?
Code: [Select]
#!/bin/bash
# Data Slam Script v0.1
# User define Function (UDF)
LogLine(){
  echo -E "`date +%s`,${line}"
 sqlite3 arduino.db3 "insert into control_data(time_stamp, millis, state, elapsed, V1, M1,M2,M3) values (`date +%s`,${line})"
}
### Main script stars here ###
# Store file name
FILE=""
 
# Make sure we get file name as command line argument
# Else read it from standard input device
stty -F /dev/ttyACM0 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
if [ "$1" == "" ]; then
   FILE="/dev/ttyACM1"
else
   FILE="$1"
   # make sure file (serial device) exist and is readable
   if [ ! -f $FILE ]; then
  echo "$FILE : does not exists"
  exit 1
   elif [ ! -r $FILE ]; then
  echo "$FILE: can not read"
  exit 2
   fi
fi
# Create Database if it does not exist
 
if [ ! -f "arduino.db3" ]; then
  echo "Creating database"
        sqlite3 arduino.db3 "CREATE TABLE control_data (time_stamp integer , millis integer, state integer, elapsed integer, V1 integer, M1 integer, M2 integer,M3 integer);"
fi
exec 3<&0
exec 0<"$FILE"
while true
do
 
# use $line variable to process line in processLine() function
while read -r line
        do
              LogLine $line
        done
       sleep 50 # This delay can be changed to match the delay of the Arduino
done
exec 0<&3
exit 0
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Sep 11, 2018, 12:32 pm
So, kurzes update:
Das Steuerungsprogramm fährt durch, die Zeit wird korrekt berechnet, und die Kommunikation habe ich insofern vereinfacht, als dass nur noch der Sensor-Arduino am RasPi hängt. Um den aktuellen Zustand der Anlage zu erhalten habe ich dazu zwei OUTPUTs inkl GND vom Steuer-Arduino auf zwei INPUTs inkl GND vom Sensor-Arduino gelegt (in der Skizze fehlen die beiden Leitungen, nur GND ist eingezeichnet). Die beiden geben dann die jeweiligen Zustände weiter und werden dann (hoffentlich) mit den Sensordaten und dem timestamp auf den RasPi geschrieben. Es fehlt noch das korrekte Wiedereinsetzen am Unterbrochenen Programmpunkt, aber das ist erst einmal nebensächlich.

Code: [Select]

float vers = 2.5;

#include<Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Belegung der Ein- und Ausgaenge, Relais und Switches, Zustandsvariablen

const byte RY_V1_pin = 3;  // Verdichter
byte RY_V1_state;

const byte RY_M1_pin = 5;  // Magnetventil 1
byte RY_M1_state;

const byte RY_M2_pin = 7;  // Magnetventil 2
byte RY_M2_state;

const byte RY_M3_pin = 9;  // Magnetventil 3
byte RY_M3_state;

const byte SW1_pin = 4;    // Schalter 1
bool SW1_status;
const byte SW2_pin = 6;    // Schalter 2
bool SW2_status;
const byte SW3_pin = 8;    // Schalter 3
bool SW3_status;

const byte trig_A = 2;
const byte trig_B = 13;

// Zeit
const unsigned int long pump_intervall = 325000;// 333000;
const unsigned int long pause_intervall = 20000; // 325000;
const unsigned int long air_intervall = 30000;//60000;
unsigned int long Millis;
unsigned int long Intervall;
unsigned int long schreib_timestore;
unsigned int long remaining_time;
unsigned int long elapsed_time;
const int long schreib_intervall = 1000;

bool A_state;
bool B_state;

void setup() {
  Wire.begin();
  Serial.begin(9600);
  pinMode(RY_M2_pin, OUTPUT);
  pinMode(RY_M1_pin, OUTPUT);
  pinMode(RY_V1_pin, OUTPUT);
  pinMode(trig_A, OUTPUT);
  pinMode(trig_B, OUTPUT);
  pinMode(SW1_pin, INPUT);
  pinMode(SW2_pin, INPUT);
  pinMode(SW3_pin, INPUT);
  digitalWrite(SW1_pin, HIGH);
  digitalWrite(SW2_pin, HIGH);
  digitalWrite(SW3_pin, HIGH);
  lcd.init();
  lcd.clear();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Pumpen/Belueften");
  lcd.setCursor(0, 1);
  lcd.print("Funktion waehlen");
}

void dig_Write() {
  digitalWrite(RY_V1_pin, RY_V1_state);
  digitalWrite(RY_M1_pin, RY_M1_state);
  digitalWrite(RY_M2_pin, RY_M2_state);
  digitalWrite(RY_M3_pin, RY_M3_state);
  digitalWrite(trig_A, A_state);
  digitalWrite(trig_B, B_state);
}

enum ZUSTAENDE {A_to_B, pause_1 , B_to_A, pause_2, pause_0, air};
byte curr_state = pause_2;
byte next_state = A_to_B;
byte prev_state = B_to_A;

const int rounds = 2;
int count_rounds = 0;
int count_global = 0;

void A_B () {
  RY_V1_state = HIGH;
  RY_M1_state = HIGH;
  RY_M2_state = LOW;
  RY_M3_state = LOW;
  A_state = HIGH;
  B_state = LOW;
  dig_Write();
  Millis = millis();
  curr_state = A_to_B;
  return;
}

void B_A () {
  RY_V1_state = HIGH;
  RY_M1_state = LOW;
  RY_M2_state = HIGH;
  RY_M3_state = LOW;
  A_state = LOW;
  B_state = HIGH;
  dig_Write();
  Millis = millis();
  curr_state = B_to_A;
  return;
}

void Air () {
  RY_V1_state = HIGH;
  RY_M1_state = LOW;
  RY_M2_state = LOW;
  RY_M3_state = HIGH;
  A_state = HIGH;
  B_state = HIGH;
  dig_Write();
  Millis = millis();
  curr_state = air;
  return;
}

void pause () {
  RY_V1_state = LOW;
  RY_M1_state = LOW;
  RY_M2_state = LOW;
  RY_M3_state = LOW;
  A_state = LOW;
  B_state = LOW;
  curr_state = pause_0;
  dig_Write();
  Millis = millis();
  return;
}

void programm() {
  if (millis() - Millis >= Intervall) {
    switch (next_state) {

      case A_to_B:
        count_rounds++;
        count_global++;
        prev_state = curr_state;
        A_B();
        next_state = pause_1;
        Intervall = pump_intervall;
        break;

      case pause_1:
        pause();
        prev_state = curr_state;

        next_state = B_to_A;
        Intervall = pause_intervall;
        break;

      case B_to_A:
        prev_state = curr_state;
        B_A();
        next_state = pause_2;
        Intervall = pump_intervall;
        break;

      case pause_2:
        prev_state = curr_state;
        pause();
        if (count_rounds <= rounds)
        {
          next_state = A_to_B;
        }
        else {
          next_state = air;
        }
        Intervall = pause_intervall;
        break;

      case air:
        prev_state = curr_state;
        Intervall = air_intervall;
        Air();
        count_rounds = 0;
        next_state = pause_2;
    }
  }
}


bool readingSwitches() {
  delay(50);
  SW1_status = digitalRead(SW1_pin);
  SW2_status = digitalRead(SW2_pin);
  SW3_status = digitalRead(SW3_pin);
  return SW1_status, SW2_status, SW3_status;
}

void schreiben() {
  if (millis() - schreib_timestore >= schreib_intervall) {
    schreib_timestore = millis();
    Serial.print(millis());
    Serial.print(",");
    Serial.print(curr_state);
    Serial.print(",");
    Serial.print(elapsed_time);
    Serial.print(",");
    Serial.print(RY_V1_state);
    Serial.print(",");
    Serial.print(RY_M1_state);
    Serial.print(",");
    Serial.print(RY_M2_state);
    Serial.print(",");
    Serial.print(RY_M3_state);
    Serial.print(",");
    Serial.print(A_state);
    Serial.print(B_state);
    Serial.println("");
  }
}

void Display() {
  lcd.clear();
  lcd.setCursor(0, 0);

  lcd.print("Runde ");
  lcd.print(count_global);
  lcd.print(" ");
  if (curr_state == 4) {
    lcd.print("- Pause");
  }
  if (curr_state == 0) {
    lcd.print("- A->B");
  }
  if (curr_state == 2) {
    lcd.print("- B->A");
  }
  if (curr_state == 5) {
    lcd.print("- Air");
  }

  lcd.setCursor(0, 1);

  if (next_state == pause_1 || next_state == pause_2 || next_state == pause_0) {
    lcd.print("Pause in");
  }
  if (next_state == A_to_B) {
    lcd.print("A->B in ");
  }
  if (next_state == B_to_A) {
    lcd.print("B->A in ");
  }
  if (next_state == air) {
    lcd.print("Air in ");
  }
  lcd.print(remaining_time);
  lcd.print("s");


  lcd.setCursor(11, 1);
  lcd.print("v");
  lcd.print(vers);
}


void loop() {
  schreiben();

  elapsed_time = (millis() - Millis) / 1000;
  remaining_time = Intervall / 1000 - elapsed_time;

  readingSwitches();

  // alternativ:
  //SW1_status = digitalRead(SW1_pin);
  //SW2_status = digitalRead(SW2_pin);
  //SW3_status = digitalRead(SW3_pin);

  if (SW1_status == HIGH && SW2_status == HIGH && SW3_status == HIGH) {  // Schalter 1+2+3
    //   if (count_programm <= 3) {
    programm();
    // } else {
    //   Air();
    //   count_programm = 0;
    // }
  }

  if (SW1_status == HIGH && SW2_status == HIGH && SW3_status == LOW) {   // Schalter 1+2
    A_B();
  }

  if (SW1_status == HIGH && SW2_status == LOW && SW3_status == HIGH) {   // Schalter 1+3
    B_A();
  }

  if (SW1_status == HIGH && SW2_status == LOW && SW3_status == LOW) {    // Schalter 1
    Air();
  }

  if (SW1_status == LOW && SW2_status == LOW && SW3_status == LOW) { // kein Schalter
    //Millis = millis();
    // if (SW1_status == LOW && SW2_status == LOW && SW3_status == LOW){
    pause();
    //}
  }
  if (SW1_status == LOW && SW2_status == LOW && SW3_status == HIGH) {
    pause();
  }

  if (SW1_status == LOW && SW2_status == HIGH && SW3_status == HIGH) {
    pause();
  }

  Display();
  delay(50);
}



Jetzt habe ich noch folgende Frage: Der von mir als Referenz zu untersuchende Schwimmerschalter benötigt mindestens 24 V. Ich würde ihn entsprechend der Skizze an den vorhandenen Trafo an 230V AC anschließen (rote Leitungen), und den Ausgang mittels Spannungsteiler R1 + R2 (z.B. 1kOhm und 267 kOhm) an den Digitaleingang legen. Von den 230 V einmal abgesehen (die lasse ich mir vor Inbetriebnahme noch mal abnehmen) - passt das so mit den ganzen Verschaltungen von GND oder mach ich mir damit etwas kaputt?

(https://forum.arduino.cc/index.php?action=dlattach;topic=547323.0;attach=273744)
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: agmue on Sep 11, 2018, 01:08 pm
Der von mir als Referenz zu untersuchende Schwimmerschalter benötigt mindestens 24 V.
24V AC halte ich für keine gute Idee, da der Arduino mit Wechselspannung nichts anfangen kann. Mit galvanisch getrennten 24 V DC sollte es gehen. Wobei es mich immer etwas nervös macht, wenn GND vom Netzteil geschaltet wird. Möglicherweise ja so:

                  Pin7
                   │
24V ─── S1 ─── R1 ─┴─ R2 ─── GND

Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Sep 11, 2018, 01:34 pm
24V AC halte ich für keine gute Idee, da der Arduino mit Wechselspannung nichts anfangen kann.
Danke! Das ist natürlich ein Fehler im Schaltplan.

Quote
                  Pin7
                   │
24V ─── S1 ─── R1 ─┴─ R2 ─── GND


Das klingt gut, dann mach ich das so. edit: Dann habe ich aber keine 24 V mehr für den Schalter, wenn ich da noch 1kOhm davorhänge...
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: agmue on Sep 11, 2018, 01:41 pm
Dann habe ich aber keine 24 V mehr für den Schalter, wenn ich da noch 1kOhm davorhänge...
Wenn Du den Schalter öffnest, hast Du 24V an den Kontakten. R1 und R2 spielen da keine Rolle. Oder benötigst Du einen minimalen Strom?
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Sep 11, 2018, 01:44 pm
Wenn Du den Schalter öffnest, hast Du 24V an den Kontakten. R1 und R2 spielen da keine Rolle. Oder benötigst Du einen minimalen Strom?
Ich denke nicht, zumindest steht auf dem Schalter nichts davon. Aber wenn er schließt habe ich ja keine 24 V mehr, oder habe ich da etwas übersehen?
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: agmue on Sep 11, 2018, 02:03 pm
Aber wenn er schließt habe ich ja keine 24 V mehr, ...
Hoffentlich!

... zumindest steht auf dem Schalter nichts davon.
Auf Schaltern steht üblicherweise, welche Spannung und welchen Strom sie maximal schalten können.

Im Datenblatt finden sich dann auch Angaben zur Legierung der Kontakte und den dadurch bedingten minimalen Spannungen und Strömen. Wenn man mit einem Schütz versucht, 1 µA / 5 V zu schalten, können sich Oxidschichten bilden, die nicht mehr durchschlagen werden. Wenn Du solche Dinge berücksichtigen möchtest, mußt Du schon Spezialisten des Fachs befragen und einen Link zum Datenblatt gleich dazu liefern.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Sep 11, 2018, 02:41 pm
Hoffentlich!
Auf Schaltern steht üblicherweise, welche Spannung und welchen Strom sie maximal schalten können.

Im Datenblatt finden sich dann auch Angaben zur Legierung der Kontakte und den dadurch bedingten minimalen Spannungen und Strömen. Wenn man mit einem Schütz versucht, 1 µA / 5 V zu schalten, können sich Oxidschichten bilden, die nicht mehr durchschlagen werden. Wenn Du solche Dinge berücksichtigen möchtest, mußt Du schon Spezialisten des Fachs befragen und einen Link zum Datenblatt gleich dazu liefern.

Ich denke, der Schalter benötigt eine Minimalspannung, da es sich nicht um einen einfachen mechanischen Schalter handelt, sondern sich in dem Schwimmer irgend eine Elektronik befindet. Ich habe bereits versucht, ihn an den 5V vom Arduino zu betreiben, aber das hat nicht funktioniert oder das Programm abstürzen lassen. Wenn ich also richtig liege, dass bei der von Dir vorgeschlagenen Schaltung nur noch 19 V anliegen, wird vermutlich wieder das selbe passieren. Aber ich werde es morgen einfach mal ausprobieren. Vielen Dank bis hierher!
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: agmue on Sep 11, 2018, 06:58 pm
... irgend eine Elektronik ...
Meine Aussagen beziehen sich genau auf das, was Du im Schaltplan eingezeichnest hast: einen Schalter als Öffner.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Sep 12, 2018, 07:46 am
Meine Aussagen beziehen sich genau auf das, was Du im Schaltplan eingezeichnest hast: einen Schalter als Öffner.
Ah, ok. Das war dann schon wieder mein Fehler. Ich habe hier nur einen Schließer, ursprünglich war es ein Öffner.

edit: Also wäre wohl die ursprüngliche Variante, ergänzt um eine Sperrdiode zwischen Arduino und Schalter eine günstige, sichere Möglichkeit?
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: agmue on Sep 12, 2018, 10:43 am
Ob Öffner oder Schließer ist nicht problematish, aber "... irgend eine Elektronik ..." schon. Da halte ich mich komplett zurück.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Sep 12, 2018, 02:28 pm
Ob Öffner oder Schließer ist nicht problematish, aber "... irgend eine Elektronik ..." schon. Da halte ich mich komplett zurück.
Ok, aber mehr kann ich auch aus dem Datenblatt nicht entnehmen. Die Elektronik ist eine Vermutung, denn wenn es nur ein Schalter wäre würde er ja auch an 5 V funktionieren und die Angabe 24 V - 230 V wäre nicht sinnvoll.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Oct 04, 2018, 08:24 am
Ich melde mich mal wieder hier mit einem kleinen Update:

Die Übertragung der Daten läuft jetzt stabil über den seriellen Monitor des RasPi, das Skript zur Erstellung der Datenbank funktioniert leider nicht zuverlässig. Trotzdem habe ich so schon einige Stunden an Datenaufzeichnung zusammenbekommen.

Die Steuerung mittels des einen Arduino läuft prinzipiell ebenfalls wie gewünscht (Abfahren des Programms Pumpen - Pause - Pumpen ... Belüften ). Allerdings bleibt es regelmäßig über Nacht stehen, scheinbar (bisher drei Mal) immer an der selben Stelle zum Ende des einen Pumpzyklus nach ca. 28 000 s Gesamtlaufzeit. Ich komme leider nicht dahinter, woran es liegen könnte, zumal ich frühere, einfachere Versionen bereits länger laufen lassen konnte, ohne dass es zu einem Abbruch kam. Blöderweise habe ich dafür keine ordentliche Versionierung.

Vielleicht kommt es irgendwo zu einem Überlauf oder dergleichen? Ich lasse mal den Code hier, vielleicht hat ja jemand eine Idee? Das Problem tritt natürlich nur im Modus 'Programm' auf.

Code: [Select]

#include<Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Belegung der Ein- und Ausgaenge, Relais und Switches, Zustandsvariablen

const byte RY_V1_pin = 3;  // Verdichter
byte RY_V1_state;

const byte RY_M1_pin = 5;  // Magnetventil 1
byte RY_M1_state;

const byte RY_M2_pin = 7;  // Magnetventil 2
byte RY_M2_state;

const byte RY_M3_pin = 9;  // Magnetventil 3
byte RY_M3_state;

const byte SW1_pin = 4;    // Schalter 1
bool SW1_status;
const byte SW2_pin = 6;    // Schalter 2
bool SW2_status;
const byte SW3_pin = 8;    // Schalter 3
bool SW3_status;

const byte trig_A = 2;
const byte trig_B = 13;

bool A_state;
bool B_state;


// Zeit
const unsigned int long pump_intervall = 315000;
const unsigned int long pause_intervall = 20000;
const unsigned int long air_intervall = 30000;

unsigned int long remaining_time;
unsigned int long elapsed_time;

unsigned int long Millis;
unsigned int long Intervall;

unsigned int long schreib_timestore;
const int long schreib_intervall = 1000;


void setup() {
  Wire.begin();
  Serial.begin(9600);

  pinMode(trig_A, OUTPUT);
  pinMode(trig_B, OUTPUT);

  pinMode(RY_M3_pin, OUTPUT);
  digitalWrite(RY_M3_pin, HIGH);

  pinMode(RY_M2_pin, OUTPUT);
  digitalWrite(RY_M2_pin, HIGH);

  pinMode(RY_M1_pin, OUTPUT);
  digitalWrite(RY_M1_pin, HIGH);

  pinMode(RY_V1_pin, OUTPUT);
  digitalWrite(RY_V1_pin, HIGH);

  pinMode(SW1_pin, INPUT);
  pinMode(SW2_pin, INPUT);
  pinMode(SW3_pin, INPUT);
  digitalWrite(SW1_pin, HIGH);
  digitalWrite(SW2_pin, HIGH);
  digitalWrite(SW3_pin, HIGH);

  lcd.init();
  lcd.clear();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Pumpen/Belueften");
  lcd.setCursor(0, 1);
  lcd.print("Funktion waehlen");
}

void dig_Write() {
  digitalWrite(RY_V1_pin, RY_V1_state);
  digitalWrite(RY_M1_pin, RY_M1_state);
  digitalWrite(RY_M2_pin, RY_M2_state);
  digitalWrite(RY_M3_pin, RY_M3_state);
  digitalWrite(trig_A, A_state);
  digitalWrite(trig_B, B_state);
}

enum ZUSTAENDE {
  A_to_B, pause_1 , B_to_A, pause_2, pause_0, air
};

byte curr_state = pause_2;
byte next_state = A_to_B;
byte prev_state = B_to_A;

const int rounds = 2;
int count_rounds = 0;
int count_global = 0;

void A_B () {
  RY_V1_state = LOW;
  RY_M1_state = LOW;
  RY_M2_state = HIGH;
  RY_M3_state = HIGH;
  A_state = 1;
  B_state = 0;
  dig_Write();
  Millis = millis();
  curr_state = A_to_B;
  return;
}

void B_A () {
  RY_V1_state = LOW;
  RY_M1_state = HIGH;
  RY_M2_state = LOW;
  RY_M3_state = HIGH;
  A_state = 0;
  B_state = 1;
  dig_Write();
  Millis = millis();
  curr_state = B_to_A;
  return;
}

void Air () {
  RY_V1_state = LOW;
  RY_M1_state = HIGH;
  RY_M2_state = HIGH;
  RY_M3_state = LOW;
  A_state = 1;
  B_state = 1;
  dig_Write();
  Millis = millis();
  curr_state = air;
  return;
}

void pause () {
  RY_V1_state = HIGH;
  RY_M1_state = HIGH;
  RY_M2_state = HIGH;
  RY_M3_state = HIGH;
  curr_state = pause_0;
  A_state = 0;
  B_state = 0;
  dig_Write();
  Millis = millis();
  return;
}

void programm() {
  if (millis() - Millis >= Intervall) {
    switch (next_state) {

      case A_to_B:
        count_rounds++;
        count_global++;
        prev_state = curr_state;
        A_B();
        next_state = pause_1;
        Intervall = pump_intervall;
        break;

      case pause_1:
        pause();
        prev_state = curr_state;

        next_state = B_to_A;
        Intervall = pause_intervall;
        break;

      case B_to_A:
        prev_state = curr_state;
        B_A();
        next_state = pause_2;
        Intervall = pump_intervall;
        break;

      case pause_2:
        prev_state = curr_state;
        pause();
        if (count_rounds <= rounds)
        {
          next_state = A_to_B;
        }
        else {
          next_state = air;
        }
        Intervall = pause_intervall;
        break;

      case air:
        prev_state = curr_state;
        Intervall = air_intervall;
        Air();
        count_rounds = 0;
        next_state = pause_2;
    }
  }
}

unsigned int long switches_last_millis;
const unsigned int long switches_intervall = 50;

bool readingSwitches() {
  if(millis()- switches_last_millis < switches_intervall) return;
  switches_last_millis += switches_intervall;

  SW1_status = digitalRead(SW1_pin);
  SW2_status = digitalRead(SW2_pin);
  SW3_status = digitalRead(SW3_pin);
  return;
}

void schreiben() {
  if (millis() - schreib_timestore >= schreib_intervall) {
    schreib_timestore = millis();
    Serial.print(millis());
    Serial.print(",");
    Serial.print(curr_state);
    Serial.print(",");
    Serial.print(elapsed_time);
    Serial.print(",");
    Serial.print(RY_V1_state);
    Serial.print(",");
    Serial.print(RY_M1_state);
    Serial.print(",");
    Serial.print(RY_M2_state);
    Serial.print(",");
    Serial.print(RY_M3_state);
    Serial.println("");
  }
}

unsigned int display_last_millis;
const unsigned int display_intervall = 1000;

void Display() {
  if(millis()- display_last_millis < display_intervall) return;
  display_last_millis += display_intervall;

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Runde ");
  lcd.print(count_global);
  lcd.print(" ");
  if (curr_state == 4) {
    lcd.print("- Pause");
  }
  if (curr_state == 0) {
    lcd.print("- A->B");
  }
  if (curr_state == 2) {
    lcd.print("- B->A");
  }
  if (curr_state == 5) {
    lcd.print("- Air");
  }
  lcd.setCursor(0, 1);
  if (next_state == pause_1 || next_state == pause_2 || next_state == pause_0) {
    lcd.print("Pause in ");
  }
  if (next_state == A_to_B) {
    lcd.print("A->B in ");
  }
  if (next_state == B_to_A) {
    lcd.print("B->A in ");
  }
  if (next_state == air) {
    lcd.print("Air in ");
  }
  lcd.print(remaining_time);
  lcd.print(" s");
}


void loop() {
  schreiben();

  elapsed_time = (millis() - Millis) / 1000;
  remaining_time = Intervall / 1000 - elapsed_time;

  readingSwitches();

  if (SW1_status == HIGH && SW2_status == HIGH && SW3_status == HIGH) {  // Schalter 1+2+3
    programm();
  }

  if (SW1_status == HIGH && SW2_status == HIGH && SW3_status == LOW) {   // Schalter 1+2
    A_B();
  }

  if (SW1_status == HIGH && SW2_status == LOW && SW3_status == HIGH) {   // Schalter 1+3
    B_A();
  }

  if (SW1_status == HIGH && SW2_status == LOW && SW3_status == LOW) {    // Schalter 1
    Air();
  }

  if (SW1_status == LOW && SW2_status == LOW && SW3_status == LOW) { // kein Schalter
    pause();
    //}
  }
  if (SW1_status == LOW && SW2_status == LOW && SW3_status == HIGH) {
    pause();
  }

  if (SW1_status == LOW && SW2_status == HIGH && SW3_status == HIGH) {
    pause();
  }

  Display();
}


Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: agmue on Oct 04, 2018, 11:20 am
Code: [Select]
unsigned int display_last_millis;
const unsigned int display_intervall = 1000;

Wenn ich int im Zusammenhang mit millis() sehe, werde ich skeptisch.
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Oct 04, 2018, 02:36 pm
Code: [Select]
unsigned int display_last_millis;
const unsigned int display_intervall = 1000;

Wenn ich int im Zusammenhang mit millis() sehe, werde ich skeptisch.
Danke! Das stell ich mal ab und schau, was die Nacht bringt...
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Rentner on Oct 04, 2018, 02:43 pm
Hallo,
kann mich da agmue nur anschliessen.
alle Variable die bei Berechnungen und abfragen  mit millis() benutzt werden solltest Du erst mal als

unsigned long Mllis // deklarieren

bei abfragen mit festen Werten im code den Wert mit UL kennzeichnen z.B


if millis()-Millis >=1000UL



Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Oct 05, 2018, 09:00 am
So, ich habe alle entsprechenden Variablen und Konstanten in unsigned long geändert - leider ist das Programm wieder stehen geblieben (dieses Mal nach 34000 s und mit dem Unterschied, dass nun wieder das Start-Display gezeigt wurde, wo vorher nur das "R" von Runde ... angezeigt wurde)  :(
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Rentner on Oct 05, 2018, 12:10 pm
Hallo
34000s ist ja Mal gerade ein knapper halber Tag.
Da wirst du als nächstes ein paar Serielleptint Anweisungen einbauen müssen um die die Zeitvariablen und Statuswerte  ansehen zu können.

Ich denke mal Bein Eintritt und Austritt in deine Funktionen wäre eine gute Stelle

Anscheinend rennt das Programm durch ohne das eine swich Case ausgeführt wird .

Heinz
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Oct 05, 2018, 12:30 pm
Anscheinend rennt das Programm durch ohne das eine swich Case ausgeführt wird .
Wie meinst Du das? Kannst Du das etwas erläutern? Meinst Du, ein Case wird übersprungen?
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Rentner on Oct 05, 2018, 01:34 pm
Hallo,

na ja , Du schreibst das Program bleibt stehen, daraus folgere ich das nichts mehr passiert , nichts mehr geschaltet wird an der Maschine. Was mich etwas wunder ist jetzt allerdings das in dem Fall ja eigendlich der aktuelle Zustand erhalten bleiben müsste. D.h irgendwas läüft immer weiter ohne das es mit dem nächsten Schritt abgeschaltet wird. Das wäre ja schlimm- Das Ding läuft dann ohne jede Kontrolle vor sich hin.  Oder ist das gerade immer ein Zustand in dem eh alles ausgeschaltet ist. ? Also passiert das immer nur am Ende eines Maschinenzyklus oder auch mitten drin. ?

die angegeben 28000 oder 34000s entnimmst Du den in der Funktion schreiben mit ausgegebenen millis() nehme ich mal an. ??

Eigendlich ist es ja so wenn das Startdisplay angezeigt wird ist das Programm ja anscheinend aus dem "Programm modus der "Automatik"  rausgefallen, ?? ich blicke da aber auch nicht so ganz durch was Dein programm da so macht und wann anzeigt. 


Dann hab ich noch mal eine Frage zur Hardware. Ich hab gesehen das die Schalter positiv schaltend abgefragt werden. Wie sind die Schalter beschaltet. Welche Widerstände (Pull-down) sind da mit verschaltet. ? Ist das ganze halbwegs sicher ? , oder ist dein eigendliches Problem ehr die EMV ?


wie Du siehst Fragen über Fragen

Gruß Heinz




Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: postmaster-ino on Oct 05, 2018, 05:05 pm
Hi

Hatte hier ebenfalls sporadische Hänger - bei mir wurde aber von einer CAN-Nachricht (maximal 8 Byte lang) die Länge ermittelt und diese Anzahl an Bytes in den vorhandenen Puffer geschrieben.
Blöd, wenn vom CAN-Modul eine 12 Byte lange Nachricht angeboten wird ... (so richtig gefunden habe ich den Fehler nicht wirklich, tendiere auf Spannungseinbrüche, ausgebessert habe ich im Programm durch Begrenzen der Nachrichtenlänge und Kondensatoren in der Spannungsversorgung - ca. 24h bis jetzt fehlerfrei)

MfG
Title: Re: Projekt zur Ermittlung der Dauerbetriebseigenschaften unterschiedlicher Sensoren
Post by: Hayley_Hay on Oct 12, 2018, 08:30 am
Hallo noch mal!

Das Programm läuft jetzt seit einigen Tagen durch, nachdem ich beim letzten case (air) noch ein break; hinzugefügt habe.
 
Dann hab ich noch mal eine Frage zur Hardware. Ich hab gesehen das die Schalter positiv schaltend abgefragt werden. Wie sind die Schalter beschaltet. Welche Widerstände (Pull-down) sind da mit verschaltet. ? Ist das ganze halbwegs sicher ? , oder ist dein eigendliches Problem ehr die EMV ?
Ja, das stimmt. Das hab ich ganz am Anfang so gemacht ohne Nachzudenken, und aus Bequemlichkeit habe ich es so gelassen. Probleme mit der EMV sind inzwischen nur noch minimal, der Bildschirm des angeschlossenen RasPi geht kurz aus wenn ein Relais schaltet.

Also, vielen Dank wieder mal bis hier her!