ich bin gerade an einem Projekt dran, bei dem beim reboot meines arduino mini pro das rtc zeit modul aktiviert werden soll, die zeit ausgelesen, und danach das modul abschalten. Diese Zeit dann auf das i2c display von sainsmart übertragen. Diese Theorie konnte ich teils in die praxis übertragen, jedoch habe ich folgendes Problem (habe ich mit dem i2c scanner herausgeffunden): beim aktiven rtc modul (Vcc über pin 7 aktiviert) werden alle 3 devices gefunden (display, ds1307, eeprom(ebenfalls auf rtc modul)). wenn ich jedoch die vcc verbinung des moduls auf LOW schalte, sucht der scanner vergeblich nach anderen modulen.
Meine Frage: wie kann ich das RTC modul deaktivieren? werden pull up widerstände benötigt? kann ich auch die internen nehmen?
das rtc soll wegen stromspargründen ausgeschaltet bleiben und jediglich beim reset an, abgefragt, und ausgeschaltet werden
Gut das du deine RTC genannt hast.
Die RTC kannst du nicht schlafen legen. Dann würde die nicht weiterlaufen. Der Stromverbauch von den Teilen ist so gering, das es nicht einmal prozentual ins gewicht fällt, da alles andere nicht auf Stromsparen eingestellt ist.
habe gemessen, 8 ma, für mein projekt (smartwatch) zu viel :
ich hatte ja gehofft mit trennen der vcc verbindung, geht der chip aus, jedoch leistet er irgendwie einen widerstand gegen das i2c netzwerk, sodass keine anderen geräte mehr gefunden werden können
MasterTim17:
habe gemessen, 8 ma, für mein projekt (smartwatch) zu viel :
Eine DS1307 benötigt im Standby laut Datenblatt 200µA = 0,2 mA.
Wenn das bei Dir mehr ist, ist entweder die Beschaltung falsch, Du steuerst es per Software falsch an oder Dir spuckt irgendwas anderes in die Suppe!
Von Deiner Beschreibung her "ds1307, eeprom(ebenfalls auf rtc modul)" verwendest Du ein TinyRTC-Modul mit chinesischer Beschaltung. Das ist für batteriebetriebene Geräte schon alleine aus dem Grunde Schrott, weil sich auf dem Modul ein Akku mit Ladeschaltung befindet, und immer wenn das Modul mit Betriebsspannung versorgt wird, lädst Du den RTC-Backupakku mit.
Was Du brauchst, um auf die 0,2mA Standby Current aus dem Datenblatt zu kommen, ist die Schaltung "TYPICAL OPERATING CIRCUIT " aus dem DS1307-Datenblatt. Ohne Ladeschaltung. Ohne Akku. Mit einer Batterie als Backupversorgung.
danke für den link!
ich habe probiert, nach abfragen der zeit den pinmode auf input zu stellen, jedoch keine änderung. ist der kondensator von dem schaltplan nötig?
den plan den i2c bus abzuschalten ist auch nicht umbedingt gut, da ich dennoch das display haben möchte
@jurs: für das modul gibts ein extra anschluss für das laden der batterie, hatte gelesen dass das laden der batterie auf 10ma beschränkt ist, kommt also mit dem gemessenen strom nicht hin
Elektronik-Bausteine darf man nicht "ausschalten" sprich die Versorgungsspannung wegnehmen und gleichzeitig Spannung auf den Signal-Pins (I2C) belassen. Die Schutzdioden der Signalpins werden leitend und ziehen die I2C Leitungen auf Massepotential und jegliche Funktion des I2C Busses ist damit blockiert.
Vergiß das Abschalten der RTC, hol Dir eine RTC-Platine wo nur der RTC Baustein drauf ist.
Die RTC verbraucht Viel Weniger als das Display oder der I2C Umsetzer des Displays
Danke uwe für die Information!
D.h. dass auch das high setzen des gnd anschlusses nichts bringen wird
Habe mir mal die daten der verbauten chips angeschaut, sollte nach anschluss ca paar hunderte micro ampere sein, somit sind die 8ma für mich nicht zu erklären
Als display benutze ich das oled 1, 3' display
Bei meiner benutzung zieht es 5ma (!)
ich hätte dazu noch eine Frage.
Ich habe eine I2C Verbindung mit zwei Mega 2560. Beide enthalten den RTC DS1307. Diese RTC's haben ja laut Hersteller eine festgelegte Addresse (0x68 bzw. 104) im I2C Bus.
Wenn ich jetzt mit einem der beiden Mega's die Zeit und das Datum abfrage und mir anzeigen lasse, kommt es manchmal vor das ich folgendes bekomme, statt dem Datum und der zeit:
0.0.2000;0:0:0
Das Datum und die Zeit werden vorher über ein Touch Display manuell eingestellt.
Könnte es daran liegen, dass bei der Abfrage beide RTC's gleichzeitig abgefragt werden und es dabei zu diesem Ergebnis kommt?
ich habe ein Board als Master mit 14 Wärmesensoren. Auf diesem ist ein DS1307 eingebaut.
Das zweite Board wird als Slave betriben. Ebenfalls mit einem DS1307 und 14 Sensoren.
Beim Master wird eine Abtastzeit eingestellt und die Messung gestartet. Wenn die Abtastzeit erreich wurde startet der Master die Messung beim Master board. Im Anschluss löst et die Messung auf dem Slave Board aus.
Bei jeder Messung, sei es Master oder Slave wird die Zeit aufgenommen.
Ich habe beide Boards mit diesem Aufbau bereitsgestellt bekommen.
Nun wollte ich wissen, ob der Fehler durch die zwei "gleichen" RTC's auftritt.
Du kannst keine 2 Master am I2C haben. Der Slave-Arduino muß Master sein um den I2C Bus auszulesen.
Wieso verbindest Du die beiden Arduinos nicht über eine der 3 freien Seriellen schnittstellen? so hast Du 2 getrennte I2C Busse.
Grüße Uwe
ich weis das ich keine 2 Master am Bus haben darf. Deswegen ist ja einer der 2 Arduinos als Slave betrieben.
Das triggern funktioniert auch bereits, da es ein x=1 vom Master Arduino erwartet und auch bekommt.
Beide Boards erfassen nun die Daten aus den Sensoren und speichern diese auf eine microSd. Außerdem wierden die Daten auf dem Touch Display angezeigt.
Ich benutze den I2C Bus, da es noch im Anschluss mit weiteren Slave Arduinos (max 5) erweitert werden muss. Aber zuerst möchte ich es mit einem Slave zum laufen bringen.
Jetzt zu meinem Problem: Das Triggern des Slave-Arduinos funktioniert, jedoch kommt es manchmal vor, dass die statt der aktuellen Zeit und des aktuellen Datums, 0.0.2000;0:0:0 angezeigt wird.
Meine Vermutung war, das es vielleicht daran liegen könnte, dass ich 2 RTC's habe (1 am Maste-, 1 am Slave-Arduino) habe, welche die gleiche Addresse (0x68) haben.
Ich wollte in Erfahrung bringen, ob ich mit meiner Vermutung richtig liege und wie ich diesen Fehler beheben kann.