I2C funktioniert nicht mit ext. Strom

Ich habe hier einen Arduino mit einigen Komponenten.
Aktuell sind nur ein Display und eine RTC verbunden um Fehlerquellen zu minimieren.
Funktioniert alles ganz toll, solange ich es am USB-Kabel habe.
Wenn ich es aber extern versorge hängt sich der Arduino in unregelmässigen Abständen auf.

Es gehen 12 Volt in den DC-Eingang des Arduino.
Ein zusätzlicher Spannungswandler erzeugt 5V (5,13 Volt) und damit werden die Komponenten betrieben.
Masse der Komponenten ist mit GND des Arduino verbunden.
Auch wenn ich die Komponenten mit dem 5V des Arduino versorge ist es gerade abgestürzt, ist aber länger gelaufen (Zufall?).

Skript spare ich mir, ist gerade ein Testskript von Nr.05 – Arduino-RTC – Funduino – Kits und Anleitungen für Arduino

Sind die 5,13 Volt zuviel?

Sollte ich ein DIsplay überhaupt dauerhaft am 5V-Ausgang des Arduino betreiben?

sebu79:
Funktioniert alles ganz toll, solange ich es am USB-Kabel habe.
Wenn ich es aber extern versorge hängt sich der Arduino in unregelmässigen Abständen auf.

Es gehen 12 Volt in den DC-Eingang des Arduino.

Schreib mal ab, was auf dem Netzteil steht.

sebu79:
Es gehen 12 Volt in den DC-Eingang des Arduino.

Skript spare ich mir, ist gerade ein Testskript von Nr.05 - Arduino-RTC - Funduino - Kits und Anleitungen für Arduino

Schön, wenn du dir was sparen willst.
Dann können wir uns die Antworten sparen.

Welchen DC-Eingang meinst du ?
Meist hat der Arduino mehr davon.

Benutze eigentlich ein altes pc-Netzteil.
Später soll da ne autobatterie dran.

Jetzt habe ich ein Festplettennetzteil mit 12 V und 1,5 Ampere
Ich meine den runden Buchsenstecker...

Hier "mein" Skript (habe es extra von funduino kopiert, weil ich dachte ich hätte vielleicht irgendwo n Fehler drin. Das einzige was ich nicht nachvollziehen kann ist, warum hier

LiquidCrystal_I2C lcd(0x23, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE)

diese Zahlen übergeben werden müssen) :

#include <Time.h>
#include <Wire.h>
#include <DS1307RTC.h>
#include <LiquidCrystal_I2C.h> //Bibliotheken laden
LiquidCrystal_I2C lcd(0x23, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 

void setup() {
lcd.begin(16, 2); 
lcd.backlight(); 
Serial.begin(9600); //Seriellen Verbindung mit Baudrate 9600 starten
setSyncProvider(RTC.get); //Daten von der RTC abrufen
}

void loop() {
zeit_anzeigen();
delay(1000);
}

void zeit_anzeigen(){
Serial.print(hour()); //Serial.print ist der Befehl etwas im seriellen Monitor anzuzeigen (Stunde, Minute, //Sekunde,Leerzeichen, Tag, Leerzeichen, usw.)
printDigits(minute()); //bei den Minuten und Sekunden wird der Befehl
printDigits(second()); //printDigits verwendet, welcher am Ende des Codes noch festgelegt wird
Serial.print(" ");
Serial.print(day());
Serial.print(" ");
Serial.print(month());
Serial.print(" ");
Serial.print(year());
Serial.println();
lcd.setCursor(1, 0); 
lcd.print(hour()); //Die Uhrzeit soll angezeigt werden im Format:
lcd.print(":"); //Stunden:minuten:sekunden
if (minute()<10)  lcd.print("0");
lcd.print (minute());
lcd.print(":");
if (second()<10)  lcd.print("0");
lcd.print(second());
lcd.print(" ");
lcd.print("Uhr"); //Dahinter soll das Wort „Uhr" angezeigt werden
lcd.print(" ");
lcd.print(" ");
lcd.print(" ");
lcd.setCursor(1, 1); //In der zweiten Zeile soll das Datum angezeigt //werden
if (day()<10)  lcd.print("0");
lcd.print(day());
lcd.print(".");
if (month()<10)  lcd.print("0");
lcd.print(month());
lcd.print(".");
lcd.print(year());
}

void printDigits(int digits){ //Der printDigits Befehl für den seriellen Monitor
Serial.print(":");
if(digits < 10)
Serial.print("0");
Serial.print(digits);
}

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Außerdem entferne bitte die unnötigen Leerzeilen.

Gruß Tommy

Ob man das Display an die Arduino-Platine mit dranhängen kann hängt davon ab ob wie viel Strom das Display zieht.
12V aus einem alten PC-Netzteil. Schon mal probiert noch einen Elektrolytkondensator von mindestens 100µF parallel zu den 12V und einen zweiten parallel zu den 5V anzuschließen?

Woran merkst du dass der Arduino abstürzt?
Werden in deinem Programm Strings verwendet? (Auch eine mögliche Ursache für "komische" Abstürze
Könntest du mit millis() und einer LED ein HeartBeat-Blinken mit einbauen, das anzeigt ob das Programm noch die loop() durchläuft?

Hast du einen zweiten USB-Seriell-Schnittstellenwandler den man an die Rx-TX-Pins anschließen könnte
wenn du es mit externer Spannungsversorgung betreibst? Dann hat man seriellen Output ohne Spannungsversorgung durch den USB-Anschluss.
viele Grüße Stefan

Vielen Dank für die schnellen Antworten.

Schon mal probiert noch einen Elektrolytkondensator von mindestens 100µF parallel zu den 12V und einen zweiten parallel zu den 5V anzuschließen?

Nein. Keine Ahnung davon...

Woran merkst du dass der Arduino abstürzt?

Das Display (zeigt die Uhrzeit an) läuft nicht weiter, manchmal bleibt es hell, manchmal dunkel.
Außerdem blinkt die kleine LED, die jede Looprunde kurz blinkt nicht mehr. (Ist ein Chinaklon, der Originale hat das glaub ich nicht)

Hast du einen zweiten USB-Seriell-Schnittstellenwandler den man an die Rx-TX-Pins anschließen könnte
wenn du es mit externer Spannungsversorgung betreibst? Dann hat man seriellen Output ohne Spannungsversorgung durch den USB-Anschluss.
Damit kenne ich mich auch nicht aus, bin mehr im SOftware als im Hardwarebereich geübt.

sebu79:
Es gehen 12 Volt in den DC-Eingang des Arduino.

Auch wenn ich die Komponenten mit dem 5V des Arduino versorge ist es gerade abgestürzt, ist aber länger gelaufen (Zufall?).

Sind die 5,13 Volt zuviel?

Sollte ich ein DIsplay überhaupt dauerhaft am 5V-Ausgang des Arduino betreiben?

Ich vermute, der Onboard-Regler wird überlastet und bringt den Arduino (welcher ?) zum Absturz.
Die 5,13 V sind nicht zu viel.
Das Display kannst du gern dauernd am Arduino betreiben, wenn du die max. Verlustleistung des Onboard-Reglers beachtest.

Ich vermute, der Onboard-Regler wird überlastet und bringt den Arduino (welcher ?) zum Absturz.

Arduino UNO, als Chinaklon.

Aber wenn ich über USB versorge klappt es doch auch.
Oder hat er da irgendwie mehr Kraft als wenn er sich über die runde DC-Buchse die 5V selbst "bastelt"?

sebu79:
Arduino UNO, als Chinaklon.

Aber wenn ich über USB versorge klappt es doch auch.
Oder hat er da irgendwie mehr Kraft als wenn er sich über die runde DC-Buchse die 5V selbst "bastelt"?

Wenn du ihn über USB versorgst, machst du es üblicherweise mit 5Volt und nicht mit 12V.
Da ist kein zusätzlicher Regler dazwischen.

Was du mit 5V basteln meinst, verstehe ich nicht

5V sind für die Hohl-Buchse zu wenig, das funktioniert nicht, bzw. sehr unstabil.

Nein die Hohlbuchse wird mit ~12 Volt versorgt.

OK, verstehe ich das richtig? Wenn ich über USB versorge reicht die Leistung, wenn ich 5 Volt vom Arduino nehme, der von 12 runterregelt, reicht es nicht?

Aber wenn ich meinen Wandler benutze (im Bild unten rechts, der bis 5A zugelassen ist) geht es auch nicht (auch bei verbundener Masse)?

sebu79:
Nein die Hohlbuchse wird mit ~12 Volt versorgt.

OK, verstehe ich das richtig? Wenn ich über USB versorge reicht die Leistung, wenn ich 5 Volt vom Arduino nehme, der von 12 runterregelt, reicht es nicht?

Aber wenn ich meinen Wandler benutze (im Bild unten rechts, der bis 5A zugelassen ist) geht es auch nicht (auch bei verbundener Masse)?

Mit 12V Wechselspannung kann das nicht funktionieren.

Und wie ich schon geschrieben habe, hat es was mit der max. Verlustleistung des Onboard-Reglers zu tun. Der muss die 7V Spannung die an ihm vernichtet wird und er Strom der dann fließt, verheizen, also in Wärme umsetzen.
Wenn er zu heiß wird, macht der dicht.

Auch der wandler kann keine Wechselspannung ab.

sebu79:
Nein die Hohlbuchse wird mit ~12 Volt versorgt.

Mit Was???
Das ist ein Gleichspannungseingang!

Ah sorry...

Ich meinte mit "~" ungefähr...

Natürlich ist es Gleichstrom.

Also noch mal von vorn:

Wenn ich über usb verbinde klappt alles.
Auch wenn jetzt nur noch 4,8 Volt da sind.

Wenn ich eine andere Stromquelle nehme und über die Hohlbüchse ungefähr 12 Volt Gleichstrom reingebe und die 5V des Arduino nutze, hängt der Arduino nach einer unbestimmten Zeit.
Wenn ich das Display und die Uhr mit einem extra Wandler (5V, 5A max) versorge und GND mit dem Arduino verbinde tritt der gleiche Fehler auf.

sebu79:
Ah sorry...

Ich meinte mit "~" ungefähr...

Natürlich ist es Gleichstrom.

Dann schreib ca. und verwende nicht das Wechselspannungssymbol.

Hi

Wie schon erwähnt, dem AMS1117 wird es auf dem Board einfach zu warm!
Die Differenz von 12V auf 5V wird in Abhängigkeit des Stromes in Wärme umgesetzt, und bei spätestens ~125 Grad Celsius schwenkt die Thermo Protection heftigst die weiße Fahne! Könnte man testen, wenn man auf Brandings steht ...

Gruß André

Ach, um endlich auf dein Bild ein zu gehen, da kann man nicht viel erkennen.
Ob du da einen Verdrahtungsfehler gemacht hast, ist nicht zu erkennen.

Außer, deine zahlreichen Module.
Wenn die alle an 5Volt angeschlossen sind, kann das Probleme machen.

Hier wäre ein Schaltbild sehr nützlich, dann können wir evtl. Fehler erkennen.

Hi

Deine Worte sind nicht logisch - warum wird der Arduino mit 12V (und in einem Post schreibst Du, daß Du sogar zusätzlich die 5V anschließt) versorgst, wenn doch 5V in ausreichender Menge zur Verfügung stehen?

- 12V an Vin und externe 5V am 5V-Pin führt zur Zerstörung des Arduino (oder des 5V-Netzteil ... bei 5A aber eher unwahrscheinlich, daß Es das Netzteil erwischt).

  • 12V an Vin -> 5V werden vom Arduino-eigenem Linear-Regler erzeugt - Diese 5V sind nahezu NICHT belastbar. Auch muß ALLES, was an Strom daraus gezogen wird, durch den 5V-Wandler, Der die 12V auf 5V reduzieren soll - Das macht 7V 'zum wegschmeißen' - Mal den Strom ergibt Das die Heizleistung in Watt - bei 100mA bist Du bei 0,7W Verlustleistung - Das erscheint mir schon sehr sportlich für den kleinen SMD-Käfer.

Auch sind die 5A keine 'Zulassung', sondern eher schönes Beiwerk des fC - wenn der Wandler bis 5A schafft, freue Sich, wenn's nur 3A sind, würde mich Das auch nicht sonderlich wundern.

MfG

Edit
Korrektur:
Vin und 5V klappt - was nicht klappt sind 5V und USB - Da sind beide 5V-Quellen miteinander verbunden und schießen sich gegenseitig ab!

Bitte entschuldigt, dass ich manchmal die falschen Begriffe verwende. Bin auf dem Gebiet der Elektrotechnik noch neu.

Natürlich bekommt der Arduino nur entweder 5 oder 12 Volt.

OK, jetzt habe ich den Hohlstecker frei gelassen. D.h. die 12 Volt sind raus aus dem Spiel.

LCD und RTC und 5V-Pin werden von einem externen Wandler versorgt, Masse natürlich auch angeschlossen.

Der Arduino hängt trotzdem alle paar Minuten.

Wenn ich den Arduino über usb versorge und alles andere stecken lasse läufts stundenlang.

Und wie betreibst du den Arduino jetzt ?

Womit speist du den externen Wandler ?

Wie äußert sich das Aufhängen ?