PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Uhrschaltplan überprüfen, MOSFET und MAG3110



Skorpio
19.01.2018, 21:35
Guten Abend,
ich bin zwar nicht frisch Angemeldet aber dennoch fleißg dabei. Ich bin gerade an einem Uhr Projekt (vermutlich nicht der Erste und auch nicht der letzte) dabei benötige ich hilfe um ein paar Kleinigkeiten noch zu richten.

Folgendes Problem:
Ich habe damals in der Schule zwar mit Transistoren gearbeitet aber nebst einer erwähnung noch nie mit MOSFETs. Habe vor damit die LEDs sowie die RTC im nicht verwendeten zustand auszuschalten. Dafür verwende ich den von Reichelt angebotenen AO3422. Ist die dargestellte Verdrahtung korrekt?

Hat jemand schonmal den MAG3110 verwendet und stimmt auch da die Belegung um per I²C darauf zuzugreifen?

Für eure Hilfe bedanke ich mich schonmal im Vorraus.

Skorpio

33223

021aet04
20.01.2018, 07:56
Willkommen im Forum, der Plan ist von der Qualität sehr schlecht. Konntest du einen besseren hochladen?

Ich habe im Netz nach dem Mosfet gesucht, das ist ein Nmos, den schaltet man gegen Masse (bei Bipolaren Transistoren wäre es ein NPN) oder man muss eine spezielle Ansteuerschaltung verwenden.

Warum Schaltest du eigentlich die Versorgungeb weg? Bei den Leds wird es funktionieren, aber über den Leds ist ein Bauteil mit I2C. Wie reagiert der ohne Versorgung? Bringt er den Bus zum Absturz, sprich zieht er die Ausgänge auf Masse?

Zum Mag kann ich leider nichts sagen.

MfG Hannes

Siro
20.01.2018, 10:13
Hallo Scorpio,

auch von mir ein Willkommen im Forum.

Source und Drain bei den Mosfets sind vertauscht.
Das sieht man daran, dass die sogenannte "Bodydiode" über Drain Source in Durchlassrichtung ist.
Damit wäre die Diode immer leitend und Du könntest den Mosfet nie richtig sperren.

Du solltest einen P-Channel Mosfet nehmen, wenn Du die positive Versorgung wegschalten möchtest.
Du kannst aber auch die Masse wegschalten, dann wäre der N-Channel genau richtig.

33226

Was ich erkennen konnte:
MAG3110 3-Achs-Accelerometer + Magnetometer
DS3231 RTC von Maxim
SK6812 RGB Led 5050 Chip
AO4322 N-Channel Mosfet im SOT-23



Warum Du die I2C Chips "abschalten" möchtest ist mir jetzt auch nicht klar,
evtl. um Strom zu sparen.
Aber so ganz abwegig ist das garnicht mit dem Stromlosschalten von I2C Chips, weil:
Wenn sich ein angeschlossener Chip "verschluckt" blockiert er den gesamten Bus, oft hilft dann
nur den Chip neu zu initialisieren oder im schlimmsten Falle einen "Kaltstart" auszuführen indem die Versorgung
abgeschaltet wird. Ich mach das jetzt neuerdings in meinen Geräten auch.



Siro

Skorpio
20.01.2018, 16:04
Vielen Dank,
also das Magnethometer werd ich nicht mehr verwenden da der Platinenhersteller für den Pin abstand extra kosten veranschlagt (Routing grid kleiner als 6mil)
da ich vorhabe eine voll mobile Version zu bauen sollten die Chips in den LEDs keinen Strom haben. im leerlauf ziehen diese ca. 600uA (beziehe mich da auf messungen die hier im Forum gemacht wurden), bei 13 LEDs sind das 7,8 mA. Einen Strom den ich vermeiden möchte. Die Uhr bzw. der mega wird, solange dieser nicht gebraucht wird in dem deep_sleep mode versetzt jetzt sollen LEDs und RTC ausgeschaltet werden, dadurch wäre es egal ob der Bus belegt ist oder nicht. Die RTC läuft über den Akku weiter. geweckt wird der mega über ein Interrupt entweder PinChange oder ext. was sich in der Software stabieler umsätzen lässt. Taster sind beide an int0 btw. int1 angeschlossen.

Habe gestern abend noch versucht das bild schöner darzustellen aber bekam es nicht hin.

https://imgur.com/a/w7GgM

Dann über diesen Weg

Skorpio

Klebwax
20.01.2018, 20:38
Warum Schaltest du eigentlich die Versorgungeb weg? Bei den Leds wird es funktionieren, aber über den Leds ist ein Bauteil mit I2C. Wie reagiert der ohne Versorgung? Bringt er den Bus zum Absturz, sprich zieht er die Ausgänge auf Masse?

Ja, das wird er. Die IOs sind über die Bodydioden mit dem Substrat verbunden. Sobald der Pin 0,5 bis 0,7V mehr als die Versorgung hat leiten sie und schließen den Bus kurz. Das macht sich im Datenblatt daran fest, daß sie maximal 0,5V mehr Spannung haben dürfen, als die anliegende Versorgung. Das gilt auch, wenn die Versorgung 0 ist.

Im Einzelfall kann es vorkommen, daß der Stromverbrauch des (CMOS) Chips so niedrig ist, daß er von dem Strom über die Datenleitungen leben kann. Das ist besonders übel, da es dann zu sporadischen Fehlern häufig abhängig vom Dateninhalt kommt.


Aber so ganz abwegig ist das garnicht mit dem Stromlosschalten von I2C Chips, weil:
Wenn sich ein angeschlossener Chip "verschluckt" blockiert er den gesamten Bus, oft hilft dann nur den Chip neu zu initialisieren oder im schlimmsten Falle einen "Kaltstart" auszuführen indem die Versorgung abgeschaltet wird.

Das kann man auch anders lösen. Dazu lässt man SDA aus Sicht des Masters offen und erzeugt 9 mal einen Takt auf SCL. Danach erzeugt man ein Stop. Das sollte die Statemachine im Slave zurück setzen.

MfG Klebwax

Siro
20.01.2018, 21:09
Das kann man auch anders lösen. Dazu lässt man SDA aus Sicht des Masters offen und erzeugt 9 mal einen Takt auf SCL.
Danach erzeugt man ein Stop. Das sollte die Statemachine im Slave zurück setzen.

Ja, völlig korrekt Klebwax, ich glaub das war so von Analog Devices beschrieben und als letzte Lösung stand da Versorgung unterbrechen.
Der Hinweis, dass sich die Chips über die Steuerleitungen versorgen können ist auch absolut berechtigt, das hatte ich auch schon mal.
Wie der Chip sich dann beim Abschalten von VCC verhält ist also tasächlich recht unbestimmt. (Leider)

021aet04
20.01.2018, 21:24
Was ich mir vorstellen könnte, wäre die I2C Bauteile, die abgeschalten werden sollen, mit einem I2C Hub an den uC zu schließen. Über den Hub trennst du die BT vom uC, anschließend schaltest du die BT inkl. Pullup weg. So sollte es funktionieren.

MfG Hannes

Skorpio
21.01.2018, 01:03
Aber das sollte ja theoretisch nicht soweit kommen da ja die rtc erst über einen Port eingeschaltet wird und anschließend würde das protokoll zur Kommunikation ablaufen.

Bin im Datenblatt über etwas gestolpert was ein abschalten der Uhr unnötig macht. Werde mir das morgen nochmal genauer durchlesen ob dann noch die Kommunikation zwischen uC und rtc erfolgt.

Seite 9 des Datenblatts Unter dem Punkt Vbat

Backup Power-Supply Input. When using the device with the VBAT input as the primary power source, this pin should be decoupled using a 0.1μF to 1.0μF low-leakage capacitor. When using the device with the VBAT input as the backup power source, the capacitor is not required. If VBAT is not used, connect to ground. The device is UL recognized to ensure against reverse charging when used with a primary lithium battery.
Go to www.maximintegrated.com/qa/info/ul.

Demnach kann ich die Uhr auch vollständig über Vbat betreiben und hätte gleichzeitig noch die Rückversicherung das der Lopo niemals geladen wird.

Schicke morgen nochmal einen überarbeiteten Plan.

Siro
21.01.2018, 14:21
@Hannes:
Das klingt plausibel und müsste funktionieren mit einem Hub.
Im Prinzip müsste man SCL und SDA irgendewie "richtig" abklemmen,
damit keine Fehlströme dort hineinfliessen beim Abschalten der Versorgung.

Wie der Zufall es will, habe ich grad ein I2C Bus Problem wo tatsächlich ein
Slave den gesamten Bus blockiert, weil er die SDA Leitung auf Low hält.
Es handelt sich um den Luftdrucksensor BMP180 von Bosch.
Das kommt ja wie gerufen und so habe ich nun folgendes getan.
Die Clockleitung und Datenleitung auf Portmode geschaltet.
Dann Softwaremässig recht langsame Clockimpulse erzeugt.
Hab mal 5ms Low dann 5ms High genommen.
Nach 8 Clockzyklen wurde die Datenleitung tatsächlich wieder High
und damit der Bus wieder frei gegeben vom Boschsensor.

Nun werde ich den Chiphersteller mal anschreiben, da ich der Meinung bin,
das der Chip ein Problem hat, was im Normalbetrieb aber garnicht zum tragen kommt.

Alle anderen Chips bei mir weisen nämlich nicht dieses Problem auf.
Ich denke mal das lohnt einen extra Thread dafür aufzumachen, da hier schon einige
mit dem BMP180 arbeiten.

@Skorpio:
Das Schaltbild kann man nun gut erkennen.
Die Mosfets schalten die Masse der Verbraucher, das sieht gut aus.
Ich spendiere an den Gates immer noch einen Widerstand, was aber nicht
zwingend erforderlich ist.

Siro

021aet04
21.01.2018, 15:59
Aber das sollte ja theoretisch nicht soweit kommen da ja die rtc erst über einen Port eingeschaltet wird und anschließend würde das protokoll zur Kommunikation ablaufen.

Bin im Datenblatt über etwas gestolpert was ein abschalten der Uhr unnötig macht. Werde mir das morgen nochmal genauer durchlesen ob dann noch die Kommunikation zwischen uC und rtc erfolgt.

Seite 9 des Datenblatts Unter dem Punkt Vbat

Backup Power-Supply Input. When using the device with the VBAT input as the primary power source, this pin should be decoupled using a 0.1μF to 1.0μF low-leakage capacitor. When using the device with the VBAT input as the backup power source, the capacitor is not required. If VBAT is not used, connect to ground. The device is UL recognized to ensure against reverse charging when used with a primary lithium battery.
Go to www.maximintegrated.com/qa/info/ul (http://www.maximintegrated.com/qa/info/ul).

Demnach kann ich die Uhr auch vollständig über Vbat betreiben und hätte gleichzeitig noch die Rückversicherung das der Lopo niemals geladen wird.

Die Batterie übernimmt die Stromversorgung der RTC und eventuellen Ram (je nach RTC) wenn die Versorgung der Schaltung komplett abgeschalten wird oder wegfällt. Wenn du nur die Versorgung des RTC wegschaltest versorgst du das BT trotzdem noch über SCL und SDA und die internen Dioden. Die Pullups müsstest du ebenfalls wegschalten.

MfG Hannes

Klebwax
21.01.2018, 18:42
Wie der Zufall es will, habe ich grad ein I2C Bus Problem wo tatsächlich ein Slave den gesamten Bus blockiert, weil er die SDA Leitung auf Low hält. Es handelt sich um den Luftdrucksensor BMP180 von Bosch. Das kommt ja wie gerufen und so habe ich nun folgendes getan. Die Clockleitung und Datenleitung auf Portmode geschaltet. Dann Softwaremässig recht langsame Clockimpulse erzeugt. Hab mal 5ms Low dann 5ms High genommen.
Kannst auch 5µs Low bzw High nehmen. 100 kHz muß jeder Baustein verstehen können, wenn er sich offiziell mit dem I2C Label schmückt.

Ich hab das fest an den Anfang meiner I2C_init Funktion gepackt. Wenn es ein I2C Bus Problem gibt, wird I2C_init aufgerufen. Gibts dann immer noch ein Problem, ist es die Hardware.

MfG Klebwax

Siro
21.01.2018, 19:00
Kannst auch 5µs Low bzw High nehmen. 100 kHz muß jeder Baustein verstehen können, wenn er sich offiziell mit dem I2C Label schmückt.

Ja, das kann ich jetzt bestätigen, habe es grade ausprobiert, funktioniert einwandfrei mit 5us.

Skorpio
21.01.2018, 20:31
Die Batterie übernimmt die Stromversorgung der RTC und eventuellen Ram (je nach RTC) wenn die Versorgung der Schaltung komplett abgeschalten wird oder wegfällt. Wenn du nur die Versorgung des RTC wegschaltest versorgst du das BT trotzdem noch über SCL und SDA und die internen Dioden. Die Pullups müsstest du ebenfalls wegschalten.

MfG Hannes

Auf seite 10 der DS3231 sthet genau beschrieben das die Versorgung per Vbat funktionieren sollte. Es muss nur vorher eine I²C Adresse vergeben werden dann arbeitet der Baustein im Stromsparmodus und aktuallisiert alle 64 Sekunden den internen Oszilator

021aet04
21.01.2018, 21:12
Bei I2C vergibst du keine Adressen (außer du programmierst selbst einen I2C Slave). Die Adresse des DS3231 ist immer 1101000 + R/W-Bit.
Das was du meinst ist ab wann der Oszillator zu schwingen anfängt. Entweder wenn VCC über Vpf (Powerfail Voltage) steigt (=2,45-2,7V Typ: 2,575V) oder du einmal auf den RTC zugreifst indem du die Adresse sendest. Danach startet der Oszillator. Danach misst der RTC alle 64s die Temparatur und korrigiert die Oszillatorfrequenz (Oszillator ist Temparaturabhängig). Das ist etwas anderes als wenn du die nur VCC wegschaltest.

MfG Hannes

Skorpio
23.01.2018, 14:51
Guten Tag,
Vielen dank für die info mit dem I²C wird bestimmt bei der Programmierung nochmal interessant werden.
Habe nun sowohl den Schaltplan als auch das Layout soweit angepasst das es theoretisch funktionieren müsste. Die RTC wird wenn alles läuft nur noch über Vbat betrieben und der Controller ist in der Lage die LEDs per MOSFET vollständig auszuschalten.
Die 3 testpunkte rechts vom uC dienen als anschlüss für einen weitern Sensor der bei der fertigen Uhr noch angelötet werden muss dieser liefert nen rein Digitales Signal weshalb dort keine beschaltung nötig ist.
3323933240

Skorpio

Skorpio
08.02.2018, 07:33
Guten Morgen,
lang ist es her aber die Platine ist nun endlich bei mir eingetroffen. Es müssen noch kleine änderungen gemacht werden welche leider bei der Erstellung der Platine Versäumt wurden aber an sich sollte alles wie geplant von statten gehen. Die runde Platine ist die Gleiche nur fürs einpassen schnell zurecht geschnitten.

3327033271

Skorpio
23.03.2018, 13:46
Das (fast) fertige Projekt: https://www.roboternetz.de/community/threads/71810-Nerdwatch