Forum: Projekte & Code VCO Rechteck mit µC AVR u.a. ATmega8 Assembler


von Bernhard S. (bernhard)



Lesenswert?

Geschätztes Forum,

ein kleines Beispiel eines einfachen VCO mit einem ATmega mit einigen 
Einschränkungen.

Der µC generiert seinen Takt mit seinem internen RC-Oszillator z.B. 
2MHz.

Das Rechteck Ausgangssignal (maximal halber Takt) wird per CTC an PB1 
zur Verfügung gestellt.

Der interne RC-Generator wird durch das Register OSCCAL verändert.

OSCCAL wird durch den ADC-Wert verändert.

Die erzeugte Ausgangsfrequenz liegt im Bereich von 496...1.673kHz, 
Faktor 1:3, ist aber exemlarabhängig, temperaturabhämgig und 
versorgungsspannungsabhängig.

Der Frequenzbereich lässt sich durch OSCCAL in 256 Schritten ändern 
(0...255). Die Frequnzsprünge sind leider nicht linear.

Vermutlich bewirkt eine OSCCAL-Änderung eine Änderung des Ladestromes 
der internen RC-Kombination.

Auf die Idee eines VCO mit einem ATmega bzw. ATtiny brachte mich dieser 
Beitrag, hier sind auch noch andere Möglichkeiten beschrieben:

Beitrag "VCO für 1MHz bis 2MHz gesucht"


Bernhard

von Floh (Gast)


Lesenswert?

Irgendwie übertreiben, die Konfiguration des Oszillators für die 
Frequenzveränderung zu missbrauchen.
infacher ginge es mit einem Timer im CTC-Modus, dessen Compareregister 
über den ADC verändert wird. So bekommt man einen viel größeren 
Einstellbereich.
Mit einem Quarz wäre das Vorgehen sogar ohne Exemplarstreuungen 
reproduzierbar.

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

Floh schrieb:

> ...einfacher ginge es mit einem Timer im CTC-Modus, dessen
> Compareregister über den ADC verändert wird.

Da gebe ich Dir Recht, es gibt jedoch einge "aber":

Bei höheren Ausgangsfrequenzen sind die Frequenzsprünge bei Änderung des 
Compareregisters doch relativ groß (s.Diagramm), kommt aber auf den 
entsprechenden Anwendungsfall an. Im NF-Bereich kein Problem.


Bsp 20MHz µC Takt:

1000 Takte  20,000 kHz
1001 Takte  19,980 kHz
1002 Takte  19,960 kHz


Bei Änderung des Compareregisters ist darauf zu achten, dass während 
dieser Änderung keine weitere unerwünschte Frequenz generiert wird (z.B. 
wenn das Register kurz vor der "Umschaltung" steht und in diesem Moment 
ein neuer Registerinhalt geschrieben wird).

Die OSCCAL-Methode hat den Vorteil, dass die interne RC-Frequenz durch 
einen digital angesteuerten analogen Vorgang geändert wird, ohne ev. 
störende Nebenfrequenzen.

von Bernhard S. (bernhard)


Angehängte Dateien:

Lesenswert?

@alle

Eine weitere Variante eines VCO mit einem ATmega bzw ATtiny.

Der Transistor dient als Stromquelle. Man kann auch auf ihn verzichten, 
aber die Spannung am 100 Ohm Widerstand muss mindestens 4V betragen (bei 
5V Versorgungsspannung) ansonsten schaltet der interne Trigger des µC 
nicht um.

Der 100k Wiederstand wirkt sich stark auf die 
Spannungs-Frequenz-Kennlinie der Schaltung aus.


Das Oszi-Bild zeigt den Signalverlauf an der RC-Kombination und am 
Rechteck-Ausgang.

Bernhard

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.