Frequenz - Periode - Drehzahl -Ereignis

Neue Versionen für ATtiny4313 und ATmega88++ mit TCXO 0,5ppm
- schnell und genau -

 

Gemeinsame Eckdaten der Schaltungen mit ATtiny2313/4313 und ATmega88/168/328
Erweiterungen der Schaltung mit ATmega88++
Gemeinsamkeiten der Schaltungen
 
1. Signaleingang
2. Komparator MAX961
3. Prozessortakt Quarz - TCXO
4. Display 2 x 16
5. RS232 Datenausgang
6. Funktionseingänge min. Messzeit
7. Eingänge für Zusatzfunktionen
8. typischer Aufbau (Bilder) ATtiny4313
9. Schaltung für ATmega88/168/328
10. Befehle über ser. Schnittstelle (ATmega88)
10a. automatischer Abgleich bei ATmega168/328
11. Variationen Schaltung und Programme mit ATmega88
12. Muster und kundenspezifische Ausführungen
zurück zur Übersicht

 

2011-12-06:
automatischer Abgleich mit 1pps GPS-Signal bei ATmega168/328 und zusätzliche ser. Befehle

Stand: 2011-09-22

Die ursprüngliche Version des reziproken Frequenzzählers aus dem Jahre 1999 mit dem AT90S2313 und dem jüngeren Controller ATtiny2313 mag für viele Anwendungen noch ausreichen. Neuere Controller bieten heute mehr internen Speicher und laufen mit 20MHz doppelt so schnell wie der damalige ..S2313. Grund genug, Schaltung und Programme an heutige Möglichkeiten anzupassen.

Dabei sind zwei Versionen entstanden:
Die 1. Version ist kompatibel zum Programm mit dem ATtiny2313 und kann auch mit einem ATtiny4313 bestückt werden. Diese Version ist sehr schnell und verarbeitet selbst ohne Vorteiler Eingangssignale bis zu 1MHz. Die serielle Schnittstelle gibt den aktuellen Meßwerte parallel zur Anzeige aus. Ein Demoprogramm findet sich hier.

Die 2. Version verwendet typisch einen ATmega88, der mehr Speicherplatz und ein paar zusätzliche IO-Leitungen bietet. Alternativ können auch der ATmega48 als kleinere Ausführung oder auch die ATmega168/328 verwendet werden, welche noch größere Programme aufnehmen können. Beide Versionen haben viele Gemeinsamkeiten.

Wem das reziproke Meßverfahren noch nicht vertraut ist, findet hier eine nähere Beschreibung.

nach oben

Gemeinsame Eckdaten beider Schaltungen mit ATtiny2313/4313 und ATmega88/168/328:

Erweiterungen der Schaltung mit ATmega88++:

nach oben

Gemeinsamkeiten der Schaltungen:

Zur Beschreibung der Gemeinsamkeiten dient das Schaltbild mit ATtiny4313:

nach oben

1. Signaleingang:

Ohne Beschaltung mit MAX961 gelangt das Eingangssignal über BR1 und D1 an PB0/AIN0 des Controllers. Dieser Eingang erhält mit R4 einen Pullup-Widerstand. PB0/AIN0 ist ein Eingang des interenen Komparators, der andere Eingang ist PB1/AIN1, der mit R5 und R7 auf Vcc/2 eingestellt wird. Der Komparator hat einen Offset von typ. <10mV, einen geringen Leckstrom und schaltet bei Signalen im zig-mV Bereich (Datenblatt). Bei dieser Schaltung werden TTL/HCMOS-Eingangssignale erwartet und die Empfindlichkeit des Komparators nicht genutzt.
C9 in Verbindung mit D1 sorgt dafür, das die steigende Flanke des Eingangssignals abgeflacht wird und ein 50:50 Rechtecksignal bis ca. 500kHz vom Komparator erkannt wird. In Verbindung mit einem Vorteiler-IC wird damit verhindert, daß zu Frequenzen den Controller per Interrupt blockieren können. Sofern ein Vorteiler bestückt ist, wird das frequenzgeteilte Signal an ICP/PD6 und T0/PD4 ab einer Frequenz im 100kHz-Bereich ausgewertet und der Komparator abgeschaltet. Je nach Bedarf kann ein 74HC393 (100MHz) oder 74VHC4040 (>200MHz) als Vorteiler bestückt werden.

Wird der Vorteiler nicht benötigt und bleibt unbestückt, kann auch C9 entfallen, womit der Eingang AIN0 bis zur max. Eingangsfrequenz genutzt werden kann.
Gleichzeitig kann auch die Beschaltung von AIN0 und AIN1 umgestaltet werden. Mit R5 und R7 kann eine andere Schaltschwelle als Vcc/2 gewählt werden. Ersetzt man C9 und R4 jeweils durch Widerstände 2M2 und D1 durch einen Kondensator z. B. 100nF, kann man AC-Signale mit hoher Empfindlichkeit und hohem Eingangswiderstand auswerten. Auf den Leiterplatten sind diese Bauteile in den Abmessungen 0805 ausgeführt und lassen sich nach Bedarf anpassen.

Bei Frequenzmessungen wird an PB0/AIN0 auf die fallende Flanke des Eingangssignals getriggert, da diese steiler ausfällt als die steigende Flanke, insbesondere bei Sensoren mit OC-Ausgang. Bei der Ereignismessung kann zwischen fallender und steigender Flanke gewählt werden.

nach oben

2. Komparator MAX961:

Um den Komparator zu nutzen müssen er selbst sowie R-HYS-X (10k), R-HYS-Y (100Ohm) und R-IN (10k) bestückt werden. BR2 schaltet den Ausgang an Stelle von BR1 auf Vorteiler und D1.
R-HYS-X und R-HYS-Y sorgen für eine Hysterese des Komparators von ca. 40mV. An R-IN entsteht ein kleiner DC-Offset von 20-30mV. Das sind gute Werte um ein AC-Signal kapazitiv mit ca. 10µF || 1nF einzukoppeln; es ergibt sich eine Eingangsemfindlichkeit von etwa 20mVeff. Für ein zu GND symmetrisches DC-Eingangssignal, sollte R-OFF (33k) bestückt werden, um eine symm. Schaltschwelle zu GND zu erhalten.

Der Komparator arbeitet von DC bis ca. 100MHz hat aber eine Einschränkung beim Signalpegel. Lt. Datenblatt darf ein Eingang nur bis -0,1V bezüglich GND betrieben werden, so daß das Eingangssignal ggf. abgeschwächt werden muß. In der Praxis empfiehlt sich ein Schutzwiderstand von 1k || 100pF in Reihe zum Eingang; eine Begrenzung des Signals erfolgt erst ab ca. -0,5V.

nach oben

3. Prozessortakt:

Für einfache Anwendungen reicht die Bestückung mit einem 20MHz Quarz und den Kondensatoren C10 und C11. Zum 'Ziehen' der Frequenz könnte C11 als Trimmer ausgeführt werden. Dies ist normalerweise nicht notwendig, da ein Abgleich der Taktfrequenz auch per ser. Schnittstelle passieren kann; der Korrekturwert wird eingestellt und im internen EEPROM abgelegt.

Ein TCXO ist heutzutage ein kostengünstiger und genauer Taktgeber. Für wenige Euro werden 0,5ppm über den gesamten Temperaturbereich geboten. Für viele Anwendungen kann ein Abgleich entfallen. Der TCXO wird statt des Quarzes bestückt, und sein Signal gelangt über C12 an X1 der Prozessors. Der geringe Pegel von typ. 0,8Vss ist ausreichend. Im Grunde würde eine LED in Reihe zu Vcc des TCXOs reichen, um ihm eine hinreichend stabile 3,3V Versorgung zu liefern; hier wird ein LDO-Regler verwendet, der entsprechend mit Abblockkondensatoren zu bestücken ist.
Eine spezielle Ausführung eines TCXO ist ein VCXO, an dessen Steuereingang (Pin 1) die Frequenz leicht nachgetrimmt werden kann. Teilweise kann der Eingang offen bleiben, hier wird er mit R9 und R11 auf 3V3/2 eingestellt, um die Mitte des Abgleichbereiches einzustellen. Ein TCXO verwendet Pin 1 normalerweise als /Freigabeeingang, weshalb dann R11 mit 0 Ohm zu bestücken ist und R9 ganz entfällt.

nach oben

4. Display 2 x 16:

Die Anzeige wird wie gezeigt angeschlossen. An D2 fällt eine typ. Vorspannung von 0,6V für die Kontrasteinstellung ab, was für Raumtemperatur sinnvoller Wert ist. Andernfalls kann die Kontrastspannung auch per Trimmpoti eingestellt werden; in der vorliegenden Schaltung ist dies nicht vorgesehen.

nach oben

5. RS232-Datenausgang (V.24):

Ein MAX232 (o.ä.) in typischer Beschaltung invertiert die RX/TX-Signale des Prozessors und paßt die Pegel an. C5-C8 können bei entsprechenden Typen auch kleiner ausfallen; falls erforderlich können Treiber mit ESD-geschützten Eingängen eingesetzt werden.

nach oben

6. Funktionseingänge für die min. Messzeit; LED

Die minimale Messzeit wird ext. per Schalter auf 5ms (200 Mess./s), 50ms (20 Mess./s) oder 500ms (2 Mess./s) wie im Schaltbild gezeigt eingestellt. Einzusätzlicher Schalter (über eine Doppeldiode entkoppelt) sorgt für eine 'Halt'-Funktion.
Bei stabilen Signalen würde sich der Anzeigewert nur selten ändern. Daher blinkt die LED nach jeder Messung auf und zeigt an, daß ein Eingangssignal vorliegt. Da die LED nachgetriggert wird, geht ihr Blinken bei höheren Meßraten in Dauerleuchten über.

nach oben

7. Eingänge für Zusatzfunktionen ZF1 - ZF4:

Diese liegen parallel zu den Datenleitungen des LCD und werden in den Ausgabepausen ausgewertet. Typischerweise wird hier ein Drehschalter zur Einstellung der Funktionen Frequenz-Periode-Drehzahl-Ereignis angeschlossen und ein Drucktaster zum Rücksetzen des Ereignisszählers. Die Tabelle zeigt die Funktion.

Funktionanwahl mit Drehschalter 2 x 6 oder 1 x 6 + Diodenmatrix; ZF4 z.Zt. nur Reset der Ereignisse
gleiche Beschaltung für ATtiny 4313 und ATmega88
'0' = gegen GND geschaltet, '-' = offen

Anzeigefunktion
ZF1
ZF2
ZF3
ZF4
Frequenz+Periode; ser. Ausgabe der Frequenz
-
-
-
ohne Funktion
nur Frequenz: Anzeige + ser. Ausgabe
0
-
-
ohne Funktion
nur Periode: Anzeige + ser. Ausgabe
-
0
-
ohne Funktion
nur Drehzahl: Anzeige + ser. Ausgabe
0
0
-
ohne Funktion
Ereignisse pos. Flanken: Anzeige + ser. Ausgabe
-
-
0
0 = Reset
Ereignisse neg. Flanken: Anzeige + ser. Ausgabe
0
-
0
0 = Reset

nach oben

8. Typischer Aufbau mit ATtiny4313:

Die nachfolgenden Bilder geben einen Eindruck vom Schaltungsaufbau und den unterschiedlichen Funktionen.

Bilder vom Testaufbau mit 4313 bei 0,5sek. Meßzeit:

nach oben

 

9. Schaltung für ATmega88/168/328

Bei der Schaltung für den ATmega88/168/328 sind weitere Ein-/Ausgänge an PortC nach außen geführt, womit auch ADC + und TWI Funktionen nutzbar sind.

Ergänzend zur Schaltung mit dem ATtiny4313, findet man auf dem Schaltbild die zusätzlichen Stecker ST4 und ST5. Über ST4 können ADC-Funktionen und IIC-Bus Anschluß implementiert werden. ST5 liefert ein 1kHz Referenzssignal, das aus dem Prozessortakt abgeleitet ist.
Ferner gibt es einen Widerstand R10 (10k), der bestückt werden muß, wenn ein ..4040 Vorteiler verwendet wird und der Vorteiler anstatt Fin/256 nun Fin/1024 liefert. Dies muß bei der Berechnung der Eingangsfrequenz berücksichtigt werden.

Der gravierende Vorteil der Schaltung mit ATmega.. ist die Programmierbarkeit diverser Parameter per RS232. Die bisher implementierten Funktionen lassen sich nach Bedarf erweitern.

nach oben

10. Befehle über die ser. Schnittstelle (nur bei ATmega88/168/328):

Jede Befehlssequenz wird mit dem Steuerzeichen <ESC> (dez. 27) eingeleitet; anschließend folgt optinal eine Dezimalzahl (nnn) im Bereich 0 – 65535 (bzw. –32000 bis 32000). Die Befehlssequenz wird mit dem eigentlichen Befehl (Großbuchstabe oder Zeichen) abgeschlossen.
Die eingestellten Werte lassen sich abfragen, indem nur das ESC-Zeichen und der Befehl gesendet werden. Als Antwort werden der Befehl und der eingestellte Zahlenwert ausgegeben.
Anstatt des <ESC> Zeichens kann auch ein '.' verwendet werden; der Vorteil liegt darin, daß keine 'unsichtbaren' Steuerzeichen übertragen werden müssen (Ausnahme: Korrekturwert zur Oszillatorfrequenz).

Befehle (Leerzeichen und '' dienen nur der Lesbarkeit und werden nicht gesendet):

<ESC> V Anfrage der Version, Ausgabe 'FMETER-88 V1.0'
<ESC> * Ausgabe des Zeichens '*' als Echo zur Synchronisierung (Zeitmarke)
<ESC> nnn U benutzerdefinierte Meßzeit, nnn Bereich 0 – 65535 in 1ms Schritten
  Beispiel '<ESC>4000U' stellt die Meßzeit auf 4000ms (4s).
  Der Wert '0' stellt die schnelleste Meßzeit ein, bei der eine neue Messung ausgewertet wird, sobald die vorherige angezeigt/ausgegeben wurde.
<ESC> nnn L Leuchtdauer der LED 'RUN', Bereich 1 – 65535 in 1ms Schritten
<ESC> nnn T Timeout für fehlendes Eingangssignal, Bereich 1 – 65535 in ms
<ESC> nnn I Drehzahlkorrektur: Impulse/Umdrehung, Bereich 1 - 65535 Voreinstellung = 1 Impuls/Umdrehung
<ESC> nnn O Offset zur internen Referenzfrequenz, Bereich –32000 bis 32000 in Schritten von 0,1Hz (0,05ppm) der Taktfrequenz; bei 20MHz ergibt sich ein Einstellbereich von +/- 160ppm. Dieser Wert wird zunächst nur temporär im RAM gespeichert. Kontrollabfrage mit: <ESC>O
"nnn" ist ein relativer Wert, der zum vorhandenen Offset addiert wird.
Mit <ESC> 0O wird der eingestellte Werte absolut auf 0 gesetzt.
<ESC> <CTRL-S> Diese Sequenz schreibt den eingestellten Offset dauerhaft ins interne EEPROM, sodaß er beim nächsten Einschalten automatisch verwendet wird.
<ESC>nS min. Anzahl der Stellen auf 'n' setzen; Bereich von n: 5 - 9; typ. 5; nur bei ATmega168/328
<ESC>nnnA automatischen Abgleich starten; nnn Bereich: 5 - 100 in Sekunden; nur bei ATmega168/328
   
  Ein Beispiel für die Abfrage eines eingestellten Wertes (Meßzeit 35 ms):
<ESC> U Antwort: U35 <CR><LF>

nach oben

10a. automatischer Abgleich mit 1pps GPS-Signal (nur bei ATmega168/328):

Der Abgleich der Taktfrequenz (Xtal/TCXO) kann ab ATmega168 automatisch erfolgen. Dazu ist ein hinreichend genaues Referenzsignal mit 1Hz erforderlich. Diverse GPS-Module liefern dieses Signal, welches mit '1pps' bezeichnet wird. Beispielsweise: EM406-A

Zum Abgleich muß das 1Hz-Referenzsignal anliegen und der Schalter 'Halt' geschlossen sein. Über die ser. Schnittstelle wird der Abgleich z.B. mit dem Befehl <ESC>10A gestartet. Dieser gibt ein Intervall von (hier) 10 Sekunden vor, indem die interne Taktfrequenz ermittelt wird. Während des Abgleichs werden die restlichen Sekunden angezeigt. Am Ende des Abgleichs wird die interne Taktfrequenz auf 9 Stellen angezeigt/ausgegeben und der interne Korrekturwert errechnet. Dieser wird für folgende Messungen verwendet und kann mit <ESC>O abgefragt werden. Damit er dauerhaft gespeichert wird, muß der Befehl <ESC>CTRL-S folgen. Anderfalls geht er beim Ausschalten verloren.

Interne Taktfrequenz und Referenzfrequenz müssen plausibel sein und auf ca. 100ppm übereinstimmen. Damit werden auch Taktfrequenzen von Quarzen korrigiert, deren Lastkapazität nicht sonderlich genau angepaßt ist. Ein Abweichen der Frequenzen bricht den Abgleich ab. Auch ein Öffnen des Schalters 'Halt' stoppt den Abgleich.

nach oben

11. Variationen Schaltung und Programme mit ATmega88:

 

nach oben

12. Muster und kundenspezifische Ausführungen

Wer Interesse an einem Musteraubau hat, sollte nach teil- oder unbestückten Leiterplatten anfragen. Die oben beschriebenen Programme stelle ich kostenlos in Einzelstückzahlen zur Verfügung, indem angelieferte µCs im DIL-Gehäuse programmiert werden. Zumeist habe ich Prozessoren und teilweise auch spezielle Bauteile (74VHC4040, TCXO, MAX961) auf Lager und kann diese mit zur Verfügung stellen. Natürlich programmiere ich auch spezielle Versionen.
Ihre Anfrage würde mich freuen:

zurück zur Übersicht