LED Schaltungs-Problem mit PIC

Ich habe baue mir gerade eine LED Lampe, die ihre Farbe automatisch wechselt. Dazu verwende ich folgenden Schaltplan:

http://tobe.nimio.info/foto/mood_lamp_circuit.png

Als PIC verwende ich einen PIC 16F628-20. Zudem betreibe ich die Schaltung, da nur zu Testzwecken, mit Standard LEDs und habe dementsprechend andere Widerstände (alle 15 Ohm) vor die LED geschaltet.
Nun passiert bei mir komisches: Wenn ich die Transistoren noch nicht eingesetz habe, dann gibt mir der PIC eine schönes PWM-Signal (genau so wie programmiert: Randommässiges PWM Signal auf den 3 Outputs). Sobald ich jedoch die Transistoren einsetze, passiert merkwürdiges:
(Ich habe 3 LED, rot, gelb, grün)
rot: leuchtet konstant aber sehr schwach
gelb: leuchtet gar nicht
grün: leuchtet wie es sollte

PIN Ausgänge:
rot: mit einem Multimeter nichts festzustellen (0V) mit dem Oszilloskop kleinste Impulse
gelb: selbst mit dem Oszilloskop totenstille
grün: etwas schwächeres PWM-Signal als ohne Last von einem Transistor

Nun die Frage, woran liegt es, dass die Transistoren nicht mehr gesteuert werden können? Bzw. das Signal am Ausgang des PICs verschwindet? Was könnte Abhilfe schaffen: FETs statt Transistoren, Vorwiderstände vor die Basis des Transistors?

Vielen Dank für die Hilfe

Guido

Hi,

Was könnte Abhilfe schaffen: FETs statt
Transistoren, Vorwiderstände vor die Basis des Transistors?

Die PIC Reihe kenne ich zwar nicht besonders gut, aber Vorwiderstände an Ports sind immer eine gute Wahl. Vergiß den Basisableitwiderstand nicht. Ohne gehts auch zur Not, kann aber bei zu hohen LOW Pegeln Probleme bereiten.

Oder kleine MOSFET (vergleichbar BSS123), die sind auch ok, wobei du deren RDSon mit einbeziehen mußt, da deine LED mit 5/10 Ohm Vorwiderständen bestückt sind.

Ulrich

Basisableitwiderstand? Widerstand zwischen Basis und Erde?
Also könnten Basisableitwiderstände und Vorwiderstände bei den Pins das Problem ev. lösen? (Ein Versuch wärs wert)

Mosfet anstelle von Transistoren scheint nicht nötig?

Die Schaltung habe ich leider nicht selbst entworfen, langsam wünschte ich mir jedoch ich hätte es von anfang an selbst gemacht, dann stünde ich nicht dauernd vor irgendwelchen neuen „Phänomenen“.

Hi,

Basisableitwiderstand? Widerstand zwischen Basis und Erde?

Direkt von der Basis zum Emitter.

Also könnten Basisableitwiderstände und Vorwiderstände bei den
Pins das Problem ev. lösen? (Ein Versuch wärs wert)

Der Vorwiderstand ist das eigentliche Problem. Die Diode (Basis-Emitter) hält den Port auf ca. 0,7 V fest. Eigentlich können das andere CPUs, aber ob dein PIC das kann, keine Ahnung.
Manchmal gibt es so richtig wüste Innenbeschaltungen von Ports, die einem das Leben wirklich schwer machen können. Aber - wie gesagt - den PIC kenne ich nicht gut und das Datenblatt habe ich gerade nur kurz überflogen.

So als erste Idee: Vorwiderstand 1k, Ableit 10k. Das paßt häufig.
Denn ohne Last arbeiten die Ports ja so, wie du es gerne hättest, aber eben nicht mit dem Transistor als Last.

Mosfet anstelle von Transistoren scheint nicht nötig?

Wenn die Bastelkiste sie nicht liefert, dann tuns auch die normalen.

Die Schaltung habe ich leider nicht selbst entworfen, langsam
wünschte ich mir jedoch ich hätte es von anfang an selbst
gemacht, dann stünde ich nicht dauernd vor irgendwelchen neuen
„Phänomenen“.

Und Datenblatt lesen!

Ulrich

Hallo Guido,

Die PICs sind jetzt auch nicht meine starke Seite.

Aber die Ports sollten programmierbare Pullups haben. Sind die ausgeschaltet dann liefert der Ausgang nur was im µA-Bereich.
Das reich aus um das Oszilloskop anzusteuern, aber nicht für den Transistor.

Also mal Datenblatt lesen.
Bei den PICs gibt es einen Konfigurationsblock, wo man z.B. auch einstellt wie der Oszillator funktionieren soll, auch den musst du dir mal ansehen.

MfG Peter(TOO)

Aber die Ports sollten programmierbare Pullups haben. Sind die
ausgeschaltet dann liefert der Ausgang nur was im µA-Bereich.
Das reich aus um das Oszilloskop anzusteuern, aber nicht für
den Transistor.

Die Ausgänge haben 300mA maximalwerte bei 5V

Bei den PICs gibt es einen Konfigurationsblock, wo man z.B.
auch einstellt wie der Oszillator funktionieren soll, auch den
musst du dir mal ansehen.

Das Programm auf dem PIC ist praxiserprobt und funktioniert. (nicht von mir)

Hallöle,
hier die Auflösung.
Die Schaltung kann nicht ganz funktionieren da falsch dimensioniert.

Lösung 1:

  1. PIC Ausgang -> Widerstand (10 KOhm) -> Basis Transistor (BC547B)
  2. Emitter Transistor -> Masse(-)
  3. Collektor Transistor -> Vorwiderstand -> LED
    Vorwiderstand bei 5V grüne oder rote LED 150 Ohm
    " " blaue LED 100 Ohm

Lösung 2:

  1. PIC Ausgang -> ULN 2803 Eingang
  2. ULN Ausgang -> Weiter wie bei 1.3

Lösung 3:

  1. PIC Ausgang -> Vorwiderstand -> lcr LED
    (ob es blaue lcr LED gibt ist mir nicht bekannt)

Die PIC kann man nur pro Ausgang mit max. 20 mA belasten !!!
Der Gesamtstrom darf mit allen Ausgängen pro PIC nicht > 300 mA betragen !!!

Oder schau mal bei www.sprut.de vorbei.

M.Kellner

Hi,

  1. Emitter Transistor -> Masse(-)

Diese Anmerkung verstehe ich nicht. Die kleinen Tierchen hängen doch auf VSS (Minus von der 5V Versorgung).

Ulrich

Hallo,

Aber die Ports sollten programmierbare Pullups haben. Sind die
ausgeschaltet dann liefert der Ausgang nur was im µA-Bereich.
Das reich aus um das Oszilloskop anzusteuern, aber nicht für
den Transistor.

Die Ausgänge haben 300mA maximalwerte bei 5V

steht im Datenblatt, oder was?
Gilt das unter allen Umständen oder doch nur für Low-Pegel?

Bringt aber nix, wenn die Pullups gar nicht aktiviert sind.
Ansonsten prüfe mal, was es mit den 300mA auf sich hat.
Sind das nicht vielmehr die absoluten Grenzbedingungen.
Normale Prozessorports bringen keine 300mA.

Bei den PICs gibt es einen Konfigurationsblock, wo man z.B.
auch einstellt wie der Oszillator funktionieren soll, auch den
musst du dir mal ansehen.

Das Programm auf dem PIC ist praxiserprobt und funktioniert.
(nicht von mir)

Du sagst, mit dem Oszi sieht es sehr gut aus.
Dann probiere es doch mal mit dem Oszi und einen Lastwiderstand
z.B. 1kOhm vom Port gegen Masse.
Wenn dann das Signal wieder weg ist, fehlen die Pullup-Widerstände.
Umgekehrt probiere es mal mit 1kOhm vom Port gegen +Us.
Dann siehst du genau was passiert.
Je nachdem brauchst du Pullup oder Basisvorwiderstände.
Gruß Uwi

Hallo Ulrich,

Vorwiderstände oder Mosfets sind zielführend, soweit Zustimmung. Wofür sollen Ableitwiderstände gut sein? Bei Frequenzen >> 1kHz könnte m.E. höchstens eine Diode von Basis zu Kollektor (damit Basis nie in Sättigung geht) sinnvoll sein.

Gruß
achim

Hi Achim,

Wofür sollen Ableitwiderstände
gut sein?

Als externe pull-downs für MOSFET halte ich sie für angeraten, aber durchaus auch den klassischen Ableitwiderstand. Im Fall, daß eine CPU (so als Idee die ARM7 Familie von Atmel) im Resetfall seine Ports auf Tri-State schaltet, hast du definierte Pegel und nicht irgendwelche offenen Gates oder eine offene Basis.

siehe auch: http://www.tfh-berlin.de/~vgross/Unterlagen/Aufgaben…
http://www.marsinvasion.de/downloads/BEL_Formel.pdf

mfg Ulrich