Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
DDS AM Modulator mit Arduino
#61
Hallo Darius,

das macht ja interessante Fortschritte dein Projekt. Die Methode mit den XOR Gatter die Frequenz zu verdoppeln kenne ich. Das ist im Prinzip ein Multiplizierer. Das Ganze geht mit Sinufrequnenzen auch z.B. mit einem NE612. Du gibst an den einen Eingang das Signal an den anderen das gleiche Signal um 90° Phasenverschoben. Das Resultat ist ein Sinus mit der doppelten Frequenz.

So wie ich es verstehe nutzt Du den Rechteckausgang des AD9850 und modulierst die Phase über den Anschluss des Potis mit dem das Tastverhältnis eingestellt wird?

Am Ausgang des Phasenmodulators hast Du nun ein Rechtecksignal. das hat viele Oberwellen. Wie planst Du denn daraus wieder einen sauberen Sinus zu machen? Bei einer Abstimmbarkeit über einen kleinen Bereich geht das mit einem Tiefpass. Hier ist der abzustimmende Bereich aber mehr als eine Oktave da muss der Tiefpass mit abgestimmt oder in mehreren Schritten umgeschaltet werden.

Ich lese hier immer mit und verfolge das mit Interesse.
Viele Grüße
Semir
---------------------------------
"Alle sagten: Das geht nicht. Dann kam einer der wußte das nicht, und hat es gemacht."
(Prof. Hilbert Meyer, Uni Oldenburg)
Zitieren
#62
(08.06.2019, 11:59)Semir schrieb: Die Methode mit den XOR Gatter die Frequenz zu verdoppeln kenne ich.

Das ist ja sensationell. In meinem Bekanntenkreis und im Internet kennt das nämlich niemand.
Besonders interessant dazu, die Beitragsreihe im mikrocontroller.net.

(08.06.2019, 11:59)Semir schrieb:  an den anderen das gleiche Signal um 90° Phasenverschoben.

Das muss man auch erstmal schaffen. Dafür nimmt Motorola ja den Johnson-Teiler, Resultat Rechteck.
Ich brauche den Rechteck für die PWM-->PM.

(08.06.2019, 11:59)Semir schrieb: So wie ich es verstehe nutzt Du den Rechteckausgang des AD9850 und modulierst die Phase über den Anschluss des Potis mit dem das Tastverhältnis eingestellt wird?
Ja, wobei ich nach Sichtung des Schaltplans dieses unsinnige Poti geschmissen habe. Ein Widerstand, wie im Bild zu sehen (22K),
macht das viel besser und abgleichfrei. Über den 470R kopple ich über einen Kondensator das (L-R)*(L+R+1)+Pilot ein.

.jpg   AD9850_poti_replacement.jpg (Größe: 123,37 KB / Downloads: 566)

LG
old.
Zitieren
#63
(08.06.2019, 11:59)Semir schrieb:  der Tiefpass mit abgestimmt oder in mehreren Schritten umgeschaltet werden.

Ja, genau so. Alle anderen Frequenzen außer MW dann vom dds sinusförmig.
Dann ist MW in Stereo und der Rest in Mono.

LG
old.
Zitieren
#64
(08.06.2019, 10:47)oldeurope schrieb: Die Amplitude des L-R-Signals ändert sich mit der Frequenz.
Dafür programmiere ich eine frequenzabhängige Steuerspannung,
die den Phasenhub für jede Frequenz korrekt einstellt.

LG
old.

Stimmt nicht. Gar nicht notwendig. Ich verstehe zwar noch nicht ganz
warum, aber so kann ich von Langwelle bis ins Tropenband ohne
Abgleich c-quam generieren.  Smiley34 
Bei dem Verdoppler muss ich einmal den Kondensator über den
Arduino umschalten, damit das Tastverhältnis immer 1:1 bleibt.

LG
old.
Zitieren
#65
(08.06.2019, 11:59)Semir schrieb: Am Ausgang des Phasenmodulators hast Du nun ein Rechtecksignal. das hat viele Oberwellen. Wie planst Du denn daraus wieder einen sauberen Sinus zu machen?

Möglicherweise so:
   
Hier noch die LTspice Simu mit allem Drum und Dran:

.zip   sinusconverter_ltspice.zip (Größe: 121,75 KB / Downloads: 16)
oder 
https://workupload.com/file/JKBvNtNa
(Ihr müsst den Ordner sinusconverter_ltspice aus dem zip-Ordner
herauskopieren und dann in diesem Ordner die Sinus_003.asc öffnen.
Sonnst findet LTspice das Modell nicht.)

Der Sketch für eine frequenzabhängige Steuerspannung steht ja schon.
Mir fehlt noch der Operationsverstärker um das zu bauen.
Den bestelle ich nächste Woche irgendwo mit.
Blöderweise ist neben dem Flipflop und dem XOR kein Platz mehr.
Da muss ich wohl ein Stück Lochraster senkrecht drauf löten.

Den zweiten OTA kann ich dann für den Frequenzverdoppler nutzen.

LG
old.
Zitieren
#66
Hallo Darius,

das sieht sehr gut aus ich bin mal gespannt wie es weiter geht. So ähnlich wie Du das da mit den Dioden machen willst wurde das auch in ICs mit Sinusausgang wie dem ICL3038 gemacht. Schau Dir mal das PDF im Anhang an die Schaltung im ICL3038 ist allerdings wesentlich aufwändiger. Ich bin mal gespannt wie die Sinusform aussieht wenn die Schaltung real aufgebaut ist.

Wenn das so geht könnte ich meine alte PLL Schaltung mit 4046 und einem 9,12MHz Quarz als Referenz mal zur Probe damit einsetzen. Die PM ließe sich da einfach über einen Differenzierer erzeugen der den VCO moduliert. Zeit müsste  man haben...


Angehängte Dateien
.pdf   ICL3038.pdf (Größe: 155,15 KB / Downloads: 14)
Viele Grüße
Semir
---------------------------------
"Alle sagten: Das geht nicht. Dann kam einer der wußte das nicht, und hat es gemacht."
(Prof. Hilbert Meyer, Uni Oldenburg)
Zitieren
#67
Vom 4046 ist bei mir nur noch der Begrenzer übriggeblieben.
Erster Gehversuch:
   
und die Schaltung dazu:
   
Der Phasenmodulator mit BJT aus meinem Blog gefällt mir deutlich besser.

Mich wundert, dass von den Internetradiospezialisten hier niemand einen PM-Sketch
für den Arduino mit AD9850 aus dem Ärmel schüttelt. Das würde einiges
an Hardware einsparen.

___________________________________________________________________

Ich bin gerade an einem Dreiecksgererator dran, der vom Arduino auf
konstante Amplitude gesteuert wird.
Das ist ja erstmal die Grundlage für den Sinus. Bin optimistisch.

LG
old.
Zitieren
#68
(14.06.2019, 21:04)oldeurope schrieb: Mich wundert, dass von den Internetradiospezialisten hier niemand einen PM-Sketch
für den Arduino mit AD9850 aus dem Ärmel schüttelt.

Hallo,

sollten Sie etwa? Liegt wahrscheinlich daran, das die Leute die sich mit Internetradio hier im Forum beschäftigen, eine ganz anderes Feld bearbeiten und nicht immer und überall helfen können, weil Ihnen einfach auch die Zeit dazu fehlt neben Ihren eigenen Projekten und Support für iRadio, iTV, WorldRadio, DAB .....
Zudem liest auch nicht Jeder jeden Thread hier im Forum, sondern nur das was einem im Moment persönlich interessiert.

Der nächste Punkt: Der AD9850 wird für Internetradio nicht gebraucht, Signale lassen sich auf dort verwendete Prozessoren wie STM32, Expressif 32 und ARM rein in Software erzeugen und ausgeben wenn man das will. Und ein kleiner 8 Bit-er wie der ATmega ist beim Internetradio/Internetfernsehen auch nicht wirklich hilfreich, höchsten mal als Frontprozessor in einem Radio für Display, IR-Empfang, ... wobei eigentlich auch nicht mehr. Mich wundert es überhaupt, warum Ihr nicht gleich einen größeren Prozessor mit reichlich mehr Speicher gewählt habt und die Sache vollständig in Software realisiert, also ohne DDS-IC und so weiter. NF vorne rein, HF hinten raus. Für den Preis eines Arduino Nanos und des AD9850 bekommt man doch schon Hardware, für die das alles ein Kinderspiel ist und wo man nicht immer mit einem Auge auf die Prozessorauslastung schauen muss. Keine Frage, der ATmega hat seine Daseinsberechtigung, nicht unbedingt als DSP. Man kann mit dem Kerl auch schon einiges im "NF"-Bereich rumrechnen, aber irgendwo ist und bleibt der Chip nur "a pain in the ass" weil er schnell seine Leistungsgrenze erreicht wenn die Aufgabe anspruchsvoller wird.

Mein letzter AD9850-Kontakt in Zusammenhang mit Arduino stammt aus dem Wobbelsenderprojekt, das dann funktionell nach oben hin entgleist ist: https://radio-bastler.de/forum/showthrea...ght=ad9850


Das Ansprechen des AD9850 war trivial:

Definieren an welchen Pins der AD9850 hängt:

//Arduino MEGA > AD9850 Board Anschlüsse        
#define RST     37 // Arduino 11 > Board RST - Reset
#define FQ      33 // Arduino 10 > Board FQ - Frequenz Update
#define CLK      31 // Arduino  9 > Board CLK - Takt
#define DATA     35 // Arduino  8 > Board DATA - Daten

Ein kleines Makro definieren:

#define pulseHigh(pin) {digitalWrite(pin, 1); digitalWrite(pin, 0); }


Initialisieren:

void AD9850_Init(){
   pinMode(RST, OUTPUT); // alles Ausgänge
   pinMode(FQ, OUTPUT);
   pinMode(CLK , OUTPUT);
   pinMode(DATA, OUTPUT);
   digitalWrite(RST, 0); // alles 0
   digitalWrite(FQ, 0);
   digitalWrite(CLK, 0);
   digitalWrite(DATA, 0);
}


Reseten:

void AD9850_Reset(){
  pulseHigh(RST); //Reset Signal
  pulseHigh(CLK); //Clock Signal
  pulseHigh(FQ);  //Frequenz Update Signal
}

Frequenz einstellen:


void AD9850_Frequenz(double frequenz){
  long int y;
 
  frequenz=frequenz/1000000*4294967295/125; //für ein 125 MHz Quarz
  y=frequenz;
  AD9850_SendData(y);     // w4 - Frequenzdaten LSB übertragen
  AD9850_SendData(y>>8);  // w3
  AD9850_SendData(y>>16); // w2
  AD9850_SendData(y>>24); // w1 - Frequenzdaten MSB
  AD9850_SendData(0x00);  // w0 - 0x00 keine Phase
  pulseHigh(FQ);          // Die neue Frequenz ausgeben
}


Und Daten senden:

void AD9850_SendData(unsigned char c) {
  int i;
 
  for(i=0; i<8; i++) {
    digitalWrite(DATA, (c>>i)&0x01);
    pulseHigh(CLK);
  }
}

Mehr brauchte ich nicht, mehr war damals für mein Projekt nicht erforderlich. Den Code kann man aber, wenn man will, ja mit dem offiziellen Datenblatt anpassen und erweitern. Zudem gibt es schon so schöne fertige Bibliotheken für den AD9850, ist da für Euch nichts dabei das man das Rad neu erfinden muss? Auch mal in die ApplicationNotes von Analog reinsehen, die bauen mit Ihren DDS-ICs ja alle möglichen Sender auf und zeigen es wie es geht, fast immer sogar mit Quellcode der dann aber für den jeweilig verwendeten Prozessor angepasst werden muss.


Viele Grüße Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#69
Das mit dem Dreieck konstanter Amplitude ist gelungen.
Ich habe den Bereich von 100KHz bis 2MHz gewählt.
Dieser LM13700 ist eine feine Sache. (Bis auf den Darlingtonpuffer.)
Jetzt sind zwei Stück also 4 Transconductance amps eingesetzt.
Für die Dreieckspannung am Frequenzverdoppler,
Phasenhubmodulator,
AM-Modulator
und dann noch für die Dreieckspannung am Sinusformer.
Wobei man die letzten Beiden nicht braucht, wenn ein vorhandener
AM-TX in EER-Technik verwendet wird.
Dann bleibt der Hardwareaufwand relativ gering.

LG
old.
Zitieren
#70
(14.06.2019, 21:04)oldeurope schrieb: Mich wundert, dass von den Internetradiospezialisten hier niemand einen PM-Sketch
für den Arduino mit AD9850 aus dem Ärmel schüttelt. Das würde einiges

HALLO oldeurope.

Schon mal was davon gehört das man nett anfragen kann wenn man ein Problem hat?
Dieses Vollkaskodenken das einem die Lösungen einfach vorgesetzt werden ist absolut dreist und kaum zu überbieten. Wenn man selbst zu "ungeschickt" für eine Implementierung ist, sollte man sich mit solchen Sätzen zurückhalten. "Mich wundert...." ... wie kann man von seinem Projekt nur so überzeugt sein und denken das plötzlich alle springen nur weil der liebe Herr ein Problem hat!

Otto.
Zitieren
#71
+++, dass mein Fritzfon Internetradio kann. Tongue
Zitieren
#72
(16.06.2019, 13:01)oldeurope schrieb: +++, dass mein Fritzfon Internetradio kann. Tongue

Ja danke für die Zunge und die Bestätigung deines Charakters! Dann sei froh das dein "Fon" Internetradio kann, etwas anders wirst Du nämlich bei deiner Dreistigkeit von den Internetradioleuten im Forum auch nicht realisiert bekommen geschweige denn Hilfe bei zukünftigen Programmieraufgaben.

Otto.
Zitieren
#73
Das macht nichts. Ich habe gelernt mit Sanktionen umzugehen. 
Letztlich schießt sich der Sanktionierende selbst damit ins Knie.
Außerdem bin ich sehr gut darin, analoge Lösungswege zu finden.

Ich hoffe Leute die sich mit dem Gedanken tragen ein Internetradio
zu basteln lesen das hier. Welcher Mensch mit Rückgrat hat schon
Lust Nerds um den Brat zu schmieren, damit das Radio nicht stumm
bleibt.

Übrigens: Das Fritzfon als Internetradio hat DECT-Reichweite.
Das ist ein dicker Pluspunkt. Minuspunkt, es ist mono.


LG
old.
Zitieren
#74
Hallo zusammen,

Es wäre schön wenn wir hier wieder zu einem netten Umgangston zurück kehren könnten. Ich möchte hier keinen Streit. Betrachtet das als verbindliche gut gemeinte Empfehlung die Ich hier als Moderator gebe!
Viele Grüße
Semir
---------------------------------
"Alle sagten: Das geht nicht. Dann kam einer der wußte das nicht, und hat es gemacht."
(Prof. Hilbert Meyer, Uni Oldenburg)
Zitieren
#75
Lieber Semir,
Hallo an Alle,

Bin neu hier, bin seit 2002 auf den Wellen mit einer einsteigerlizenz. Do = HB3YDM 
Komme aus der Schweiz aus dem Nahem Bodensee Raum.

Meine Frage zu dem DDS -VFO,
          Für welche Geräte ist das geeignet und währe es möglich auf dem Kanal Display die herkömmliche 
Anzeige wieder einzublenden?
Habe schon einige dieser Videos auf Portugisisch auf YouTube gesehen, wie ist das eigentlich postalisch gesehen nur noch für uns Amateure wenn eine CB Funke mit dem Arduino Baustein umgerüstet wurde oder kann man das auch so programmieren das es zum senden nur auf den jeweils Postalischen Gegebenheiten ist für die CB-Funker oder fällt das ganz geg?

73
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  AM Modulator mit Trägersteuerung und XCF8.. Semir 41 19.435 14.02.2024, 23:25
Letzter Beitrag: Semir
Video Ilmenau_Teile, Teil 3. Ein UKW Ilmenau mit Arduino Nano navi 0 402 25.06.2023, 22:21
Letzter Beitrag: navi
  SI4703 und Arduino Nano, zweite Generation mit RDS saarfranzose 5 6.151 01.04.2020, 19:37
Letzter Beitrag: navi
  UKW Modulator mit Lime SDR und GNU Radio Semir 7 4.577 14.12.2019, 12:44
Letzter Beitrag: Reflex-Kalle
  AM Stereo (CQUAM) Modulator mit TBA120 und TBA520 Semir 71 52.819 24.05.2019, 23:35
Letzter Beitrag: Semir

Gehe zu: