www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik NF-Signal mit µC erzeugen


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte ein NF-Signal (also ca. 25 bis 5000 Hz) per µC erzeugen.
Designziel ist ein niedriger Klirrfaktor und einfache Aufbau.

Wie würdet ihr das realisieren? DDS im µC oder dedizierter Chip? Gibts
da was feines?

Autor: Pete Nerlinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dafür nimmt man einen DSP.
Was das is kannste bei Wikipedia nachlesen.

Keine Ursache!
Falls noch fragen hast, ich bin hier online.

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also 5khz ist nun wirklich keine Problem für einen Mikrocontroller der
mit 8MHZ oder mehr läuft.Zusammen mit einem externen
Digital-Analog-Wandler (z.B. MAX58xx) sollte das schon ganz brauchbar
sein.

Eine andere Frage ist,was ausgegeben wird.Einen sauber Sinus oder etwas
ähnliches zu berechnen ist ja kein Problem,sobald aber irgendwie
gesampelte Daten ins Spiel kommen wird es ETWAS komplizierter.

Um was genau geht´s den?Audio-Anwendung?Oder Signalgenerator?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!

"Mit Kanonen auf Spatzen schiessen" sagt dir was?

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Pete:

'Keine Ursache!' Wofür?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ronny,

5 kHz sind in der Tat nicht viel, das ist schon richtig. Die Frage ist
nur, ob man die DDS im µC macht und einen vernünftigen DA-Wandler sucht
oder ob es brauchbare DDS-Chips gibt die das gleich selber können.
Entscheidend ist, dass die Schaltung möglichst einfach wird und die
Bauteile natürlich zu beschaffen sind. Es geht im Übrigen um einen
Sinus, sorry, dass diese Information fehlt. Ein parallel DAC ist mir
dabei allerdings erstmal unangenehm.

Danke für deinen Beitrag.

@Pete:
Troll dich.

Autor: Ronny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm.... MAX5773 (50KHZ/14Bit-DAC mit SPI-Anschaltung) und ein
entsprechender AVR (per Software-SPI auch einer der ganz kleinen) wären
vielleicht ein Anfang.

Ob es ein DDS integriert gibt,weiss ich nicht da ich bisher damit noch
nicht gross zu tun hatte.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt die Niederfrequenz-DDS von Mitel, jetzt anscheinend Fairchild
ML2035/36/37. die liefern einen Sinus bis 25 oder 50 kHz.
http://www.alldatasheet.com/datasheet-pdf/pdf/5367...

ansonsten der günstigste DDS von Analog Devices AD9835 bis ca. 20 MHz
http://www.analog.com/en/prod/0%2C2877%2CAD9835%2C00.html

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Christoph und Ronny,

danke für eure Beiträge. Irgendwie ist meine letzte Antwort von gestern
Abend allerdings abhanden gekommen. Der MAX 5773 ist natürlich extremer
Overkill mit 32 Kanälen und TQFP64.

Den ML20* kann ich leider weder bei R, K, C oder Farnell finden und den
AD9835 gibts nur bei Farnell für 15 Euro. Mit 50 MHz ist der natürlich
in dieser Anwendung überfordert.

Ich werde jetzt erstmal auf interne DDS orientieren und schauen, was es
da für Wandler gibt.

Autor: Klaus Bermanns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
--------------------------
                         /|  /|  |                          |
                         ||__||  |       Trolle bitte       |
                        /   O O\__           nicht          |
                       /          \         füttern!        |
                      /      \     \                        |
                     /   _    \     \ ----------------------
                    /    |\____\     \     ||
                   /     | | | |\____/     ||
                  /       \|_|_|/   |    __||
                     \            |____| ||
                /   |   | /|        |      --|
                |   |   |//         |____  --|
         * _    |  |_|_|_|          |     \-/
      *-- _--\ _ \     //           |
        /  _     \\ _ //   |        /
      *  /   \_ /- | -     |       |
        *      _ c_c_c_C/ \C_c_c_c____________
           --------------------------
                         /|  /|  |                          |
                         ||__||  |       Trolle bitte       |
                        /   O O\__           nicht          |
                       /          \         füttern!        |
                      /      \     \                        |
                     /   _    \     \ ----------------------
                    /    |\____\     \     ||
                   /     | | | |\____/     ||
                  /       \|_|_|/   |    __||
                     \            |____| ||
                /   |   | /|        |      --|
                |   |   |//         |____  --|
         * _    |  |_|_|_|          |     \-/
      *-- _--\ _ \     //           |
        /  _     \\ _ //   |        /
      *  /   \_ /- | -     |       |
        *      _ c_c_c_C/ \C_c_c_c____________
           --------------------------
                         /|  /|  |                          |
                         ||__||  |       Trolle bitte       |
                        /   O O\__           nicht          |
                       /          \         füttern!        |
                      /      \     \                        |
                     /   _    \     \ ----------------------
                    /    |\____\     \     ||
                   /     | | | |\____/     ||
                  /       \|_|_|/   |    __||
                     \            |____| ||
                /   |   | /|        |      --|
                |   |   |//         |____  --|
         * _    |  |_|_|_|          |     \-/
      *-- _--\ _ \     //           |
        /  _     \\ _ //   |        /
      *  /   \_ /- | -     |       |
        *      _ c_c_c_C/ \C_c_c_c____________
           --------------------------
                         /|  /|  |                          |
                         ||__||  |       Trolle bitte       |
                        /   O O\__           nicht          |
                       /          \         füttern!        |
                      /      \     \                        |
                     /   _    \     \ ----------------------
                    /    |\____\     \     ||
                   /     | | | |\____/     ||
                  /       \|_|_|/   |    __||
                     \            |____| ||
                /   |   | /|        |      --|
                |   |   |//         |____  --|
         * _    |  |_|_|_|          |     \-/
      *-- _--\ _ \     //           |
        /  _     \\ _ //   |        /
      *  /   \_ /- | -     |       |
        *      _ c_c_c_C/ \C_c_c_c____________
           --------------------------
                         /|  /|  |                          |
                         ||__||  |       Trolle bitte       |
                        /   O O\__           nicht          |
                       /          \         füttern!        |
                      /      \     \                        |
                     /   _    \     \ ----------------------
                    /    |\____\     \     ||
                   /     | | | |\____/     ||
                  /       \|_|_|/   |    __||
                     \            |____| ||
                /   |   | /|        |      --|
                |   |   |//         |____  --|
         * _    |  |_|_|_|          |     \-/
      *-- _--\ _ \     //           |
        /  _     \\ _ //   |        /
      *  /   \_ /- | -     |       |
        *      _ c_c_c_C/ \C_c_c_c____________
           --------------------------
                         /|  /|  |                          |
                         ||__||  |       Trolle bitte       |
                        /   O O\__           nicht          |
                       /          \         füttern!        |
                      /      \     \                        |
                     /   _    \     \ ----------------------
                    /    |\____\     \     ||
                   /     | | | |\____/     ||
                  /       \|_|_|/   |    __||
                     \            |____| ||
                /   |   | /|        |      --|
                |   |   |//         |____  --|
         * _    |  |_|_|_|          |     \-/
      *-- _--\ _ \     //           |
        /  _     \\ _ //   |        /
      *  /   \_ /- | -     |       |
        *      _ c_c_c_C/ \C_c_c_c____________

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muß es ein DDS sein, oder reicht es, den Prozessortakt
herunterzuteilen?

So machen es ja die Timer im Mikrocontroller, wenn sie eine
Rechteckschwingung ausgeben. Nachteil ist die geringe
Frequenzstufenzahl, Vorteil einfach und jitterfrei. Der uC muß nur in
regelmäßigen Abständen einen neuen Wert aus einer Sinustabelle an einen
DA-Wandler ausgeben.

Der DDS läßt sich auch in Software realisieren, aber damit ist der uC
ziemlich ausgelastet. Es gab in der Frühzeit der Mikroprozessortechnik
auf den meisten Prozessoren solche DDS-Programme, um vierstimmig Musik
auszugeben, ich hatte das auf dem 6502. Jede Sinusschwingung war aus 64
Spannungswerten aus einer Sinustabelle aufgebaut, sodaß man vier
Stimmen/Schwingungen addieren konnte ohne dass die 255 überschritten
wird. Ein 8Bit-DA-Wandler am Druckeranschluß oder einem anderen
Parallelport gab das ganze aus. Es funktionierte nach dem DDS-Prinzip,
also eine Programmschleife fester Länge, die einen konstanten Wert zu
jeder der vier Schwingungen addierte.

Autor: Philipp Burch (nicht einglogt) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus:
Sonst geht's aber?

@Thomas:
Du könntest trotzdem einen AVR mit PWM in Hardware verwenden, 5kHz * 64
Schritte (6bit Auflösung) müsste der bei entsprechender Taktung
problemlos schaffen. Brauchst du am Ausgang denn eine grosse Leistung?
Ansonsten müsste das mit einem Tiefpass relativ gut zu glätten sein.
Evtl. noch ein OpAmp nachschalten, wenn du doch mehr Leistung
benötigst.
Falls es auf die Auflösung nicht so sehr ankommt könntest du auch über
einen Widerstands-DA-Wandler nachdenken, da hat's keine Oberwellen
drin.

Und das dort oben sollte wohl eher "unterfordert" heissen, gelle ;)

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mal nach Programmen gesucht, die so einen Software-DDS
enthalten, hier etwas auf dem Apple II ( 6502 Prozessor mit etwa 1 MHz
Takt):
http://members.aol.com/MJMahon/RTSynth.html

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

> Muß es ein DDS sein, oder reicht es, den Prozessortakt
> herunterzuteilen?

Reicht nicht. Es soll ein Sinus werden, der diverse Frequenzen annehmen
soll. Einschwingverhalten etc. ist schnuppe, da es nur um das dann
stationäre Signal geht. Frequenzteiler machen nur schreckliche
Frequenzschritte, das wird nix. PLL wäre eine Lösung, aber hier vmtl.
unnötig und man müsste dann wieder einen Sinus draus machen, aus dem
Takt eben...

Ich werde ersteinmal versuchen mit vorhandenen Bauteilen - 8-Bit
Wandler - DDS im µC (wie im Projekt von Andreas) nach zu stellen. Dann
muss sich zeigen, ob das geht. Da die Frequenz nicht allzu hoch ist,
sollte es rechenleistungsmäßig aber noch kein Problem geben.


> Du könntest trotzdem einen AVR mit PWM in Hardware verwenden, 5kHz
> * 64 Schritte (6bit Auflösung) müsste der bei entsprechender Taktung

Habe ich mir auch überlegt, aber 6 Bit sind wahrscheinlich zu wenig für
einen "sauberen" Sinus. Ansonsten wäre PWM natürlich schon gut, da man
keine zusätzlichen externen Bauteile braucht. Filter braucht man bei
allen Lösungen.


> Falls es auf die Auflösung nicht so sehr ankommt könntest du auch
> über einen Widerstands-DA-Wandler nachdenken, da hat's keine
> Oberwellen drin.

Den Zusammenhang kann ich nicht herstellen, höherfrequente Störungen
kommen doch durchs Umschalten unabhängig vom Wandler?!


> Und das dort oben sollte wohl eher "unterfordert" heissen, gelle
;)

Allerdings ;-)


> http://members.aol.com/MJMahon/RTSynth.html

Werde ich mir anschauen, sobald ich mehr als ein paar Minuten Zeit habe
;-) Danke


@Pete Nerlinger und Klaus Bermanns:
Sucht eucht bitte ein anderes Forum.

Autor: Fly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
irgendeinen dac nehmen, dein signal 10x oversamplen, mittels RC filtern
und fertig!
Hab ich auch schon gemacht und bei 10x OS kommt trotz primitivem Filter
ein schöner Sinus raus...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.