Elektronisch steuerbarer Oszillator

Gast #3083592
Lesenswert?

Hallo,

ich möchte einen Oszillator bauen, den ich mit meinem AVR steuern kann.
Ich habe nur keinen blassen Schimmer, wie ich das machen soll.
Es ist egal, in welchem Frequenzbereich der Oszillator liegt, ich möchte 
nur ein bisschen rumprobieren. 25, 50, oder 100khz Raster ist auch in 
Ordnung.


Greetz, HFfreak

P.S.: Super wäre auch eine Erklärung der Schaltung.
#3083620
Lesenswert?

HFfreak schrieb:

> ich möchte einen Oszillator bauen, den ich mit meinem AVR steuern kann.
> Ich habe nur keinen blassen Schimmer, wie ich das machen soll.
> Es ist egal, in welchem Frequenzbereich der Oszillator liegt, ich möchte
> nur ein bisschen rumprobieren. 25, 50, oder 100khz Raster ist auch in
> Ordnung.

Also ein DDS-Generator? Dann solltest Du danach googlen, bzw. die
Suchfunktion des Forums nutzen.
Gruss
Harald
Persönliche Seite #3083630
Lesenswert?

HFfreak schrieb:
> ich möchte einen Oszillator bauen,

Welche Wellenform?

- Sinus
- Dreieck
- Sägezahn
- Rechteck (am einfachsten!)

> den ich mit meinem AVR steuern kann.

>25, 50, oder 100khz Raster ist auch in Ordnung.

Wenn dir ein Rechteck am Ausgang reicht, kannst du das Ganze mit einem 
AVR in Minimalbeschaltung realisieren, indem du den integrierten 
Timer benutzt.
Gast #3083643
Lesenswert?

HFfreak schrieb:
> Hallo,
>
> ich möchte einen Oszillator bauen, den ich mit meinem AVR steuern kann.
> Ich habe nur keinen blassen Schimmer, wie ich das machen soll.
> Es ist egal, in welchem Frequenzbereich der Oszillator liegt, ich möchte
> nur ein bisschen rumprobieren. 25, 50, oder 100khz Raster ist auch in
> Ordnung.
>
>
> Greetz, HFfreak
>
> P.S.: Super wäre auch eine Erklärung der Schaltung.

Na servas... und nun suchst Du einen Privatlehrer hier in diesem 
Forum, der Dir
- die Schaltung sucht
- erklärt
- und auch für Rückfragen zur Verfügung stehen soll?

Nicht schlecht, dieser Anspruch..... Naja, was zahlst Du für die 
öffentliche Lehrstunde?

Oder hast Du eh schon die üblichen Varianten wie DSS, VCO oder was sonst 
noch so zur Verfügung steht mittels der Suchmaschine Deines geringsten 
Mißtrauens abgesucht und hast nix gefunden, was dir weiterhilft? Wenn 
das so ist - was hast Du gefunden und warum taugt es nicht für Dein 
bischen rumprobieren?

Du könntest Dir jedenfalls zuerst einmal die AN14 von Linear Technology 
zu Gemüte führen. Die beantwortet Deine Frage zwar nicht vollständig, 
ist aber dennoch eine elegante und schöne Versammlung von Schaltungen, 
wie einstellbare Oszillatoren gebaut werden können....


Grüße

MiWi
Gast #3083892
Lesenswert?

HFfreak schrieb:
> Ich habschon ein paar mal gegoogelt. Da bekomme ich n Und ich brauche
> ein Sinussignal.ur Patentdokumente.

Aha. was stören Dich Patente? solange Du damit nicht in Serie gehst und 
die Teile verkaufst ist das vollkommen egal. Vor allem wenn Du eh nur 
"rumprobieren" willst.

Hier im Forum gibts viel, suche hier.

Und nochmals: lies die AN14 von Linear Technology. Oder eine der vielen 
ANs von Analog Devices zu deren DDS-Chips. Über die unzähligen anderen 
Möglichkeiten im Netz gute Quellen zu AVR-gesteuerten Sinusgeneratoren 
zu finden will ich gar nicht weiterschreiben.

Weil die Arbeit des Lernens kann Dir niemand abnehmen. Und da sind die 
og. Quellen eine große Hilfe um danach besser Fragen zu stellen.

Grüße

MiWi
Gast #3085012
Lesenswert?

Da gibt es so einen Algorythmus um das Frequenzsteuerwort für die 
Register zu berechnen, oder so. Im Tutorial 
http://www.youtube.com/watch?v=1Cd60S-81Qs so bei 7:50 sagt der, wie man 
das berechnet und hier wird das auch noch mal erklärt 
http://webshed.org/wiki/AD9850_Arduino

Ich checks aber einfach nicht. Ich möchte im Endprogramm mit einem 
Drehimpulsgeber und meinem Arduino durch drehen die Frequenz im 25hz 
Raster eingeben. Ich raffs aber einfach nicht, wie das jetzt mit der 
Umrechnung einer Frequenz in die Register funktioniert :'( Ich werde die 
Platine übrgends seriell ansteuern.
#3085053
Lesenswert?

Hallo HFfreak

Das ist seine Aussage:
Fout (MHz) = X * 125 MHz / 2^32;

Umgestellt nach X:
X = (Fout MHz) * 2^32 / (125 MHz)

X:    Inhalt des Steuerregisters
2^32: größte mit dem Steuerregister darstellbare Zahl
Fout: Ausgangsfrequenz

Jetzt gibt es ein Problem, das Zwischenergebnis wird größer als in eine 
Long-Variable passt. Float hat nur 7 relevante Dezimal-Stellen und es 
geht Auflösung verloren.

Dafür gibt es einige Lösungswege, die hier im Forum schon diskutiert 
wurden. Einfach mal danach suchen.
Gast #3085058
Lesenswert?

HFfreak schrieb:
> Ich nehme jetzt das:
>
> Ebay-Artikel Nr. 230903304354
>
> Ich komme nur mit der Steuerwortberechnung nicht zurecht. Das verstehe
> ich einfach nicht.

ein steuer-ic für AD9850 gibts auch schon fertig bei der bucht, heißt 
SAD504:

http://www.ebay.de/itm/SAD504-Steuer-IC-fur-AD9850-Modul-DDS-Funktionsgenerator-und-LCD-Anzeige-/310624875218?pt=LH_DefaultDomain_77&hash=item4852af72d2
Gast #3085067
Lesenswert?

@smiley46

vielen Dank! Kann ich denn im Programmcode eine Mhz-Zahl mit 
Kommastellen verwenden? Ich denke ja. Beispiel: 4,68Mhz
Das mit der Auflösung; ist das nicht eher unrelevant? Um welche Feinheit 
handelt es sich denn und, wann bzw., wie macht diese sich negativ 
bemerkbar?

@flo

Der Chip ist mir auch schon in den Sinn gekommen. Hat aber zu wenig 
Features. Ich will mit meinem Arduino etwas machen.
Gast #3085093
Lesenswert?

Und wenn ich zum Beispiel das Steuerwort für 10Mhz haben will, muss ich 
duch

10 * 2^32 / 125 = 343597383,7

rechnen? Das ist ja in dezimal. Für das Register brauche ich doch 
binärcode, oder? Wenn ich das in binär umwandele, kommt 
"10100011110101110000101000" raus. Für die Frequenzsteuerung brauche ich 
doch 32 Bits? (W0 bis W31)
Der Binärcode hat aber nur 26 Stellen?! Was mache ich dann?

Ich möchte selbst einen kleinen Prüfsender bauen und möchte eine 
einstellbare Trägerfrequenz haben.
#3085247
Lesenswert?

> = 343597383,7
> das in binär umwandele, kommt "10100011110101110000101000" raus.

Ich krieg zu Fuß das raus:
343597383 = 0x147AE147 = 0001 0100  0111 1010  1110 0001  0100 0111

Aber Du möchtest eine feinere Auflösung:

10.000.000 * 2^32 / 125.000.000 =
10.000.025 * 2^32 / 125.000.000 =

oder:

(10.000.000/25) * 2^32 / (125.000.000/25)
(10.000.000/25) * 2^32 / 5.000.000

oder mit 8ppm Fehler:

(10.000.000/25) * 859 = 343.600.000
(10.000.025/25) * 859 = 343.600.859

Auf diese Weise ist noch keine Float Bibliothek notwendig. 
Wahrscheinlich hat der Oszillator schon einen größeren Fehler als 8ppm.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren