Forum: Mikrocontroller und Digitale Elektronik Widerstandsnetzwerk für 7Segementanzeige


von Hans (Gast)


Lesenswert?

Hallo,

mochte gern mehrere 7Segmentanzeigen mit jeweils einem Schieberegister 
ansteuern (74HC595).
Jetzt suche ich ein passendes Widerstandsnetzwerk mit 8 einzelnen 
Widerständen (nicht mit einem gemeinsamen Bezugspunkt).
Hab bei R. leider nur 3er und 4er Netzwerke in dieser Ausführung 
gefunden. Beim großem C gab es so was gar nicht.
Gibt es die überhaupt? oder muss ich zwei 4er nehmen?
Oder hat jemand noch eine, viel bessere, Idee? ;)

Gruß
Hans

von Paul H. (powl)


Lesenswert?

Mach das lieber per Multiplexing! Den Murks mit Schieberegistern habe 
ich auch schon begangen, endete in Kabelsalat und nem Haufen 
Platzverschwendung durch die Schieberegister, mal abgesehen von der 
Lötarbeit.

Aber hier brauchst du doch keine Widerstandsnetzwerke ;-) du wirst doch 
noch 8 widerständchen pro Anzeige verlöten können! Wenn dus per 
multiplexing machst brauchst du sogar nur einmalig 8 verlöten.

mfg PoWl

von Alexander (Gast)


Lesenswert?

Es gibt bei Reichelt THT Netzwerke mit bis zu 5 separaten Widerständen 
im SIL Gehäuse. Oder noch besser. BCN16 - das sind vier einzelne im 1206 
Gehäuse.

von Hans (Gast)


Lesenswert?

@powl
Ja, hatte ich auch erst überlegt. Aber ich würde gern PWM nutzen um die 
Helligkeit der Anzeige zu steuern. Das funktioniert dann mit Multiplexen 
ja nicht mehr.

@Alexander
Danke, die BCN16 sehen gut aus. Passt auch gut mit der Verlustleistung, 
noch die hälfte Reserve. Und die kann ich ja auch auf die Rückseite der 
Platine packen, dann sieht man die gar nicht :)

von Andreas K. (a-k)


Lesenswert?

Es gibt (gab?) auch DIL-Netzwerke, z.B. DIL16 mit 8 Widerständen quer 
rüber. Ist verdrahtungsmässig ganz nett und hat gute Werte bei 
Verlustleistung (bei LED-Muxern evtl. nicht ganz unwichtig).

von Severino R. (severino)


Lesenswert?

Bourns stellt DIL16 Widerstands-Netzwerke her, auch als SO16. Zu kaufen 
z.B: bei Schuricht oder Farnell oder...

Aber wenn es wirklich preiswert und SMD sein soll, kommen 4-er 
Chip-Netzwerke in Frage.
Wenn das Ganze maschinell bestückt wird, sind einzelne Widerstände 
geeigneter, da billiger und besser erhältlich.

> Ja, hatte ich auch erst überlegt. Aber ich würde gern PWM nutzen um die
> Helligkeit der Anzeige zu steuern. Das funktioniert dann mit Multiplexen
> ja nicht mehr.

Weshalb soll das nicht funktionieren?

von Reinhard R. (reirawb)


Lesenswert?

> Aber ich würde gern PWM nutzen um die Helligkeit
> der Anzeige zu steuern. Das funktioniert dann mit
> Multiplexen ja nicht mehr.

Klar funktioniert das mit Multiplexing auch.
Du schaltest ja beim Multiplexing die einzelnen
Anzeigestellen zeitlich nacheinander einzeln ein.
Wenn es dunkler werden soll, schaltest du die
Anzeigen eben schon vor Ablauf der Zeit aus und
läßt sie aus bis die nächste Stelle dran ist. Je
zeitiger du ausschaltest, um so dunkler die Anzeige.

Gruß Reinhard

von Hans (Gast)


Lesenswert?

Die DIL 16 variante gibt es leider bei R oder C nicht.

@severino
Nein, ist privat, wird auch keine Serie ;)
Wegen Multiplex: Habe 11 Anzeigen, wenn ich die multiplexe dachte ich 
mir das ich Unregelmäßigkeiten in der Helligkeit bekomme durch das 
Umschalten.
Es findet sich auch ein Hinweis im PWM Tutorial (ganz unten, leider ohne 
Angabe von Gründen).

von Hans (Gast)


Lesenswert?

@reirawb
ach so, Du meinst also PWM nicht extra realisieren (für die Versorgung) 
und die Segmente start zu schalten, wie ich das gedacht hatte, sondern 
PWM und Multiplex verbinden.
Also eine feste Frequenz in der die Anzeigen durchgeschaltet werden, und 
innerhalb dieser Zeitspanne dann die Einschaltdauer ändern.
Hab ich das richtig verstanden? Klingt ja eigentlich ganz gut.

Nur welche Frequenz nehme ich da?
Für PWM nimmt man ja immer was um ein paar kHz oder?
Die bräuchte ich fürs Multiplexen dann ja auch, richtig?

Gruß
Hans

von Reinhard R. (reirawb)


Lesenswert?

@Hans
Genau so. Sozusagen PWM in Software und mit dem
Multiplexing verwurschtelt :-)

Zu den Zeiten:
Du willst 11 Anzeigen multiplexen, da würde ich die
Multiplexfrequenz so bei 1000 Hz ansiedeln, also
1 Millisekunde Zykluszeit. Das ergibt eine Wiederholrate
von ca. 90Hz, ist immer noch flimmerfrei.

Nun kommt es darauf an, wozu die PWM dient.
Willst du die Anzeige langsam ein- und ausblenden,
dann müßtest du schon mit einer 8 Bit PWM rangehen.
Da kommst du auf eine Zykluszeit von ca. 4 µSekunden,
das wird schon arg eng mit der Ptrogrammierung.
Prozessor möglichst hoch takten und Assembler verwenden.

Soll die Anzeigenhelligkeit nur an die Umgebung
angepasst werden, dann würde ich eine 4 Bit PWM
vorschlagen. Zykluszeit ist dann 62,5 µSekunden.
Da hast du 16 Helligkeitsstufen, die sollten dafür
reichen.

Alles dazwischen ist natürlich auch möglich.

Gruß Reinhard

von Fritz (Gast)


Lesenswert?

Wieso so kompliziert?

Man nehme einen Timer im Fast PWM Modus, dessen Frequenz ausreichend 
hoch ist, um die Anzeige flimmerfrei darzustellen.

Im Overflow Interrupt macht man dann das Multiplexing und im Compare 
Interrupt schaltet man die Anzeige aus. Und schon hat man eine 
gemultiplexte Anzeige mit regelbarer Helligkeit.

von Hans (Gast)


Lesenswert?

@Fritz
Auch eine Idee. Aber wenn ich das richtig sehe würde mann dann im PWM 
Takt multiplexen, oder? Ist das nicht etwas hoch?

Hatte gedacht evt. die Hardware PWM zu nehmen und die Signalleitungen 
mit Logik-Bausteinen mit dem PWM Pin UND zu verknüpfen. Und ein 
vielfaches der PWM Frequenz würde ich dann als multiplex Frequenz 
nutzen. Dann hab ich das Timing-Problem in der Software nicht. Ist das 
Sinnvoll oder gibt es da was besseres?

Gruß
Hans

von Fritz (Gast)


Lesenswert?

Eine PWM Frequenz muss nicht zwingend x kHz haben. Wenn du z.B. 5 
Anzeigen mit 100 Hz multiplexen willst, reicht hier eine PWM Frequenz 
von 500 Hz auch aus. Allerdings kann man LED Anzeigen auch problemlos 
schneller takten, ist aber in dem Fall nicht notwendig.

Die Lösung die du da vorhast würd ich nicht nehmen, ist nur ein 
unnötiger Hardwareaufwand und mir fällt da jetzt auch kein Vorteil ein.

von Hans (Gast)


Lesenswert?

@Fritz
mmm, dann hab ich Dein vorheriges Posting nicht verstanden. Wenn PWM mit 
500Hz läuft und ich multiplex mit dem Overflow Interrupt mache, 
multiplexe ich doch auch mit 500Hz, oder hab ich da was falsch 
verstanden?

von Falk B. (falk)


Lesenswert?

@ Hans (Gast)

>Wenn PWM mit 500Hz läuft und ich multiplex mit dem Overflow Interrupt mache,
>multiplexe ich doch auch mit 500Hz,

Ja.

MFG
Falk

von Fritz (Gast)


Lesenswert?

Ok, da hab ich mich etwas unverständlich ausgedrückt. Mit der 
Multiplexfrequenz meinte ich eigentlich die Bildwiderholfrequenz.

Prinzipiell meinte ich das gleiche wie Reinhard Richter oben schon 
geschrieben hat. Eigentlich funktioniert das wie normales Multiplexing, 
nur wird der Timer eben im Fast PWM Modus genutzt, wodurch man mit dem 
Compare Interrupt die Anzeige bereits vorzeitig ausschalten kann.

von Reinhard R. (reirawb)


Lesenswert?

@Fritz
Ist noch besser als meine Variante.
Ich hatte mal sowas aufgebaut mit 4 Anzeigestellen und 4 Bit PWM
ganz in Software mittels Timerinterrupt.
4 Anzeigen * 100 Hz = 2,5 mSek. / 16 (4Bit-PWM) = 156 µSek. Zykluszeit
Da habe ich für jeden Zyklus einen Timerinterrupt ausgelöst und
den Rest per Software geregelt. Hat prima funktioniert, ist aber
aus heutiger Sicht sehr umständlich. Da ist deine Lösung besser
weil weniger zeitkritisch.

Gruß Reinhard

von Paul H. (powl)


Lesenswert?

du könntest auch per hardware-pwm einen transistor ansteuern über den 
die anodenspannungen der anzeigen laufen. somit kann sich deine software 
aufs multiplexing konzentrieren während die hardware-pwm die 
helligkeitsregulierung übernimmt. sollte dein prozessorchen allerdings 
nicht soviel zu tun haben ist die softwarelösung immernoch die 
zweckmäßigste.

von Hans (Gast)


Lesenswert?

@Fritz
Ok, wenn ich das richtig sehe brauch ich den Timer gar nicht in den PWM 
Mode setzen. Einfach den Normal Mode, bei einem Compare
Interrupt schalte ich alle 8 Pins aus. Bei einem Overflow Interrupt 
wechsel ich zum nächstem Segment und schalte die Portpins entsprechend 
der Ziffer ein.
Soweit richtig?

von Hans (Gast)


Lesenswert?

@powl
Ne, der tut sonst nicht wirklich viel. Hohlt sich höchstens noch die 
aktuelle Zeit per DCF77. Aber das sollte ja locker passen.

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Die BCN-Netzwerke von Reichelt lötet man nicht wirklich gerne per Hand. 
Das sind super-kleine Netzwerke. Wir löten von Hand auch nur Fehler 
rein!

Die kosten zwar nix (2 Ct) aber bdeuten sehr aufwendige Handarbeit - 
besser ist da jedes SIL !

In der maschinellen Produktion ist er aber nicht zu schlagen ... außer 
bei der Verlustleistung. Da wundert mich der Einsatz bei LEDs schon !

von Fritz (Gast)


Lesenswert?

Das müsste auch mitm Normal Mode funktionieren, der Fast PWM Mode hat 
nur den Vorteil, dass das OCRx Register nicht sofort, sondern erst beim 
nächsten Durchlauf aktualisiert wird. Dadurch ist sichergestellt, dass 
der Compare Interrupt bei einer Änderung des Registers (von einen 
kleinen auf eine größeren Wert) nicht zweimal hintereinander aufgerufen 
wird. (Bezieht sich jetzt alles auf nur die AVRs)

von Hans (Gast)


Lesenswert?

@Fritz
Ah, super. Danke. Daran hätte ich bestimmt nicht gedacht.

Hab da jetzt mal ein Schaltplan gemacht. Musste das aktivieren der 
einzelnen Segmente per Schieberegister umsetzen da die Portpins sonst 
nicht reichen.

Kann das so funktionieren? Oder ist da noch grobe Fehler drin. Hab mit 
Eagle noch nicht so die Erfahrung.
Ein Problem das mir grad aufgefallen ist, ich bekommen das alles gar 
nicht auf eine Europlatine. Gibt es da eine Möglichkeit das auf zwei 
aufzuteilen?
Ist aber wohl eher eine Frage fürs Eagle Forum...

Gruß
Hans

von Hans (Gast)


Angehängte Dateien:

Lesenswert?

Anhang vergessen... :(

von Reinhard R. (reirawb)


Lesenswert?

> Hab da jetzt mal ein Schaltplan gemacht. Musste das aktivieren
> der einzelnen Segmente per Schieberegister umsetzen da die
> Portpins sonst nicht reichen.

Da hast du 4 Pins benutzt, da kannst du alternativ auch zwei 74HC(T)138
kaskadieren, oder einen 74HC(T)154 einsetzen. Der Vorteil ist, das du
die anzuzeigende Stelle direkt binär ausgeben kannst und nicht erst eine
Schieberoutine programmieren mußt.

Ich vermisse übrigens in deinem Plan noch ein paar Segmentwiderstände,
aber die hast du sicher vorgesehen :-)

Gruß Reinhard

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.