Pfad: Home => AVR-Übersicht => Anwendungen => DCF77-Empfänger => Superhet mit 32 kHz-Quarzfilter => Quarzoszillator mit tn25   This page in english: Flag EN
DCF77-Empfang Anwendungen von
AVR-Einchip-Prozessoren AT90S, ATtiny, ATmega und ATxmega
Quarzoszillator für DCF77-Superhet-Empfänger mit ATtiny25
Logo

4 DCF77-Superhet-Empfänger mit Quarzfilter

4.1 Die Schaltung des Superhets

4.1.2 Die Schaltung des Superhets mit Quarzoszillator

Hinweis: In der Vorversion dieser Seite waren Fehler. Ein neu aufgebauter ATtiny25-Oszillator funktioniert korrekt.

4.1.2.1 Konzept eines Quarzoszillators

LC-Schwingkreise sind etwas temperaturabhängig und man müsste den LC-Schwingkreis immer wieder auf die korrekte Frequenz justieren. Im Langzeitbetrieb und mit Bauteilalterung macht sich das unangenehm bemerkbar. Eine Alternative ist es, das Oszillatorsignal aus einem Quarz durch Teilung der Quarzfrequenz zu erzeugen. Natürlich gibt es keine Quarze für 110.268 oder 44.732 Hz zu kaufen (die passenden beiden Frequenzen für den Mischer). Diese Lösung hier verwendet einen quarzgetakteten AVR als Rechteckgenerator.

Ein AVR, hier ein ATtiny25, wird dazu mit einem externen Quarz oder einem Quarzoszillator getaktet. Sein Timer/Counter 0 wird so eingestellt, dass er diese Taktfrequenz durch einen festen Faktor teilt (CTC-Modus) und die Ausgänge OC0A und OC0B beim Compare Match torkeln lässt. Beide Ausgänge werden zu Beginn auf unterschiedliches Potenzial gebracht, so dass ein gegenphasiges Signal ausgegeben wird. Das Rechtecksignal wird mit einem RC-Netzwerk zu einem Sinus geformt und dem Oszillatoreingang des TCA440 zugeführt.

4.1.2.2 Auswahl der Quarzfrequenz

Digitale Teiler können nur ganzzahlig sein. Daher muss die Quarzfrequenz, geteilt durch einen Teiler, das zu erzeugende Oszillatorsignal ergeben. Damit das möglichst gut auf die Aufgabe passt, habe ich im Handel verfügbare Quarze auf ihre Eignung hin untersucht.

In der Tabelle ist sowohl für das obere (110,268 - 77,5 = 32,768 kHz) als auch für das untere Mischen (77,5 - 44,732 = 32,768 kHz) angegeben, welche Frequenzen durch Teilung erzeugt werden können und um wieviel Prozent (+/-) und in Hz die Abweichung vom Sollwert beträgt. Die Tabelle ist hier als OpenOffice-Tabelle verfügbar.

Die Tabelle enthält noch eine weitere Variante: der ATtiny25 wird nicht mit einem Einzelquarz getaktet sondern mit einem fertigen Quarzoszillator. Dessen Ausgang kommt an den CLKI/XTAL1-Eingang des ATtiny25 und der Takt wird per Fuse auf einen externen Quarzoszillator mit hoher Frequenz eingestellt. Handelsübliche Quarzoszillatoren sind im Rechenblatt "Quarzoszillator" aufgelistet. Man beachte, dass diese mit 5 V betrieben werden müssen, um genügend Amplitude zu erhalten.

Bei der Berechnung ist noch zu beachten, dass wegen des Toggling der OC0-Pins die verdoppelte Teilung erfolgt, da bei jedem Toggle nur eine von beiden Halbwellen geschaltet wird.

Quarz
(MHz)
77,5 + 32,768 = 110,268 kHz77,5 – 32,768 = 44,732 kHz
TeilerIst-Freq
(kHz)
Delta
%
Abweichung
(Hz)
TeilerIst-Freq
(kHz)
Delta
%
Abweichung
(Hz)
1,8432008115,2004,474932,02143,8861,89-846,3
2,0000009111,1110,76843,12245,4551,62722,5
2,09715210104,8584,91-5410,42345,5901,92858,3
2,45760011111,7091,311441,12745,5111,74779,1
2,50000011113,6363,053368,42844,6430,20-89,1
3,00000014107,1432,83-3125,13444,1181,37-614,4
3,07200014109,7140,50-553,73445,1760,99444,5
3,27680015109,2270,94-1041,33744,2811,01-450,9
3,57954516111,8611,441592,84044,7440,0312,3
3,68640017108,4241,67-1844,54144,9560,50224,1
3,68641117108,4241,67-1844,14144,9560,50224,2
3,93216018109,2270,94-1041,34444,6840,11-48,4
4,00000018111,1110,76843,14544,4440,64-287,6
4,09600019107,7892,25-2478,54644,5220,47-210,3
4,19430419110,3760,10108,44744,6200,25-111,7
4,43361920110,8400,52572,55044,3360,88-395,8
4,91520022111,7091,311441,15544,6840,11-48,4
5,00000023108,6961,43-1572,35644,6430,20-89,1
5,06880023110,1910,07-76,75744,4630,60-268,8
5,12000023111,3040,941036,35744,9120,40180,3
5,20000024108,3331,75-1934,75844,8280,2195,6
6,00000027111,1110,76843,16744,7760,1044,1
6,00000027111,1110,76843,16744,7760,1044,1
6,14400028109,7140,50-553,76944,5220,47-210,3
6,40000029110,3450,0776,87244,4440,64-287,6
6,55360030109,2270,94-1041,37344,8880,35155,7
7,37280033111,7091,311441,18244,9560,50224,1
8,00000036111,1110,76843,18944,9440,47211,8
8,00000036111,1110,76843,18944,9440,47211,8
8,86723840110,8400,52572,59944,7840,1252,0
9,21600042109,7140,50-553,710344,7380,015,9
9,83040045109,2270,94-1041,311044,6840,11-48,4
10,00000045111,1110,76843,111244,6430,20-89,1
10,00000045111,1110,76843,111244,6430,20-89,1
10,24000046111,3040,941036,311444,9120,40180,3
10,70000049109,1840,98-1084,312044,5830,33-148,7
11,00000050110,0000,24-268,012344,7150,04-16,6
11,05920050110,5920,29324,012444,5940,31-138,5
12,00000054111,1110,76843,113444,7760,1044,1
12,00000054111,1110,76843,113444,7760,1044,1
12,28800056109,7140,50-553,713744,8470,26114,7
12,75000058109,9140,32-354,214344,5800,34-151,6
14,00000063111,1110,76843,115644,8720,31139,8
14,31800065110,1380,12-129,516044,7440,0311,7
14,74560067110,0420,21-226,216544,6840,11-48,4
15,00000068110,2940,0226,116844,6430,20-89,1
16,00000073109,5890,62-679,017944,6930,09-39,3
18,00000082109,7560,46-511,920144,7760,1044,1
18,43200084109,7140,50-553,720644,7380,015,9
20,00000091109,8900,34-377,922444,6430,20-89,1


Beim Mischen des Eingangssignals 77,5 kHz mit der höheren Frequenz (+32,768  = 110,268 kHz) weist der 15 MHz-Quarz die geringste Abweichung auf (0,02%, +26,1 Hz), die Quarze 5,0688 und 6,4 MHz weichen um 0,07% oder 77 Hz und der Quarz 4,194304 MHz um 0,1% oder 108 Hz ab. Beim Mischen mit der niedrigeren Frequenz (77,5 - 32,768 = 44,732 kHz) ist der 9,216 MHz-Quarz mit 0,01% oder 5,9 Hz Abweichung am Besten.

Da beim Mischen mit der niedrigeren Frequenz 44,732 kHz die erste Harmonische mit 89,46 kHz schon in der näheren Umgebung der Empfangsfrequenz liegt und Störungen beim Empfang zur Folge haben könnte, wurde entschieden, mit dem 15 MHz-Quarz zu arbeiten. Dieser weicht um 26,1 Hz nach oben ab.

4.1.2.3 Rechtecksignale zu Sinus

Da jeder ATtiny mit seinem Timer/Counter 0 einen OC0A- und OC0B-Ausgang hat, kann das Signal symmetrisch ausgegeben werden: OC0B erzeugt das invertierte Signal, indem der Ausgangsport zu Beginn inverse Polarität hat. Damit kann das Oszillatorsignal symmetrisch an die beiden TCA440-Oszillatoranschlüsse geführt werden und steuert die Mischstufe symmetrisch aus.

An den beiden Ausgängen OC0A und OC0B liegen aber Rechtecksignale vor und keine Sinusschwingungen. Das würde beim Mischen nicht so arg gut sein, da die Rechteckspannung aus allen ungeraden Harmonischen der Grundfrequenz besteht, mit abnehmender Amplitude. Es ist daher sauberer, aus der Rechteckschwingung durch Aussieben der Harmonischen einen Sinus zu formen. Das macht man mit RC-Filtern.

Im Rechenblatt "RechteckInSinus" im OpenOffice-Spreadsheet hier wurde mit verschiedenen RC-Kombinationen gespielt. Damit ein kräftiges Oszillatorsignal verbleibt, musste das Filter die Grundfrequenz nur wenig dämpfen und nur die dritte Harmonische und alles darüber dämpfen.

Damit sich der Aufwand in Grenzen hält wurden drei RC-Filterstufen kombiniert. Es wurde schließlich die Kombination aus R=1k und C=1n ausgewählt, die mit einer Amplitude von 1,73 Vpp genügend Aussteuerung liefert und die Harmonischen schon gut unterdrückt.

Rechteck-zu-Sinus Hier ist der Filtereffekt mit einer Tabellenkalkuation simuliert.

Die erste Stufe V(C1) (blaue Kurve) ist noch voll ausgesteuert und erreicht nahezu 1 bzw. 4 V. In der zweiten Stufe V(C2) (rote Kurve) ist die Amplitude um zwei Volt(pp) geringer, die Signalform nähert sich aber sichtlich bereits einem Sinus an. In der dritten Stufe V(C3) (grüne Kurve) ist der Amplitudenverlust mit weniger als 1 Vpp noch geringer, die Kurve ist erkennbar ein Sinus und die Oberwellen sind fast verschwunden.

Gegenlaeufige Phasen Dargestellt ist oben nur die eine Signalseite, die zweite verläuft genau gegenphasig, wie dieses Diagramm zeigt.

Dazu sind noch die Ausgangsströme an den beiden Pins eingezeichnet. Im Schnitt beträgt der Ausgangsstrom 3,2 mA, aber in den kurzzeitigen Spitzen fließen bis zu 9 mA.

Damit kann es quarzgetaktet getrost ans Mischen gehen.

4.1.2.4 Eingesetzte Schaltung mit einem Einzelquarz

Schaltbild 110kHz-Oszillator Das Schaltbild ist denkbar einfach. Die beiden Timerausgänge OC0A und OC0B erzeugen eine Gegentakt-Rechteckschwingung von 110,294 kHz, die in die drei RC-Stufen eingespeist werden. Deren Filterergebnis treibt die beiden Oszillatoreingänge des TCA440 gegenphasig an.

Der Reset-Eingang des ATtiny25 liegt über 10kΩ auf High-Potential. Der Quarz mit 15 MHz liegt an den beiden XTAL-Eingängen, jeweils mit einem 18 pF-Kondensator nach Masse.

4.1.2.5 Eingesetzte Schaltung mit einem Quarzoszillator

Schaltbild 110kHz-Oszillator mit Quarzoszillator am tn24 Dies ist die Schaltung mit einem Quarzoszillator am ATtiny25. Sie funktioniert bei 5 V Betriebsspannung einwandfrei. Obwohl solche Quarzoszillatoren ein ganz mieses Rechtecksignal liefern (sieht wie bei einer Transistorschaltung aus), arbeitet der ATtiny25 damit absolut korrekt.

Oszillogramm des erzeugten Sinussignals Das ist das Oszillogramm der beiden erzeugten Sinusse. Sieht sauber aus.

4.1.2.6 Software für den ATtiny25

Die Software für den ATtiny25 besteht aus wenigen Zeilen Assembler:
  1. Die beiden OC0A- und OC0B-Ausgänge werden als Ausgang konfiguriert.
  2. Das Portregister von OC0A wird auf Null, dasjenige von OC0B auf Eins gesetzt (gegenphasige Ansteuerung).
  3. Die beiden Vergleicher werden auf den Teilerfaktor (68 - 1) eingestellt.
  4. Im Kontrollregister TCCR0A des Timers TC0 wird dieser als im CTC-Modus arbeitender Timer eingestellt und die beiden Ausgänge werden auf Toggle on Compare Match A bzw. B gestellt.
  5. Im Kontrollregister TCCR0B wird der Timer mit einem Vorteiler von 1 gestartet.
  6. Der Schlafmodus wird auf den Modus Idle eingestellt und die SLEEP-Instruktion ausgeführt. Der Prozessor wird nicht mehr gebraucht, der Timer arbeitet von alleine.
Der Quellcode ist im Folgenden aufgelistet und kann hier im Assembler-Format herunter geladen werden.

;
; *********************************
; * Xtal oscillator for TCA440    *
; * 15 MHz ==> (77.5+32.768 kHz)  *
; * (C)2019 by DG4FAC             *
; *********************************
;
.nolist
.include "tn25def.inc" ; Define device ATtiny25
.list
;
; **********************************
;     H A R D W A R E
; **********************************
;
; Device: ATtiny25, Package: 8-pin-PDIP_SOIC
;
;            _________
;         1 /         |8
; RESET o--|RESET  VCC|--o +5 V
; XTAL1 o--|PB3    PB2|--o
; XTAL2 o--|PB4    PB1|--o Osc out -
;   0 V o--|GND    PB0|--o Osc out +
;         4|__________|5
;
; **********************************
;   F I X E D   C O N S T A N T S
; **********************************
;
.equ clock = 15000000 ; 15 MHz
.equ fosc = 77500+32768 ; Added
.equ divider = (clock+fosc)/(fosc*2)
.equ cCtc = divider - 1 ; CTC value
;
; **********************************
;        R E G I S T E R S
; **********************************
;
.def rmp = R16 ; Multipurpose register
;
; **********************************
;  M A I N   P R O G R A M   I N I T
; **********************************
;
.cseg
.org 000000
;
Main:
  sbi DDRB,DDB0 ; PB0 direction output
  cbi PORTB,PORTB0 ; Clear OC0A output
  sbi DDRB,DDB1 ; PB1 direction output
  sbi PORTB,PORTB1 ; Set OC0B output 
  ldi rmp,cCtc ; Write CTC value
  out OCR0A,rmp ; to compare register A
  out OCR0B,rmp ; and B
  ldi rmp,(1<<WGM01)|(1<<COM0A0)|(1<<COM0B0) ; CTC mode, toggle OC0A
  out TCCR0A,rmp ; in TC0 control port A
  ldi rmp,(1<<CS00) ; Prescaler = 1
  out TCCR0B,rmp ; in TC0 control port B
  ldi rmp,1<<SE ; Sleep enable, idle mode
  out MCUCR,rmp
Loop:
  sleep ; Go to sleep
  rjmp loop
;
; End of source code

4.1.2.7 Fuses des ATtiny25

Vor oder nach dem Programmieren sind noch die Fuses des Atiny25 zu ändern, damit dieser mit dem externen Quarz arbeitet. Die folgenden Fuses sind einzustellen:
  1. CLKDIV8 ist auszuschalten (sonst wird die Quarzfrequenz durch 8 geteilt).
  2. Die Taktfrequenz ist auf einen externen Quarzoszillator mit 8 MHz und mehr einzustellen.

4.1.2.8 Aufbau des quarzgenauen Sinusgenerators

Oszillator auf dem Breadboard Das ist die Schaltung des Oszillators auf dem Breadboard, hier die Einzelquarzvariante. Die sechs Kondensatoren rechts neben dem ATtiny25 sind die zweimal drei RC-Netzwerke zur Umwandlung des Rechtecks in einen Sinus.

Oszillator mit Quarzoszillator auf dem Breadboard Dies ist die Variante mit dem Quarzoszillator auf dem Breadboard.


©2019-2020 by http://www.avr-asm-tutorial.net