Hallo, ich habe 12 Stück 7-Segmentanzeigen (Low Current) die ich nun um Pins und Layoutaufwand zu sparen mittels Multiplexing ansteuern will. Problem: Der Tiny2313 hat leider nicht genug "Füße" für 8 Segmentausgänge und 12 Digitausgänge. Ich habe mir deshalb folgendes Überlegt: Ich Verwende kaskadierte 74HC595, ich möchte damit nicht nur die Segmente Ansteuern sondern auch noch die Selektierung des Digits machen. Als Treiber für die Anoden der Digits würde ich NPN-Transistoren in Emitterschaltung verwenden (Spart auch noch den Basiswiderstand), die Segmente werden normal über einen ULN2803 gefüttert. Ich gebe also in den HC595 nicht nur die Bitmuster für die Segmente sondern schalte damit auch die betreffenden Digits weiter. Das ganze läuft interruptgesteuert, und ich habe dadurch auch noch einige Pins am uC frei für andere Zwecke. Leider konnte ich im Forum nichts dazu finden, ob das schon mal jemand gemacht hat der eventuell eine Aussage darüber treffen kann ob das so komplikationslos geht oder mit welchen Problemen ich rechnen muss... Grüße Rolle
>Leider konnte ich im Forum nichts dazu finden,
Dann such mal weiter.
Rolle schrieb: > Leider konnte ich im Forum nichts dazu finden, ob das schon mal jemand > gemacht hat Jemand? Tausende. Noch ein Hinweis dazu: man braucht keine 12 Digit-Pins. Es reichen 4, die man dekodiert, weil ja nur ein Digit auf einmal an sein darf. Gruss Reinhard
> Als Treiber für die Anoden der Digits würde ich NPN-Transistoren in > Emitterschaltung verwenden (Spart auch noch den Basiswiderstand), Emitterschaltung ohne Basiswiderstand? Du meinst Kollektorschaltung, die würde ich für die Segmentansteuerung raten. > Segmente werden normal über einen ULN2803 gefüttert. Puh. Die Sch**teile. Welche Seganzeigen nimmst denn eigentlich? Wenn du LowCurrent-Typen verwendest (HDN175), dann kann der 595 die Segmente direkt treiben..
Matthias Lipinsky schrieb: >> Als Treiber für die Anoden der Digits würde ich NPN-Transistoren in >> Emitterschaltung verwenden (Spart auch noch den Basiswiderstand), > > Emitterschaltung ohne Basiswiderstand? Du meinst Kollektorschaltung, die > würde ich für die Segmentansteuerung raten. > > >> Segmente werden normal über einen ULN2803 gefüttert. > > Puh. Die Sch**teile. Welche Seganzeigen nimmst denn eigentlich? Wenn du > LowCurrent-Typen verwendest (HDN175), dann kann der 595 die Segmente > direkt treiben.. Du redest ja als haette Dir ein ULN2803 mal die Frau ausgespannt... ;) Vielleicht musst Du die Teile auch nur mal richtig kennenlernen. Dann macht naemlich auch Rolles Aussage mit dem Weglassen des Basiswiderstands wieder Sinn, die ULN2803 haben naemlich schon einen integriert. Dass der 595 eine Low-Current-LED pro Pin direkt treiben kann, stimmt allerdings. Bis 5mA, wenn ich nicht irre... Volker
>Dass der 595 eine Low-Current-LED pro Pin direkt treiben kann, stimmt >allerdings. Bis 5mA, wenn ich nicht irre... Pro Pin bis 20mA, in Summe bis 80mA. Also 10mA pro Pin dauerhaft. Reicht für angegebene Seg-Anzeigen locker bis 10:1 >u redest ja als haette Dir ein ULN2803 mal die Frau ausgespannt... ;) >Vielleicht musst Du die Teile auch nur mal richtig kennenlernen. Hehe.. Lt. Datenblatt haben die Widerstände am Eingang. Das nützt allerdings nichts, wenn man dahinter eine Emitterschaltung bauen will.
Matthias Lipinsky schrieb: >>Dass der 595 eine Low-Current-LED pro Pin direkt treiben kann, stimmt >>allerdings. Bis 5mA, wenn ich nicht irre... > > Pro Pin bis 20mA, in Summe bis 80mA. Also 10mA pro Pin dauerhaft. > Reicht für angegebene Seg-Anzeigen locker bis 10:1 Hab gerade nochmal schnell in ein Datenblatt geschaut. Da waeren es max. 8.75mA pro Pin (weil Summe <= 70mA). Zur Not koennte man das ja noch verdoppeln, wenn man 4x Source und 4x Sink macht... Aber fuer Low-Currents reicht es in jedem Fall. >>u redest ja als haette Dir ein ULN2803 mal die Frau ausgespannt... ;) >>Vielleicht musst Du die Teile auch nur mal richtig kennenlernen. > > Hehe.. > Lt. Datenblatt haben die Widerstände am Eingang. Das nützt allerdings > nichts, wenn man dahinter eine Emitterschaltung bauen will. Hae? Die Widerstaende am Eingang sind logischerweise die Basiswiderstaende... Warum sollten die nichts nuetzen? Volker
>Hae? Die Widerstaende am Eingang sind logischerweise die >Basiswiderstaende... Warum sollten die nichts nuetzen? Diese sind im ULN drin. Aber bei dem Satz hier: >>Als Treiber für die Anoden der Digits würde ich NPN-Transistoren in >>Emitterschaltung verwenden (Spart auch noch den Basiswiderstand), bin ich davon ausgegangen, dass er eine diskrete Emitterschaltung als Ansteuerung der COMMON-Leitung verwenden will.
Hallo! > Ansteuerung der COMMON-Leitung Bei der Ansteuerung deiner Matrix gibt es zwei COMMON Leitungsgruppen: Spalten und Zeilen. Bei Siebensegmentanzeigen sind das Segment- bzw. Digit-Leitungen. Je nachdem wo die anoden und katoden der LEDs sind müssen die spalten gegen GND und die Zeilen gegen Plus geschaltet werden oder umgekehrt. Gegen GND kann man ganz gut die ULN2803 verwenden.
Rolle schrieb: > Ich Verwende kaskadierte 74HC595, ich möchte damit nicht nur die > Segmente Ansteuern sondern auch noch die Selektierung des Digits machen. Ja, kein Problem, brauchst dann 3 Stück HC595 kaskadiert. Ich würde die Segmente multiplexen, dann ist das Tastverhältnis günstiger (1:8 statt 1:12). Du mußt dann die 12 Stromeinstellwiderstände in die Digitanschlüsse legen. Die Software wird dann nen Tick aufwendiger. Die ULN sind sehr langsam, d.h. es könnte nötig werden, immer erstmal alles aus auszugeben, damit es keine Geister gibt. Transistoren in Kollektorschaltung sind deutlich schneller, da kannst Du Segment+Digit gleichzeitig umschalten. Peter
> Die ULN sind sehr langsam, d.h. es könnte nötig werden, immer erstmal > alles aus auszugeben, damit es keine Geister gibt. Das sollte man sich bei Multiplexansteuerung generell angewöhnen, denn es gibt auch "träge" Anzeigeelemente (z.B. VFD).
Route_66 schrieb: > Das sollte man sich bei Multiplexansteuerung generell angewöhnen, denn > es gibt auch "träge" Anzeigeelemente (z.B. VFD). Die Trägheit der Anzeigesegmente ist schnurz. Ein einmal angesteuertes Segment kann ruhig nachleuchten. Aber es darf kein Segment beim neuen Digit leuchten, was dunkel sein soll. Enscheidend ist daher nur die Trägheit der Ansteuerung. Beim VFD ist die Ansteuerung sauschnell, es ist ja eine Elektronenröhre und die können bis zu GHz. Peter
> Beim VFD ist die Ansteuerung sauschnell, es ist ja eine Elektronenröhre > und die können bis zu GHz. Das ist leider ein Irrtum. Warum wohl geben die Hersteller von VFD ein Tastverhältnis für das Multiplexen an, das nicht der Anzahl der Stellen entspricht. Oder wozu dienen die Angaben: Pulse Duration / Blanking Duration?
Route_66 schrieb: > Oder wozu dienen die Angaben: Pulse Duration / Blanking Duration? Tja, Das geht ja aus Deinem Datenblatt nicht hervor. Und nichtmal, ob ein Blanking überhaupt nötig ist. Das Blanking könnte ja eine Maximalzeit sein, damit nicht alles mit Elektronen geflutet wird und das erste Digit nach dem Blanking heller leuchtet als die anderen. Hier ein Datenblatt ohne Blanking: http://www.newhavendisplay.com/index.php?main_page=redirect&action=url&goto=www.newhavendisplay.com%2Fspecs%2FD0116LD-29-1602.pdf Und das Tastverhältnis entspricht auch der Gitterzahl. Peter
> Und das Tastverhältnis entspricht auch der Gitterzahl.
Wer lesen Kann ist klar im Vorteil_
Duty Cycle 1/17 bei 16 Gittern???
... oder hier: 12 Gitter -> Duty cycle 1/15
Hallo! Fairerweise werde ich Dir mal erklären woher das kommt. Ich dachte, Du entstammst einer Generation, wo die Röhre noch Schulstoff war. Die Elektronen werden von der Kathode (hier direkt geheizt) emittiert. Wenn das entsprechende Gitter die Stelle freigibt - also nicht negativ ist - fliegen die Elektronen zu den Anoden die leuchten sollen und deshalb auf Anodenspannungspotential liegen. Beim Auftreffen werden die Leuchtstoffe aktiviert und geben Licht ab. Gleichzeitig werden aber auch an den Anoden Elektronen "herausgeschlagen", die so genannten Sekundärelektronen. Es bildet sich die eine "Wolke" im Fachkreis als Raumladungswolke bezeichnet. Deshalb erfand man in der Elektronenröhrengeschichte das Bremsgitter und das Schirmgitter. Das führt hier aber zu weit. Angenommen, beim VFD sollen an einer Stelle die Segmente E und F leuchten und an der nächsten nur das Seg G. Wird jetzt die erste Stelle aktiviert, bildet sich um E und F eine Elektronenwolke. Wenn man jetzt mit dem Gitter zur nächsten Stelle schaltet und gleichzeitig die Anode für das Segment G aktiviert, dan fliegt die Raumladungswolke der Segmente E und F der ersten stelle zu der jetzt aktiven Anode "G" dieser Stelle und das sieht man.
Route_66 schrieb: > Fairerweise werde ich Dir mal erklären woher das kommt. Ich dachte, Du > entstammst einer Generation, wo die Röhre noch Schulstoff war. Ich hab schon mit Röhren gebaut und dabei auch mal 350V angefaßt. Das Multiplexen von VFDs habe ich aber nicht selber gemacht, die kauft man in der Regel fertig mit Controller und 5V-Eingang. > Angenommen, beim VFD sollen an einer Stelle die Segmente E und F > leuchten und an der nächsten nur das Seg G. Wird jetzt die erste Stelle > aktiviert, bildet sich um E und F eine Elektronenwolke. Wenn man jetzt > mit dem Gitter zur nächsten Stelle schaltet und gleichzeitig die Anode > für das Segment G aktiviert, dan fliegt die Raumladungswolke der > Segmente E und F der ersten stelle zu der jetzt aktiven Anode "G" dieser > Stelle und das sieht man. Wäre es dann nicht einfacher, nicht direkt benachbarte Digits zu multiplexen? Z.B. 1, 5, 2, 6, 3, 7, 4, 8, 1 ... Wohin fliegen die Elektronen denn beim Blanking? Bei LEDs kann man aber gleichzeitig umschalten, wenn die Transistoren in Kollektorschaltung sind. Peter
> Wohin fliegen die Elektronen denn beim Blanking? Das zum Zweck des Sperrens negative Gitter "drückt" die Wolke in die Segmente E und F da sie sich ja hauptsächlich um diese Segmente gebildet hatte. Natürlich werden auch nach G Elektronen gedrückt. Weil aber beim Blanking weder E noch F noch G an Anodenspannung liegen, ist die Auftreffenergie nicht ausreichend, den Leuchtstoff zum Leuchten zu bringen und es werden auch keine neuen Sekundärelektronen erzeugt. Multiplexing 1,5,2... löst das Problem nicht, weil die Elektronen nicht zur Nachbarstelle fliegen sondern in der gleichen anzeigestelle bleiben. Es wird ja beim Multiplexing im oben genannten Beispiel nicht nur Die Anode G der nächsten Stelle auf Anodenspannung gelegt, sondern Alle G's. Deshalb findet man diesen Effekt auch beim Multiplex von Einzelröhren-VFD und bei Nixi's. > Bei LEDs kann man aber gleichzeitig umschalten, wenn die Transistoren in > Kollektorschaltung sind. Das sit unbestritten richtig.
Reinhard Kern schrieb: > Noch ein Hinweis dazu: man braucht keine 12 Digit-Pins. Es reichen 4, > die man dekodiert, weil ja nur ein Digit auf einmal an sein darf. Hmmm und wie soll ich das machen? Zur Decodierung bräuchte ich doch wieder ein externes IC oder nicht? Ich hab so was schon mal mit einem 74HC138 gemacht, allerdings nur 8-Stellig... :-) Matthias Lipinsky schrieb: > Emitterschaltung ohne Basiswiderstand? Du meinst Kollektorschaltung, die > würde ich für die Segmentansteuerung raten. Ups, sorry ich meinte natürlich die Kollektorschaltung. @all ich verwende als Anzeigen die Kingbright SA39-11SRWA von Tante Angelika (oder wem der Laden jetzt gehört, ist Frau Reichelt nicht mehr Geschäftsführerin, ich dachte die wollte das trotz Aufkauf von Farnell weiterführen?) Zur Erklärung: 1 HC595 füttert über den besagten ULN2803 (warum hasst ihr die Teile denn so? Wenn ich das Diskret aufbaue ist das viel mehr Platinenfläche für Einzeltransistoren...) die Segmente. Die Common Anode wird über einen NPN in Kollektorschaltung bestromt. Diese NPNs will ich ebenfalls über HC595 füttern. Da ich alle Schieberegister Kaskadieren kann (macht ja sonst keinen sinn...) habe ich genau 4 Pins, Data_in, Clock, Enable, RCK. Damit habe ich zwar mehr Programmieraufwand aber die Hardware bleibt schön klein und übersichtlich. Spezialbausteine von Maxim und wie die alle heißen sind zwar eine schöne Sache aber sehr teuer und teilweise schwer zu bekommen. Ich möchte gerne das an Bauteilen Verwenden was ich da habe. Das ganze wird dann noch mit einem Goldcap gegen Stromausfall abgeblockt (wird so eine Art zähler). Sobald ein Spannungseinbruch mittels interrupt detektiert wird werden sofort alle HC595 disabled (über den G-Pin) und der Controller vergleicht die aktuellen Werte mit denen die im EEPROM stehen, wenn die aktuellen Werte größer sind werden die ins EEPROM gebraten und der Controller legt sich anschließend Schlafen. MfG Rolle
>Hmmm und wie soll ich das machen? Zur Decodierung bräuchte ich doch >wieder ein externes IC oder nicht? Ich hab so was schon mal mit einem >74HC138 gemacht, allerdings nur 8-Stellig... :-) 74NC138 oder 74HC238l, je nach Polarität. >noch mit einem Goldcap gegen Stromausfall abgeblockt Vor paar Tagen gabs hier nen Tread, wo der Eröffner genau bei sowas mit nem Goldcap Probleme hatte. Such mal danach. >aufbaue ist das viel mehr Platinenfläche für Einzeltransistoren Ist das wirklich so? Achtmal BC8x7 ist nocht unbedingt größer als DIP16
Matthias Lipinsky schrieb: > 74NC138 oder 74HC238l, je nach Polarität. > > >>noch mit einem Goldcap gegen Stromausfall abgeblockt > > Vor paar Tagen gabs hier nen Tread, wo der Eröffner genau bei sowas mit > nem Goldcap Probleme hatte. Such mal danach. > > >>aufbaue ist das viel mehr Platinenfläche für Einzeltransistoren > > Ist das wirklich so? Achtmal BC8x7 ist nocht unbedingt größer als DIP16 Hallo, das mit dem Goldcap geht, allerdings nur wenn man zwei sachen beachtet: 1. Keine Billigen Dinger wo der Innenwiderstand riesig ist. 2. Alles Stromsauger außer dem uC werden blitzartig bei Spannungseinbruch abgeschaltet. Alternativ sind noch supercaps zu nennen die bringen problemlos 1A und mehr. Sind allerdings nicht billig die teile. Als ich mit so einem Ding mal experimentiert habe (22F Type bei 2,7V) hat es bei einem Kurzschluß als ich auf der Platine eine Lötstelle nachgearbeitet habe (Hab zwei Leiterbahnen mit dem Lötkolben kurzgeschlossen und nicht dran gedacht das der Supercap noch geladen war) hat es diese zwei Leiterbahnen (0,6mm breit) mit lautem Knall verdampft. Danach brauchte ich erst mal nen Kaffee... :) Wenn ich den Goldcap über eine Diode abblocke so das er nur den uC versorgt sollte das mit dem auch gehen. Zum ULN2803, ich habe vergessen zu erwähnen das ist alles wo es möglich ist mit SMD-Bauteilen aufbauen werde. (Hab keinen Bock mehr auf Löcher-Bohr-Orgien) Weiterhin sind ja einige Bauteile nur noch als SMD zu haben. Zu den BC8x7 Transistoren würden dann noch die Basiswiderstände dazu kommen und eventuell jeweils einen Pull-Down der beim ULN ebenfalls schon im Chip integriert ist. :-) Rolle
Ups zu früh auf Absenden geklickt, Einen 74NC138 kann ich nicht finden, ich habe wie schon oben geschrieben einen HC138 verwendet, allerdings hat der nur 8 Ausgänge und ist somit auf 8 Digits beschränkt. Eventuell hast du dich bei der Bezeichnung vertippt? Einen 4 to 12 Decoder habe ich bis jetzt leider noch nicht gesehen... :-)
Vergiß das mit dem Decoder, das macht alles nur unnötig kompliziert. Peter
@peda, hmm der Meinung schließe ich mich an. Verstehe ich das richtig das du ebenfalls die "direkte" methode Methode favorisierst? Wenn ich jetzt halt 12 Leiterbahnen mehr Routen muss ist das kein Problem, so viel Aufwand ist das auch nicht. Wichtig ist nur das ich am uC Pins spare. Ich will für diese Schaltung bei der das Programm recht klein ist nicht nur wegen der Pinknappheit einen größeren uC nehmen. Der Tiny2313 reicht mir für die Software bis jetzt problemlos (Speicher ist nicht mal halb voll) nur hat der Käfer zu wenig Füße... :-)
Anbei mal ne besonders einfache Variante: Du schiebst die 8 Segmentbits raus und dann legst Du an den Datenpin ne 0 oder 1 je nachdem, wie die Digits aktiv sind. Mit dem Strobe werden dann gleichzeitig die Segmente übernommen und die Digits weiter geschoben. Die Digits sind um 1 versetzt, da das Strobe erst einen Takt später übernimmt. Das geht allerdings nur mit der Kollektorschaltung (die keine Basiswiderstände benötigt) ohne Totzeit beim Weiterschalten. Mit den langsamen ULN müßte man am Segment-Output-Enable noch ne Totzeit programmieren. Peter
Hallo peda, danke für die Zeichnung das sieht sehr interessant aus. Ich glaube ich habs jetzt kapiert, vielen Dank an dich. Ich werde also mal anfangen das Layout zu erstellen. Allerdings nicht mehr heute (ist mir zu spät...:-D) sondern erst "Morgen". Die Totzeit die ich brauche da die ULNs durch die Darlington-Schaltung nicht so schnell sind werde ich sicherheitshalber mal über den Enable des HC595 einbauen, sprich diesen auch auf den uC führen. Grüße Rolle
Peter Dannegger schrieb:
> Vergiß das mit dem Decoder, das macht alles nur unnötig kompliziert.
Wieso? man kann z.B. 2 x 6 Digits multiplexen, dann hat man 2 x 595 und
1 x 138 - 8 Widerstände mehr, dafür nur halb so viele
Digittreiber-Transistoren. Meistens gibt es nehr als eine Lösung und
Denkverbote führen ganz bestimmt nicht zu optimalen Lösungen.
Ich behaupte ja auch nicht, dass das das einzig Richtige wäre. Fanatiker
haben in der Technik nix zu suchen.
Gruss Reinhard
Reinhard Kern schrieb: > Wieso? man kann z.B. 2 x 6 Digits multiplexen, dann hat man 2 x 595 und > 1 x 138 - 8 Widerstände mehr, dafür nur halb so viele > Digittreiber-Transistoren. Egal, ob 8 X 12 oder 16 X 6 Multiplex, in jedem Fall gehts mit 3 * 74HC595 und nur 3 IO-Pins des MC. Der 74HC138 ist dabei fehl am Platze. Ich hab nix gegen andere Lösungen, sie sollten halt wenigstens einen einzigen Vorteil haben. Peter
Peter Dannegger schrieb:
> Egal, ob 8 X 12 oder 16 X 6 Multiplex...
Immerhin Bewegung. Bis jetzt wurden in diesem Thread nur 12 Digittreiber
akzeptiert.
Gruss Reinhard
Reinhard Kern schrieb: > Immerhin Bewegung. Bis jetzt wurden in diesem Thread nur 12 Digittreiber > akzeptiert. Nö, ich hatte auch 12 * 8, also Segmentmultiplex vorgeschlagen, wobei zugegeben die Software etwas Sortierarbeit leisten muß. Bis zu 1:16 Multiplex sehe ich aber keine großen Probleme bezüglich der Spitzenströme. Peter
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.