8x BCD-2-dec fuer 55 Outputs - Tabelle

OP #2414507
Lesenswert?

Hallo liebe Leute,

habe danach im netz fleissig gesucht, aber leider nicht gefunden.
Ich verbinde 8x CD4028BMS BDC-zu-dez decoder, wie im Datenblatt um 55 
Ausgaenge zu bekommen. (angesteurt mit insg. 6 GPIOs).
Gibts sowas eigentlich als fertiges IC mit den CMOS-Invertern?

Im Datenblatt gibts die Tabelle fuer 16 Pins (2x BCDs).

Hat jemand die Tabelle fuer 64 Ausgaenge,
oder ewtl. sogar schon implementiert im Code?

Vielen Dank im Voraus

Gruesse - Michael
Moderator (Firma: Titel) Persönliche Seite #2414522
Lesenswert?

Lies mal deinen Post so durch, wie wenn du nichts von deinem Problem 
wissen würdest. Und: ergibt da irgendwas einen Sinn?

Ich könnte mir vorstellen, dass du mit einem 6 Bit Wort (also 64 
Möglichkeiten) jeweils 1 aus 55 Ausgängen aktivieren willst. Ist das 
soweit korrekt?

Warum nimmst du dann diesen Decoder, und nicht einen 1 aus 8 (oder 1 aus 
16) Decoder wie z.B. den
http://www.cl.cam.ac.uk/teaching/2003/Hardware/datasheets/74hc154.pdf
Dann wäre die Zusammenschaltung der insgesamt 4 Decoder wesentlich 
einfacher...

EDIT:
> Im Datenblatt gibts die Tabelle fuer 16 Pins (2x BCDs).
Wie kommst du auf (2x BCDs)?
Eine (in Zahlen 1) BCD-Stelle hat mit ihren 4 Bits schon 16 
Möglichkeiten. Alledings sind 6 davon ungültig...
#2414531
Lesenswert?

Michael Gromov schrieb:
> Hallo liebe Leute,
>
> habe danach im netz fleissig gesucht, aber leider nicht gefunden.
> Ich verbinde 8x CD4028BMS BDC-zu-dez decoder, wie im Datenblatt um 55
> Ausgaenge zu bekommen. (angesteurt mit insg. 6 GPIOs).

Hä?

Dir ist aber schon klar, dass du nicht 55 voneinander unabhängige 
Ausgangsleitungen hast, sondern logisch gesehen 8 "Ausgängs-ports", 
wobei an jedem Port immer genau 1 von 8 Leitungen aktiv (oder 1 von 10) 
aktiv sein kann und die anderen nicht.

> Im Datenblatt gibts die Tabelle fuer 16 Pins (2x BCDs).
Hä?
Der Baustein hat doch gar keine 16 Ausgänge. Schau dir die Tabelle noch 
einmal an, die unteren 6 BCD Werte münden alle darin, dass keine einzige 
Ausgangsleitung aktiv ist.


Deine ganze Beschreibung klingt für mich nach: Eigentlich willst du ganz 
etwas anderes, nur hast du anstelle der richtigen Frage gleich mal die 
Antwort vorweggenommen, von der du glaubst, dass sie dein Problem löst.

Gibt es einene elektrischen Grund, warum du ausgerechnet diesen Baustein 
nimmst (Spannung, Strom)? Denn: Was spricht gegen eine 
Schieberegisterkette? Damit kann man tatsächlich 55 Ausgänge 
realisieren, die alle voneinander unabhängig sind.
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister
OP #2414563
Lesenswert?

@lkmiller - ja hast recht, etwas ungluecklich ausgedrueckt.
Mein ziel ist es mit 6 Pins (also ein Port auf dem uC) 55 Leitungen zu 
steuern.
>Warum nimmst du dann diesen Decoder, und nicht einen 1 aus 8 (oder 1 aus
>16) Decoder wie z.B. den
>http://www.cl.cam.ac.uk/teaching/2003/Hardware/dat...
SUPER! ich wusste nicht, dass ein 4-to-16 line dec. existiert, das macht 
es viiiiel einfacher! ich muss nur, wie du gesagt hast 4 davon 
verbinden.
Dazu brauche ich auch Inverter. Gibt es auch 5-to-32 Decoder?

>Wie kommst du auf (2x BCDs)?
Im Datenblatt auf der Seite 8 (typical appl.) gibt es ein BEispiel, wie 
man 2 BCDs mit 4 Pins steuern kann - das habe ich gemeint :)
Meine Frage war - gibts du fuer diese Verbindung ewtl. auch eine solche 
Tabelle? (ich hoffe das war verstaendlich :) )

@kbuchegg:
>Dir ist aber schon klar, dass du nicht 55 voneinander unabhängige
>Ausgangsleitungen hast, sondern logisch gesehen 8 "Ausgängs-ports",
>wobei an jedem Port immer genau 1 von 8 Leitungen aktiv (oder 1 von 10)
>aktiv sein kann und die anderen nicht.
Das ist mir klar, das will ich auch, denn es wird nie mehr als 1x 
Leitung in einem Moment aktiv sein.

>Der Baustein hat doch gar keine 16 Ausgänge. Schau dir die Tabelle noch
>einmal an, die unteren 6 BCD Werte münden alle darin, dass keine einzige
>Ausgangsleitung aktiv ist.
Im Datenblatt auf der Seite 8 (typical appl.) gibt es ein Beispiel, wie 
man 2 BCDs mit 4 Pins steuern kann und dabei 16 Leitungen als Ausgaenge 
hat (wie du richtig geschriebn hast - 2x Ports je 8 Leitungen) - das 
habe ich gemeint :)

wie gesagt, mein ziel ist es mit 6 Pins (also ein Port auf dem uC) 
7xPorts (55 Leitungen) zu steuern. Dabei wird max an einer Leitung in 
einem Moment Spannung anliegen, daher spricht natuerlich gegen 
Schieberegister nichts, aber soweit ich das verstehe laesst es sich auch 
mit den BCDs realiesieren.
Gast #2414582
Lesenswert?

Also, wenn ich es recht verstehe, möchtest du mit 6 Eingangsleitungen 55 
verschiedene Ausgangsleitungen ansteuern, wobei jeweils nur eine aktiv 
sein soll (oder kann).
Das ist genau der Einsatzzweck für die Decoder des Typs 74HC138 
(Ausgänge sind aktiv "0") oder 74HC238 (Ausgänge aktiv "1").

http://www.mikrocontroller.net/part/74HC138
http://www.mikrocontroller.net/part/74HC238

Von diesen Bauteilen brauchst du jetzt 9 Stück, die in zwei Ebenen 
verschaltet werden.
Der vordere decodiert die obenen 3 Eingangsleitungen, seine 8 Ausgänge 
steuern somit jeweils einen weiteren dieser Decoder an, über deren 
"enable" Eingang (dabei auf korrekte Auswahl der "enable" Polarität 
achten).
Die zweite Ebene mit den 8 weiteren Bauteilen bekommt die unteren 3 
Eingangsleitungen verpasst, parallel an jeweils alle Eingänge der 
Decoder zu führen.
Hinten stehen somit 64 Ausgänge zur Verfügung (Nr. 0 - 63), wobei in 
dieser Konstellation (6 Eingangspins) eine vollständige Dekodierung 
vorliegt, d.h. immer ein Ausgang aktiv ist, alle anderen passiv.
Wenn du nur 55 brauchst, bleiben eben 9 Ausgangspins übrig (offen); 
deren Wertenummern aktivieren somit keinen der benutzen 55 Ausgänge.
OP #2414605
Lesenswert?

danke Erich,

so in etwa ist es ja auch mit dem CD4028BMS.
http://www.datasheetcatalog.org/datasheet/intersil/fn3303.pdf
auf der 9.ten Seite ist die Schaltung sogar schon realisiert (mit 
zusaetzlichen invertern).
Aber Lothar hat es noch einfacher vorgeschlagen und zwar mit 4-to-16 
dec. Dabei brauchte ich sogar nur 4 decoder.
Was ich aber immer noch gerne wissen moechte ist, ob jemand die 
Pin-Ansteurungs-Tabelle fur eine solche Anwendung hat. Also im Klartext 
suche ich nach einer Tabelle wie sowas:

um ausgang.1  auf 1 zu setzen ->  A=1,B=1,C=0....F=0
um ausgang.20 auf 1 zu setzen ->  A=0,B=0,C=1....F=1
um ausgang.55 auf 1 zu setzen ->  A=1,B=0,C=1....F=1

usw.
ewtl. hat es jemand schon in C implementiert, das waere noch besser

EDIT:
Mit A,B,C...F meine ich die Pins des uC
#2414610
Lesenswert?

Erich schrieb:
> Also, wenn ich es recht verstehe, möchtest du mit 6 Eingangsleitungen 55
> verschiedene Ausgangsleitungen ansteuern, wobei jeweils nur eine aktiv
> sein soll (oder kann).
> Das ist genau der Einsatzzweck für die Decoder des Typs 74HC138
> (Ausgänge sind aktiv "0") oder 74HC238 (Ausgänge aktiv "1").
>
> http://www.mikrocontroller.net/part/74HC138
> http://www.mikrocontroller.net/part/74HC238
>
> Von diesen Bauteilen brauchst du jetzt 9 Stück, die in zwei Ebenen
> verschaltet werden.

...oder man nimmt gleich eine 8 x 7 Matrix.
Gruss
Harald
Moderator (Firma: Titel) Persönliche Seite #2414632
Lesenswert?

Michael Gromov schrieb:
> um ausgang.1  auf 1 zu setzen ->  A=1,B=1,C=0....F=0
> um ausgang.20 auf 1 zu setzen ->  A=0,B=0,C=1....F=1
> um ausgang.55 auf 1 zu setzen ->  A=1,B=0,C=1....F=1
Wesentlich einfacher wäre es, wenn du tatsächlich eine binäre Beziehung 
der Ausgänge realisieren könntest:
000000 = kein Ausgang
000001 = 1. Ausgang
000010 = 2. Ausgang
000011 = 3. Ausgang
000100 = 4. Ausgang
usw...

BTW: Dir ist schon klar, dass bei dieser 6 zu 55 Decoder Lösung immer 
nur 1 Ausgang aktiv sein kann?

Mit 9 Stück 74238 könntest du auch den Multiplexer aufbauen:
1
              74238
2
             .-----.                 .-----. 
3
   D5..D3 ---|     |-----------------|E3   |---             
4
             |     |-                |     | :             
5
             |     |-                |     | :             
6
             |     |-            .---|     |---             
7
             |     |- ...        |   '-----'   
8
             |     |-            o--- ... 8x 74238
9
             |     |-            |   .-----.          
10
             |     |-------------+---|E3   |---                
11
             '-----'             |   |     | :                
12
                                 |   |     | :                
13
    D2..0 -----------------------o---|     |---                
14
                                     '-----'
[
OP #2414650
Lesenswert?

ja klar, das will ich auch, das immer nur 1Ausgang aktiv ist...

Das waere natuerlich am besten, wenn ich das so realisieren koennte 
(binäre Beziehung).
Bei deiner schaltung brauechte man aber auch inverter glaub ich.
Dann koennte man das in einem Array speichern.


Weisst du zufaellig ob es bereits realisiert wurde und irgendwo 
vorliegt?
Das wuerde aber auch mit einem 4-to-16 so funktionieren gel?
#2414668
Lesenswert?

> Das ist mir klar, das will ich auch, denn es wird nie mehr als 1x
> Leitung in einem Moment aktiv sein.

Ah. ok.
Das ist etwas ungewöhnlich. Aber ok.

> Aber Lothar hat es noch einfacher vorgeschlagen und zwar mit 4-to-16
> dec. Dabei brauchte ich sogar nur 4 decoder.

Dann brauchst du 8 Ausgangspins

oder aber du nimmst 5 Stück von den 4:16 Decodern und lässt den 5. die 
Selektion machen. Dann kommst du mit 6 Ausgangspins durch

> Was ich aber immer noch gerne wissen moechte ist, ob jemand die
> Pin-Ansteurungs-Tabelle fur eine solche Anwendung hat.
> Also im Klartext suche ich nach einer Tabelle wie sowas:

Wo liegt denn das Problem?
Die unteren 4 Bits (deiner 6-Bit Daten) gibst du direkt auf die 4 4:16 
Dekoder. Und zwar auf alle gleichzeitig. Und mit den restlichen 2 Bits 
entscheidest du, welcher der 4 Decoder aktiv werden soll. Das kann man 
entweder in Software machen (die 2 Bits bestimmen welcher von 4 µC 
Ausgängen den jeweiligen Decoder aktiviert) oder in Hardware (mit einem 
weiteren Decoder, der die restlichen 2 Bits über 2µC wieder auf einen 
Decoder weitergibt, der sie dann in 4 Leitungen aufpfriemelt). Auf jeden 
Fall braucht man da keine Tabelle für.
Gast #2414673
Lesenswert?

Die obige Zeichnung von Lothar Miller ist prinzipiell korrekt.

Falsch ist jedoch:
>000000 = kein Ausgang
>000001 = 1. Ausgang

Wie ich 10.11.2011 09:19 schon schrieb, handelt es sich bei Verwendung 
von insgesamt 9 Bauteilen um eine vollständige Decodierung, die alle 
binäre Kombinationen von 0 - 63 erfasst (64 Stück).
Somit ist bei Einangswert 0 (Null), in binärer Schreibweise der Bits 
000000, somit der niedrigeste Ausgang des untersten Decoders aktiv.
Es gibt keinen Eingangswert der "alles inaktiv" hält.
Nur wenn man eine Teilmenge der 64 möglichen in der Verwendung ausläßt, 
hat man quasi inaktive Werte.
Nutzt man 55 der 64 möglichen, bleiben 9 Ausgänge unverwendet, deren 
Wertenummern sind dann quasi inaktiv.

@Michael Gromov
Nein, weitere Inverter braucht man nicht.
Es bringt keinen Vorteil, 4-zu-16 Decoder zu verwenden, denn diese haben 
keine passenden "enable" Eingänge.
Ausserdem sind 4-16 Decoder unverhältnismäßig teuer.
OP #2414691
Lesenswert?

Karl Heinz Buchegger schrieb:
> Wo liegt denn das Problem?

naja ich habe das wohl zu kompliziert gesehen. Was spricht denn gegen 
die Realisierung auf die ich schon hingewiesen habe:
http://www.datasheetcatalog.org/datasheet/intersil...
auf der 9.ten Seite ?

Von prinzip sollte es doch das gleiche sein, und ich verwende dann nur 
8x decoder.

Erich schrieb:
> Ausserdem sind 4-16 Decoder unverhältnismäßig teuer.

oh, das war mir nicht bewusst
#2414697
Lesenswert?

Die Schieberegister haben den Vorteil, Du brauchst immer nur 3 Pins vom 
Micro, egal ob 8 Ausgänge oder 800.

Auch brauchst Du keine zusätzliche Dekodierung, also immer nur ein SRG 
je 8 Ausgänge.

Die Dekoder sind nur dann sinnvoll, wenn man aus Sicherheitsgründen die 
Verriegelung braucht, also keine 2 gleichzeitig aktiv sein dürfen.

Es gibt die SRG auch gleich mit Leistungsausgang (500mA), z.B. 
TPIC6B595.


Peter
Moderator (Firma: Titel) Persönliche Seite #2414704
Lesenswert?

Erich schrieb:
> Falsch ist jedoch:
>>000000 = kein Ausgang
>>000001 = 1. Ausgang
Nein, es ist nicht falsch, es ist eine Definitionssache: ich lasse 
einfach den untersten Ausgang offen und definiere den 2. Ausgang zur 
Nummer 1...  ;-)

> Somit ist bei Einangswert 0 (Null), in binärer Schreibweise der Bits
> 000000, somit der niedrigeste Ausgang des untersten Decoders aktiv.
Ob ich die oberen 9 Ausgänge unbeschaltet lasse, oder den untersten und 
die oberen 8, bleibt sich in der Summe gleich. Praktisch wäre bei meiner 
Definition aber, dass in der Software eine 0 bedeutet, dass kein 
(verwendeter) Ausgang aktiv ist.

Das kann alles undefiniert sein und darf es bleiben, solange nicht 
bekannt ist, WOFÜR das Ganze überhaupt gut sein soll...
#2414719
Lesenswert?

Michael Gromov schrieb:
> wieso sollte es einen Unterschied machen, ob es am Ende LEDs oder
> Transistoren sind die bestromt werden? Ich will immer noch max 1x
> aktiven Ausganng im selben moment aktiv haben...

Ich weiß leider immer noch nicht, was Du damit machst, aber der 
Unterschied ist doch klar. Wenn tatsächlich nur eine LED zu einer 
gegebenen Zeit leuchten soll, dann kannst Du die LEDs in einer Matrix 
ansteuen, also einen Decoder für die Anode, einen für die Kathode. Bei 
Transistoren geht das so nicht.
OP #2414722
Lesenswert?

>Ich weiß leider immer noch nicht, was Du damit machst, aber der
>Unterschied ist doch klar. Wenn tatsächlich nur eine LED zu einer
>gegebenen Zeit leuchten soll, dann kannst Du die LEDs in einer Matrix
>ansteuen, also einen Decoder für die Anode, einen für die Kathode. Bei
>Transistoren geht das so nicht.
:D ok das ist klar :D
Gast #2414734
Lesenswert?

@Lothar Miller
>eine Definitionssache

 ... naja ...
Es ist die die Grundlagen-Leser hier besser, gleich dir korrekte 
Zählweise beginnend ab Null einzuführen; auch Null ist eine gültige 
Zahl.


@Lothar Miller
>Die Schieberegister...

Hierzu meine ich, der Fragesteller sollte erstmal die von ihm geplante 
statische Decodierung aufbauen und dabei lernen.
Um Schieberegister mit einen uC getaktet anzusteuern, soweit ist er 
aufgrund seiner momentanen Fragen noch nicht.


@Michael Gromov
Die im Betreff genannte Abkürzung "BCD" ist in diesen Zusammenhänge 
irrelevant bzw. unzutreffend. Wir haben hier eine binäre Decodierung, 
sonst nix.
Mit 6 Eingangsleitungen ist es auch gar nicht möglich, als BCD Codierung 
55 Zustände darzustellen (denn die untere 4-er Gruppe würde nur "0" bis 
"9" erlauben, somit nur insgesamt 40 Werte).
OP #2414746
Lesenswert?

@Erich
okkkay, den Ausdruck BCD habe ich vom datenblatt entnommen, aber wenn 
man den Ausdruck "uebersetzt", dann hast du recht - hier wird es nicht 
eingesetzt.
Du meinst, ich waere noch nicht soweit, um mit schieberegistern zu 
arbeiten - wuerdest du diese Aufgabe mit diesen oder mit den 8x 4-to-10 
BCD-to-dig. dec loesen?
nochmal: 55x Ausgeange gesteuert mit 6x Pins, dabei 1x Ausgang aktiv pro 
Zeitpunkt
#2414759
Lesenswert?

Michael Gromov schrieb:


> Du meinst, ich waere noch nicht soweit, um mit schieberegistern zu
> arbeiten -

So wild ist das auch wieder nicht. Ein bischen geordnetes Pinwackeln mit 
3 Pins und gut ists.

> wuerdest du diese Aufgabe mit diesen oder mit den 8x 4-to-10
> BCD-to-dig. dec loesen?
> nochmal: 55x Ausgeange gesteuert mit 6x Pins, dabei 1x Ausgang aktiv pro
> Zeitpunkt


Und was hängt jetzt dann wirklich hinten an den Ausgängen.
Led, Relais,  was?

Wozu wird das alles benutzt?

55 aus 6 ist reichlich ungewöhnlich. Vom Wissen was da hinten dran 
hängt, hängt aber auch ab, welche Lösung sinnvoll ist.
#2414801
Lesenswert?

Michael Gromov schrieb:

> wieso sollte es einen Unterschied machen, ob es am Ende LEDs oder
> Transistoren sind die bestromt werden? Ich will immer noch max 1x
> aktiven Ausganng im selben moment aktiv haben...

LEDs, auch die in OKs sind üblicherweise potentialfrei. Dadurch kann
man die Ansteuerung Bei Benutzung einer Matrix stark vereinfachen.
Man braucht dann nur zwei 8 aus 3 Dekoder.
Gruss
Harald
#2414825
Lesenswert?

Michael Gromov schrieb:
> wie soll das gehen? hast du dann nicht max 16 ausgaenge?

Indem man sie als Matrix anordnet.

Mit dem einen Decoder wählt man 1 Zeile aus 8 möglichen aus.
Mit dem anderen Decoder wählt man dann aus dieser Zeile 1 von 8 Spalten 
aus.

Über den Zeilentreiber wird quasi 1 von 8 Zeilen an + gelegt. Mit dem 
Spaltentreiber wird 1 von 8 Spalten an - gelegt. Die LED, die im 
Schnittpunkt der Zeile und Spalte sitzt, leuchtet. Allen andern fehlt 
was. Entweder sie sind nicht an + geschaltet oder sie sind nicht an - 
geschaltet.
#2415060
Lesenswert?

Michael Gromov schrieb:
> würde das auch mit einem Strom vom 300mA klappen? denn dabei würde der
> strom über die decoder fließen

Du kannst natürlich Transistoren am Ausgang der Decoder haben. Die 
Decoder sind ja selbst auch nicht potientialfrei. Danach können die LEDs 
sehr wohl in einer Matrix angeordnet sein, denn die LEDs sind ja 
potentialfrei. Ist das wirklich so schwer zu verstehen?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren