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?
@ 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
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?
@powl Ne, der tut sonst nicht wirklich viel. Hohlt sich höchstens noch die aktuelle Zeit per DCF77. Aber das sollte ja locker passen.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.