PCB: Atmega 328P-Au und DS3231 SN

Gast #5389099
Lesenswert?

Hallo Zusammen,

Ich arbeite grade an einem Projekt für meine Masterthesis, in der 4 
Reifeneinheiten mit einer Zentraleinheit über einen 433 MHz Band 
kommunizieren.

Hierbei spielt die Echtzeit-Fähgikeiten unseres Systems eine bedeutende 
Rolle, welches bis jetzt durch einen nicht auf die Platine gelöteten RTC 
DS3231 Shield (Modul) (mit AT24C32 EEPROM und Batterie etc.) 
gewährleistet wurde. Diesen Shield sollte ich jetzt im Schaltplan 
integrieren, sodass nur die RTC berücksichtigt wird.

Ich habe den Schaltplan soweit fertiggestellt und den AT24C32 und die 
Batterie des Shields nicht berücksichtigt.

Nachdem ich alle Bauteile auf die Platine gelötet und den Code auf den 
uC hochgeladen habe, hat das System nicht funktioniert. Die alten 
Reifeneinheiten mit dem RTC-Shield funktionieren ohne Probleme. Daher 
gehe ich davon aus, dass ich entweder beim Löten oder im Schaltplan bei 
dem RTC etwas falsch gemacht habe.

Eine weitere Veränderungen war, dass ich den Atmega 328P-Pu mit der 
kleineren Version Atmega 328P-Au ausgetauscht habe. Ich danke, dass es 
aber nicht daran liegen könnte.

Den aktuellen Schaltplan habe ich unter dem Namen "Atmega 328P-AU und 
DS231SN PCB" angehängt.

Ich habe alle meine Bauteile auf Kurzschluss etc überprüft und nicht 
Auffälliges bemerkt.

Daher wäre es Super, wenn Ihr mein Schaltplan überprüft und mir einen 
Feedback geben könntet, ob alles SO in Ordnung ist.

Falls Ihr die Funktionsweise unseres Systems benötigt, hier eine kurze 
Erklärung für die Funktion der RTC.


Nach dem Einschalten der Stromversorgung geht das System zunächst in den 
Schlafmodus. Sobald ein Interrupt-Signal empfangen wird, wird geprüft, 
ob der Interrupt durch Alarm 1 oder durch Alarm 2 ausgelöst wurde. Alarm 
1 entspricht dem Weckvorgang am Morgen, der Alarm 2 aktiviert, wenn er 
ausgelöst wird. Alarm zwei entspricht einem einminütigen Aufwachen, 
wobei der Zähler jede Minute bis zu 30 Minuten hochgezählt wird und dann 
für ein paar Sekunden geprüft wird, ob ein Befehl von der Zentraleinheit 
empfangen wird, um die Messungen zu starten oder nicht. Wenn kein Befehl 
von der Zentraleinheit empfangen wird, wird der Zähler auf Null 
zurückgesetzt und der Prozess beginnt erneut. Wenn jedoch ein Befehl 
ankommt, wird der Alarm ausgeschaltet und das Rechtecksignal (SQW) wird 
aktiviert. Die Zentraleinheit sendet mit ihrem Befehl zum Starten der 
Messung eine Abbruchzeit, die nun ständig mit der aktuellen Uhrzeit 
verglichen wird. Solange die entsprechende Zeit nicht erreicht wird, 
wird das Rechtecksignal jede Sekunde ausgelöst. Wenn die Zeit erreicht 
ist, wird das Rechtecksignal abgeschaltet, Alarm 1 wird aktiviert, der 
Zähler wird zurückgesetzt und das System geht in den Tiefschlaf, bis es 
am nächsten Morgen durch Alarm wieder aufgeweckt wird.


Danke im Voraus.

Veloso
Angehängte Dateien:
Gast #5389108
Lesenswert?

VELOSO schrieb:
> Hierbei spielt die Echtzeit-Fähgikeiten unseres Systems eine bedeutende
> Rolle, welches bis jetzt durch einen nicht auf die Platine gelöteten RTC
> DS3231 Shield (Modul) (mit AT24C32 EEPROM und Batterie etc.)

Was hat eine RTC mit Echtzeit-Fähigkeit zu tun?

Eine Real-Time-Clock stellt dir eine Uhrzeit zur Verfügung, 
Echtzeit-Fähigkeit garantiert dir auf einem Prozessor das Einhalten 
einer maximalen Reaktionszeit auf äußere Signale.

Da solltest du dir die Begriffe noch mal genauer ansehen.

C1 und C2 in deiner Schaltung sind etwa um einen Faktor 5000 zu groß.
Gast #5389133
Lesenswert?

Im Anhang nochmal der ganze Schaltplan von mir.

Muss ich den Pull-Up-Widerstand zwischen SQW/INT vom DS3231 und PD3 vom 
Atmega einführen?

Muss ich beim Pin Vbat irgendetwas beachten? Den z.B. an den VCC der 
Schaltung anschließen?

Ich habe noch Online eine Beispielschaltung gefunden. Kann ich mich 
daran orientieren?

Danke
Gast #5389139
Lesenswert?

VELOSO schrieb:
> Muss ich den Pull-Up-Widerstand zwischen SQW/INT vom DS3231 und PD3 vom
> Atmega einführen?

Wieso "zwischen"? Der gehört von der Leitung nach VCC.
Ob ein externer Pull-Up Widerstand erforderlich ist, hängt davon ab, ob 
du den internen in der Software aktivierst oder nicht.

> Muss ich beim Pin Vbat irgendetwas beachten? Den z.B. an den VCC der
> Schaltung anschließen?
Wie die Pin-Bezeichnung schon anzudeuten versucht, gehört der an den 
"+"-Pol der Backup-Batterie.

Laut Datenblatt benötigt die RTC eine V_Batt zwischen 2,3 und 5,5V. Das 
ist doch eindeutig.
Gast #5389174
Lesenswert?

Ja die internen sind in der Software aktiviert.

Die Vorschläge habe ich ergänzt.

Mit dem XTAL habe ich mehrere Schaltpläne in diversen Foren verglichen 
und die Verschaltung sah immer wie bei mir aus. Die Schaltung an sich 
hat ja auch mit dem RTC Shield und dem Atmega 328P-Pu funktioniert. 
Daher denke ich, dass der XTAL richtig angeordnet ist.

Danke
#5389216
Lesenswert?

Wolfgang schrieb:
> C1 und C2 in deiner Schaltung sind etwa um einen Faktor 5000 zu groß.

Hatte ich auch einmal versehentlich. Da lief dann auch nichts.
Quarz getauscht, nix. Alles getauscht, wieder nix (natürlich, blöd wie 
ich war, wieder 100nF genommen). Irgendwann fällt auch dem Blindesten 
auf, was er falsch gemacht hat.
Das könnte der Fehler gewesen sein. Aber der TO hat sie schon getauscht 
(und hoffentlich ausprobiert) und daher muss sicher noch mehr faul sein.
#5389220
Lesenswert?

VELOSO schrieb:
> Die Vorschläge habe ich ergänzt.

Schaltbild sieht irgendwie komisch aus.
Ist das vielleicht einfach Arduino?
Wenn das einfach fertige Modul so wie Arduino ist, wozu alles auf dem 
Schaltplan? Einfach Box mit ein paar Pins und es reicht. So etwa wie auf 
meinem Bild. Diese Arduino-Bezeichnungen wie D1-D13 und A0-A5 irritieren 
nur bei Programmieren.

Hier als Beispiel Arduino Pro Mini, so wie ich das benutze.
Quarz braucht man nicht extra, das ist in Modul schon eingelötet.
DTR kann man zu GND einschließen, somit bekommt man gratis Kondensator 
für RESET.
Es gibt je 2 Pins für PD0 und PD1, auch für RESET, das kann man auch 
benutzen, wie es für die Platte bequemer ist.

Genauso mit Modul DS3231. alles, auch Batterie, gibt es schon drin. Wir 
brauchen nur zu zeichnen, was draußen bleibt.
Angehängte Dateien:
Gast #5389231
Lesenswert?

VELOSO schrieb:
> für meine Masterthesis

Joachim B. schrieb:
> willst du die Leute veräppeln?
>
> jetzt trennst du VCC mit einem Kondensator?

Oje! Mit dem Master das würde ich mir nochmal überlegen. Noch kannst du 
dich umentscheiden. Finanzdienstleistungen sind gerade groß im Kommen.


VELOSO schrieb:
> die Echtzeit-Fähgikeiten unseres Systems eine bedeutende
> Rolle, welches bis jetzt durch einen nicht auf die Platine gelöteten RTC
> DS3231 Shield (Modul) (mit AT24C32 EEPROM und Batterie etc.)
> gewährleistet wurde.

Sortiere erstmal die Begriffe. Das mit der Uhr hat nichts mit 
Echtzeitfähigkeit zu tun. Echtzeitfähigkeit heisst, dass das System 
innerhalb einer bestimmten Zeit garantiert reagiert hat.

Wie gesagt, noch kannst du dich für ein anderes Fach entscheiden. Die 
Masterthesis ist ja noch nicht fertig.
Gast #5390054
Lesenswert?

bingo schrieb:
> Die Pullup-Widerstände für I2C  sind mit 10k viel zu gross, für 5 Volt
> ist etwa 1.5k - 2k angemessen, bei 3.3 Volt 1.0k bis 1.2k. Lies Dir mal
> das Datenblatt http://www.ti.com/litv/pdf/slva689 durch, dann weisst Du
> warum.

Ich halte da mal mit Application Informationen des Erfinders des I2C-Bus 
gegen: Die geben gnadenlos 10kΩ an und haben deiner Meinung nach keine 
Ahnung davon?
z.B. Fig.22 aus S.37 https://www.nxp.com/docs/en/data-sheet/PCAL6524.pdf

Es gibt ganz klare Bedingungen, wann beim I2C der Pegel stehen muss. Da 
kann man sich viel Grübelei über die Buseigenschaften, Rechnerei und 
Philosophiererei über Anschlussszenarien sparen, wenn man sich einfach 
mit dem Oszi die Bussignale anguckt.
#5390108
Lesenswert?

Wolfgang schrieb:
> Die geben gnadenlos 10kΩ an und haben deiner Meinung nach keine
> Ahnung davon?

ja die sagen auch nur IHRE Meining ohne alle I2C Chips sowie den Aufbau 
beim konkreten User zu kennen.

Steckbrett und Kabel und Module sind was anderes als der I2C Bus je sein 
wollte nämlich I²C, für englisch Inter-Integrated Circuit

nun ist ein Modul kein IC und an Breadboard und an längere 
Kabel(kapzitäten) hatten die Erfinder nie gedacht, aber vielleicht doch 
sonst könnten die IC nicht pullup down treiben bis 5mA was bei 10k nicht 
nötig wäre.
Gast #5390125
Lesenswert?

Joachim B. schrieb:
> nun ist ein Modul kein IC und an Breadboard und an längere
> Kabel(kapzitäten) hatten die Erfinder nie gedacht

Die Erfinder des I2C haben sogar an einen 100m langen I2C-Bus gedacht.
https://www.nxp.com/docs/en/application-note/AN11084.pdf

Bei einem einfachen, bis zu 15m langen Bus schlägt NXP als Pull-Up 300Ω 
auf jeder Seite vor (Fig. 2). Die Wahrheit für den TO wird wohl zwischen 
dem oben genannten Wert von 10kΩ bei 1.8V Bus und diesen 2x300Ω liegen. 
Oszi hilft - wie gesagt.
(Firma: ss) #5391803
Lesenswert?

Ich merke selber, dass ich aktuell fehl am Platz bin. Ich beschäftige 
mich auch grad mal seit einer Woche mit dem Thema.

Also falls Ihr helfen wollt gerne!! Ich bedanke mich auch sehr für die 
Vorschläge.  Doch die negativen Kommentare bauen mich weder auf, noch 
bringen Sie mich weiter.

Die Verschaltung für den Microcontroller bezieht sich auf den folgenden 
Link.
Hier habe ich einen Arduino Nano nachgabaut.
http://www.electronoobs.com/eng_arduino_tut6_sch2.php

Das habe ich gemacht, um den Bootloader und den Code auf den uC 
draufzuladen. Das hat auch soweit geklappt. Also an dem uC scheint 
nichts falsch zu sein.

Ich habe nochmal die Datenblätter gelesen und versucht die Schaltung 
soweit zu vervollständigen.

Da das System vor mir einen RTC Shield mit einer eigenen Batterie hatte 
und somit die Uhrzeit auch beim Ausschalten des Systems weiter lief, 
habe ich in meinem Fall die RTC direkt an die Batterie angeschlossen. 
Damit dies weiterhin gewährleistet wird.

Es wäre zwar besser, dass ich für die RTC eine eigene Batterie verwende, 
leider kann ich es aus Platzmangel nicht tun.

SQW/INT habe ich mit einem 4,7 kOhm Widerstand verschaltet.
#5392288
Lesenswert?

VELOSO schrieb:
> Ja die internen sind in der Software aktiviert.
>
> Die Vorschläge habe ich ergänzt.
>
> Mit dem XTAL habe ich mehrere Schaltpläne in diversen Foren verglichen
> und die Verschaltung sah immer wie bei mir aus. Die Schaltung an sich
> hat ja auch mit dem RTC Shield und dem Atmega 328P-Pu funktioniert.
> Daher denke ich, dass der XTAL richtig angeordnet ist.
>
> Danke

Eine Verschaltung sollte immer nach Datenblatt erfolgen, nicht nach 
irgendwelchen Blogs im Internet. Die können richtig sein, oder eben auch 
nicht (so wie Dein Schaltplan hier).

Du vermischt auch SPI und I2C im linken Bereich. Nicht gut.

Und lerne erst einmal, einen richtigen Schaltplan zu zeichnen. Bauteile 
bekommen immer Namen und Werte (z.B. X5 mit 100nF oder X11 = ISP).
Dabei werden keine Kommata gesetzt, sondern etwa so 4,7kOhm = 4R7 und 
3,3V = 3V3.

Und Texte werden nicht gespiegelt, sie sollten lesbar bleiben 
(GND-Symbole).
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.