Forum: Mikrocontroller und Digitale Elektronik Frequenzzähler bis 10MHz (Zählbaustein auf Hartwarebasis)


von Jörn (Gast)


Lesenswert?

Hallo,
ich suche einen Baustein, der Impulse bis zu einer Frequenz von 10MHz 
über 1-4s ohne Vorteiler zählt und anschließend mit einem ATMEGA 
ausgelesen werden kann. (24bit oder 32bit Zähler)
Mir ist bekannt, dass ich mit einem ATMEGA mir einem Frequenzzähler oder 
Zähler programmieren kann. Ich muss dann aber leider einen Vorteiler 
verwenden und somit die Messzeit erhöhen - das möchte ich vermeiden.
Als Zeitbasis möchte ich einen 10MHz TCXO verwenden, der an einem 
Zeitnormal abgeglichen werden kann. Mich interessiert die relative 
Genauigkeit mehr als die absolute Genauigkeit

Gibt es überhaupt solche Bauteile?

Gruß Tom

von Helmut L. (helmi1)


Lesenswert?

http://www.standardics.nxp.com/products/hc/datasheet/74hc590.pdf

Die 74HC590 koennen so was. Du brauchst allerdings bei 32Bit 4 Stueck 
davon.

Gruss Helmi

von Jadeclaw (Gast)


Lesenswert?

Ja. Du machst dir den Zähler sehr wohl mit einem ATMega, dann nimmst du 
aber 1 74ls393 (74HC393) als 8-Bit-Vorteiler, diesen liest du dann 
zusammen mit dem Timer1(16 Bit) des ATMega aus. Ein separates Gatter als 
Zählertor ist allerdings dann notwendig, z.B. ein 7400. Ein LS/HC sollte 
bis 25MHz können. Brauchst du 32 Bit, dann nimmst du eben 2 mal 74393.

74393
Dual 4-bit asynchronous binary counters with reset.
      +---+--+---+
/1CLK |1  +--+ 14| VCC
 1RST |2       13| /2CLK
  1Q0 |3   74  12| 2RST
  1Q1 |4  393  11| 2Q0
  1Q2 |5       10| 2Q1
  1Q3 |6        9| 2Q2
  GND |7        8| 2Q3
      +----------+

Quelle: GIICM http://kingswood-consulting.co.uk/giicm/

von Peter D. (peda)


Lesenswert?

Jörn wrote:
> Mir ist bekannt, dass ich mit einem ATMEGA mir einem Frequenzzähler oder
> Zähler programmieren kann. Ich muss dann aber leider einen Vorteiler
> verwenden und somit die Messzeit erhöhen

Das ist Quatsch, Du rechnest den Vorteiler einfach in das Ergebnis mit 
rein, d.h. die Periodenzahl ist 16 * Zählergebnis.

Nur bei kleinen Frequenzen (<16Hz) mußt Du den Bereich umschalten, also 
den Vorteiler überbrücken.
Z.B. den 74HC193 kannst Du als Vorteiler 1:16 nehmen oder per 
Setzeingang den Eingang auf QD durchschleifen. D.h. im Setzmodus teilt 
er 1:1, im Zählmodus 16:1.


Peter

von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Man kann das auch mit einfachen Ripple-Countern z.B. 74HC4040 lösen, 
wenn genügend Zeit zur Auswertung zur Verfügung steht. Dazu brauchst Du 
nur wenige I/O-Pins. Der Clock-Eingang muß zwischen Signalquelle und µP 
umschaltbar sein und das MSB des Zählers wird abgefragt.

1. Zunächst gibst Du soviele Clock-Impulse auf den Zähler, bis das MSB 
auf null springt (Reset). Alternativ kannst Du den Zähler mit einem 
zusätlichen I/O-Pin direkt resetten.
2. Dann schaltest Du die Clock-Leitung für eine genau definierte 
Gate-Zeit, z.B. 1s, auf die Signalquelle.
3. Du gibst soviele Clock-Impulse auf den Zähler, bis das MSB wieder auf 
null springt.
4. Du berechnest daraus den relevanten Zählerstand nach der Gate-Zeit.

Das ist zwar etwas umständlich in der Software, vereinfacht die Hardware 
aber erheblich. Die Umschaltung des Clock-Einganges ist sehr einfach:
Signal über Widerstand z.B. 1k auf Clock-Eingang. I/O-Pin direkt auf 
Clock-Eingang.
I/O-Pin hochohmig (Eingang) ---> Zählmodus
I/O-Pin niederohmig (Ausgang) ---> Zähler zählt nur Impulse von µP

Zur Verkürzung der Auswertezeit empfiehlt es sich bei Verwendung 
mehrerer 4040-er jeden einzeln auszuwerten. Dazu fügst Du die o.a. 
Gate-Schaltung zwischen Ausgang eines 4040 und den Eingang des folgenden 
4040 ein. Mit dem I/O-Pin kannst Du dann das MSB des 4040 abfragen und 
Clock-Impulse einfügen, um den nachfolgenden 4040 auszuzählen.

Jörg

P.S.: Vermutlich brauchst Du max. einen externen Zählerbaustein. Die 
Zählerüberläufe kannst Du ja per Software mitzählen oder einem internen 
Zähler zuführen.

von hans (Gast)


Lesenswert?

Schau mal nach dem 8253/54

http://www.osdever.net/documents/8253.pdf

Der hat Gatefunktion und man kann auch mit einem Timer den 2 Timer
(er hat 3) gaten.


gruß hans

von Jörg H. (idc-dragon)


Lesenswert?

Sicher das du extra-Hardware brauchst/willst? Ich denke, das kann der 
Controller alleine, lass ihn halt ungeteilt zählen und behandle die 
Überläufe in Software (z.B. als Interrupts).

Jörg

von Karl H. (kbuchegg)


Lesenswert?

Was spricht dagegen, das Signal als Takteingang für einen Timer im Mega 
zu verwenden?

Dann kann der µC wieder alles alleine erledigen und du brauchst keine 
externe Hardware.

Ein Timer macht die Zeitbasis
Ein zweiter Timer zählt die externen Ereignisse

Noch ein bischen Interrupt Logik um die Überläufe des Zähltimers zu 
bearbeiten. Fertig.

von faustian (Gast)


Lesenswert?

Alternativ zum HC590 koennte man nen AS867 nehmen, der braucht zwar viel 
Strom aber schafft auch grinsend 60-70Mhz (ausprobiert, das Datenblatt 
untertreibt ein wenig).

Ueber 100Mhz kann man schaffen mit einem F74 als erste Stufe - wenn man 
nicht so ein Esel ist wie ich und sich bei der Verdrahtung so vergreift 
dass bei ca. 80MHz Schluss ist :(

von Peter D. (peda)


Lesenswert?

faustian wrote:
> Ueber 100Mhz kann man schaffen mit einem F74 als erste Stufe - wenn man
> nicht so ein Esel ist wie ich und sich bei der Verdrahtung so vergreift
> dass bei ca. 80MHz Schluss ist :(

Ich biete 210MHz:

http://de.farnell.com/fairchild-semiconductor/74vhc4040m/ic-sm-logic-74vhc-binary-counter/dp/1607651


Peter

von Helmut L. (helmi1)


Lesenswert?

>>faustian wrote:
>> Ueber 100Mhz kann man schaffen mit einem F74 als erste Stufe - wenn man
>> nicht so ein Esel ist wie ich und sich bei der Verdrahtung so vergreift
>> dass bei ca. 80MHz Schluss ist :(

>Ich biete 210MHz:

>http://de.farnell.com/fairchild-semiconductor/74vh...


Ich biete 8GHz

http://www.onsemi.com/pub_link/Collateral/NBSG53A-D.PDF

Gruss Helmi

von Tom (Gast)


Lesenswert?

@An Alle
Mit einer so großen Resonanz habe ich nicht gerechnet – vielen Dank.


- Bisher war ich immer der Meinung, dass man mit einem ATMEGA nur bis 
1/3 des Taktes zählen kann, damit man auch mit ungünstigen 
Taktverhältnissen zurechtkommt (und das gilt auch für die Vorteiler). 
(Grundlagenfrage)
Stimmt das so???

Wenn ich unabhängig von diesem Problem mit einem der internen Vorteiler 
arbeitet habe ich das Problem, dass ein Teil der Information in dem 
Vorteiler „steckt“ und nicht ausgelesen werden kann. Um doch alle 
(periodischen) Ereignisse zu erfassen müsste ich die Messdauer erhöhen.


- Den Zähler mit drei oder vier 74HC590 aufzubauen gefällt mir. Die 
Kosten sind minimal (Stückpreis <40ct) und der Kopf kann beim 
Programmieren im Mittagsschlaf verbleiben.
---> Mein Favorit
Liege ich richtig, dass ein kaskadierter Zähler auch bei ungünstigeren 
Tastverhältnissen bis ca. 15MHz zu gebrauchen ist?
Wo liegt die Grenze bei ziemlich symmetrischen Signalen?


- Die Idee einen auslesbaren Vorteiler zu verwenden und ihn mit einem 
internen 16-bit Zähler zu koppel finde ich genial (einfach).      :-)) 
74HC393 und 74HC4040


- Bis zu welcher Grenze kann man einen 74HC4040 , HC590 , HC4040 
verwenden (ungünstige und günstige Taktverhältnisse)?


- Der 8254 vereint quasi mehrere 74HC590. Man muss nur den Bus 
programmieren.


Die 74as867 , 74F74, 74VHC4040 kennt mein Händler leider nicht

Tom 

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Tom wrote:

> - Bisher war ich immer der Meinung, dass man mit einem ATMEGA nur bis
> 1/3 des Taktes zählen kann, damit man auch mit ungünstigen
> Taktverhältnissen zurechtkommt (und das gilt auch für die Vorteiler).
> (Grundlagenfrage)
> Stimmt das so???

Nicht ganz.  Wenn dein externer Takt symmetrisch ist, dann besteht
nur die Forderung, dass er kleiner als f[IOclk]/2 sein muss.  Du
bräuchtest also einen mit 20 MHz getakteten AVR, um bis 9,99999 MHz
zählen zu können.

Ggf. kannst du aber einfach 2:1 extern vorteilen: dann hast du auf
jeden Fall ein symmetrisches Tastverhältnis, und du könntest für die
9,999999 MHz auch den AVR direkt mit 10 MHz takten.

von Helmut L. (helmi1)


Lesenswert?

>- Der 8254 vereint quasi mehrere 74HC590. Man muss nur den Bus
>programmieren.

Vergiss den das ist ein Uralt Teil aus den 70er

>Die 74as867 , 74F74, 74VHC4040 kennt mein Händler leider nicht

Alternativ kannst du einen 74AC74 verwenden. Der sollte besser zu 
bekommen sein.
74F74 ist auch schon vom aussterben bedroht.

>- Bis zu welcher Grenze kann man einen 74HC4040 , HC590 , HC4040
>verwenden (ungünstige und günstige Taktverhältnisse)?

Das sollte im Datenblatt drin stehen. Da die Zaehler kaskadiert werden 
braucht nur der 1. Zaehler die Frequenz abzukoennen. Bedenke aber das 
das Ergebnis durch den Ripple Carry etwas spaeter an den Ausgaengen 
erscheint.

>- Den Zähler mit drei oder vier 74HC590 aufzubauen gefällt mir.

Du hast schon gesehen das die Tri-State Ausgaenge haben ?
Damit sollte die parallel Schaltung einfach werden.

>- Bisher war ich immer der Meinung, dass man mit einem ATMEGA nur bis
>1/3 des Taktes zählen kann, damit man auch mit ungünstigen
>Taktverhältnissen zurechtkommt (und das gilt auch für die Vorteiler).
>(Grundlagenfrage)
>Stimmt das so???

Es gilt die Frequenz die sich aus der kuerzeren Zeit ergibt und die darf 
nicht ueberschritten werden.

Gruss Helmi

von Tom (Gast)


Lesenswert?

Ist für meinen Zweck die 74F oder die 74AC Serie eher zu empfehlen?
Gruß
Tom

von faustian (Gast)


Lesenswert?

Das mit der niedrigeren Frequenz beim zweiten kaskadierten Zaehler 
funktioniert so aber nur bei einem Asynchronzaehler....

von Peter D. (peda)


Lesenswert?

Tom wrote:
> Ist für meinen Zweck die 74F oder die 74AC Serie eher zu empfehlen?

Du wolltest doch nur 10MHz, das schafft ein normaler HC.

Z.B. der 74HC393 schafft je nach Hersteller:

Fairchild: 50MHz
TI: 60MHz
ST: 79MHz
NXP: 99MHz


Peter

von Jörg R. (Firma: Rehrmann Elektronik) (j_r)


Lesenswert?

Tom wrote:

> - Bis zu welcher Grenze kann man einen 74HC4040 , HC590 , HC4040
> verwenden (ungünstige und günstige Taktverhältnisse)?

Bei 5 V ca. 50-90 MHz, je nach Hersteller

> Die 74as867 , 74F74, 74VHC4040 kennt mein Händler leider nicht

HC- oder HCT-Typen sind bei 10 MHz völlig ausreichend. Ein ungünstiges 
Tastverhältnis kannst Du mit einem vorgeschalteten Monoflop vermeiden, 
das eine feste Zeitkonstante von 20-50 ns hat, je nachdem was das 
Datenblatt sagt und welche obere Grenzfrequenz Du noch zulassen willst.

Jörg

von Helmut L. (helmi1)


Lesenswert?

>Ein ungünstiges Tastverhältnis kannst Du mit einem vorgeschalteten Monoflop 
>vermeiden,das eine feste Zeitkonstante von 20-50 ns hat,

Eher nicht. Da sind die FlipFlops im Zaehler immer noch schneller als 
das Monoflop. Wenns durch ein unguenstiges Tastverhaeltnis Probleme 
geben sollte schaltes du besser ein FlipFlop aus einer schnelleren Serie 
davor.

von Wolfgang M. (womai)


Angehängte Dateien:

Lesenswert?

Ich hab in einem anderen Forum einen "gated counter" vorgeschlagen, das 
koennte vielleicht auch fuer Deine Anwendung brauchbar sein, zumindest 
Teile davon. Schaltplan ist im Anhang zu diesem Posting, und hier ist 
der Link zum anderen Thread:

http://www.picaxeforum.co.uk/showthread.php?t=12263&page=2

Der Zaehler hat 16 bit, aber fuer 32 Bit musst Du bloss noch zwei 
weitere 74HC393 dazuhaengen.

Die Start- und Stop-Signale koennen bei Deiner Anwendung ja vom Atmega 
kommen. Wenn Du den angegebenen Thread verfolgst, siehst Du die ganze 
Schaltung auch in einem einzigen CPLD (Xilinx 9572) integriert, mein 
Simulator sagt, das sollte bis ca. 66 MHz laufen. Das CPLD-Projekt kann 
ich Dir gerne bei Bedarf emailen.

Wolfgang

von Tom (Gast)


Lesenswert?

Für meinen aktuellen Anwendungszweck reichen 10MHz aus. Wenn ich aber 
die Beiträge lese, kommt der Wunsch mein Gerät universeller zu 
gestellten und die Grenze deutlich nach oben zu verschieben.

<faustian wrote>
Das mit der niedrigeren Frequenz beim zweiten kaskadierten Zaehler
funktioniert so aber nur bei einem Asynchronzaehler....

Warum?

Ist eine solch Kombination sinnvoll?
74AC74 oder 74f74 (als Eingang) oder einem anderen auslesbaren Vorteiler 
(geteilt durch 2 oder 4) um auf 50MHz oder weniger zu kommen
3-4 74HC590 (oder weniger, wenn der interne Zähler des AVR verwendet 
wird)

Bei Frequenzen über 50MHz ist eine Eingangsbeschaltung nicht mehr 
trivial.
Einige Vorschläge sind sicherlich nicht nur für mich interessant.

Gruß
Tom

von Helmut L. (helmi1)


Lesenswert?

>Das mit der niedrigeren Frequenz beim zweiten kaskadierten Zaehler
>funktioniert so aber nur bei einem Asynchronzaehler....

Weil bei einem Synchronzaehler alle FlipFlops gleichzeitig schalten.
Die Clock Eingaenge liegen dort alle parallel. Deshalb muessen die alle 
die hoechste Zaehlfrequenz abkoennen.

Bei einem Asynchronzaehler liegt der Clock vom zweiten FlipFlop am 
Ausgang des ersten und muss dann nur die haelfte abkoennen.

Syncronzaehler werden gebrauch wenn man das Ergebnis direkt nach dem 
Takt haben muss. In deinem Fall der Frequenzmessung brauchst du das aber 
nicht weil du mit dem auslesen durch den Prozessor Zeit hast.

von faustian (Gast)


Lesenswert?

Mit einem Vorteiler ist es ja schon ein wenig asynchron geworden.

Bei einem echten Synchronzaehler bekommen alle Stufen denselben Takt, 
nur die Daten sind anders die dazwischen hergeschoben werden.

von Michael U. (amiga)


Lesenswert?

Hallo,

74ACT161 hat bei mir sicher bis 80MHz gezählt, darüber hatte ich keinen 
TTL-Pegel zur Verfügung.

80/16 wären 5MHz, die passen zum AVR. Die Ausgänge des ACT noch an 4 
Portpins, dazu noch CLR und TE an den AVR und fertig.

Zähler auf 0 mit CLR, dann für die Torzeit mit TE freigeben, 
anschließend eben A...D einlesen.

Wären dann 20Bit mit dem 16Bit-Counter des AVR.

Gruß aus Berlin
Michael

von Ulrich (Gast)


Lesenswert?

Wenn es um eine Frequenzmeessung mit hoher auflösung geht sollte man in 
der Regel die Input Capture funktion nutzen und nicht einfach zählen. 
Das Gibt vor allem für niedriege Frequenz auch noch eine hohe Auflösung. 
Man kann so z.B. die Schwankungen der Netzfrequenz verfolgen.

Bei vielen Chips kann man die ICP funktion über den extra ICP Eingang 
oder den analogen Comperator (und damit auch über AD Eingänge) laufen 
lassen. Man hat also schon die Möglichkeit intern die Quelle 
umzuschalten.  Für höhere Frequenzen genügt dann ein einfacher 
Vorteiler. Da geht dann so ziehmlich jeder Zählerbaustein (wenigstens 7 
Bit, besser 8). Bis ca. 100 kHz (bei mir gehen gut 300 kHz bei 20 MHz 
Quarz) sollte man noch ohne Verteiler verarbeiten können für höhere 
Frequenz wäre dann ein Teiler :256 oder so passend. Man sollte damit mit 
2 Bereichen auskommen. Das direkte Signal kann an den ICP Pin das 
geteilte an den Comperator. Wenn man Angst hat wegen kurzer Pulse, 
eventuell immer einen Teiler durch 2 davor.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ulrich wrote:
> Wenn es um eine Frequenzmeessung mit hoher auflösung geht sollte man in
> der Regel die Input Capture funktion nutzen und nicht einfach zählen.
> Das Gibt vor allem für niedriege Frequenz auch noch eine hohe Auflösung.

Ist aber bei höheren Frequenzen komplett unbrauchbar.

von Peter D. (peda)


Lesenswert?

Jörg Wunsch wrote:
> Ulrich wrote:
>> Wenn es um eine Frequenzmeessung mit hoher auflösung geht sollte man in
>> der Regel die Input Capture funktion nutzen und nicht einfach zählen.
>> Das Gibt vor allem für niedriege Frequenz auch noch eine hohe Auflösung.
>
> Ist aber bei höheren Frequenzen komplett unbrauchbar.

Besser gesagt, schadet nix bei hohen Frequenzen.

Ich messe etwa 0,5s und dann bis zur nächsten Flanke des 
Eingangssignals. Damit habe ich die Dauer n für die Periodenanzahl m.

f_input = f_Quarz * m / n

Dazu geht der Eingang auf ICP und T0.
Und damit erreiche ich ne hohe Genauigkeit (5 Digits), egal ob ich 0,5Hz 
oder 10MHz messe ohne jede Umschaltung.
Wenn der GCC double könnte, wärs noch genauer.

Bloß für den Vorteiler bei >10MHz braucht man ne Bereichsumschaltung.


Peter

von Klaus D. (kolisson)


Lesenswert?

Übrigens ,

CSD hat mir neulich diese IC bestellt und geliefert >  SN74LV8154N

32 bit mit parallel out in einem chip für unter 2 euro.

gruss klaus

von Tom (Gast)


Lesenswert?

@An alle
Vielen Dank für eure Hilfe.
Ich werde jetzt die vielen Beiträge in Ruhe durcharbeiten. Ihr habt auch 
viele meiner ungestellten Fragen beantwortet :-))
Gruß
Tom

von Thomas R. (tinman) Benutzerseite


Lesenswert?

guck dir den an :

www.herbert-dingfelder.de/freq_counter/freq_counter.html

Ich habe es auch benutzt, zwar etwas umgebaut mit autorange, mehreren 
gate times, und zwei vortilern ( 200-250 mhz mit 74ACT74 und 1GHZ mit 
u6060b ),
aber im prinzip is das was DL5NEG vorgeschlagen gut genug ( je nach 
quarz kann es probleme beim abgreifen geben, ich habe persönlich einen 
oszilator mit 10.240 mhz genommen )

Den U6060B kann ich nicht empfehlen, ist schon 100 jahre alt das teil, 
dafür gibts bessere neuere teile, ich hatte den noch hier und da er ttl 
ausgang hat war es keine schlechte idee - habe bis 533 ttl/cmos signale 
damit gemessen, ohne probleme.

von Sinusschieber (Gast)


Lesenswert?

Naja, eine Auflösung von 10 Hz ist auch weit oberhalb der gängigen 
Möglichkeiten. Aber für Amateurfunker reicht das sicher. 
Industrie-Elektroniker sind da anspruchsvoller.

von Ulrich (Gast)


Lesenswert?

Ich habe ein Zähler auf AVR basis, der die ICP Funktion nutzt. Bis etwa 
200 kHz (bis etwa 330 kHz gehen) wird das direkte Signal ohne Tieler 
genutzt und dabei über mehrere Perioden gemessen. Dabei wird nicht nur 
die erste undletzte Zeit genutzt, sondern jeweils der Mittelwert aus 
einigen Messungen. Ideal wäre eine lineare Interpolation der Zeiten, das 
war mit aber etwas zu rechenintensiv (vor allem in ASM). Das gibt eine 
wirklich hohe Auflösung auch nach einer kurzen Gate Zeit.  Für höhere 
Frequenzen reicht ein Teiler :256 dann für Frequenzen bis gut 50 MHz, 
sofern es der Eingangsteil mitmacht.  Auch mit dem Teiler kreigt man 
schon ab etwa 10 kHz eine gute Auflösung. Bei praktisch jeder Frequenz 
besser als man es durch einfaches Zählen hinkriegen kann.

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.