Forum: Mikrocontroller und Digitale Elektronik mikrocontroller Signal Invertieren


von Martin (Gast)


Lesenswert?

Hallo zusammen,

ich will mir eine Schaltung aufgebauen um zwei Ausgänge eines Atmega8 zu 
invertieren. Ich brauche das, weil ich eine Soft-ISP Schnittschtelle 
betreibe um über Schieberegister eine LED-Matrix anzusteuern. Beim Start 
des uP sind alle Ausgänge auf HI und somit habe ich undefinierte 
Zustände auf der Matrix

Versucht habe ich das mittels PNP Transistoren, habe da aber keine 
brauchbaren Ergebnisse bekommen. (Der uP bleibt an seinem Ausgang ca. 
0.2V unter der Versogungsspannung => PNP bleibt leitend. Wenn ich über 
einen Spannungsteiler (10Ohm zu 18Ohm) der ca. 3.5 V auf den Transistor 
gibt, funktioniert das Schalten zwar super, allerdings habe ich dann im 
leitenden Zustand nur noch knappe 1.4V und das reicht nicht damit die 
Schieberegister dies als HI erkennen.)

Zu meiner Frage:
Wie muss ich einen OP beschalten, damit er mir das uP Signal korrekt 
invertiert. Zwei OPs habe ich per zufall so wie so ungebraucht auf der 
Platine.

PS: eventuell hat noch jemand ne Idee wie man dies Anders lösen könnte.

gruss
Martin

von Peter R. (gelb)


Lesenswert?

Martin schrieb:

> betreibe um über Schieberegister eine LED-Matrix anzusteuern. Beim Start
> des uP sind alle Ausgänge auf HI

Beim Start des Controllers sind alle Ports als Eingang ohne Pullup 
definiert. Der Pegel wird von der Peripherie erzeugt.

> Versucht habe ich das mittels PNP Transistoren, habe da aber keine
> brauchbaren Ergebnisse bekommen. (Der uP bleibt an seinem Ausgang ca.
> 0.2V unter der Versogungsspannung => PNP bleibt leitend.

Dein PNP leitet bei 0,2V?? Kann nicht sein. Schaltung zeigen!

> PS: eventuell hat noch jemand ne Idee wie man dies Anders lösen könnte.

Erst klären, warum deine Ausgänge beim Starten high sind.

Grüße, Peter

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Danke für deine schnelle Antwort.

Der PNP ist doch immer leitend, solange die Basis Negativer als der 
Emitter ist?

0.2V under der Betriebsspannung.

Schaltung ist im Anhang.

gruss
Martin

von Peter R. (gelb)


Lesenswert?

Martin schrieb:

> Der PNP ist doch immer leitend, solange die Basis Negativer als der
> Emitter ist?

Zum Leiten muss die Basis etwa 0,7V negativer als der Emitter sein.
Die Spannung stellt sich von selbst ein, sobald Strom aus der Basis 
gezogen wird (Portpin auf Low). Deine Schaltung sollte funktionieren, 
wenn sie so wie gezeichnet aufgebaut ist.

Wenn deine Transistoren bei Ube = 0,2V leiten, ist was faul (Messfehler, 
Verdrahtungsfehler, defektes Bauteil, falsches Bauteil...)

Grüße, Peter

von STK500-Besitzer (Gast)


Lesenswert?

>Der PNP ist doch immer leitend, solange die Basis Negativer als der
>Emitter ist?

Ja.

>0.2V under der Betriebsspannung.
???
In der Regel beträgt UBE 0,7V bei Silizium-Transistoren.

Peter Roth hat doch schon geschrieben, dass die Portpins hochohmig beim 
Einschalten sind. Entweder hängst du noch ein paar Pull-Down-Widerstände 
an die Pins, oder du überarbeitest dein Programm.

von Peter R. (gelb)


Lesenswert?

Nochmal grundsätzlich zur Funktion:

letztendlich hast du 2 Open-Kollektor-Ausgänge, die am Stecker 
"LED-Matrix-OUT" nur gegen +5V ziehen können. Du brauchst also 
zusätzlich Pulldown-Widerstände an den Kollektoren, sonst kommt kein Low 
zustande.

Grüße, Peter

von Martin (Gast)


Lesenswert?

Genau, aber der Transistor wird in dieser schaltung nie nicht-leitend.
das ist mein Problem.

von Martin (Gast)


Lesenswert?

Also das mit dem PNP hab ich nicht hinbekommen, habs gerade nochmals 
versucht...

kann mir jemand sagen wie ich das mit enem OP LM324N hinkriege?

Danke & Gruss
Martin

von Karl H. (kbuchegg)


Lesenswert?

Ich hab immer noch nicht raus, warum du da einen PNP nimmst. Mit einem 
NPN macht man einen Signalinverter so:
1
                                 o 5V
2
                                 |
3
                                ---
4
                                10k
5
                                ---
6
                                 |
7
                                 +----------o   Ausgang
8
                                 |
9
    Eingang                    |/
10
    o------| R_Basis |---------|   BC337
11
                               |\
12
                                 v
13
                                 |
14
                             ----+--- GND
(Für R_Basis werden wohl 1k ausreichend sein, ohne jetzt gross 
nachzurechnen)

Da deine µC beim Einschalten alles Eingänge sind, sollte man jetzt noch 
einen Pullup oder einen Pulldown von der Basis weg machen, damit auch in 
diesem Fall ein definierter Zustand vorliegt.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Es macht keinen Sinn, auf OPs zu wechseln. Es ist möglich, solch
eine Schaltung mit PNP-Transistoren aufzubauen. Wenn jedoch
keine Pull-Down-Widerstände an den Kollektoren vorhanden sind,
gibt es keine wohldefinierten Signalpegel für die LED-Matrix.
Bei vielen Logikfamilien ist der Pegel eines offenen Einganges
nämlich ein "schwaches High". Dies sollte man aber auch nicht
ausnutzen, da sonst die Flankensteilheit bei einem Low-High-
Übergang zu niedrig wäre.

Sollten tatsächlich die Transistoren trotz der eigentlich zu
geringen Eingangsspannung schon beginnen, leitfähig zu werden,
sollten jeweils ein Widerstand zwischen Basis und Emitter
geschaltet werden, um einen eingangsseitigen Spannungsteiler
zu realisieren. Bei der obigen Schaltung (Basiswiderstand 10k)
würde ich hierfür ebenfalls 10k verwenden.

Die ganze Schaltung wird auf Grund fehlender Abblockkondensatoren
an IC3 ohnehin nicht allzu stabil funktionieren.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Karl heinz Buchegger schrieb:
> (Für R_Basis werden wohl 1k ausreichend sein, ohne jetzt gross
> nachzurechnen)

Der Basiswiderstand muss nicht unbedingt kleiner als der Kollektor-
widerstand sein, wenn man nicht gerade Transistoren mit b < 1
eingesetzt. ;-)

von Martin (Gast)


Angehängte Dateien:

Lesenswert?

Danke für euer Bemühen.

Hab die Schaltung neu gezeichnet. Könnt ihr schauen ob ihr noch 
Verbesserungspotential seht?

Der OP wird zur "Bass-Erkennung" gebraucht.

gruss
Martin

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Martin schrieb:
> Könnt ihr schauen ob ihr noch
> Verbesserungspotential seht?

Ja, da sind noch etliche Schwachstellen:

- R19/R21 sind völlig falsch angebracht
- 22pF sind hier keine passenden Abblockkondensatoren
- keine GND-Verbindung zur LED-Matrix

Gerade zum Thema Abblockkondensatoren wurden doch schon Unmengen
an Publikationen verfasst und auch Diskussionen in diesem Forum
geführt. Dort gibt es auch etliche Dimensionierungshinweise. Wieso
beherzigen Sie diese nicht?

von Martin (Gast)


Lesenswert?

wie müsste man denn R19/R21 anbringen?

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Martin schrieb:
> wie müsste man denn R19/R21 anbringen?

Indem man sich mit den Grundlagen der elektronischen Schaltungstechnik
befasst und selbst auf die Lösung kommt.

von Peter D. (peda)


Lesenswert?

Martin schrieb:
> ich will mir eine Schaltung aufgebauen um zwei Ausgänge eines Atmega8 zu
> invertieren.

Das macht man in Software.

> Ich brauche das, weil ich eine Soft-ISP Schnittschtelle
> betreibe um über Schieberegister eine LED-Matrix anzusteuern. Beim Start
> des uP sind alle Ausgänge auf HI und somit habe ich undefinierte
> Zustände auf der Matrix

Nö, die Pins sind beim Reset tristate. Um low oder high zu sehen, mußt 
Du Pulldowns oder Pullups nehmen, fertig.

Dein Problem werden aber die Schieberegister sein, das 74HC595 hat 
keinen internen Einschaltreset, also sind die Pegel undefiniert. Der MC 
kann nix dafür.

Aber man kann den Output-Enable des HC595 mit dem MC verbinden und noch 
nen Pullup dran. Dann kann der MC gültige Daten reinschieben und erst 
danach wird der HC595 enabled. Und wenn das zufällig noch ein PWM-Output 
ist, kann man das Display dimmen.


Peter

von Martin (Gast)


Lesenswert?

Generelle Frage:
Ich will den Port ja nur invertieren, da ich Pulsströme von 100mA durch 
die LEDs jage. Mach das Invertieren überhaupt sinn, oder kann ich das 
teoretisch weglassen?

gruss
Martin

von Christian T. (shuzz)


Lesenswert?

Um die Frage zu beantworten müsste man erstmal die Schaltung Deiner 
Matrix sehen... ^^

Deine Invertierung hat mit den Pulsströmen durch die Matrix erstmal nix 
zu tun, sofern die LEDs (wie oben bereits vermutet) an einem 
Schieberegister hängen.

Beherzige den Tipp mit dem Output-Enable Pin des SR, da hängst nen 
Pullup dran und steuerst das Ding mit dem Controller an.
Dann fliesst erst Strom in die LEDs wenn auch wirklich die richtigen 
Daten im Register anliegen...

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.