Hallo, ich habe einen Schaltkreis gebastelt.
Leider leuchten die LEDs nur beim Entladen für wenige MilliSekunden
(Netzteil aus Steckdose 5V). Ich habe alles gecheckt, Schaltplan seht
ihr ja da.
Hier ist der Code:
Zur Info:
Kondensator: 100nF
Widerstände: zuerst mit 10k probiert, weil NICHTS funktioniert hat,
einfach 500 Ohm parallel geshaltet, geht immer noch nix.
Hmm, so wie du das gezeichnet ist, sollte deine erste LED nach einer
Minute angehen. Du hast sie von von Vcc zum Pin geschaltet, also geht
sie an, wenn der Pin auf null und nicht auf eins ist. Aber eigl sollte
LED2 leuchten, da du den Pin ja auf null lässt.
Und dein Vorwiderstand ist überbrückt...
MfG Chaos
j. t. schrieb:> Du hast sie von von Vcc zum Pin geschaltet, also geht> sie an, wenn der Pin auf null und nicht auf eins ist. Aber eigl sollte> LED2 leuchten, da du den Pin ja auf null lässt.
Wie muss ich das verändern? bzw. was muss ich verändern?
> Und dein Vorwiderstand ist überbrückt...
Wie? Was bedeutet das genau?
> 10k Vorwiderstand?
Erschien mir auch ein bisschen viel, wie viel ist gut?
die eine LED sollte leuchten. die andere nicht.
Wenn sich nichts tut, dann kontrollier mal mit dem voltmeter die
Spannung an den Pins PD5 bzw. PD6. Einer muss auf 5V sein, der andere
auf 0V.
Wenn die Spamnungen nicht stimmen, dann läuft auch der µC nicht.
Oldie schrieb:>> 10k Vorwiderstand?> Erschien mir auch ein bisschen viel, wie viel ist gut?
bischen rechnen?
eine rote LED können wir mit 1.7V annehmen.
D.h. über dem Widerstand müssen 5V-1.7V abfallen. Über dem Widerstand
bleiben daher 3.3V stehen.
Jetzt wollen wir 10mA durch die LED schicken (ist ein üblicher Wert für
08/15 LED). DIe 10mA müssen auch durch den Widerstand. D.h. für den
Widerstand gilt
U gleich 3.3V
I gleich 0.01A
und der Herr Ohm sagt uns R = U / I
also 3.3 / 0.01 = 330 Ohm
Dein Code funktioniert, naja.
Das hier ist falsch: PORTD &= LED1; PORTD &=~ LED1;
DDRD |= LED1 | LED2; DDRD |= (1<<DDD5)|(1<<DDD6);
Led2 geht an, bleibt an.
Led1 geht aus, bleibt aus.
Wenn du die Leds gegen + geschaltet hast ist es umgekehrt.
"Code geht aber"
Könntest Du erklären, was der Code macht?
"PORTD |= LED2;" sollte das die LED2 einschalten? Dann sollte der
Widerstand aber pull down nicht up sein.
Oder sollte "PORTD &= LED1;" die LED1 einschalten? Macht es aber nicht,
es schaltet alle andere LEDs an PORTD ein (bei pull up).
(Oder meintest Du "PORTD &= ~LED1;"?)
Mit einem Multi-Meter könntest Du übrigens prüfen, ob die PINS die
erwartete Spannung haben.
Wenn ich mal beschreiben sollte, was das Programm macht:
Start: LED1 aus, LED2 an
1. Minute: LED2 ausschalten => LED1 aus, LED2 aus
2. Minute: alle außer LED1 einschalten => LED1 aus, LED2 an
3. Minute: LED2 ausschalten => LED1 aus, LED2 aus
4. Minute: alle außer LED1 einschalten => LED1 aus, LED2 an
Das Programm schaltet also nur LED2. Ist es das, was es tun soll?
(P.S.: Du greifst auf "volatile unsigned int minute" sowohl im Interrupt
als auch im main zu. U.U. solltest Du Dich da nochmal einarbeiten. Zum
Glück ändern sich bei den Minuten nur das unter Byte, das kann also auch
"ausnahmsweise" so tun :-) . )
Vor allem sollte man die LED´s nicht an Vcc und die 10KOhm hängen...
dann kann man sich die Widerstände auch gleich sparen. Das bedeutet
genau folgendes:
Du gehst von + an Pin 7, laut deinem Schaltplan. Dann gehst du von +
nochmal nach Pin 7, über deinen 10KOhm-Widerling. Und dann nochmal mit
10KOhm von + nach Pin 7.
Mit der Verbindung von + nach Pin7 "überbrückst" du die Widerstände, der
Strom geht doch immer den Weg des geringsten Widerstandes. Wenn du ihn
vor die Wahl Blanker Draht/10Kohm stellst, rennt der halt durch den
Draht.
Trenne die Verbindung von Pin7 zu den LEDs, trenne die Verbindung der
LED´s zwischen den Vorwiderständen (sonst hast du nämlich nur 5KOhm(was
immer noch n bischn viel ist, wie Karl-Heinz dir vorrechnete, aber 2
parallel geschaletet gleiche Widerstände ergeben nunmal einen halbso
großen))
Es sollt eher etwa so aussehen
+----[==330==]----LED>--Pin13
+----[==330==]----LED>--Pin14
+-------Pin7
P.S.
Vergiss alles, was ich gesagt hab, ich seh grad die Kreuze, von denen
ich mich fragte, was die da sollen, aber das sind dann wohl die
getrennten Verbindungen ~an die Stirn klatsch
Ich bin verwirrt... Zum Code: Ich möchte, dass die LED1 konstant
ununterbrochen leutet. LED2 soll sich nach 1 Minute einschalten, nach 2
Minuten abschalten, nach 3 Minuten einschalten und dann nach 4 Minuten
wieder abschalten... Was soll ich dafür nun dort verändern?
Und zur Schaltung: Also einfach die Widerstände in 330Ohms tauschen oder
noch irgendwas?
Oldie schrieb:> Ich bin verwirrt... Zum Code: Ich möchte, dass die LED1 konstant> ununterbrochen leutet. LED2 soll sich nach 1 Minute einschalten, nach 2> Minuten abschalten, nach 3 Minuten einschalten und dann nach 4 Minuten> wieder abschalten... Was soll ich dafür nun dort verändern?
du sollst genau diese Operationen auch hinschreiben.
Aber:
Du sollst sie KORREKT hinschreiben!
Wenn dir das Kopfzerbrechen macht, dann solltest du vielleicht doch erst
mal die allerersten Übungen machen, wie man an einem Ausgang etwas ein
bzw. ausschaltet und wie das davon abhängt, wie genau dieses Etwas
angeschlossen ist.
Eine LED leuchtet wenn die Anode auf positivem Potential ist und die
Kathode am negativen. Darum hat die auch im Schaltbild so eine
(angenäherte) Dreiecksform. In dieser Richtung muss der Strom von + nach
- durchlaufen, damit die LED leuchtet.
Deine LED sind so angeschlossen, dass die Anode (wenn auch über den
Widerstand) an +5V liegt. Also muss das andere Ende an welchem Potential
liegen, damit die LED leuchtet?
Genau!
Und jetzt: in der Praxis ausprobieren! Ohne Timer. Einfach nur die Pins
auf die richtigen Pegel bringen und nachsehen ob das auch wirklich so
ist.
> Und zur Schaltung: Also einfach die Widerstände in 330Ohms tauschen oder> noch irgendwas?
330 sind ok. Hab ich dir doch vorgerechnet.
Aber was anderes. Hast du eigentlich die LED richtig rum eingelötet?
Kontrolliert wirst du das wohl nicht haben. Denn mit 10k Vorwiderstand
leuchtet keine LED.
Ich rate mal, 28 Pin, könnte der ATmega328P sein.
Der hat aber zusammen 4 GND,[A]VCC Anschlüsse und die muß man zuerst mal
alle anschließen, ehe was gehen soll!
Hubert G. schrieb:> ICh glaube zwar nicht das es ziel führend ist den Code vorzukauen, aber> naja.
Lass uns erst mal rausfinden, was der alte Schlamperdatsch an seiner
Hardware alles verbockt hat.
Dann ein paar LED einfach so leuchten lassen.
Und erst dann die Timer-Sache
Du kannst bei ihm nämlich von nichts als gesichert ausgehen.
Ich denke er hat mittlerweile selbst auch schon eingesehen, dass sein
ursprünglicher Ansatz "Ich bau mir da mal ganz schnelle eine
Zeitschaltuhr" dann doch nicht so einfach ist, wie ursprünglich gedacht.
Selbst wenn die Aufgabenstellung sich trivial anhört, und man in jedem
Baumarkt eine Zeitschaltuhr für 5€ kaufen kann. ok nicht gerade diese,
aber immerhin. Nur weil man etwas im Handel billig kaufen kann, bedeutet
das noch lange nicht, dass man zur Herstellung davon nichts wissen und
können muss und das jeder so etwas an 2 Stunden am Samstag Nachmittag
selbst herstellen kann.
Peter Dannegger schrieb:> Ich rate mal, 28 Pin, könnte der ATmega328P sein.>> Der hat aber zusammen 4 GND,[A]VCC Anschlüsse und die muß man zuerst mal> alle anschließen, ehe was gehen soll!
Atmega8, also muss ich alle so anschließen oder wie?
Oldie schrieb:>> Der hat aber zusammen 4 GND,[A]VCC Anschlüsse und die muß man zuerst mal>> alle anschließen, ehe was gehen soll!>> Atmega8, also muss ich alle so anschließen oder wie?
Oder anstatt der rechten Seite nur noch RESET?
Hubert G. schrieb:> RESET mit 10k an Plus.> Der Controller geht auch mit 4,5V,> 100n von VCC nach GND, nahe am Controller.
Danke, wie siehts aus mit den anderen AVCC und GND? Müssen die auch
angeschlossen sein?
Hi
>Danke, wie siehts aus mit den anderen AVCC und GND? Müssen die auch>angeschlossen sein?
Ja. Stromversorgungsanschlüsse sind nicht zur Verzierung da.
MfG Spess
> Was hat es mit dem Herrn "AREF" auf sich? muss man den beschalten?
Mal das Datenblatt zu Hlfe nehmen und vielleicht sogar daraus etwas
lernen ist für dich kein gangbarer Weg?
Walter schrieb:> Glückauf schrieb:>> Oldie schrieb:>>> Was hat es mit dem Herrn "AREF" auf sich? muss man den beschalten?>>>> Ja.>> aber nur wenn man den AD-Wandler braucht
Ich sparte mir die Erklärung. Hat wohl wenig Aussicht auf Erfolg.
Wenn er es beschaltet wie in der Standardbeschaltung, macht er erstmal
nichts verkehrt.
Nur mal eine Frage nebenbei, wenn du eine Streifenrasterplatine benutzen
solltest.
Die Leiterbahnen unter dem Atmega8 hast du schon getrennt ?
Das heißt du hast keine Verbindung von Pin1 auf Pin28, Pin2 auf Pin27
usw. ?
Streifenraster schrieb:> Die Leiterbahnen unter dem Atmega8 hast du schon getrennt
Natürlich, ich will mich ja nicht selber umbringen.
geht das dann so?
Widerstände sind jetzt 501 Ohm
Also ich habe die LEDS nun so gepolt, dass sie an den PINS (PD5,PD6)
positiv anliegen. Problem ist allerdings, dass die LEDS trotz des Codes
BEIDE ununterbrochen leuchten, nach 1 Minute auch BEIDE ausgehen und so
weiter... Woran kann das liegen?
Dann werden die beiden Ausgänge wohl kurzgeschlossen sein. Z.B.
Lötbrücke, nicht unterbrochene Bahnen (ich hasse Lochstreifenplatten).
Zeichne doch einen klaren Schaltplan auf (das hilft auch dir selber bei
der Fehlersuche) und ein Foto von Vorder- und Rückseite.
Ansonsten ist das doch nur Kaffeesatzlesen.