Wie Stromzufuhr zu Sensoren richtig unterbrechen, vorallem bezüglich Datenfluss

Hallo.
In einem anderen Thread habe ich erfahren, wie ich die Stromzufuhr zu Sensoren unterbreche (z.B. mit einem FET, oder anderem).
Der Datenstrom muss unterbunden werden, dann kann man VCC unterbrechen. Ich bin mir aber unsicher, was es genau in meinem Fall mit all meinen Sensoren bedeutet, den Datenfluss zu unterbrechen, und wie ich das richtig erreiche.

Ich habe:
DHT22 Modul
DS18B20 Temperatur Sensor
ein Wassersensor Modul, gleich wie "Funduino Tropfensensor" (im Google)
WisBlock RAK12007 Ultraschall Distanzsensor
DFRobot RTC DS3231M
mpu6050 Beschleunigungs Gyro Sensor Modul

Mir wurde mitgeteilt, dass ich beim DHT22 Sensor einfach keine Abfrage machen kann, und ihn dann einfach ausschalten kann am VCC Pin (und natürlich auch danach keine weiteren Sensorabfragen machen darf).

Kann man sagen, dass das in etwa bei allen Sensoren mit nur einem digital Daten Pin so sein sollte?
Also in meinem Fall auch die DS18B20 Temperatur Sensor einfach unterbrochen werden können an VCC, wenn keine Datenabfrage stattfindet?

Wie ist es dann beim Ultraschallsensor, kann ich bei dem auch einfach nur kein Echo senden, und dann wird auch nichts zurück übermittelt zum Arduino, obwohl so ein Ultraschallsensor ja eigentlich die ganze Zeit am lauschen sein sollte, ob ein Schall erkannt wird?
Und ihn somit auch gleich einfach unterbrechen kann an VCC, wenn ich nichts damit mache, und er nicht gerade ein Störsignal erhält (vielleicht von einem 2. Arduino mit Ultraschallsensor)?

Und wie beim Wassersensor, der ja einen Pin für einen analog Input hat? Bei dem kann man ja nicht sagen, ich kann den Datenaustausch unterbrechen, es ist so lange messbar wie das Modul mit Strom versorgt wird. Kann ich den auch einfach ohne ein analogRead zu verwenden an VCC unterbrechen?

Und wie ist es zu guter Letzt mit den 2 I2C Geräten, der RTC und dem mpu6050? Die RTC ist das einzige Gerät, das NICHT ausgeschalten werden darf, da ich sie ohne Batterie verwende. Ich muss aber in den DeepSleep Modus mit dem Arduino Pro mini 3.3v, um Energie zu sparen, dabei sollten alle anderen Sensoren komplett ausgeschalten werden. Die RTC muss im DeepSleep nicht weiter benutzbar sein (logischerweise), doch sie sollte nachher wieder normal funktionieren und nicht die Uhrzeit verlieren, weil ich SDA und SCL Pins deaktiviert habe.
Wie muss ich jetzt den mpu6050 ausschalten? Mir wurde mitgeteilt, dass ich I2C Geräte zuerst mit end() - Arduino-Referenz beenden kann. Doch macht das etwas der RTC? Und was ist mit dem AD0 Pin am mpu6050, den ich an VCC anschliessen muss, damit er eine andere Registernummer erhält, damit diese 2 I2C Geräte voneinander unterschieden werden können? Müsste ich den noch zusätzlich irgendwie unterbrechen, oder kann ich das einfach ignorieren, und einfach mit end() zuerst den Datenstrom beenden, und VCC vom mpu6050 unterbrechen?

Also einfach gesagt, kann ich jeden 1 Daten Pin Sensor (auch der Ultraschallsensor ist damit gemeint...) aus meiner Liste einfach an VCC unterbrechen, wenn ich keine Datenabfrage mache? Und die beiden I2C Geräte einfach mit end() beenden und am mpu6050 NUR den VCC Pin unterbrechen?

Wäre nett, wenn mir das jemand kurz und (sehr) einfach erklären könnte, oder vielleicht sogar einfach sagen könnte, ja alle diese Sensoren sind so abschaltbar wie du es gesagt hast...

Vielen Dank für die Hilfe

Ich werde jetzt mal nicht weiter auf deine Frage eingehen, allerdings viel zu viel Text (Prosa) der nichts mit der Technik und dem eigendlichen Problem zu tun hat.
Und du solltest besser Links deiner Module/Sensoren posten, oder sollen alle suchen und jeder ein anderes Teil finden. Da kommen dann die nächsten Probleme.

Warum willst du die abschalten? Es reicht doch wenn man einfach keine Abfrage macht.
Für was soll das gut sein?

1 Like

viel zu viel Text

Ja aber ich muss ja meine Fragen auch stellen zu all den verschiedenen Sensoren, ich dachte jetzt eigentlich ich hätte die Fragen so kurz und bündig gestellt wie es praktisch nur geht, ohne zu viel auszulasse...

du solltest besser Links deiner Module/Sensoren posten, oder sollen alle suchen und jeder ein anderes Teil finden

Ich habe den eindeutigen Namen angegeben, ich dachte das reicht...
Ausser beim Wassersensor, dort finde ich selbst nicht mal heraus welchen ich habe, er sieht so aus wie der rote funduino Tropfensensor, aber finde gar nichts dazu heraus...
Dort wo ein eindeutiger Name stehen (z.B. DFRobt, WisBlock RAK) sollte ja klar sein von wo sie sind, den Rest habe ich einfach von irgendwo, doch die Namen sind eindeutig...

@finn912

Warum willst du die abschalten? Es reicht doch wenn man einfach keine Abfrage macht.
Für was soll das gut sein?

Ist das so? Bei allen nicht I2C sollte das ausreichen? Und bei den I2C? Auch da einfach keine Abfrage machen?
Mir wurde mitgeteilt dass Kriechströme auftreten können, wenn man einfach nur VCC unterbricht, und den Datenstrom nicht unterbindet. Ich bin mir aber nicht sicher wo ein Datenstrom auftaucht, und wo nicht. Mindestens beim I2C hätte ich jetzt gedacht, vielleicht besteht da dauerhaft ein Datenstrom.

Ps: Ich nehme an, du meinst mit "Warum willst du die abschalten", dass du meinst den Datenstrom abschalten. Den Versorgungsstrom der Sensoren will ich ausschalten um Energie zu sparen im DeepSleep Modus, weil alles über eine 18650 Lithium Zelle mit Strom (und Converter) versorgt wird.

Die Namen sind def. nicht eindeutig. Es gibt immer mehrere Hersteller die jeweils eigene Entwicklung drumherum bauen.

Wenn ich von einem Sensor den Strom abklemme und den pinMode von dem/den Anschlusspin(s) auf INPUT_PULLUP setze, dürfte das ziemlich wurscht sein, was da für ein Sensor dran klemmt.

Die Namen sind def. nicht eindeutig. Es gibt immer mehrere Hersteller die jeweils eigene Entwicklung drumherum bauen.

Ja, doch ich weiss auch nicht mehr von welchem Hersteller das gebaut wurde, es ist einfach von irgendwo aus dem Internet, nicht angegeben und jetzt nicht mehr ersichtlich. Doch der Datenstrom sollte doch sicher zwischen allen verschiedenen Herstellern gleich bleiben, sonst würden sie ja alle anders funktionieren.

@Kai-R

Wenn ich von einem Sensor den Strom abklemme und den pinMode von dem/den Anschlusspin(s) auf INPUT_PULLUP setze, dürfte das ziemlich wurscht sein, was da für ein Sensor dran klemmt.

Das ist jetzt aber eine ganz neue Geschichte, ich zitier mal uwefed aus dem anderen Thread:

Die Versorgungsspannung von ICs (Sensoren / Modulen) kann man nur abschalten, wenn die Eingänge (und teilweise Ausgänge) keine Spannung von der Ansteuerung (Arduino) bekommen, da diese über die Schutzdioden das IC versorgen. Das führt im schlimmsten Fall dazu, daß das IC Kaputt geht, im besten Fall, daß es weiter fleißig Strom verbraucht, obwohl Du denkst daß es ausgeschaltet ist.

Du Kai-R sagst jetzt, wenn ich die Anschlussspins auf INPUT_PULLUP setzte, dann ist das alles wurscht. Was stimmt jetzt, kann ich VCC von den Sensoren (auch I2C) einfach unterbrechen wenn ich die Anschlusspins auf INPUT_PULLUP setze?
Ist aber eigentlich noch komplizierter als einfach keine Datenabfrage zu machen, wie du selbst ja gesagt hast (im anderen Thread), kann ich beim DHT22 machen. Also komme ich zurück zu meiner Frage am Schluss von Post 1:

Kann ich einfach bei allen nicht I2C Sensoren aus meiner Liste keine Datenabfrage machen, und dann VCC einfach unterbrechen?
Und bei den I2C? Entweder INPUT_PULLUP auf SDA und SDC Pin, oder end()? Und der AD0 Pin vom mpu6050, der an VCC angeschlossen ist? Egal? Einfach ignorieren?

Ich würde eher INPUT vorschlagen, dann ist er wirklich hochohmig.
Bei INPUT_PULLUP ist er über den PullUp nach Vcc verbunden und könnte darüber versuchen zu speisen.

Gruß Tommy

Meinetwegen nur INPUT, mir ist hier zwar nicht klar wie das bei einem INPUT (Pullup) Modus gehen soll, aber das soll im speziellen Fall nicht bedeuten, dass es nicht so sein könnte.

Hallo
Wenn es sich um einen ESP 8266 handelt ist das doch egal. Da wird der deepsleep mit einem reset beendet. Damit wird ganz normal der Setup durchlaufen und alles neu gestartet.

Bei einem Esp32 wird das ähnlich machbar sein

Es handelt sich um einen Arduin Pro mini mit 3.3V

OK , und was passiert da bei Beendigung des deepsleep.?

OK , und was passiert da bei Beendigung des deepsleep.?

Er wacht wieder auf und macht kurz eine Sensorabfrage, evtl wird noch mehr eingeschalten und dann geht er wieder in den DeepSleep und alles schaltet sich auf ein Minimum ab, und das so über den ganzen Tag. So alle paar Minuten bis Stunden wächt er kurz aus dem DeepSleep auf (der in Schleifen läuft), und macht das.

Mal Dir mal die Schaltung mit dem internen PullUp zum Verständnis auf. Der begrenzt zwar den Strom auf ungefährliche Werte, wenn aber sparen um jeden Preis angesagt ist könnte da noch was fließen.

Gruß Tommy

sparen um jeden Preis angesagt ist

Ich weiss nicht wie viel da verbraucht wird zwischen INPUT und INPUT_PULLUP, und weiss auch gar nicht richtig den Unterschied, oder was die genau machen und wo genau eingesetzt werden (müsste ich noch kurz nachlesen), doch ich meine mit sparen um jeden Preis, unter 1mA bleiben. Der Arduino Pro mini 3.3v von Sparkfun verbraucht im DeepSleep noch ca 0.65 mA, mit der RTC ca 0.7mA. Das wäre mir recht wenn das etwa so bleibt, und nicht über 1mA geht...

Das habe ich bevor ich den gekauft habe auch gelesen : )
Die LED entlöten möchte ich jetzt mal nicht, 1mA ist schon genug niedrig, es werden vielleicht für ein paar wenige Minuten pro Tag auch eine Hand voll mini Servo Motoren eingeschalten.

Der Arduino wird von einer 18650 Lithium Zelle, einem DFRobot Solarladeregler und kleinen Solarzellen betrieben.

Weiß nicht was für RTC du hast, wenn man die LED und EEPROM trent an der DS3231 dann gönnt die sich nur 110 µA so Weit keine Uhrzeit abgefragt wird

Eigentlich habe ich das geschrieben:
DFRobot RTC DS3231M
und auch das dies die einzige Ausnahme ist, und immer eingeschalten bleibt, weil sie ohne Batterie betrieben wird (das ganze wird ja schon von Solar und Batterie betrieben). Und sie verbraucht dann nur zusätzlich etwas um die 50 mikro A glaube ich, mit Arduino ist es dann ca bei 0.7mA im DeepSleep

Glaub mir mit dem Spielzeug kommst nicht weit, je nach Akku
Die 5.5V PV Module haben in Europa max 0,1W. Die Angaben was die Liefern in den Beschreibungen sind möchte gerne angaben, somit brauch man um die 10Stk. und viel viel Sonne, damit der Akku einigermaßen geladen wird.
Dazu ist das Lade Modul sehr empfindlich wen es geht um Überspannung.