Forum: Mikrocontroller und Digitale Elektronik Fehler in Schaltung


von Mark (Gast)


Lesenswert?

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

von Tilo (Gast)


Lesenswert?

Vollständiger Schaltplan?
Was für ein IC?

Gibt Basiswiderstände?

von Andreas B. (andreasb)


Lesenswert?

Wenn die rote LED in Serie mit der grünen LED angeschlossen ist geht das 
schon.

Ist aber Geräten, hast du ein Bild  Schaltplan  Layout?



mfg Andreas

von Mark (Gast)


Lesenswert?

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

von Harald W. (wilhelms)


Lesenswert?

Mark schrieb:

> Gibt es einen Online Schaltplanzeichner?

Packpapier und Bleistift reichen auch. :-)
Gruss
Harald

von Andreas B. (andreasb)


Lesenswert?

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

von Ansgar K. (malefiz)


Lesenswert?

Schonmal dein Program unter die Lupe genommen das du da keien fehler 
gemacht hast was bei sauberen aufbau ja wahrscheinlicher ist.

von Mark (Gast)


Angehängte Dateien:

Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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.

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Lesenswert?

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.

von Vorschlag (Gast)


Lesenswert?

> ...eines ICs
Joa, wir wissen Bescheid,
das IC mal anders herum reinstecken, fertig.

von Mark (Gast)


Lesenswert?

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

von Harald W. (wilhelms)


Lesenswert?

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

von Gregor B. (Gast)


Angehängte Dateien:

Lesenswert?

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

von Michael_ (Gast)


Lesenswert?

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.

von Mark (Gast)


Lesenswert?

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

von Mark (Gast)


Lesenswert?

Hier nochmal das Programm:
1
#include <avr/io.h>
2
3
int main( void )
4
{
5
6
DDRA = 0x1F;
7
DDRB = 0x1F;
8
DDRC = 0x1F;
9
10
PORTA = 0x1f;
11
PORTB = 0x1f;
12
PORTC = 0x1f;
13
14
while(1)
15
return 0;
16
17
}

Mfg

von Yalu X. (yalu) (Moderator)


Lesenswert?

Wie groß sind die Basiswiderstände für die drei Transistoren und die
Vorwiderstände für die drei LEDs?

An welchen Pins sind die LEDs angeschlossen?

von Michael R. (mexman) Benutzerseite


Lesenswert?

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

von Mark (Gast)


Lesenswert?

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. :)

von Mark (Gast)


Lesenswert?

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

von jan (Gast)


Lesenswert?

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.

von Heinz (Gast)


Lesenswert?

Jan, deine Shift-Taste ist kaputt.

von Mark (Gast)


Lesenswert?

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

von Yalu X. (yalu) (Moderator)


Lesenswert?

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.

von jan (Gast)


Lesenswert?

und hast du npn transistoren genommen?

von Mark (Gast)


Lesenswert?

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

von Mark (Gast)


Lesenswert?

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

von jan (Gast)


Lesenswert?

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 ;)

von Mark (Gast)


Lesenswert?

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. ;)

von ^|^ (Gast)


Lesenswert?

Die paar Zeilen nennst du Programm?
Glaube kaum daß das so funzt.

von Mark (Gast)


Lesenswert?

^|^ 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

von Yalu X. (yalu) (Moderator)


Lesenswert?

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 :)

von Mikel (Gast)


Lesenswert?

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) ?

von Yalu X. (yalu) (Moderator)


Lesenswert?

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.

von Michael_ (Gast)


Lesenswert?

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.

von Jan (Gast)


Lesenswert?

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;

}

von Michael R. (mexman) Benutzerseite


Lesenswert?

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

von Elektroniker (Gast)


Lesenswert?

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 !

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.