Hallo,
ich habe mir eine Schaltung aufgebaut, die einen mir nicht ganz
nachvollziehbaren Fehler aufweist.
Schaltung:
Über drei Ausgänge eines ICs wird jeweils ein Transistor geschaltet.
Über diese werden jeweils 5V geschaltet. Am Kollektor hängen LEDs mit
Vorwiderständen in Parallelschaltung.
Über den einen Ausgang werden so rote, über den zweiten blaue und über
den dritten grüne LEDs geschaltet.
Resultat:
Schalte ich den Ausgang 3 an, leuchten die grünen LEDs.
Schalte ich den Ausgang 2 an, leuchten die blauen LEDs.
Schalte ich den Ausgang 1 an, leuchten die roten UND die grünen LEDs.
Wäre eine Leitung Kurzgeschlossen, würde ja auch bei Ausgang 3 beide
Farben leuchten.
Also wo kann dieser Fehler herkommen?
Mfg, Mark
Basiswiderstände gibt es natürlich.
Der IC ist ein Atmega 644PU20.
Alle LEDs laufen über die gleiche Versorgungsspannung.
Wären Rot und Grün versehentlich in Reihe geschaltet, würden sich die
roten ja kurzschließen, oder nicht?
Ich hab hier leider keine Möglichkeit, Programme zu installieren.
Gibt es einen Online Schaltplanzeichner?
Mfg
Es gibt die schönen ASCII Zeichnungen, die du hier häufig siehst;-)
(Es gibt von sehr vielen Programmen die -Portable Version, LibreOffice,
GIMP, selbst KiCAD gibt es wohl=)
http://sourceforge.net/projects/kicad-portable/files/)
Ich versuche kurz zu zeichnen was ich meine...
1
A -------|>(rot)---+--|>(grün)----- GND
2
|
3
B
Wenn du A anschaltest leuchten rot und grün, wenn du B anschaltest
leuchtet nur grün, hast du ggf. diese Schaltung vor dir, also ganz
einfach einen Fehler in deiner Schaltung?
mfg Andreas
Ich hab mal eine grobe Skizze mit Paint angefertigt.
Sie ist leicht vereinfacht, es hängen mehrere LEDs mit jeweils einem
Vorwiderstand am Transistor.
Werte hab ich gerade keine im Kopf, kann ich aber nachreichen, wenn
welche erforderlich sein sollten.
Ich muss wohl alle Anschlüsse nochmal überprüfen.
Übrigens: Bei "Rot" liegen annährend 5V an der roten LED plus
Vorwiderstand an. An der grünen LED mit Vorwiderstand liegen lediglich
2,x V an.
An dem Programm sollte es also auch nicht liegen.
Es ist auf das aller wesentlichste beschränkt, also Pins als Ausgang
definieren und Pins auf logisch 1 setzen, sonst nichts.
Mfg
Mark schrieb:> An dem Programm sollte es also auch nicht liegen.
Kannst du leicht prüfen:
Nimm den µC aus dem Sockel und leg auf die Pins, die zu den Transistoren
führen mittels Drahtbrücke 5V. Dann müssen die jeweilige LED leuchten.
Mark schrieb:> An dem Programm sollte es also auch nicht liegen.> Es ist auf das aller wesentlichste beschränkt, also Pins als Ausgang> definieren und Pins auf logisch 1 setzen, sonst nichts.
Die meisten Fehler macht man bei Dingen, die einem leicht vorkommen :)
Vielleicht setzt du die Pins der LEDs, die nicht leuchten sollen, nicht
im PORT-, sondern im DDR-Register auf 0. Dann ist der Ausgang deakti-
viert, und der interne Pullup ist aktiviert, was die über Transistoren
angesteuerte LEDs ebenfalls zum Leuchten bringt. Das war aber nur ein
Beispiel, was man in der Eile alles falsch machen kann.
Ansonsten: Miss mal im Problemfall (Rot und Grün leuchtet, obwohl nur
Rot leuchten soll) die Spannung an allen roten Punkten gegen GND. Da
wird dir (oder jemand anderem hier) sicher so etwas wie Schuppen von
den Augen fallen.
Ich werde die Schaltung heute Abend noch einmal durchtesten und den Code
mit anfügen.
Vielen Dank für die vielen Ratschläge und Lösungsansätze!
Ich denke auch, dass es einfach ein kleiner Fehler in der Verkabelung
sein könnte, da diese bei vielen LEDs doch recht unübersichtlich ist.
Was mir gerade einfällt:
Könnt es auch sein, dass der Transistor bei den grünen LEDs kaputt ist
und daher eine dauerhafte Spannung von 2,x V an den LEDs anliegen lässt?
Ich weiß, dass dies dann auch der Fall wäre, wenn nur die blauen LEDs
leuchten, aber vielleicht ist das ja so und ich hab es aufgrund der
Intensität des blauen Lichts nicht gesehen (Rot, Grün und Blau liegen
sehr dicht zusammen).
Ich werde dies heute Abend ebenfalls mal überprüfen!
Mfg
Yalu X. schrieb:> Ansonsten: Miss mal im Problemfall (Rot und Grün leuchtet, obwohl nur> Rot leuchten soll) die Spannung an allen roten Punkten gegen GND. Da> wird dir (oder jemand anderem hier) sicher so etwas wie Schuppen von> den Augen fallen.
Ich würde noch drei rote Punkte hinzufügen, nämlich unmittelbar an den
Emittern der Transistoren, insbesondere während die LEDs leuchten.
Da sollte zwar Massepotential liegen, aber vielleicht ist dazwischen
doch eine Unterbrechung. :-)
Gruss
Harald
Mark schrieb:> Ich denke auch, dass es einfach ein kleiner Fehler in der Verkabelung>> sein könnte, da diese bei vielen LEDs doch recht unübersichtlich ist.
Jo, kann sein, z.B. wie im Bild.
Port 3 auf High: Grün an
Port 1 auf High: Strom aus Emitter T1 fließt in Basis T2: Rot und Grün
an
Warum so kompliziert? Löte die Basiswiderstände am Prozessor ab und lege
sie testweise an +5V. Danach ist es klar, ob es ein Soft- oder
Hardwarefehler ist.
Ein Pegelprüfstift sollte auch nicht fehlen.
So, ich meld mich mal wieder.
Ich hab festgestellt, dass es grundsätzlich noch ein Problem in der
Schaltung gibt.
Ich habe mal alle LEDs über den IC eingeschaltet.
Während an Rot und Blau (inklusive Widerstand) an nährend 5V anliegen,
liegt an Grün nur etwa 2,5V an. Der Rest liegt direkt am Transistor an.
Vom Ausgang des IC zur Masse liegen bei allen fast 5V, bei den "grünen"
Ausgängen aber nur ca. 0,72V.
Kann man anhand dessen schon sagen, ob der Transistor defekt ist, oder,
ob es am IC liegt?
Kann es vielleicht sein, dass der Basiswiderstand überbrückt wurde und
dadurch der Transistor zerstört wurde?
(Falls wichtige Daten fehlen, sagt bitte Bescheid. Ich habe habe erstmal
keine weiteren Werte aufgeschrieben, da sich die Situation ja sehr
verändert hat.)
Mfg
Bitte lesen:
>
Warum so kompliziert? Löte die Basiswiderstände am Prozessor ab und lege
sie testweise an +5V. Danach ist es klar, ob es ein Soft- oder
Hardwarefehler ist.
<
Und tun.
Dann logisch denken und die Schaltung korrigieren, die Loetbruecken
entfernen, die Transistoren richtig herum einbauen.
Problem erledigt.
Gruss
Michael
Hallo,
Rb = 1/4W, 5%, 220 Ohm
Transistor = BC 337-40
Rvrot = 150 Ohm
Rvblau = 100 Ohm
Rvgrün = 100 Ohm
Angeschlossen sind die Basiswiderstände an PA0, PB0 und PC0.
PA1-PA4, PB1-PB4 und Pc1-PC4 sollen nachher genauso angeschlossen
werden.
Daher Ist alles auf 0x1F geöffnet und geschaltet.
Falls das Datenblatt des IC weiterhilft:
http://www.atmel.com/dyn/resources/prod_documents/doc2593.pdf
Es soll ja keiner seine kostbare Zeit mit suchen verbringen, wenn ihr
mir schon so gut zur Seite steht. :)
Michael Roek schrieb:> Warum so kompliziert? Löte die Basiswiderstände am Prozessor ab und lege> sie testweise an +5V. Danach ist es klar, ob es ein Soft- oder> Hardwarefehler ist.
Da alles ein wenig verbaut ist (ich weiß, es ist kein gutes
Schaltungsdesign, welches ich gewählt habe) würde ich nach Möglichkeit
darauf verzichten, die Widerstände auszulöten.
Aber, da das Programm ja hier zu sehen ist, kann man einen
Softwarefehler auch so erkennen, oder nicht?
Vielleicht liege ich ja falsch, aber mir wäre in diesem Programm kein
Fehler bekannt, der dieses Resultat erzeugen würde.
Natürlich könnte ich ein Bauteil nach dem anderen testen, aber besser
wäre es, wenn man so vielleicht schon sehen könnte, woran es liegt.
Wenn keiner was dazu sagen kann, bleibt mir natürlich nichts anderes
übrig, aber ich hoffe noch, auf Erfahrungswerte. :)
Mfg
kann es sein das du die widerstände falsch ausgerechnet hast?
für die leds würde ich bei 5volt Netzspannung 100ohm als widerstand
nehmen,
als basis widerstand würde ich lass mich nicht lügen zwischen 1k und
1.5k nehmen das kommt aber auf deinen transistor an.
jan schrieb:> kann es sein das du die widerstände falsch ausgerechnet hast?> für die leds würde ich bei 5volt Netzspannung 100ohm als widerstand> nehmen,> als basis widerstand würde ich lass mich nicht lügen zwischen 1k und> 1.5k nehmen das kommt aber auf deinen transistor an.
Die Vorwiderstände waren bei den LEDs dabei.
Für Blau und Grün sind sie ja zumindest 100 Ohm groß.
Beim Basiswiderstand habe ich mich hier im Forum informiert, wo mir nach
letztendlich 220 Ohm nahgelegt wurden.
Bei Blau und Rot funktioniert es ja auch ohne Probleme.
Könnte es denn sein, dass der Basiswiderstand versehentlich
kurzgeschlossen wurde und es den Transistor zerschossen hat, der jetzt
nur noch als Widerstand fungiert?
Oder hätte das andere Auswirkungen?
Mfg
Da fällt mir gerade etwas ein, was häufig vergessen wird: Hast du den
JTAG gedisabelt? Der beeinflusst zwar nur PC2-PC5, stört aber spätestens
dann, wenn du dort weitere Dinge anschließt, was du ja vor hast.
Mark schrieb:> Vom Ausgang des IC zur Masse liegen bei allen fast 5V, bei den "grünen"> Ausgängen aber nur ca. 0,72V.
Bist du sicher, dass der Basiswiderstand für grün 220Ω und nicht z.B.
2,2Ω hat? Welches ist der "grüne" Ausgang? Ist das PC0? Ist der
vielleicht defekt? Hast du einen zweiten Controller, den du testen
könntest? Oder kannst du eine LED (mit dem ganzen Transistorgedöns) mal
an PC1 testen?
Und wie Jan schon schrieb: 220Ω ist recht wenig für die Basiswiderstän-
de. Da fließt ein Basisstrom von 20mA, der LED-Strom ist auch nicht
höher. Du könntest die LEDs also genauso gut direkt am µC betreiben.
Lass die Transistoren auch etwas tun und mach die Basiswiderstände
mindestens um den Faktor 10 größer. Trotzdem erklärt das aber nicht die
Fehlfunktion.
Yalu X. schrieb:> Da fällt mir gerade etwas ein, was häufig vergessen wird: Hast du den> JTAG gedisabelt? Der beeinflusst zwar nur PC2-PC5, stört aber spätestens> dann, wenn du dort weitere Dinge anschließt, was du ja vor hast.
Bei den Fuses hab ich nur den CKDIV8 verändert.
JTAG werd ich dann auch noch disablen.
> Bist du sicher, dass der Basiswiderstand für grün 220Ω und nicht z.B.> 2,2Ω hat?
Es sind überall die gleichen Basiswiderstände verbaut, außer, Reichelt
hätte derbst Mist gebaut. ;)
>Welches ist der "grüne" Ausgang? Ist das PC0?
Ja, das müsste PC0 sein.
> Ist der vielleicht defekt? Hast du einen zweiten Controller,> den du testen könntest?
Möglich, dass dieser defekt ist. Ich habe aber leider keinen Ersatz IC
zur Hand.
> Oder kannst du eine LED (mit dem ganzen Transistorgedöns) mal> an PC1 testen?
Werde ich das nächste mal einmal testen.
Wie sieht es denn mit meiner Theorie aus?
Unsinn oder könnte es eine Erklärung sein?
Mfg
jan schrieb:> und hast du npn transistoren genommen?
Ja, es sind NPN Transistoren.
Nähere Bezeichnung bei Reichelt: Transistor NPN TO-92 45V 0,5A 0,625W
Mfg
so wie ich das sehe braucht dein transistor wirklich 1A reichelt gibt
800mA conrad 1A wobei ich jetzt das 16er model genommen habe,
nimm doch einfach einen BC547B und dann einen 1,5k basis widerstand, das
ist zufällig auch der wie es hier im tutorial beschrieben wird, der
benötigt nur 20 mA, zudem ist dieser transistor billiger ;)
jan schrieb:> so wie ich das sehe braucht dein transistor wirklich 1A reichelt gibt> 800mA conrad 1A wobei ich jetzt das 16er model genommen habe,> nimm doch einfach einen BC547B und dann einen 1,5k basis widerstand, das> ist zufällig auch der wie es hier im tutorial beschrieben wird, der> benötigt nur 20 mA, zudem ist dieser transistor billiger ;)
Das nächste mal werde ich mich vielleicht für diesen entscheiden.
Doch jetzt habe ich mir ja einige dieser Transistoren besorgt, ich würde
mich ärgern, wenn ich sie dann nicht benutzen könnte. ;)
^|^ schrieb:> Die paar Zeilen nennst du Programm?> Glaube kaum daß das so funzt.
Was ist es den sonst?
Es ist, wie ich sagte, nur zum testen und kein Programm, welches später
im Einsatz ist.
Warum sollte es denn nicht funktionieren?
Ich lasse mich natürlich gerne belehren, wenn etwas fehlen sollte!
Mfg
jan schrieb:> nimm doch einfach einen BC547B
Wieso denn das? Mark hat einen BC337-40. Der hat sogar eine höhere
Stromverstärkung als der BC547B (da hättest du schon einen BC547C
vorschlagen müssen). Für die 20mA LED-Strom reicht das locker. Auch wenn
Mark auf hellere LEDs mit 100mA oder 200mA umstellen möchte, ist der
BC337-40 noch ausreichend, während der BC547 schon deutlich in die Knie
geht.
> zudem ist dieser transistor billiger ;)
Nicht einmal das. Bei Reichelt kosten beide 4 Cent :)
Mark schrieb:> Es ist, wie ich sagte, nur zum testen und kein Programm, welches später> im Einsatz ist.> Warum sollte es denn nicht funktionieren?> Ich lasse mich natürlich gerne belehren, wenn etwas fehlen sollte!
Das Programm sollte am Ende in einer Endlosschleife laufen. bei dir wird
die Main aber sofort mit return 0 verlassen. Wie wärs mit einem ; hinter
dem while (1) ?
Mikel schrieb:> Wie wärs mit einem ; hinter dem while (1) ?
Stimmt, das ist ein Bug. Der sollte aber nichts ausmachen, da m.W. main
beim AVR-GCC am Ende ohnehin direkt in die exit-Routine springt, die in
der AVR-Libc als Endlosschleife implementiert ist.
Bei 220 Ohm Basisvorwiderstand hast du etwa 20 mA und das ist etwa die
Größe der Last. Das ist für deinen Prozessor zu viel.
Wer hat dir denn diesen Käse erzählt?
Und laß dich nicht von der zig-fachen Übersteuerung der Basis verrückt
machen. Die braucht man nur in der Digitaltechnik, um steile Flanken zu
bekommen.
Die Transis haben heute meist eine h21e von >300. Versuche es mal mit
4,7K und du wirst sehen, das deine LED bei 20 mA schön leuchten.
Yalu X. schrieb:> Nicht einmal das. Bei Reichelt kosten beide 4 Cent :)
dann werde ich mich im datenblatt verguckt haben schon alleine weil den
ich egsehen ahbe 50cent gekostet hat :/
habe auch den obrigen Beitrag nicht gesehen.
Sorry das wird dann wohl mein fehler gewesen sein.
ist den kein Elektroladen bei dir um die Ecke? o
Naja und nochmal zum code, ich habe dir mal ein delay eingefügt,
eventuel klappt es ja besser wenn die anderen Ports ausgeschaltet sind
mein code geht jetzt jeden Port einmal seperat durch.
#include <avr/io.h>
#include <util/delay.h>
int main()
{
DDRA = 0x1F;
DDRB = 0x1F;
DDRC = 0x1F;
while(1)
{
PORTC = 0x00;
PORTA = 0x1f;
_delay_ms(100);
PORTA = 0x00;
PORTB = 0x1f;
_delay_ms(100);
PORTB = 0x00;
PORTC = 0x1f;
_delay_ms(100);
}
return 0;
}
Muss ich mich wiederholen:
>
Warum so kompliziert? Löte die Basiswiderstände am Prozessor ab und lege
sie testweise an +5V. Danach ist es klar, ob es ein Soft- oder
Hardwarefehler ist.
<
Tus doch einfach...... wenn es keine SMD Widerstaende sind, knipst Du
ein Ende durch und machst den Test....anschliessend einen Loetpunkt
drauf.
Oder ziehst den uC aus der Fassung!
Warum faengst Du nicht mit dem einfachsten an?
Und BC337 ist super....den benutze ich fuer (fast) alles!
Gruss
Michael
mit einem Logik-Tester oder Pfüfstift mit LEDs drin (ähnlich Duspol)
hätte ich das schon vor zig Tagen herausbekommen,
wie man daraus so einen Elefanten > Aufwand machen kann?
aber Übung macht bekanntlich den Meister !