Sinus Doppelton- Generator mit PSoC 4

  • Hallo Bastelfreunde,
    da es diese PSoC 4- Baugruppe sehr preisgünstig ( < 5 €) gibt, z.B. hier:
    http://www.watterott.com/de/CY8CKIT-049-42XX-Prototyping-Kit



    habe ich nach Anwendungsmöglichkeiten für unser Funk- Hobby gesucht.


    Entstanden ist eine einfache Schaltung auf Lochrasterplatine, mit der man als NF- Generator Sinustöne erzeugen kann.


    Bisher wurden folgende Funktionen programmiert:


    1. Doppelton 750 Hz + 1200 Hz
    2. Sweep von 50 bis 1800 Hz
    3. Sweep von 100 bis 3600 Hz (64 Stützstellen)
    4. einstellbare Frequenz, bei 1000 Hz beginnend, Schrittweite ca. 1 Hz, Anzeige auf 3 Nachkommastellen
    4. Festfrequenz 440 Hz


    Das Projekt ist offengelegt unter http://www.mikrocontroller.net/topic/351397#new


    Für Anregungen und Verbesserungsvorschläge bedanke ich mich im Voraus.


    73, Wolfgang


    Nachtrag: Bei einem Nachbau bitte beachten: Die LCD- Anzeige an Port 2 (oder 3) anschließen, sonst verbaut man sich den externen Oszillatoreingang.

  • Hallo Wolfgang,


    die Sweep-Funktionen sind sicher hilfreich, da man z. B. Frequenzgänge leicht mit einem zusätzlichen einfachen Oszilloskop nachmessen kann. Wie aber sieht es mit dem Doppelton aus? Auch auf dem Baustein werden bestimmt IM-Produkte generiert, die aber, wenn man den Baustein z. B. für Linearitätsmessungen an einem SSB-Sender verwenden möchte, äußerst gering ausfallen sollten. Sonst sollte man diese Anwendung besser nicht verwenden. Hast Du da schon mal gemessen?


    73, Uli, DK4SX

  • Wolfgang,


    mit einem Oszilloskop werden Intermodulationsprodukte eines Zweitonsignals nicht zu messen sein. Dazu benötigst Du einen NF-Spektralanalyzer.


    73, Uli, DK4SX

  • Hallo Ömer,
    stimmt, im Zeitbereich läßt sich die Linearität schwer erkennen.
    Es gibt aber frei verfügbare Lösungen.
    -ARTA
    -Audiometer nach DG8SAQ
    -SpectrumLab nach DL4YHF.


    Beispiele siehe Anhang, ARTA ist mit einer USB-Soundbox SB1240 von Creative Labs verkoppelt.
    Sowohl der Generator als auch die Soundbox liefern ein (mich) beeindruckendes Bild.
    Für das Audiometer ist es eine EMU 0404.
    Falls Jemand eine ebensolche Box von EMU verwendet, würde mich interessieren, inwieweit das
    Grundrauschen dem der EMU0204 entspricht ?
    Ich ermittelte mit der 0404 etwas mehr als die doppelte Rauschspannungsdichte als im FA vom DG8SAQ angegeben.
    Das schließt alles Meßfehler meinerseits nicht aus.


    73
    Andreas
    DL5CN

  • Hier ist das Spektrum
    erzeugt mit Audio Lab und einer ASUS Xonar D2 Soundkarte. Danke für den Tip, Andreas!


    Heute habe ich außer dem PSoC 4 einen PSoC 5 mit (fast) dem gleichen Programm gefüttert und beide nochmals vermessen. Die Frequenz f1 - f2 ist um ca. 60 db gegenüber den Nutzsignalen gedämpft. Das ist natürlich nicht vergleichbar mit den Profi- Soundkarten!
    Aber es gibt bei PSoC 5 noch weiteres Potential zur Verbesserung: interne Digitalfilter, die z. B. als Bandpässe arbeiten könnten. Dann wären die AD- Wandler die verbleibende Schwachstelle. Was meinen die Experten dazu?


    73, Wolfgang

  • Bei den bisherigen Messergebnissen des Zweiton- Signals konnte die Unterdrückung der Summen- und Differenzfrequenz noch nicht befriedigen.
    Vermutlich war der Pegel für die Soundkarte zu hoch. Ich habe versuchsweise ein Dämpfungsglied 20 dB eingeschleift. Nun sieht es so aus:
    Das linke Bild zeigt das Spektrogramm vom AudioMeter, in der Mitte ist unter gleichen Testbedingungen das Ergebnis von Soundcard Scope zu sehen.
    Das rechte Bild zeigt schließlich, was ein Bandpass 700 Hz ... 1300 Hz bewirken würde, (erstellt mit Soundcard Scope). Dieser Bandpass ist also sehr empfehlenswert...

  • Hallo Wolfgang,
    vor dem Filtern würde ich erst mal herauszufinden versuchen, ob der Generator noch Verbesserungs-
    potential bietet.
    Die Audiometer-Darstellung wünschte ich mir mit linearer Frequenzachse und vielleicht weniger Pegel.
    Vielleicht ist auch zuerst ein Träger als Grundversuch sinnvoll. Da sieht man dann die Oberschwingungen besser.
    Das zweite Spektrum erscheint mir schon brauchbar.
    Die Einstellungen der Soundkarte in Abhängigkeit vom Betriebssystem und von den Programmen der
    Kartenhersteller sind auch zu beachten. Das Audiometer kann z.B. nicht allein die Abtastrate wählen.
    Dazu benötigt man im Falle Creative Labs noch das "Tool".
    Die Stromversorgung des Generators in Bezug zum Rechner sollte ebenso überlegt sein. Die Soundsysteme verfügen
    über eine beachtliche Dynamik und da fängt man sich schnell Störungen ein.
    Das gilt übrigens auch für Abschirmungen, Kabel und Stecker.
    Ein schneller Test mit einer Batterie lässt Erdschleifen oder andere Einkopplungen erkennen.
    Jedenfalls ist das alles interessant und spannend.
    73
    Andreas

    dl5cn

  • Hallo Andreas,
    Danke für Deine Anregungen!
    Ich habe zunächst die Stromversorgung statt von der USB- Buchse auf ein (Trafo)- Steckernetzteil verlegt und nochmals gemessen. Und plötzlich war die offensichtliche Störspitze bei ca. 910 Hz weg. Für ein wirklich brauchbares Messinstrument wird man aber ohne einen oder auch zwei Bandpässe nicht drumherum kommen.
    73, Wolfgang

  • Hallo Wolfgang,
    Ich lese gerade am IPad, kann also Dein auf uc.net hinterlegtes ZIP File nicht oeffnen. Deshalb frage ich mal ins Blaue hinein: Hast Du an den IDAC Ausgaengen Rekonstruktionsfilter dran? Ich hatte mir selbst mal auf Basis eines ATTiny eine diskrete DDS Loesung gebaut, die bis 700kHz laeuft. Realer DDS "Takt" war ca. 2.5MHz bei 20MHz CPU Takt. Dort sah das Ausgangssignal ohne Reko-Filter bereits bei reichlich 200kHz (also 10% des DDS Taktes) grauselig aus. Laeuft Dein Generator denn wirklich mit 48MHz oder weniger?

    Ciao,
    Uwe / DO8UL.

  • Hallo Uwe (DO8UL),
    ja, es müssten unbedingt noch Tief- oder Bandpässe an den Ausgang.
    Als höchste Taktfrequenz habe ich ca. 250 kHz an den DA- Wandlern ausprobiert (fand noch keine Spezifikation des dynamischen Verhaltens in der Doku).
    Es werden 128 Stützstellen benutzt, außer beim Sweep bis 3600 Hz, dort nur die Hälfte.


    Der Prozessor selbst läuft auf 48 MHz- mit externem Quarzoszillator. Intern erzeugt würde der Takt mit +/- 2% Genauigkeit arbeiten. Ich wollte halt eine bessere Genauigkeit haben...


    Angefügt sind die Messwerte für einen Einzelton 440 Hz, 128 Stützstelle, 8-Bit DA- Wandler ohne zusätzliche Tiefpässe.


    73, Wolfgang

  • Hallo Wolfgang,
    ich habe mir nun Dein Projekt auf uc.net mal angeschaut.
    Hier ein paar Gedanken/Fragen, die mir dabei gekommen sind:

    • Warum verwendest Du eine LUT mit nur 128 Stuetzstellen? Bist Du speicher-limitiert?
    • Deine Signal-Generierung wird ueber eine ISR gemacht, d.h. die Frequenz mit der der
      Interrupt ausloest ist bestimmt die Ausgabe-Frequenz ueber f_isr / 128, richtig?
    • Geht die ISR Frequenz maximal auf 24MHz bei 48MHz Clock?

    Als Experiment wuerde ich Dir vorschlagen, die LUT auf mind. 256 Stellen zu erweitern und
    die ISR mit einer festen Frequenz, z.B. 6MHz zu triggern. In der ISR implementierst Du dann
    eine DDS (siehe Link unten) mit Phasen-Akku, Lookup und IDAC Ausgabe. Vorteil waere, dass
    die DDS Frequenz fest waere. Das erleichtert eine Implementierung des
    Rekunstruktions-Filters sehr:

    • cut-off bei f_DDS / 3
    • erste Notch bei f_DDS

    und Du kannst beliebige Frequenzen zwischen 0 und f_DDS / 3 erzeugen. Ein weiterer Vorteil
    ist dann die exakte Steuerung des Phasenlage: Du scheinst ja zwei IDACs zu haben (einer leider
    nur mit 7 bit), damit koennen beide die gleiche Frequenz generieren, aber einer auf 0 Grad und
    der andere z.B. 180 Grad phasenverschoben (Push-Pull-Konfiguration) oder halt 90 Grad fuer
    I/Q Signale (Modulation/Demodulation, vektorielle Vektor-Analyse, ...).
    Hier findest Du meine ATTiny861-basierte DDS Loesung. Laeuft gut bis ca. 700kHz bei 2.5MHz
    f_DDS (f_CPU = 20MHz, 8 Instruktionen per DAC Ausgabe) und Rekonstruktions-Filter am Ausgang
    des (R-2R-Ladder) DAC. Bei einem PSoC4 muesste sowas sogar noch viel schneller gehen, da der
    8Bit ATTiny ja drei Befehle zum Inkrementieren des 24-bit Phasen-Akkus "verplempert".

    Ciao,
    Uwe / DO8UL.

  • hatte ich vergessen zu verlinken:
    Das ATTiny Projekt ist ja etwas "trocken", hier habe ich etliche Aspekte
    vorher in Python simuliert. Das Hilft vllt. zum besseren Verstaendnis.
    Damit kann man auch schoen sich anschauen, welchen Einfluss es hat,
    wenn die LUT mehr Stuetzstellen hat, der Einfluss der Bit-Breite des
    Phasen-Akkus auf die Aufloesung der Frequenz-Einstellung etc.


    Und vllt. etwas off-topic, aber wer sich fuer Bit-Tiefen und Sampling-Raten
    im Audio-Bereich interessiert, findet hier ein paar Infos.

    Ciao,
    Uwe / DO8UL.

  • Hallo Uwe,
    für Deinen Beitrag vielen Dank. Aber es ist nun mal so, wie an anderer Stelle schon beschrieben, dass die D/A- Wandler nur bis ca. 250 kHz Taktfrequenz vernünftig arbeiten. Das steht nicht in den Spezifikationen (dort steht über das Zeitverhalten gar nichts,) aber ich habe es durch Versuche ermittelt.
    Dann ergibt eine einfache Rechnung (128 Stützstellen mal x = 250 000 Hz) die maximale Ausgabefrequenz x von ca. 1953 Hz. Mehr Stützstellen würden eine noch niedrigere Sinusfrequenz bedeuten. Nimmt man dagegen weniger Stützstellen, verschlechtert sich das Spektrum, (höherer Anteil von Harmonischen).


    So ist es nun mal. Dagegen helfen nur schnellere A/D- Wandler. Oder eine höhere Bit- Auflösung bei gleicher Taktrate. Das werde ich (für Einzeltöne ) einmal probieren.


    73, Wolfgang

  • Hallo Wolfgang, okay, wenn die 250kHz experimentell als Obergrenze bestimmt sind, kann man da nichts machen. Das bedeutet aber trotzdem noch, dass eine DDS Implementierung damit saubere Sinus-Signale bis ca. 250kHz / 3 ~ 84kHz erzeugen kann. Der Trick bei DDS ist ja gerade, dass man nicht die Werte der LUT sequentiell ausgibt. Stattdessen wird der Phasen-Akku als Index in die LUT genommen. Die DDS "ueberspringt" bei hoeheren Frequenzen viele Zwischenwerte in der LUT. Deshalb braucht man auch unbedingt den Rekonstruktionsfilter am Ausgang.
    Unabhaengig davon finde ich die in Deinem letzten Spektrogramm geposteten Werte recht gut. Bei einem 8Bit DAC sollte man einen Abstand vom Signal zur groessten Stoerung von ca. 48 dB erwarten ( DR = 20 * log10( 2 ^ 8 ) ) und das schaffst Du ja schon. Wenn Du die beiden DACs mit 180Grad Phasenverschiebung betreibst, hast Du sogar noch die Chance, die geradzahligen Oberwellen stark zu reduzieren. Ein weiteres Feld fuer Experimente waere noch Dithering, aber da uebersteigt dann der Aufwand vllt. langsam den Nutzen. Gehen die DACs beim PSoC5 eigentlich schneller?

    Ciao,
    Uwe / DO8UL.

  • Hallo Uwe,
    wenn man PSoC5LP einsetzt, kann man auf insgesamt 4 IDAC's mit je 8 Msps zurückgreifen. 8 Millionen Samples pro Sekunde!
    Vorausgesetzt, man würde das Problem der Linearisierung packen, könnte man von 8 auf 11 oder 12 Bit kommen, indem man 2 IDAC's parallel schaltet. Der eine würde mit 2.04 mA, der andere mit 255 µA arbeiten.
    Außerdem könnte man mehr Stützstellen verwenden.
    Oder ein ganz anderer Weg: Man nimmt 1 oder 2 externe A/D- Wandler, z.B. AD 9850. Die fertigen Module gibt es für wenige Euro bei eBay...
    Der PSoC4 dient dann zur Ansteuerung, Anzeige und Frequenzeingabe.


    73, Wolfgang

  • Zur besseren Entkopplung der beiden D/A- Wandler dienen die zusätzlichen Widerstände. Aber mehr als ca. 62 dB Unterdrückung für den Differenzton 450 Hz sind nicht drin. Reicht das aus, um einen Verstärker zu beurteilen??

    Hallo Wolfgang, Ob das reicht, weiss ich leider auch nicht. Aber mir geistert noch eine andere Idee im Kopf herum: Hat der PSoC nicht Analog Bloecke? Man koennte doch jeden der IDACs erstmal in einen aktiven Lowpass mittels on-chip OPVs terminieren. Dann nimmt man einen dritte OPV, der die Addition der beiden gefilterten Signale macht. Bringt das vielleicht nochwas?

    Ciao,
    Uwe / DO8UL.

  • Hi Uwe (DC5PI), danke für die aufmunternden Worte!
    Antwort an Uwe (DO8UL): Die analogen OPV's rauschen leider etwas, man müsste es mal ausprobieren... Eigentlich wollte ich nicht so viel löten, sondern die Vorteile der PSoC- Technologie - "Verdrahtung im Chip" - nutzen. Aber es ist eine weitere Variante zur Verbesserung des Spektrums.