Forum: Mikrocontroller und Digitale Elektronik Frage zum Zählbaustein 40193B


von Re M. (lremal)


Angehängte Dateien:

Lesenswert?

Hallo Forengemeinde!

ich habe leider keinen passenden Thread gefunden daher schildere ich
hier mal mein Problem, vielleicht kann mir ja jemand helfen.

Ich habe einen CD40193B (4 bit, binär, Vor- und Rückwärtszähler) und
möchte damit Flanken eines TTL Signals aus einem
Messsystem(Längenmesssystem inkremental) zählen. Der Zähler ist wie in
Bild 1 angeschlossen.

Das bekomme ich soweit auch ganz gut hin...solange ich den CDOWN bzw.
CUP Eingang statisch auf HIGH setze und auf den anderen Clockeingang das
TTL Signal gebe, zählt der Zähler fleissig hoch und runter.

Da sich das Messsystem jedoch in 2 Richtungen bewegen lässt, möchte ich,
dass der Zähler darauf reagiert und zum Beispiel in die eine Richtung
hoch und in die andere Richtung runter zählt.

Vom Messsystem bekomme ich 2 TTL-Signale Ua und Ub. Diese sind jeweils
um 90° versetzt. (siehe Anhang Bild 2 (lila und grün))
Diese beiden Signale und deren Lage (90° versetzt je nach Richtung)
wollte ich nun nutzen, um meinen Zähler hoch bzw. runter zählen zu
lassen.

Und da liegt mein Problem. Ich habe mir die Wahrheitstabelle des
Bausteins angeschaut und mit meinen Signalen Ua und Ub erfülle ich die
Bedingungen um hoch oder runter zu zählen. Jedoch zählt der Baustein
nicht wie von mir erhofft. In Bild 2 sieht man das der Zähler Flanken
auswertet, die er gar nicht auswerten dürfte. Außerdem überspringt der
Baustein an dieser Stelle Zählstände.

Hat jemand eine Idee woran das liegen könnte?
Falls ich wichtige Informationen vergessen habe reiche ich diese
natürlich gerne nach:)

Freundliche Grüße
rema

von Peter D. (peda)


Lesenswert?

Es dürfen nie beide Eingänge low sein.
Der 193 zählt nur richtig, wenn ein Eingang einen low-Puls kriegt, 
wärend der andere konstant auf high bleibt.

von habbel (Gast)


Lesenswert?

Die Logiktabelle aus dem CMOS-Taschenbuch gibt nur her, dass an einem 
Eingang ein H anliegen muss, damit damit ansteigende Flanken am anderen 
gezählt werden. Der umgekehrte Fall, dass ein L auf jeden Fall eine 
Zählung verhindert, läßt sich daraus nicht ableiten.
Auch in den Diagrammen in 
http://www.futurlec.com/Datasheet/CD4000/CD40193.pdf ist dieser Zustand 
nicht ersichtlich.

Im CMOS-Kochbuch (D. Lancaster) wird zum ähnlichen Baustein 4192/93 
festgestellt "Die Eingangslogik muß garantieren, dass nur ein Eingang 
zur gleichen Zeit L sein kann".

Ich meine, dass das auch für 40192/93 zutrifft. Ebentuell einmal die 
interne Logik, wie sie im verlinkten DB dargestellt wird, simulieren.

von Peter D. (peda)


Lesenswert?

habbel schrieb:
> Auch in den Diagrammen in
> http://www.futurlec.com/Datasheet/CD4000/CD40193.pdf ist dieser Zustand
> nicht ersichtlich.

Das Diagramm S.5 ist doch eindeutig und im Text S.1 steht es auch:
"Counting up and counting down is performed by two count
inputs, one being held high while the other is clocked."

von habbel (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Das Diagramm S.5 ist doch eindeutig und im Text S.1 steht es auch:
> "Counting up and counting down is performed by two count
> inputs, one being held high while the other is clocked."

Im Prinzp sind wir ja einer Meinung, was die reguläre Funktion betrifft, 
aber im Diagramm(*) fehlt genau die Reaktion auf diesen, nur durch den 
Einleitungssatz als unzulässig anzusehenden, Zustand.

Welche der Möglichkeiten - von "nix" bis "willkürliche Zählung" - 
tatsächlich realisiert wird, hat der OP ja schön dokumentiert ;)

(*) Und auch in den üblichen Logiktabellen wie z.B.
    http://www.cmos4000.de/cmos/4193.html

von Re M. (lremal)


Lesenswert?

Guten Abend,

vielen Dank erstmal, dass ihr euch mit meinem Problem beschäftigt habt:)

Da das mein erstes Projekt mit solchen Zählbausteinen ist habe ich 
natürlich sehr wenig Erfahrungen damit welche Ausführungen es gibt und 
daher hatte ich diesen gewählt in der Hoffnung es würde damit klappen:)

Kann mir vielleicht jemand einen Baustein vorschlagen der sich besser 
zum Zählen der Flanken meiner Signalverläufe (siehe oben) eignet? Bzw. 
der dynamisch vor- und rückwärts zählen kann?
4-Bit binär sind dabei völlig ausreichend...

Vielen Dank!

Freundliche Grüße
rema

von spess53 (Gast)


Lesenswert?

HI

Den CD40193B gibt es auch 74xy193. Der CD... ist eher ein Exot.

MfG Spess

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


Lesenswert?

Re Ma schrieb:
> Kann mir vielleicht jemand einen Baustein vorschlagen der sich besser
> zum Zählen der Flanken meiner Signalverläufe (siehe oben) eignet?

Vorausgesetzt, deine Signale sind sauber entprellt und daß dir ein 
Zählschritt pro Periode reicht, geht dafür ein (CD)4029. Ein Signal an 
den Zählrichtungsanschluß, das andere an den Takteingang.

Zur Verdopplung der Auflösung kann man die beiden Signale XOR-verknüpfen 
und als Richtungssignal nehmen. Und aus einem der beiden Signale muß man 
für jede Flanke einen Zähl-Impuls ableiten. Das geht am einfachsten auch 
per XOR, dem man einmal das Signal direkt und ein andermal das mit einem 
RC-Glied verzögerte Signal füttert.

Für die volle Auflösung - einen Zählschritt bei jedem Pegelwechsel eines 
der beiden Signale - braucht man eine Zustandsmaschine. Gibts als 
fertiges IC, wird aber eher in programmierbarer Logik oder einem µC 
implementiert.

Details im Artikel Drehgeber

von Rema (Gast)


Lesenswert?

spess53 schrieb:
> HI
>
> Den CD40193B gibt es auch 74xy193. Der CD... ist eher ein Exot.
>
> MfG Spess

Ich habe mir das DB des Zählers mall näher angeschaut und bin der 
Meinung das ich auch bei diesem Baustein keine Informationen darüber 
habe, wie er sich verhält wenn beide Eingänge (UP und DOWN) logisch Null 
sind und dann nacheinander HIGH werden...oder irre ich mich da?

Axel Schwenke schrieb:
> Vorausgesetzt, deine Signale sind sauber entprellt und daß dir ein
> Zählschritt pro Periode reicht, geht dafür ein (CD)4029. Ein Signal an
> den Zählrichtungsanschluß, das andere an den Takteingang.

Super! Mit diesem Baustein müsste das eigentlich klappen, zumindest laut 
DB:)
Gibt es den vielleicht auch als 8-Bit Zähler?

Erstmal reicht es mir, dass einmal pro Periode von zum Beispiel Ua 
gezählt wird. Eine höhere Auflösung ist aber durchaus interessant und 
wird später sicherlich auch in Angriff genommen. Ich taste mich da 
jedoch Schritt für Schritt heran;)

von Rema (Gast)


Lesenswert?

spess53 schrieb:
> HI
>
> Den CD40193B gibt es auch 74xy193. Der CD... ist eher ein Exot.
>
> MfG Spess

Ich habe mir das DB des Zählers mal näher angeschaut und bin der Meinung 
das ich auch bei diesem Baustein keine Informationen darüber habe, wie 
er sich verhält wenn beide Eingänge (UP und DOWN) logisch Null sind und 
dann nacheinander HIGH werden...oder irre ich mich da?

Axel Schwenke schrieb:
> Vorausgesetzt, deine Signale sind sauber entprellt und daß dir ein
> Zählschritt pro Periode reicht, geht dafür ein (CD)4029. Ein Signal an
> den Zählrichtungsanschluß, das andere an den Takteingang.

Super! Mit diesem Baustein müsste das eigentlich klappen, zumindest laut 
DB:)
Gibt es den vielleicht auch als 8-Bit Zähler?

Erstmal reicht es mir, dass einmal pro Periode von zum Beispiel Ua 
gezählt wird. Eine höhere Auflösung ist aber durchaus interessant und 
wird später sicherlich auch in Angriff genommen. Ich taste mich da 
jedoch Schritt für Schritt heran;)

von Rema (Gast)


Lesenswert?

Sorry für den Doppelpost, ich dachte man könne den Beitrag im Nachhinein 
noch bearbeiten.

von spontan (Gast)


Lesenswert?

40193 ist der falsche Baustein.

Such mal nach HCTL2016 oder ähnlichen, die können Biphase verarbeiten.

von Gerald B. (gerald_b)


Lesenswert?

Wenn du 8 bit brauchst, dann guck mal ins Datenblatt unter dem Punkt 
"cascading packages" ;-)

von Simpel (Gast)


Lesenswert?

Willst du mit dem Zähler irgendwas steuern, oder nur eine Digitalanzeige 
damit aufbauen, oder beides?

Falls du einen 4-digit Up-Down Counter mit LED-Treiber (28-pin DIP) 
suchst, schau mal hier:

http://pdf1.alldatasheet.com/datasheet-pdf/view/72704/MAXIM/ICM7217.html

Der übernimmt sowohl die Mux-Ansteuerung der 4 LED-Anzeigen, kann 
up/down, hat Preset-Eingänge die über Thumbwheels einstellbar sind und 
die ein Signal bei "equal" generieren, hat einen Ausgang der bei 0 aktiv 
wird, etc....

von Rema (Gast)


Lesenswert?

spontan schrieb:
> 40193 ist der falsche Baustein.
>
> Such mal nach HCTL2016 oder ähnlichen, die können Biphase verarbeiten

Danke für die Info aber der Baustein ist mir ein bissel zu teuer...für 
den Preis kann ich auch 4 CD4029er kaufen und wie Axel schrieb 
beschalten.

Gerald B. schrieb:
> Wenn du 8 bit brauchst, dann guck mal ins Datenblatt unter dem Punkt
> "cascading packages" ;-)

Hehe ja das is mir schon klar das ich die kaskadieren kann...das habe 
ich auch vor....trotzdem danke für den Hinweis;)
Ich dachte nur das ich mir bissel Verdrahtungsaufwand sparen kann wenn 
ich zb 2 8Bit Zähler statt 4 4Bit Zähler nehme;)

Simpel schrieb:
> Willst du mit dem Zähler irgendwas steuern, oder nur eine Digitalanzeige
> damit aufbauen, oder beides?
>
> Falls du einen 4-digit Up-Down Counter mit LED-Treiber (28-pin DIP)
> suchst, schau mal hier:
>
> http://pdf1.alldatasheet.com/datasheet-pdf/view/72704/MAXIM/ICM7217.html
>
> Der übernimmt sowohl die Mux-Ansteuerung der 4 LED-Anzeigen, kann
> up/down, hat Preset-Eingänge die über Thumbwheels einstellbar sind und
> die ein Signal bei "equal" generieren, hat einen Ausgang der bei 0 aktiv
> wird, etc....



Hallo Simpel,
ich möchte den Zählstand mit meinem Arduino Mega abfragen auswerten und 
anschließend auf einem Monitor ausgeben.
Mit auswerten meine ich, dass ich die Teilungsperiode des jeweiligen 
Messsystems berücksichtige und den Zählwert in einen Positionswert 
umrechne...

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


Lesenswert?

Rema schrieb:
> Axel Schwenke schrieb:
>> Vorausgesetzt, deine Signale sind sauber entprellt und daß dir ein
>> Zählschritt pro Periode reicht, geht dafür ein (CD)4029. Ein Signal an
>> den Zählrichtungsanschluß, das andere an den Takteingang.
>
> Mit diesem Baustein müsste das eigentlich klappen, zumindest laut DB:)
> Gibt es den vielleicht auch als 8-Bit Zähler?

Du hattest oben explizit gesagt, dir würden 4 Bit reichen. Aber 
natürlich kann man den 4029 auch kaskadieren.

von Simpel (Gast)


Lesenswert?

Rema schrieb:

> Hallo Simpel,
> ich möchte den Zählstand mit meinem Arduino Mega abfragen auswerten und
> anschließend auf einem Monitor ausgeben.
> Mit auswerten meine ich, dass ich die Teilungsperiode des jeweiligen
> Messsystems berücksichtige und den Zählwert in einen Positionswert
> umrechne...

:-)  Du bist gut..! Hast nen Mega und willst das Zählen mit nem 
diskreten Gefriemel bewerkstelligen. Das macht dein Mega nebenher im 
Wachkoma...

von Rema (Gast)


Lesenswert?

Axel Schwenke schrieb:
> Du hattest oben explizit gesagt, dir würden 4 Bit reichen.

Ja da hast du recht...reichen mir prinzipiell und ich freue mich das du 
mir den Tipp gegeben hast:)

Als du den 4029er gepostet hast (den ich vorher nicht kannte) hatte ich 
gedacht vielleicht kann ich da ja doch noch was an Aufwand sparen...

Ich werde es mal mit der Kaskadierung des 4029ers versuchen, da dieser 
auch recht preisgünstig ist...

Sobald ich Fortschritte gemacht habe teile ich diese gern mit euch bzw. 
komme bestimmt wieder auf euch zurück wenn sich die nächsten Fragen 
aufwerfen;)

Danke nochmal an alle!

von m.n. (Gast)


Lesenswert?

Rema schrieb:
> ich möchte den Zählstand mit meinem Arduino Mega abfragen auswerten und
> anschließend auf einem Monitor ausgeben.

Dann werte den Inkremtalgeber doch direkt mit dem Arduino aus. Das geht 
einfach und schnell, indem man die Flanken per Interrupt erfaßt. 
Beispielprogramme dafür gibt es genug.

von Rema (Gast)


Lesenswert?

Simpel schrieb:
> :-)  Du bist gut..! Hast nen Mega und willst das Zählen mit nem
> diskreten Gefriemel bewerkstelligen. Das macht dein Mega nebenher im
> Wachkoma...

Leider tut er das nicht:(

Ich habe das zunächst versucht mittels Interrupt (Ua Flanke), Übernahme 
der vorhandenen Pegel und anschließender Auswertung in der Main...

Leider hatte ich dabei das Problem, dass der Arduino einen falschen 
Zählwert ausgibt sobald die Frequenz von Ua in den KHz Bereich geht.

Deshalb hatte ich mir überlegt extern zu Zählen und den Arduino nur noch 
die Auswertung machen zu lassen.

von Simpel (Gast)


Lesenswert?

Was für Signale liefert dein Encoder?
Poste mal die Daten dazu, bzw. das Impulsdiagramm.

Falls er Gray-Code liefert, kannst du die Routine von Peter Dannegger 
nutzen. Die ist tricky und schnell.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Es gibt seit Jahrzehnten den 74(HC)191 und 193 (und dezimal 190 und 
192), die unterscheiden sich am Eingang. 190/191 hat eine Clock und 
einen Up/down-Pin, 192 und 193 haben Clock-up und Clock-down.
http://www.nxp.com/products/logic/counters_frequency_dividers/binary_counters_timers/series/74HC_T_191.html
http://www.nxp.com/products/logic/counters_frequency_dividers/binary_counters_timers/series/74HC_T_193.html

von Rema (Gast)


Angehängte Dateien:

Lesenswert?

Simpel schrieb:
> Was für Signale liefert dein Encoder?
> Poste mal die Daten dazu, bzw. das Impulsdiagramm.
>
> Falls er Gray-Code liefert, kannst du die Routine von Peter Dannegger
> nutzen. Die ist tricky und schnell.

Hier die Signalverläufe direkt aus dem Messsystem...gerade frisch 
aufgenommen:)
Von diesen 4 Signalen wollte ich zunächst 2 zur Positionsbestmmung 
benutzen...

Christoph Kessler (db1uq) schrieb:
> Es gibt seit Jahrzehnten den 74(HC)191 und 193 (und dezimal 190 und
> 192), die unterscheiden sich am Eingang. 190/191 hat eine Clock und
> einen Up/down-Pin, 192 und 193 haben Clock-up und Clock-down.

Hallo Christoph,

danke für deinen Hinweis:)
Wenn man zum ersten mal mit solchen Bausteinen arbeitet und dabei ist 
sich selber etwas darüber beizubringen dann ist es egal ob es diese 
Bausteine schon seit Jahrzehnten gibt oder nicht. Ich kannte sie einfach 
nicht.

von Rema (Gast)


Lesenswert?

Christoph Kessler (db1uq) schrieb:
> Es gibt seit Jahrzehnten den 74(HC)191 und 193 (und dezimal 190 und
> 192), die unterscheiden sich am Eingang. 190/191 hat eine Clock und
> einen Up/down-Pin, 192 und 193 haben Clock-up und Clock-down.

Zumal ich bei denen von die genannten Zählern wieder das Problem hätte, 
dass meine Zustände nicht in der Wahrheitstabelle definiert 
wären...wobei ich wieder bei meinem Eingangspost wär:)

von Oldie (Gast)


Lesenswert?

NUR mit einem Zählerbaustein wird es nicht gehen.
Aber ein D-Flipflop könnte schon mal die Richtungserkennung
machen.

2 TTL-Signale Ua und Ub: Einen an D, den anderen an Clk.
Wenn das Signal an D voreilt, nimmt Q (je nach aktiver Flanke des
Clk-Eingangs des D-FFs) einen Logikpegel ein, bei nacheilendem
D-Signal den anderen.
Den passenden Ausgang des D-FFs an den Up/Dn-Eingang eines
Zählers (z.B. 190), eines der Signale von Ua, oder Ub an den
Clk-Eingang des Zählers.

Das müsste etwa deinen Vorstellungen entsprechen.

von habbel (Gast)


Lesenswert?

Oldie schrieb:
> NUR mit einem Zählerbaustein wird es nicht gehen.
Warum sollte es nicht gehen?

Wie Axel schrieb:
Beitrag "Re: Frage zum Zählbaustein 40193B"

Ua an CLK, Ub an Up/_Dn des 4029. Damit stimmt die Zählrichtung mit 
vorwaerts.png bzw. rueckwaerts.png aus 
Beitrag "Re: Frage zum Zählbaustein 40193B" 
überein, nützt aber nicht die volle mögliche Auflösung.

Für die Generierung von STEP und DIR Signalen hatte ich mal eine 
Simulation mit 4077 XNOR eingestellt, die sich auch beim Test am 
Steckbrett so verhalten hat.
Beitrag "Re: Tachogeber entstören"

von Rema (Gast)


Lesenswert?

Hallo!

Ich habe mir ein paar CD4029 gekauft und damit das ganze mal 
ausprobiert. Dynamische Frequenzen sowie schnelle Richtungsumkehr sind 
kein Problem.
Selbst wenn ich das Messsystem schnell mit Hand bewege (von null bis 
weit in den KHz Bereich) macht der Aufbau nur einen sehr geringen 
Fehler. Es stimmen nur 1-2 Zählschritte bei mehreren tausend gezählten 
Flanken nicht überein.

Ermitteln konnte ich dies, indem ich den Zähler (16 Bit kaskadiert) an 
einer Referenzmarke genullt und anschließend mit sehr schnellen und 
ruckartigen Bewegungen zur nächsten Marke bewegt habe. Da mir die Anzahl 
der Schritte dazwischen bekannt ist, konnte ich somit den Fehler 
ermitteln.

Als nächsten Schritt möchte ich mir die volle Auflösung anschauen. Dazu 
habe ich mir bereits den Artikel Drehgeber von Herrn Dannegger 
angeschaut. Ich denke ich werde es mit der VHDL Version probieren. Ein 
paar VHDL Kenntnisse konnte ich mir durchs Studium schon aneignen.

Weiß jemand welchen IC Herr Dannegger benutzt hat bzw. hat jemand eine 
Idee welcher sich dazu eignet?

Vielen Dank und freundliche Grüße

rema

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.