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
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
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.
@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 :)
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).
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?
> 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
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).
@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
@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
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.
@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
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.
@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?
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.
@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
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.
@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?
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 !
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)
@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
> 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