Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
DDS AM Modulator mit Arduino
#41
Das AD9850 Board ist schon im Starterkit?

Als Abstimmhilfe für Empfänger ohne Digitalanzeige ist das Teil Gold wert
und hat mir gestern Abend/Nacht sehr geholfen.

Wo bekomme ich einen 1KHz Sinus-Ton zur Modulation her?
Geht das noch irgendwie mit dem arduino oder baue
ich mit einem Transistor einen Phasenschiebergererator dazu?

Ich werde mir mal dieses Display mit dem Seriellen Anschluss
für künftige Projekte besorgen, so wie die Funkfreunde das gemacht haben. 

LG
old.
Zitieren
#42
Nein. im Starter-Kit ist nur das Arduino-Board, ein kleines Steckboard und ein Holzboard zur Montage beider, sowie ein paar Kleinteile (Widerstände, Kondensatoren, LEDs, Einstellregler, sowie Drahtbrücken) einschließlich dem Display. Das AD9850 Modul hab ich schon lange und war ursprünglich bei einem SDR verwendet worden, wurde aber durch ein Si5351Modul abgelöst.

Das Arduino-Starter-Kit sich selbst anzuschaffen lohnt nicht wirklich. Die Kleinteile hat man und was man nicht hat, bekommt man einzeln preiswerter. Das Kit ist mehr für den Elektronik-Anfänger gedacht.

1kHz Ton zum Modulieren könnte man ganz einfach mit einem PWM-Timer erzeugen und mit einem Tiefpass dann ein recht brauchbares Sinussignal erhalten. Muss ja nicht gut klingen, muss man ja nur demodulieren können.
Zitieren
#43
(27.05.2019, 17:05)Reflex-Kalle schrieb: 1kHz Ton zum Modulieren könnte man ganz einfach mit einem PWM-Timer erzeugen und mit einem Tiefpass dann ein recht brauchbares Sinussignal erhalten. Muss ja nicht gut klingen, muss man ja nur demodulieren können.

analogWrite macht knapp 500Hz PWM. Da kann ich keine 1KHz mit bekommen.
Mal davon abgesehen, dass ich gar keinen Sketch für eine Sinus-PWM schreiben kann.

LG
old.
Zitieren
#44
Sagt mal Leute,

nochmal zu C-QUAM. Das AD9850 kann ja PWM an Qout. 
Die stellt man mit dem Poti auf dem Board ein.
(Ich habe das übrigens so gedreht, dass an Q nichts mehr rauskommt um 
Störsignale zu vermeiden.)
Wenn ich das Signal von Q durch 2 Teile und die Potispannung moduliere,
müsste das doch Phasenmodulation geben, richtig?
Das wäre dann ein PWM=>PM Converter.
   
Man muss es dann noch schaffen, den Sketch so zu ändern,
dass im Display die halbe Frequenz angezeigt wird.

LG
old.
Zitieren
#45
Hi Darius,

wegen der 1kHz Erzeugung das

https://web.csulb.edu/~hill/ee470/Lab%20...erator.pdf

mal lesen. Das mit dem Programmieren wird mit der Zeit schon. Fällt mir als ehemaliger Z80-Assembler und Assembler-Programmierer auch immer etwas schwer, mich in die Arduino-Sketches reinzudenken, obwohl es auch nicht viel anders ist.

Gruß

(Reflex-)Kalle
Zitieren
#46
Schluck Smiley57 , es wird der Phasenschiebergenerator mit einem BC547  Smiley47 .

LG
old.
Zitieren
#47
Ist natürlich einfacher, braucht ja auch kaum viele Bauelemente.
Zitieren
#48
(27.05.2019, 17:44)oldeurope schrieb: Sagt mal Leute,

nochmal zu C-QUAM. Das AD9850 kann ja PWM an Qout. 
Die stellt man mit dem Poti auf dem Board ein.
(Ich habe das übrigens so gedreht, dass an Q nichts mehr rauskommt um 
Störsignale zu vermeiden.)
Wenn ich das Signal von Q durch 2 Teile und die Potispannung moduliere,
müsste das doch Phasenmodulation geben, richtig?
Das wäre dann ein PWM=>PM Converter.

Man muss es dann noch schaffen, den Sketch so zu ändern,
dass im Display die halbe Frequenz angezeigt wird.

LG
old.

Hallo Darius,

Ja das geht so. In einem Vektorsoskop hab ich das Mal so gelöst. Wenn du anschließend wieder vervielfachst geht auch mehr als 360 Grad. 

Nachteil der schöne Sinus ist dann weg. Dann kannst du auch gleich ne PLL mit 4046 bauen...
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
#49
Die PLL gibt FM*. Funktioniert also nicht. Ursprünglich hatte ich das vor.
Die Sinusform der HF ist uninteressant. Da kommt sowieso irgendwo
danach ein Tiefpass oder Kreis.

Ich bastle gerade einen 7473 hinter den 9850.
Mal hören, ob ich in Stellung Zwangsstereo was höre.


LG
old.

* Einspeisen in den Fußpunkt des Loopfilterkondensators.
Zitieren
#50
Es funktioniert. Zumindest ist das eine Lösung, bis mal Jemand
einen PWM-Sketch schreibt. Jedenfalls kann ich den C-QU-Träger
mit dem AD9850 bereitstellen und das ist doch sensationell. Smiley20 


Ob der Phasenhub ausreicht, muss ich noch am Freudenstadt 125 Prüfen.
Aber so vom Lautstärkeeindruck könnte das gerade so hinkommen.
Ich höre auch nicht wirklich einen Unterschied, ob ich am Bandanfang
oder am Bandende bin. Aber das muss ich nachmessen.
Für volle Aussteuerung benötigt man 1,5Vpp.

Hier ein Bild vom Versuchsaufbau, Der Sony cfs-55s hat einen MC13028
C-QUAM-Stereodecoder eingebaut, der in Stellung Zwangsstereo steht.
So kann ich das Signal hören. Der über den gelben Bipolarelko kopple ich
die NF ein. 1KHz vom Tongenerator.

.jpg   20190527_CQU_AD9850.jpg (Größe: 131,33 KB / Downloads: 489)
Hier das PWM-Signal mit der doppelten Frequenz am Q-Ausgang des AD9850:

.jpg   20190527_PWM_AD9850.jpg (Größe: 20,26 KB / Downloads: 489)
Und hinter dem Flip-Flop CD74HCT73 ist aus der PWM ein Phasenmoduliertes Signal
geworden. Die Modulation erkennt man nicht mehr, dafür aber die
Frequenzteilung.

.jpg   20190527_PM_74HC73_AD9850.jpg (Größe: 16,67 KB / Downloads: 491)

Ich habe die Masse vom Tastkopf nicht dran, daher das Klingeln der Flanken.

LG
old.

Ich muss ja mal sagen, dieses Forum ist sehr inspirierend.  Smiley58
Zitieren
#51
(24.05.2019, 23:44)Semir schrieb: ... Der Arduino Mini Pro erzeugt direkt per PWM die 25Hz für den Pilotton ...

Hallo Semir,
kann ich den Code dafür bitte haben? Ich möchte ihn zu dem VFO Sketch hinzufügen
um schonmal einen Stereoträger zu generieren.

LG
old.
Zitieren
#52
Hallo old,

PWM ist im Arduino-Ökosystem relativ einfach zu bewerkstelligen, die APIs dafür gibt es ja.

https://www.arduinoclub.de/2017/06/14/pw...uslesen/2/

Irgendwann wenn ich mal wieder mehr Zeit habe, zeige ich im Forum einen AM-Stereo Modulator auf Basis eines ESP32, der kaum teurer ist
als ein Arduino Nano, dafür aber alles in Echtzeit in Software macht und auch keinen DDS-IC wie AD9850 benötigt. Als Modulationsquelle
empfängt er über sein internes WLAN-Modul Internetradio oder Bluetooth. Ein solches Internetradio auf ESP32 habe ich hier im Forum samt
Sketch ja schon gezeigt. Das war praktisch der kleine Vorgänger des aktuellen iRadio welches auf einem Raspberry läuft.

Gruß
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
#53
Ich glaube die einfachste und schnellste Lösung für mich ist,
mit "blink without delay" auf Pin1 einen 25Hz Rechteck zu machen.
Einen Tiefpass braucht man eh, auch bei PWM, und danach gibt
das einen Sinus.

Das mit den ESP32 hört sich gut an.
An dem Internetradio habe ich Interesse aber das übersteigt
derzeit meine Fähigkeiten. 

LG
old.
Zitieren
#54
(28.05.2019, 08:06)oldeurope schrieb:
(24.05.2019, 23:44)Semir schrieb: ... Der Arduino Mini Pro erzeugt direkt per PWM die 25Hz für den Pilotton ...

Hallo Semir,
kann ich den Code dafür bitte haben? Ich möchte ihn zu dem VFO Sketch hinzufügen
um schonmal einen Stereoträger zu generieren.

LG
old.

Hallo Darius,

Bin im Moment in München und schreibe auf dem Handy. Der Code müsste aber im Thread des Arduino Projektes sein
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
#55
Guten Abend Semir, ich muss mir sowieso noch einen PWM Pin freischaufeln.
Letztendlich spielt es keine Rolle ob Sienus oder nicht, entweder muss
man die PWM oder die Oberwellen wegfiltern. Dafür habe ich ein
Sallen Key Tiefpass gemacht. Den 0,1µ smd vom Potischleifer nach GND,
auf dem Board, musste ich durch 10nF ersetzen.


.jpg   20190528_Pilot.jpg (Größe: 105,21 KB / Downloads: 438)


Ich habe jetzt in dem Sketch die Frequenzanzeige halbiert. 
Das geht ganz einfach, indem man für die 4294967295 den
doppelten Wert, also 8589934590 einsetzt.
Dann noch delay durch Millis ersetzt und die 25Hz mit
Blink without delay generiert.

Der Stereoträger ist jetzt da.  Smiley58

Als Nächstes versuche ich den Rotary auf zwei Analogeingänge zu bringen.

Inzwischen habe ich mir Deinen 25Hz Code angeschaut. Da verstehe ich 
gar nichts von. Das ist ein richtiges Zeh-Programm.

LG
old.
Zitieren
#56
Hallo Darius,

nur zum Verständnis möchte ich den Code erklären:

1. Zeile "pwmDuty" ist eine Funktion:

Die Funktion "pwmDuty" kann mit Werten von 0...255 gefüttert werden. 0 ergibt am zugeordneten Pin immer 0 Tastverhältnis, 255 ergibt immer volles Tastverhältnis also praktisch immer High Pegel. Bei dem Wert 127 erhältst Du ca. 50% Tastverhältnis. Das Ganze bei ca. 1kHz Grundfrequenz des ausgegebenen Rechtecks.

Nun Kommt der Sinus. Diese Funktion ist in der Arduino IDE implementiert ich muss sie nur aufrufen. Das Argument der Sinusfunktion wird in vielfachen von ¶ angegeben, dabei ist 0=0°, 0,5*¶=90° 1*¶=180° 1,5*¶=270° und 2*¶ wieder 360° bzw 0°.

Stelle dir einfach den Term "sin(micros() * 0.000157)" als Zeiger vor der sich alle 40ms einmal um 360° dreht. Die zeitliche Projektion des Zeigers ist deine Sinusschwingung.

Damit die 25Hz entstehen müssen alle Werte von 0*¶ - 2*¶ in 40ms durchlaufen werden. Das erreiche ich mit der Funktion "micros()" die einfach hoch zählt. Um 25Hz zu erreichen muss die Schrittweite des Hochzählens entsprechend gewählt werden das ist der Faktor 0.000157. Ein Verändern dieses Faktors erhöht oder erniedrigt die Frequenz. Ich hatte das mal ausgerechnet aber im Moment nicht parat. Im Prinzip ist das eine DDS wobei der Akkumulator und die Lookup Tabelle hier die Sinusfunktion ist. Die A/D Wandlung erfolgt per PWM.

Die Sinusfunktion hat ja einen Wertebereich von -1...+1 das Multipliziere ich mit 126, damit ergibt sich ein Wertebereich von -126...+126 diese Werte werden zu 128 addiert. Damit durchläuft die pwmDuty Werte von 2...254 also quasi alle möglichen Tastverhältnisse.

  pwmDuty = 128 + 126 * sin(micros() * 0.000157);

2. Zeile Ausgabe:

Das Signal muss nun noch auf den von mir definierten Pin ausgegeben werden. Das macht diese Zeile:

   
  analogWrite(pwmSinePin,pwmDuty); //write value to PWM output pin    

Das war es schon.

Ich hoffe ich konnte etwas Licht in den Programmcode bringen. Ich habe übrigens Monate gebraucht um das alles in diversen Foren und web sites zu erlernen, vorher war ich auch ein "Programmiermuffel"  Smile . Aber es hat sich gelohnt die Zeit zu investieren. Wie heißt es immer so schön bei einem Möbelhaus " Entdecke die Möglichkeiten..."
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
#57
(28.05.2019, 22:47)Semir schrieb: Das war es schon.

Ich hoffe ich konnte etwas Licht in den Programmcode bringen. 

Jetzt hast Du mich aber da liegen. 
Das sind ja gerade mal 6-Zeilen Code für einen PWM-Sinus:

.png   Sketch_25Hz_PWM-Sinus-Code.png (Größe: 6,71 KB / Downloads: 403)
Vielen Dank für die Erklärung.  Smiley32 


LG
old.
Zitieren
#58
Das mit der Phasenmodulation funktioniert nicht so schön wie im Bild oben gezeichnet.
Bei der PWM steht nämlich nicht die steigende Flanke phasenstarr.
Grund: Die PWM wird ja mit einem Komparator aus dem Sinus gewonnen.


Man bekommt also auf beiden Flanken eine gegensätzliche PWM wobei das wieder
Phasenhub kostet. Der Phasenhub ist auf MW deshalb unzureichend und ich muss die
Frequenz verdoppeln. Da fällt mir nur der XOR-Frequenzverdoppler ein.

Eine wirklich breitbandige Lösung gibt das nicht, ich hoffe zumindest im oberen
MW-Bereich ohne Nachgleich des Tastgrades und Phasenhubes arbeiten zu können.
Immerhin bin ich dann wieder auf der Originalfrequenz.

LG
old.
Zitieren
#59
(05.06.2019, 10:06)oldeurope schrieb: ... ich muss die
Frequenz verdoppeln. Da fällt mir nur der XOR-Frequenzverdoppler ein.

Eine wirklich breitbandige Lösung gibt das nicht, ich hoffe zumindest im oberen
MW-Bereich ohne Nachgleich des Tastgrades ... arbeiten zu können.
...
LG
old.

Das ist kein Problem. Ich dachte es sei eines, weil die Erklärungen
dazu in der Wikipedia und vor allen Dingen im Elko falsch sind.
Habe heute richtig viel gelernt:
https://www.mikrocontroller.net/topic/441735#5867496
[url=https://www.mikrocontroller.net/topic/441735#5867496][/url]
LG
old.
Zitieren
#60
Da der Frequenzverdoppler nun so wunderbar funktioniert,
mache ich den cquam-Modulator komplett über die ganze 
Mittelwelle abstimmbar.
Mit dem Phasenhub komme ich jetzt ganz bequem hin.
Vor allem deshalb, weil der Komparator mit dem Frequenzbereich
sauber arbeitet.
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.
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  AM Modulator mit Trägersteuerung und XCF8.. Semir 41 19.425 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.146 01.04.2020, 19:37
Letzter Beitrag: navi
  UKW Modulator mit Lime SDR und GNU Radio Semir 7 4.575 14.12.2019, 12:44
Letzter Beitrag: Reflex-Kalle
  AM Stereo (CQUAM) Modulator mit TBA120 und TBA520 Semir 71 52.807 24.05.2019, 23:35
Letzter Beitrag: Semir

Gehe zu: