Neee, da wird nix verschoben. Zumindest nicht der GND. Die Pullups legen nur ständig einen definierten Wert auf den Eingang.
Ich tippe auf ein Problem mit der Energieversorgung. Ein unterversorgter Nano zeigte hier erst kürzlich einen ebenso seltsamen Hänger.
Gruß
Gregor
Schade, dass hier keine Informationen mehr kommen.
Ich hätte zu gerne gewusst, wo das Problem liegt.
Wenn der Fehler alle 1-2 Tage auftritt, ist es schwierig nach 1.nem Tag zu antworten.
Grüße Uwe
uwefed:
Wenn der Fehler alle 1-2 Tage auftritt, ist es schwierig nach 1.nem Tag zu antworten.
Grüße Uwe
Da hast du Recht.
Es geht hier aber um Fragen, die schon länger gestellt wurden.
Und du weist ja, ich bin sehr ungeduldig ![]()
Hey guys,
Sorry, dass ihr warten musstet. Aber ich bin beruflich derzeit sehr eingespannt/unterwegs. Aber nun ist ja Freitag ![]()
Also hier nun die Komponenten, die ich verbaut habe:
- LED-Streifen: Je Schaltkreis 5 Streifen á 14 weiße LEDs (24Vdc)
- Widerstände: jeweils 10kOhm
- Transistoren: TIP120 (Datenblatt TIP 120)
- Netzteil: 24V mit 1.0A und max. 24W (SYS 1308-2424-W2E - kam mit den LED-Streifen zusammen)
- Kabel: 2x0.14mm² Zwillingslitze (Genau genommen überwiegend diese hier: ZL214SWW)
- Step-Down: Sollte ein "Pololu 5V Step-Up/Step-Down Voltage Regulator S18V20F5" sein. Ganz sicher bin ich hier leider nicht, da mir die Typenbezeichnung auf der Platine nicht eindeutig erscheint und ich die Verpackung nicht mehr habe (Hier finde ich alle diese hier:reg14a 0J7765). Gegeben wurde er mir aber als "5V-Output für Arduino" und am Ausgang liegen laut Multimeter zumindest "4.98" V an. Falls es euch hilft: Hier noch 2 Bilder
Der Code ist im Wesentlichen noch derselbe (außer, dass 1 Schaltkreis auskommentiert wurde und "and" zu "&&" wurde - und PIN13 nach Empfehlung aktiviert wurde). Vollständigkeitshalber aber hier nochmal richtig:
//-----------------------------------------------------
//Schaltkreise 1 und 2 sind identisch und unterscheiden sich nur durch Zahl 1 bzw. 2
//-----------------------------------------------------
#define Transistor1 3 //Transistor für Schaltkreis 1 an PIN 3 angeschlossen (=PWM-Pin)
#define Transistor2 5
#define Schalter1 10 //Schalter für Schaltkreis 1 an Pin 10
#define Schalter2 8
boolean SwitchWasClosed1 = true; //registriere, ob Schalter schon länger offen ist
boolean SwitchWasClosed2 = true;
unsigned long startMillis1; //Startzeit für neue Periode
unsigned long startMillis2;
unsigned long startFadeDownMillis1; //Startzeit für Fadingeffekt (Nur bei Licht-Aus)
unsigned long startFadeDownMillis2;
byte brightness1 = 0; //Anfangshelligkeit
byte brightness2 = 0;
//Diese Parameter sind für beide Schaltkreise gleich und bleiben konstant
const unsigned long fadingPeriod = 15; //Verzögerungszeit für Fading - je groesser, desto langsamer
const unsigned long maxPeriod = 720000; //Maximale Leuchtdauer (in ms) -> 12 min
byte maxBrightness = 250; // maximale Helligkeit (255=max)
void setup() {
// put your setup code here, to run once:
pinMode(Transistor1, OUTPUT);
pinMode(Transistor2, OUTPUT);
pinMode(Schalter1, INPUT_PULLUP);
pinMode(Schalter2, INPUT_PULLUP);
startMillis1 = millis(); //initial Startzeit;
startMillis2 = millis();
startFadeDownMillis1 = millis(); //initiale Startzeit für downfading (damit es überhaupt losgeht)
startFadeDownMillis2 = millis();
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite (LED_BUILTIN, ((int)millis() & 0x200) != 0 ); // blinkt mit 1,024 Hz - zum Debugging: Läuft Arduino noch?
schalter1(); //Durchführung/Überwachung von Schalter 1
// schalter2(); //Durchführung/Überwachung von Schalter 2
}
//___________________________Schalter 1___________________________
void schalter1() {
if (digitalRead(Schalter1) == LOW) //Zusatz if-Bedingung wird benötigt um Timer neu zu setzen + Zustand zwischen fading an und fading aus zu unterscheiden (sonst Licht-An-Licht-Aus-Loop)
{
if (brightness1 > 5) //wenn Licht vorher an war, fading Licht aus (sonst tue nichts)
{
fadeDown1();
}
if (brightness1 <= 5) //Wenn Licht dunkel genug, schalte ganz aus und setze Variablen auf default zurück
{
SwitchWasClosed1 = true; // Schalter war zu --> "fading an" Schleife wird als nächstes durchlaufen
digitalWrite(Transistor1, LOW); //Setze Transistor auf definierten Wert "0" zurück
brightness1 = 0; //setze Anfangsbrightness wieder auf 0
}
}
else //Wenn Schalter geschlossen wird, mache Licht an
{
//if (brightness1 <= maxBrightness and SwitchWasClosed1 == true and millis() - startMillis1 >= fadingPeriod) //wenn erfüllt: noch keine mximale Helligkeit + Schalter gerade geöffnet worden + Zeit für nächsten Fading-Schritt
if (brightness1 <= maxBrightness && SwitchWasClosed1 == true && millis() - startMillis1 >= fadingPeriod) //wenn erfüllt: noch keine mximale Helligkeit + Schalter gerade geöffnet worden + Zeit für nächsten Fading-Schritt
{
analogWrite(Transistor1, brightness1); //setze Helligkeit
brightness1++; //erhöhe Helligkeit (bis Maximum erreicht ist)
startMillis1 = millis(); //setze aktuelle Zeit als neue Startzeit (um Fading zu erzielen)
}
if (millis() - startMillis1 >= maxPeriod) //wenn die maximale Wartezeit vorüber ist (Tür ist zu lange offen geblieben), wieder Licht aus (mit fading)
{
SwitchWasClosed1 = false; //Sage, dass Schalter offen stehen geblieben ist -> lasse Licht aus (sonst loop im fading)
fadeDown1();
if (brightness1 <= 5) //Wenn minimale Helligkeit erreicht, muss Transistor auf LOW gezogen werden, sonst glimmen die LED weiter
{
digitalWrite(Transistor1, LOW);
}
}
}
}
void fadeDown1() //Funktion zum Ausdimmen der LED an Schalter 1
{
if (millis() - startFadeDownMillis1 >= fadingPeriod and brightness1 > 5)
{
analogWrite(Transistor1, brightness1); //setze Helligkeit
brightness1--; //erhöhe Helligkeit bis Maximum erreicht
startFadeDownMillis1 = millis(); //setze aktuelle Zeit als neue Startzeit fuer Downfading
}
}
/*
//___________________________Schalter 2___________________________
void schalter2() {
if (digitalRead(Schalter2) == LOW) //Zusatz if-Bedingung wird benötigt um Timer neu zu setzen + Zustand zwischen fading an und fading aus zu unterscheiden (sonst Licht-An-Licht-Aus-Loop)
{
if (brightness2 > 5) //wenn Licht vorher an war, fading (sonst tue nichts)
{
fadeDown2();
}
if (brightness2 <= 5) //Wenn Licht dunkel, schalte ganz aus und setze Variablen auf default zurück
{
SwitchWasClosed2 = true; // Schalter war zu --> "fading an" Schleife wird als nächstes durchlaufen
digitalWrite(Transistor2, LOW); //Setze Transistor auf definierten Wert "0" zurück
brightness2 = 0; //setze Anfangsbrightness wieder auf 0
}
}
else //Wenn Schalter geöffnet wird, mache Licht an
{
if (brightness2 <= maxBrightness and SwitchWasClosed2 == true and millis() - startMillis2 >= fadingPeriod) //wenn erfüllt: noch keine mximale Helligkeit + Schalter grade geöffnet worden + Zeit für nächsten Fading-Schritt
{
analogWrite(Transistor2, brightness2); //setze Helligkeit
brightness2++; //erhöhe Helligkeit bis Maximum erreicht
startMillis2 = millis(); //setze aktuelle Zeit als neue Startzeit
}
if (millis() - startMillis2 >= maxPeriod) //wenn die maximale Wartezeit vorüber ist, wieder Licht aus (mit fading)
{
SwitchWasClosed2 = false; //Sage, dass Schalter offen stehen geblieben ist -> lasse Licht aus (sonst loop im fading)
fadeDown2();
if (brightness2 <= 5) //Wenn minimale Helligkeit erreicht, muss Transistor auf LOW gezogen werden, sonst glimmen die LED weiter
{
digitalWrite(Transistor2, LOW);
}
}
}
}
void fadeDown2() //Funktion zum Ausdimmen der LED
{
if (millis() - startFadeDownMillis2 >= fadingPeriod and brightness2 > 5)
{
analogWrite(Transistor2, brightness2); //setze Helligkeit
brightness2--; //erhöhe Helligkeit bis Maximum erreicht
startFadeDownMillis2 = millis(); //setze aktuelle Zeit als neue Startzeit fuer Downfadi
Beste Grüße - ich hoffe, das hilft euch wieder ein Stück weiter ![]()
Hast du denn mal den Strom gemessen, den deine Leds brauchen ?
Und nochmal der Tipp:
Setze einen Mosfet ein und du hast weniger Probleme.
Ich vermute, der Ausgang des Atmega328 wird überlastet. Auch wenn es erstmal nicht danach aussieht.
Edit:
Und damit du siehst, du bist nicht allein da. Ich habe seit heute Nachmittag, ca. gegen 14:00 Uhr einen Test mit einem Uno, deinem ersten Sketch, 2 Taster und 2 Leds laufen. Das ganze an 5 Volt.
Damit möchte ich prüfen, ob der Fehler am Sketch oder an deinem Aufbau (Hardware) liegt.
Zumindest kann ich feststellen, ob der Sketch fehlerfrei läuft oder sich aufhängt.
Ich werde berichten.
- Zwischenmeldung zu obigem Problem.
Bei mir läuft der Sketch am Uno seit dem einschalten fehlerfrei.
Und ich warte immer noch auf die Beantwortung meiner letzten Frage.
Hallo,
ohne Kenntnis der Leistungsaufnahme der LED Streifen fällt die Netzteilbeurteilung schwer.
Die Basisvorwiderstände deiner TIP120 sind 10k ?
Der 5V Pololu Regler ist aus meiner Sicht okay.
Moin!
Wie cool, dass Du den Sketch in Realität nachprüfst! Danke!!! ![]()
Ich hatte gestern vergeblich versucht den Strom zu messen und wollte es heute nochmal in Ruhe machen. Aber irgendwie zeigt das Multimeter immer nur 0mA an. Da die LEDs leuchten, kann das ja nicht so ganz richtig sein
Oh man...wie der erste Mensch
Ich bin da also dran - kriege bloß keine belastbare Zahl...warum auch immer ![]()
Ich hab von nem Freund hier 2 MOSFETs bekommen, die da noch rumflogen. Mal ganz naiv gefragt: Kann ich die einfach stumpf gegen die Transistoren von mir tauschen oder muss da noch anderes rein/ausgetauscht werden? Sind "P36nf06" (wohl die hier: P36NF06)
Hintergrund ist, dass ich (dummerweise) schon alles auf eine Lochplatine gelötet habe und im Schrank alle Kabel etc. verlegt habe :
(Ging ja eigentlich schon alles...vermeintlich...
)
Doc_Arduino:
Die Basiswiderstände deiner TIP120 sind 10k ?
Jupp, die Widerstände sind 10k - zumindest war das meine Absicht und sagt auch das Multimeter ![]()
Ich mach mich gleich noch mal ans Strommessen - kann ja eigentlich nicht so schwer sein
:![]()
Viele Grüße,
Christian
Der Mosfet P36NF06 sollte da auch funktionieren. Als Gatewiderstand aber nur 1 k einsetzen. und auf richtige Anschaltung achten. Source auf GND.
Hallo,
den Mosfet kannste dafür nicht nehmen. Ist nicht Logic-Level fähig.
Zudem liegt dein Problem nicht am Transistortyp.
Das Problem liegt wo ganz anders.
Zum Strom messen muss man den Pfad auftrennen und das Multimeter richtig eingestellt in Reihe klemmen. Am besten eine Seite ans 24 Netzteil und den anderen Pol zur nachfolgenden Schaltung. So misst du den Gesamtstrom. Gleichstrom!
ist zwar kein Logic-Level, aber er wird funktionieren.
Evtl. wird er ein wenig warm.
Andere sind da deutlich besser.
Den Typ hatte ich auch schon genannt.
Moin,
komisch ne: Kaum macht man's richtig, schon funktioniert's...
(Einfach blöder Anwenderfehler gewesen -egal).
Die LEDs in einem Schaltkreis (also 5 Streifen á 14LEDs) ziehen 270mA.
Viele Grüße,
Christian
karatebietz:
.....
Die LEDs in einem Schaltkreis (also 5 Streifen á 14LEDs) ziehen 270mA.
Dann nimm als Mosfet den IRLD024, der ist bestens geeignet.
Ich kann dir auch noch SMD-Typen nennen, wenn Bedarf.
Hallo,
ein TIP120 muß die LEDs problemlos schalten können, 10k als Basiswiderstand dürfte auch noch gehen, es ist ein Darlington. Ich hätte aber eher 2,2k o.ä. genommen das ist für den AVR auch nur den AVR auch nur ca. 1,5mA (Ube des TIP120 rund 1,5V).
Das alles sollte aber nicht zu Abstürzen führen und der Sketch scheint ja zu laufen.
Was ist das für ein 24V Netzteil? Sicher irgendein Schaltwandler?
Ich hatte mal das nette Problem, daß die ziemlich unsaubere Ausgangsspannung eine Netzteils eine dahinter hängende PWM völlig aus dem Konzept brachte, das kann auch mit dem StepDown passieren.
Ich würde mal eine Diode als Entkopplung in die Zuleitung des StepDown hängen und einen 100 Elko dahinter als Puffer.
Außerdem finde ich den StepDown, wenn es einer aus der Serie ist, auch etwas überdimensioniert. Wenn die Teile 6...9A am Ausgang können läuft der mit einem Arduino dran fast im leerlauf, das kann auch Dreckeffekte erzeugen die den Arduino zum Absturz bringen.
Ich habe da auch für meine ESp-Sachen gern die und ähnliche genommen, auch wenn man da den Einstellregler meist durch einen Festwiderstand ersetzen muß wenn es zuverlässig sein soll...
StepDown
Gruß aus Berlin
Michael
amithlon:
100 Elko
Du meinst 100 µF Elko.
HotSystems:
Dann nimm als Mosfet den IRLD024, der ist bestens geeignet.Ich kann dir auch noch SMD-Typen nennen, wenn Bedarf.
Was wäre Deiner Meinung nach hier das Problem? Dass die Transistoren zu viel Leistung schalten müssen?! ![]()
Das heißt den ganzen Blödsinn aus'm Schrank holen, auseinanderlöten und neu machen? :
Na ja, hilft ja dann nix ![]()
Du würdest also einfach 2 von den Perlen hier bestellen und einsetzen: Reichelt?!
Die 10k Widerstände müsste ich dann vermutlich auch raus schmeißen?!
amithlon:
Was ist das für ein 24V Netzteil? Sicher irgendein Schaltwandler?
Ich hatte mal das nette Problem, daß die ziemlich unsaubere Ausgangsspannung eine Netzteils eine dahinter hängende PWM völlig aus dem Konzept brachte, das kann auch mit dem StepDown passieren.
Ich würde mal eine Diode als Entkopplung in die Zuleitung des StepDown hängen und einen 100 Elko dahinter als Puffer.
Außerdem finde ich den StepDown, wenn es einer aus der Serie ist, auch etwas überdimensioniert. Wenn die Teile 6...9A am Ausgang können läuft der mit einem Arduino dran fast im leerlauf, das kann auch Dreckeffekte erzeugen die den Arduino zum Absturz bringen.
Ich habe da auch für meine ESp-Sachen gern die und ähnliche genommen, auch wenn man da den Einstellregler meist durch einen Festwiderstand ersetzen muß wenn es zuverlässig sein soll...
StepDown
Netzteil ist das hier: Netzteil
Sache dazwischen packen...Hmmm, ist wie gesagt leider schon alles auf ner Lochplatine - da muss ich dann wohl etwas fummeln :-X Vielleicht ist es für mich einfacher, wenn ich da ein zuverlässigeres/besseres Netzteil nehme?! Hast Du da ne Empfehlung?
Viele Grüße,
Christian
Ja, die Mosfet solltest du nehmen.
Setze ich bei meiner PIR gesteuerten Duschen-Beleuchtung ein. Da werden 1,5 A gedimmt.
Und dein Netzteil ist soweit ok, da sollten normal keine größeren Probleme auftreten.
Notfalls mal wie amithlon beschrieben hat eine Diode und einen Elko dazwischen schalten.
Nach gut 2 Tagen läuft der Sketch immer noch fehlerfrei.
Da solltest du wirklich nach einem Hardware-Fehler suchen.

