Forum: Mikrocontroller und Digitale Elektronik 80 unabhängige Dezimalausgänge - Realisierung?


von Jan (Gast)


Lesenswert?

Hallo Zusammen,


ich plane gerade eine Audio Vorstufe die möglichst eine abgedrehte 
Anzeige für die Eingänge und Statusanzeige besitzen soll. Mit ein 
bisschen glück bin ich günstig an Varisymbol Röhren vom Typ ZM1350 
(funktionieren fast gleich wie eine Nixie) gekommen die das übernehmen 
sollen und mir bald zugeschickt werden, die Ansteuerung ist aber leider 
nicht so einfach...

Jede der Röhren besitzt 16 Kathoden die jeweils einzeln angesteuert 
werden müssen, deshalb bekommt jede Röhre 16 Transistoren an die 
Kathoden damit ich mit normalem TTL Pegel die Zeichen anfahren kann. Nun 
ist das Problem das ich 5 Röhren habe also 80 Zeichen die einzeln 
ansteuerbar sein müssen. Mein Gedanke war das mit BCD zu Dezimal 
Dekodern zu machen, dann könnte ich mit 8Bit alle Zeichen darstellen. 
Was ich nicht bedacht habe ist das ich jeweils nur ein Zeichen damit 
anzeigen kann, für mehr müsste ich mit multiplexen arbeiten was auch 
laut Datenblatt erlaubt ist aber Lebensdauer kostet, keine Option also.

Habt Ihr eine Idee was ich machen könnte? Wenn es geht würde ich gerne 
auf einem µC verzichten, hatten wir zwar in der Schule so fit bin ich 
allerdings nichtmehr zumal mir die Programmierumgebung fehlt. Ich denke 
aber mit normalen ICs wird das ein Bauteilgrab wenn ich gleich noch an 
die Ansteuerung denke x:

Danke schonmal!

Gruß

Jan

von MirkoB (Gast)


Lesenswert?

Ich werfe mal den 74HC595 via SPI in den Raum...
10 Stück a 8 Ausgänge = 80 Ports + Ansteuerung über Transistor.

Mirko

von Brotmann (Gast)


Lesenswert?

Was sind "Dezimalausgänge"?

von dubi (Gast)


Lesenswert?

Woher kommen denn die Daten für die Anzeigen?

von MirkoB (Gast)


Lesenswert?

...es handelt sich um ein alphanumerisches Anzeigedisplay, in welchen 
Ziffern und Buchstaben aus Strichen zusammengebaut werden können...sehr 
retro und oldschool... ;)

Soweit ich das sehe (ZM1350) hat die pro Stück 14 "Leuchtelemente". Bei 
5 Stück also 70 "Leuchtelemente" + 5 Stellenanzeigen =75.

Ich würde das ganze per kaskadiertem Schieberegister an einem µC machen.

Mirko

von Jan (Gast)


Lesenswert?

Hallo zusammen,

Danke schonmal für die Antworten. =D

den 74HC595 Schau ich mir mal an, danke!


Mit Dezimalausgängen war einfach gemeint das ich 80 voneinander 
unabhängige Ausgänge brauche, natürlich sollen auch mehrere gleichzeitig 
geschaltet werden können (macht ja sonst keinen Sinn) Ich wollte dafür 
eine Logikschaltung basteln, denke aber wie gesagt ohne µC geht das 
leider nicht. ALternative wäre ein PLD damit habe ich aber immernoch das 
Problem keine 80 Ausgänge zu besitzen, Programmierumgebung müsste ich 
auch erst kaufen.


Ziel ist das ich ca. 11 Eingänge habe, Drücke ich z.B. den "AUX" 
Schalter bekommt Eingang 1 einen High Pegel und das Display Zeigt 
"--AUX--". Ich hoffe ich konnte das einigermaßen verständlich 
erklären.....

Gruß

Jan

von Jan (Gast)


Lesenswert?

"Ich würde das ganze per kaskadiertem Schieberegister an einem µC 
machen."

Kannst Du mir ein bisschen auf die Sprünge helfen wie Du das meinst? Ich 
bin zwar seit einem Jahr Elektroniker habs aber eher mit Analogtechnik^^

von MaWin (Gast)


Lesenswert?

Am beschaffbarsten/preiswertesten wohl mit

     10x         80x

               Kathode
  +-------+       |
  |75HC595|--1k--|< BF420
  +-------+       |E
                 GND

mit weniger Bauteilaufwand

     10x      Kathode
  +---------+   |
  |TPIC6B595|---+ (hält immerhin 50V aus, ein 74141 konnte auch nur 60V)
  +---------+

von Sascha W. (sascha-w)


Lesenswert?

Hallo Jan,

rein theoretisch würde das was du vorhast auch ohne IC's gehen.
Für jeden Eingang verschaltest du je eine Diode an die entsprechenden 
Segmente die leuchten sollen - braucht halt eine 'gewisse' Anzahl an 
Dioden.

Sascha

von Jonas B. (jibi)


Lesenswert?

Gut das ich kein Elektroniker bin. Aber mit kaskadierten Schieberegister 
meint er wohl meherere hintereinander geschaltete Seriel zu- Parallel 
Wandler IC's, die über einen einzigen Pin ansteuerbar sind.
Deine 75 Ausgänge könnten mit 8 IC's realisiert werden...das kannst du 
googlen.

Gruß Jonas

von Jonas B. (jibi)


Lesenswert?


von MirkoB (Gast)


Lesenswert?

Dafür gibts hier ein Wiki:

http://www.mikrocontroller.net/articles/Porterweiterung_mit_SPI
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister

Schnell gesagt: Die Daten werden seriell ins Schieberegister geschoben 
und parallel ausgegeben.

Als Einstieg dürfte ein Adurino reichen. Mit dem könnte man dann auch 
die Signalpfade über Relais schalten.

Wenn es allerdings nur um die Anzeige geht... Vielleicht geht das auch 
über eine hardcodierte Diodenmatrix?

Mirko

von Jan (Gast)


Lesenswert?

Hallo Zusammen,

MaWin schrieb:
> Am beschaffbarsten/preiswertesten wohl mit
>
>      10x         80x
>
>                Kathode
>   +-------+       |
>   |75HC595|--1k--|< BF420
>   +-------+       |E
>                  GND
>
> mit weniger Bauteilaufwand
>
>      10x      Kathode
>   +---------+   |
>   |TPIC6B595|---+ (hält immerhin 50V aus, ein 74141 konnte auch nur 60V)
>   +---------+

So hatte ich das auch Gedacht mit dem Treiben der Röhre, was mir noch 
nicht klar ist ist wieso das mit Schieberegistern ohne multiplexen 
funktioniert, da steh ich auf dem Schlauch....
Ich Google aber mal danach. (=

Sascha Weber schrieb:
> Hallo Jan,
>
> rein theoretisch würde das was du vorhast auch ohne IC's gehen.
> Für jeden Eingang verschaltest du je eine Diode an die entsprechenden
> Segmente die leuchten sollen - braucht halt eine 'gewisse' Anzahl an
> Dioden.
>
> Sascha

Das hab ich mir auch schon überlegt, der Aufwand wäre allerdings 
wirklich sehr hoch. Ich denke da ist der µC oder PLD besser geeignet?

Gruß

Jan

von Jan (Gast)


Lesenswert?

@ Jonas und Mirko,

Danke, ich lese mich mal ein! =D


Gruß

Jan

von Thomas E. (thomase)


Lesenswert?

Jan schrieb:
> Hallo zusammen,
>
> Danke schonmal für die Antworten. =D
>
> den 74HC595 Schau ich mir mal an, danke!
>
>
> Mit Dezimalausgängen war einfach gemeint das ich 80 voneinander
> unabhängige Ausgänge brauche, natürlich sollen auch mehrere gleichzeitig
> geschaltet werden können (macht ja sonst keinen Sinn) Ich wollte dafür
> eine Logikschaltung basteln, denke aber wie gesagt ohne µC geht das
> leider nicht. ALternative wäre ein PLD damit habe ich aber immernoch das
> Problem keine 80 Ausgänge zu besitzen, Programmierumgebung müsste ich
> auch erst kaufen.
>
>
> Ziel ist das ich ca. 11 Eingänge habe, Drücke ich z.B. den "AUX"
> Schalter bekommt Eingang 1 einen High Pegel und das Display Zeigt
> "--AUX--". Ich hoffe ich konnte das einigermaßen verständlich
> erklären.....
>
> Gruß
>
> Jan
Guck dir Arduino an. Normalpreis 25€, beim Chinamann teilweise für 10.
Da hast du alles, was du brauchst, um deine Schieberegisterkaskade 
anzuklemmen und zu programmieren. Programmiergerät(Bootloader) ist 
eingebaut, Software gibt es zum runterladen.

mfg.

von Christian B. (casandro)


Lesenswert?

Jan schrieb:
> was mir noch
> nicht klar ist ist wieso das mit Schieberegistern ohne multiplexen
> funktioniert, da steh ich auf dem Schlauch....

Eigentlich ganz einfach. Erstmal schaltest Du die Ausgänge des 
Schieberegisters aus (dafür haben die meist einen Pin).
Dann legst Du das erste Bit am Eingang an, und togglest die Taktleitung. 
Damit schiebst Du Dein Bit in das Schieberegister. Mit jedem Togglen der 
Taktleitung schiebst Du das angelegte Bit rein, und die anderen Bits 
werden jeweils um eines weiter geschoben. Würdest Du die Ausgänge nicht 
ausschalten, so würdest Du das Schieben sogar sehen, das ist für den 
Anfang vielleicht nicht schlecht.

Idealerweise schaust Du im Datenblatt nach bei welcher Flanke des 
Taktsignals geschoben wird und optimierst dann das Bit-Setzen und 
Schieben. Der SPI-Baustein macht das sogar für Dich, wenn Du willst.

Du kannst sogar wenn Du das wirklich optimieren willst, mehrere Ketten 
an Schieberegistern parallel haben. Zum Beispiel hier 8. Da hättest Du 
dann jeweils 2 Schieberegister in die Du 10 Bits reinschiebst. (die 
letzten Ausgänge sind dann unbenutzt.
Wenn Du die 10 Bitwerte in den Registern r0-r9 stehen hast, kannst Du 
das in wenigen Taktzyklen ausgeben.
1
LDI r16,(bitkombination für Ausgang aus, clock high)
2
LDI r17,(bitkombination für Ausgang aus, clock low)
3
OUT PORTB,r16 //Port B hat die Clockleitung und die Output Enable Leitung
4
OUT PORTA,r0 //PortA ist wo die 8 Schieberegister dran sind
5
OUT PORTB,r17
6
NOP //nicht unbedingt notwendig
7
OUT PORTB,r16
8
OUT PORTA,r1
9
...
10
OUT PORTA,r9
11
OUT PORTB,r17
12
NOP
13
OUT PORTB,r16
14
LDI r16,bitcombination für Ausgang ein, clock high)
15
OUT PORTB,r16
Das macht 44 Taktzyklen zum Schieben.

von Jan (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Guck dir Arduino an. Normalpreis 25€, beim Chinamann teilweise für 10.
> Da hast du alles, was du brauchst, um deine Schieberegisterkaskade
> anzuklemmen und zu programmieren. Programmiergerät(Bootloader) ist
> eingebaut, Software gibt es zum runterladen.

Werde ich machen, Meine Programmier Kenntnisse sollte ich sowieso mal 
wieder Auffrischen....


Eine Sache ist mir gerade noch eingefallen, wäre nicht wirklich das 
aller einfachste ein PLD mit 16 Ausgängen / >11 Eingängen? Ich könnte 
Jeder Anzeige einen eigenen verpassen, die Beschaltung um den Baustein 
ist nicht komplex und alle Schaltungsblöcke sind Exakt gleich aufgebaut. 
Wir hatten in der Schule eine Zeit lange PLDs als Thema die mit ABEL 
Programmiert werden. Müsste ich hinbekommen, Diodenlogik habe ich gerade 
versucht und das wird ein Bauteilgrab (-;

von Axel S. (a-za-z0-9)


Lesenswert?

Da man bei dieser "Röhre" im Gegensatz zu normalen Nixies auch mehrere 
Kathoden unabhängig betromen können muß, unterscheidet sich die 
Schaltung auch ein bisschen. Alles Wissenswerte findet man hier:

http://www.die-wuestens.de/r5.htm

nach "ZM-1350" suchen oder so runterscrollen.


XL

von Jonas B. (jibi)


Lesenswert?

PLD warum nicht? Wenn du dich damit auskennst. Schau halt das deine 
Kosten irgendwie im Rahmen hälst, vom Gefühl würd ich denken das die 
MC+Schiebekaskade Kombi günstiger ist.

Gruß Jonas

von Jan (Gast)


Lesenswert?

Nochmals danke für Eure Antworten, hab mich jetzt entschieden mein 
Berufsschulwissen aufzufrischen und das ganze über einen Atmega32 zu 
steuern, Vorteil ist das ich auch die komplette Eingangswahl damit 
einfach realisieren kann. (=


Gruß

Jan

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Richtig Oldschool wärs mit (E)EPROM und einem 8 Bit Bus an dem 8 Bit 
D-Flipflops (74HC273) hängen.

Die Adresspins des EEPROM sind bekommen die Adresse für welche Röhre 
sind die Daten sind und den Eingang binär codiert (Aux, CD, etc).
Dann taktet das durch und die Röhren bekommen ihre Daten.

80 Ausgänge ergibt ja dann 10 ICs mit den Flipflops drinne, deren CLK 
Eingang kommt von einem 4017 und an den Adresspins des EEPROm wird auch 
nur bis 10 gezählt.
Musste nur Bitmuster ins EEPROM schreiben.

von Jan (Gast)


Lesenswert?

Oldschool muss nicht sein nur weil es alte Röhren sind =D
Da ist der Mega32 genau richtig denke ich^^

Eine Frage hätte ich noch, wenn das ganze schon per µC gemacht wird 
würde ich gerne über einen Drehgeber die Quellenwahl machen:

http://www.reichelt.de/Drehimpulsgeber/STEC11B03/3/index.html?&ACTION=3&LA=2&ARTICLE=73913&GROUPID=3714&artnr=STEC11B03

Leider bin ich dazu zu dämlich, kann mir jemand (Möglichst einfach) 
sagen wie man das am besten auswerten kann?

Das Tutorial:

http://www.mikrocontroller.net/articles/Drehgeber

Hab ich schon gelesen, muss aber gestehen das ich den Beispielcode in C 
nicht wirklich verstehe, eventuell bekomme ich das hin wenn ich 
Grundlegend verstehen würde wie die Auswertung abläuft. -_-

Danke schonmal =D

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Hier mal ein Text aus einem Projekt in dem das Auswerten vorkommt.
Dieser bezieht sich auf "Dekoder für Drehgeber mit wackeligen 
Rastpunkten".
Da der Codesparender ist und mit einer anders coderiten tabelle ist auch 
wieder volle Schrittauflösung möglich.

Tabelle:
static const int8_t dreh_table[16] = 
{0,1,-1,0,-1,0,0,1,1,0,0,-1,0,-1,1,0};

Text:
Um den Graycode auswerten zu können wird jeder Graycode zwischen 0 und 3 
als Zustand eines Automaten aufgefasst. Aus den Übergängen zwischen 2 
Zuständen wird der Drehsinn des Drehgebers berechnet. Von jedem Zustand 
gibt es 4 Übergänge zu einem neuen Zustand, also insgesamt 16 
Zustandsübergänge. Von den 4 möglichen Übergängen pro Zustand sind aber 
nur 2 zulässig und ergeben den Drehsinn, die anderen beiden sind nicht 
zulässig und entstehen durch prellen der Kontakte oder zu schnelles 
drehen des Drehgebers (Unterabtastung). Bei einem unzulässigen Übergang 
ändert sich nicht nur 1 Bit sondern 2.
In einer Zustandsübergangtabelle kann nun der Drehsinn des Drehgebers 
gespeichert werden, dies ist dreh_table[16].

In der Interruptroutine muss also nur noch der neue Zustand detektiert 
und mit dem alten verglichen werden. Der daraus resultierende Drehsinn 
wird dann in einer Variable aufsummiert.

ENDE

Der erste Code in dme LInk berehcnet eben die Zustandsübergänge und der 
2. guckt in einer Tabelle nach.

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.