mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Verstärkerschaltung für Charlieplexing


Autor: Gigal Gigal (gigal)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich möchte mit einem MSP430 und Charlieplexing 240 LEDs ansteuern. Da 
die Portpins des MSP aber keine 15 LEDs auf einmal treiben können, habe 
ich mir die angehängte Schaltung überlegt, die ich für jeden 
"Charliegeplexten" Pin aufbauen müsste.

R_pnp und R_npn sind gegenüber R_uc groß. D.h., wenn der Portpin 
(Signal) getrieben wird, sollte je nach Pegel entweder der PNP oder der 
NPN durchschalten und somit auch Signal_verstaerkt getrieben werden. 
Wird der uC Pin auf Input gestellt, dann sollte weder der NPN noch der 
PNP durchschalten.

Könnte das bei entsprechender Auslegung der Transistoren und Widerstände 
funktionieren?

Viele Grüße,
Gigal

Autor: ArnoR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gigal Gigal schrieb:
> Wird der uC Pin auf Input gestellt, dann sollte weder der NPN noch der
> PNP durchschalten.
>
> Könnte das bei entsprechender Auslegung der Transistoren und Widerstände
> funktionieren?

Nein, falls der Pin hochohmig ist oder einen Pegel im Bereich 0,7...2,6V 
hat, sind beide Transistoren geöffnet.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Charliepixling ist nur brauchbar wenn gleichzeitig nur weniger (z.B. 
1-4) LEDs leuchten sollen. Wirklich gleichzeitig geht auch nur 1 LED und 
extra Treiber sind wegen der 3 Zustände in aller Regel zu Aufwändig.

Wenn man die Transistoren durch passende MOSFETs ersetzt, könnte es 
funktionieren - ist aber auch schon grenzwertig, weil die 
Schaltschwellen schon stimmen müssen, damit nicht beide MOSFETS 
gleichzeitig an sind.

Die Alternative ist dann eine LED Matrix mit dann einfacheren Treibern.

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nein, falls der Pin hochohmig ist oder einen Pegel im Bereich
> 0,7...2,6V hat, sind beide Transistoren geöffnet.

In DER Schaltung die er gezcihnet hat ?

Du solltest dir die Beiträge auf die du antwortest schon angucken.

Hätte er

          3.3V
           |
       +--|< NPN
       |   |E
Pin ---+   +---
       |   |E
       +--|< PNP
           |
          GND

wäre das schon eher so, aber bei 3.3V bleibt kaum was übrig an
Ausgangsspannung, ist also auch unbrauchbar. Mit 2 MOSFETs
könnte man den Spannungsverlust reduzieren, aber dabei welche
zu finden, die bei offenem Ausgang (tri state) auch beide
offen bleiben, wird wohl unmöglich, zu ungenau sind Ugsth.
Also müsste jeder MOSFET eine genauere Schaltstufe bekommen:

              3.3V
               |
       +--+----+----+
       R  R         |S
       +--(--|-\    |
       |  |  |  >--|I PMOSFET
       |  +--|+/    |
Pin ---+  |         +---
       |  +--|+\    |
       |  |  |  >--|I NMOSFET
       +--(--|-/    |
       R  R         |S
       +--+----+----+
               |
              GND

aber wir kennen unsere Pappenheimer schon;: Ach, so viele
Bauteile, so viel Lötzinn hab ich gar nicht...

Autor: Gigal Gigal (gigal)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

zunächst mal vielen Dank für Eure Antworten.

@Ulrich: Mit Charlieplexing kann bei n verwendeten Leitungen genau n-1 
LEDs gleichzeitig steuern und nicht nur eine. Z.B. Leitung 0 auf High 
Pegel. Dann Leitung 1 .. n-1 auf Low Pegel und schon leuchten alles 
Leds, deren Anode auf Leitung 0 hängt. Sollen Leds nicht leuchten, 
werden die entsprechenden Leitungen auf "Input" also hohe Impendanz 
gestellt.

@MaWin: Die Schaltung sieht ja richtig interessant aus und funktioniert 
meiner Meinung nach auch, wenn noch ein zusätzlicher Widerstand 
eingeführt wird (alle R haben dabei den gleichen Wert bis auf 
Bauteiltoleranzen):

                 3.3V
                  |
         +--------+----+----+
         R        R         |S
         +  +-----(--|-\    |
         +--(--+  |  |  >--|I PMOSFET
       +-+  |  |  +--|+/    |
Pin ---+ R  |  |  |         +---
       +-+  |  |  +--|+\    |
         +--+  |  |  |  >--|I NMOSFET
         +     +--(--|-/    |
         R        R         |S
         +--------+----+----+
                  |
                 GND

1. Fall Pin floating --> Spannungsteiler steuern Operationsverstärker
--> Opv des PMOSFET --> 3.3V
--> Opv des NMOSFET --> GND
--> Ausgang --> floating

2. Fall Pin 3.3V --> - Eingänge der OPV haben größere Spannung als + 
Eingänge
--> Opv des PMOSFET --> GND
--> Opv des NMOSFET --> GND
--> Ausgang --> 3.3V

3. Fall Pin GND --> + Eingänge der OPB haben größere Spannung als - 
Eingänge
--> Opv des PMOSFET --> 3.3V
--> Opv des NMOSFET --> 3.3V
--> Ausgang --> GND

Sollte ich keinen Denkfehler drinhaben, müsste das so funktionieren. Ich 
werde das im Laufe der nächsten Woche mal in PSPICE simulieren.

Vielen Dank nochmal für die Hilfe,
Gigal

Autor: ArnoR (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also MaWin, in deiner Schaltung (komplementärer Emitterfolger) können 
nie beide Transistoren gleichzeitig leitend sein. In der des TE schon, 
und zwar unter den von mir genannten Bedingungen, und genau das hat er 
gefragt.

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wenn noch ein zusätzlicher Widerstand eingeführt wird

Richtig, aber deiner ist kurzgeschlossen. So war's gedacht:

              3.3V
               |
       +--+----+----+
       R  R         |S
       +--(--|-\    |
       |  |  |  >--|I PMOSFET
       |  +--|+/    |
Pin ---+  R         +---
       |  +--|+\    |
       |  |  |  >--|I NMOSFET
       +--(--|-/    |
       R  R         |S
       +--+----+----+
               |
              GND

> nie beide Transistoren gleichzeitig leitend sein. In der des TE schon

Sie sollen ja auhc nicht beide gleichztig leiten.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann mit Charlipixling schon viele LEDs ansteuern, und so lange 
davon gleichzeitig nur weniger Leuchten sollen geht es auch gut. Es gibt 
auch einige Kombination wo mehr als einige LED wirklich gleichzeitig 
leuchtet - nur sind das halt einige Kombinationen der vielen Möglichen. 
Es gibt auch viele Kombination von LEDs die nicht direkt möglich sind. 
Das gibt sich schon aus der Zahl der Kombinationen bei N Leitungen mit 
je 3 möglichen Zuständen und N*(N-1)*2 möglichen LEDs. Es ist nun mal 
2^(N*(N-1)*2) > 3^N ab N = 2.

Einen höheren Strom kann aber trotzdem gebrauchen, wenn per Multiplexing 
mehrere LED im schnellen Wechsel angesteuert werden.

Man kann den Treiber auch ohne OPs oder Komperatoren aufbauen. Es geht 
ja nur darum die 3 Spannungswerte von etwa 0 V , 1,6 V , und 3,3 V 
auseinander zu halten. Das geht auch schon über die Basis 
Emitterspannung. Im einfachsten Fall mit 2 Zusätzlichen Widerständen in 
der Schaltung ganz oben, so das man die Schaltschwelle der Transistoren 
auf etwa 2 V bzw. 1 V einstellt. Wirklich gut wird das aber auch noch 
nicht, weil man relativ viel Ruhestrom braucht.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum immer alles so kompliziert.
Charlieplexing ohne die speziellen MAXIM-ICs ist viel zu aufwendig.

Nimm einfach ne 15*16 Matrix.
Die 16 Spalten werden über 2 * TPIC6B595 durchgeschoben, kostet 2 
IO-Pins.
Die 15 Reihen werden über 15 npn in Kollektorschaltung + Widerstand 
direkt angesteuert. Das ergibt dann 16:1 Multiplex.
Macht zusammen 17 IO-Pins und fertig ist die Laube.


Peter

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... Charlieplexing ohne die speziellen MAXIM-ICs ist viel zu aufwendig 
...

Das ist nicht richtig. Hatten wir schon mehrfach das Thema. Hast du 
Verständnisprobleme oder möchtest du die IC der obigen Firma verkaufen?

Autor: Donald Duck (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Charlieplexing kann ich N * (N-1) LED's ansteuern.
Mit einer Matrixansteuerung kann ich N * M LED's ansteuern.

Für 240 LED's brauchst du bei Charlieplexing 16 Leitungen.
Für 240 LED's brauchst du bei einer Matrixansteuerung 16 + 15 = 31 
Leitungen.
Das spricht für Charlieplexing

Aber Vorteile bei einer Matrixansteuerung:
1. Die Software ist einfacher zu programmieren
2. Du brauchst nur Lowside (ULN2803) und Highside (UDN2981A) Treiber.
3. Die Verdrahtung der LED's ist bei einer Matrixansteuerung deutlich 
einfacher

Also vergiss Charlieplexing, nimm eine Matrixansteuerung.
Hier noch ein kleines Bonbon: UCN5821 und UCN 5891 hier ist das 
Schieberegister schon drin!

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Evtl könnte man hier noch 4 Dioden einfügen:

                3.3V
                 |E
       +-|<|-|<|-|< PNP
       |         |
Pin -R-+         +---
       |         |
       +-|>|-|>|-|< NPN
                 |E
                GND

Wenn der Pin hochohmig ist, dann sperren beide Transistoren solange die 
Spannung < 4*Ud + 2*Ube ist, also ~4,2V.
Der Pin floatet dann irgendwo zwischen 1,2V (=3,3-3*0,7) und 2,1V 
(=3*0,7V)
Verlässt er den Spannungsbereich, faängt einer der Transistoren an zu 
leiten.

ggf muss noch jeweils ein R zwischen B+E je Transistor damit diese 
sicher
sperren und evtl reichen auch 3 Dioden.

Zugegeben... gewagt
und es wird ein kleines "Siliziumgrab"

Gruß
Roland

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin schrieb:
> Hast du
> Verständnisprobleme

Nein, aber andere, z.B.:
http://www.mikrocontroller.net/attachment/93262/22...

Wer ne dunkle '8', helle '7' und gleißende '-' mag, kann es so machen.
Die meisten Leute wollen aber alle Segmente gleichhell.


Martin schrieb:
> oder möchtest du die IC der obigen Firma verkaufen?

Nö, aber Du solltest Dir ruhig mal deren Innenschaltung ansehen, damit 
Du endlich das Charlieplexing verstehst.
Ein Charlieplexing-Ausgang braucht nämlich 3 Zustände:
- stark low (einige 100mA)
- Konstantstrom-high
- hochohmig.

D.h. um eine solche Treiberstufe nachzubilden, braucht man 2 IO-Pins vom 
MC. Man spart also keinerlei IO-Leitungen vom MC ein in Vergleich zum 
Multiplex.


Peter

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> D.h. um eine solche Treiberstufe nachzubilden,
> braucht man 2 IO-Pins vom MC.

Nö, 1 reicht, siehe meine Schaltung oben, die man
natürlich bei positiver Rail auf geschaltete
Konstantstromquelle umbauen könnte.

> und gleißende '-' mag

Auch Humbug, wenn man jedes Segment nur dieselbe Zeit
mit Strom versorgt (auch wenn man die restliche Zeit
nichts zu tun hat, also alles aus bleibt) sind alle
gleichhell.

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das gleißende - ist nicht nötig, aber die dunkle 8 ist ein Problem. Wenn 
nicht bei der 8 dann bei der 88.

In Grenzen kann man die kurze Einschaltdauer durch einen höheren Strom 
für die LEDs ausgleichen, aber bei etwa dem 10 fachen Nennstrom ist man 
da am Limit. Wenn deutlich mehr als 10 LEDs per Charliepixling (quasi-) 
gleichzeitig an sein sollten, wird es zwangsweise dunkler. Mit viel 
Aufwand kann man ein paar Spezialfälle retten, aber dann wird halt nicht 
die 88 sondern die 89 dunkel.

Autor: Martin (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
... Ein Charlieplexing-Ausgang braucht nämlich 3 Zustände: ...

Was sollen diese ewigen Pöbeleien von dir? Versuchst du hier deinen 
Minderwertigkeitskomplex zu kultivieren?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Nö, 1 reicht, siehe meine Schaltung oben, die man
> natürlich bei positiver Rail auf geschaltete
> Konstantstromquelle umbauen könnte.

Dazu fällt mir nur ein: Wir sparen ein, völlig egal was es kostet.

Ob ein 2. IO-Pin teurer ist als 2 Komparatoren + 5 Widerstände, da hege 
ich meine Zweifel.
Ehe ich 16 Komparatoren und nen Haufen Hühnerfutter verschwende, nehme 
ich doch lieber einen TPIC6B595 und mache normales Multiplex.

Ich bin ein ziemlicher Layoutmuffel, d.h. möglichst einfaches Layout und 
möglichst wenig Bauteile. Viel Hühnerfutter ist mir daher ein Greuel.


Peter

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Auch Humbug, wenn man jedes Segment nur dieselbe Zeit
> mit Strom versorgt (auch wenn man die restliche Zeit
> nichts zu tun hat, also alles aus bleibt) sind alle
> gleichhell.

Dann aber bitteschön gehört auch noch ne Temperaturkompensation dazu. 
Der Widerstand eines FET ist ja temperaturabhängig.

Nur Weicheier wie ich, nehmen FETs deren Innenwiderstand so klein ist, 
daß er keinen Einfluß hat.
Ich hab deshalb überhaupt keine Skrupel, Treiber zwischen zu schalten, 
wenn die Last am MC zu groß wird.


Peter

Autor: Jens Grabner (jensg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

es ist gut möglich, das ich ein Schaltungskonzept mit Mosfet und auch an 
3.3V gefunden habe.

Besteht Interesse ??

MfG  --  Jens

Autor: Harald Wilhelms (wilhelms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Donald Duck schrieb:

> Hier ist das Schieberegister schon drin!

Genau, und damit braucht man noch weniger Leitungen als beim
Charlieplexing.
Gruss
Harald

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jens Grabner schrieb:
> Besteht Interesse ??

Was kostet es denn...

(nur Nerven, weil du Ugsth als zu konstant ansiehst?)

Autor: Jens Grabner (jensg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Folgende Bauteile je PIN (Charlieplexing - kein Multiplexausgang 
notwendig)

4 x R (eventuell ein R weniger)
1 x BAT54
1 x BC327
1 x IRLML6401

Hinweis: Ich verstehe das Forum auch als Ideenfindung!

Gruß  --  Jens

Autor: Walter Tarpan (nicolas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jens Grabner schrieb:
> es ist gut möglich, das ich ein Schaltungskonzept mit Mosfet und auch an
> 3.3V gefunden habe.

Da hast Du sicherlich lange und sorgfältig drüber nachgedacht. Der TE 
wird vermutlich aber mittlerweile entweder das Projekt in die Ecke 
geknallt haben oder es funktioniert schon lange.

Autor: Jens Grabner (jensg)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier eine Schaltung die der Überschrift gerecht wird. Sie ist für 20mA 
bei roten Led ausgelegt.

Funktion: Ist Ue > (3,3V - 0,4V) wird der Mosfet leitend.

Wichtig: Der Mosfet lässt sich nur "ohne Last einschalten". Also immer 
erst alle Led ausschalten bevor ein neuer Mosfet geschaltet wird.

Gruß -- Jens


P.S.: Die Schaltung ist noch nicht praktisch getestet worden.

Autor: MaWin (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Für 20mA braucht man keine Verstärkerschaltung, das liefert ein uC 
alleine, das muss er bei dir ja auch. Ausserdem funktioniert die 
Schaltung nicht.

          3.3V 5V
           |        |
       +--+    +---------+
       R  R           +-|<|--|<|--+
       +--(--|-\      |           R E
       |  |  |  >--R--+---------|<PNP
       |  +--|+/              |
Pin ---+  R         +---
       |  +--|+\    |
       |  |  |  >--|I NMOSFET
       +--(--|-/    |
       R  R         |S
       +--+----+----+
               |
              GND

Autor: Jens Grabner (jensg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MaWin schrieb:
> Für 20mA braucht man keine Verstärkerschaltung

... für 15x20mA = 300mA benötigt man den Mosfet schon.

Erinnerung: Eine 15x16 Matrix soll gemacht werden.

Die obige Schaltung wird also 16x gebraucht um jeweils bis zu 15 Led 
nach "Output Low" zu ziehen . Mit "Output High" wird multiplext.

... und R3 ist der Vorwiderstand einer Led.

Gruß  --  Jens

Autor: Jens Grabner (jensg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Herr Kainka veranschaulicht das Prinzip der Schaltungen.

http://www.elektronik-labor.de/AVR/Charlieplexing.html#v2

Meine Idee verwendet eine gemeinsame Anode anstelle der gemeinsamen 
Kathode.

Autor: Jens Grabner (jensg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist noch eine einfachere Variante eines Verstärkers.

http://m.eet.com/media/1126085/11497-figure_1.pdf

Gruss -- Jens

Autor: Jens Grabner (jensg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... und hier noch einmal anders herum.

http://m.eet.com/media/1132033/14772-figure_1.pdf

Gruß -- Jens

Autor: Jens Grabner (jensg)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
*Hinweis*: Der Charlieplexverstärker ist praxiserprobt (inklusive 
Software für den Arduino). Der Charlieplexverstärker ist 12x aufgebaut 
und treibt 126 Leds an.

Bei 5V Versorgung und roten Led komme ich auf maximal etwa 240mA.

Gruß -- Jens

: Bearbeitet durch User
Autor: Jens Grabner (jensg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Details zur Softwareansteuerung kann man hier: 
http://www.elektronik-labor.de/AVR/Charlieplexing.html#amp nachlesen.

Herr Kainka war so freundlich meinen Hinweis zu veröffentlichen.

Gruß -- Jens

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.