PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 1 kHz Sinussignal mit µController erzeugen



r.schmidlin
04.08.2005, 17:37
Hallo Forum,

ich muß für ein Projekt eine ASK-Sinusspannung mit einer Frequenz von 1 kHz erzeugen. In der bestehenden Schaltung wird dazu ein Rechtecksignal mit dieser Frequenz über einen 1 kHz Tiefpass 3. Grades geschickt und aus dem entstehenden Sinussignal über einen Spannungsteiler zwei Signale mit verschiedenen Amplituden erzeugt. Danach wird für jede Periode entschieden welche der beiden Spannungen zum Ausgang durchgeschaltet wird.

Meine Aufgabe ist es jetzt diese Schaltung möglichst zu vereinfachen und nach Möglichkeit die ganze Analoggeschichte wegzuoptimieren. Optimal wäre es, wenn ich direkt im Mikrocontroller/DSP einen Sinus nachbilden und mit entsprechender Amplitude am IO-Pin ausgeben könnte. Meine Überlegung war es nun an einem PWM- oder DA-Ausgang den Sinusverlauf entsprechend nachzubilden und diesen evtl. nochmal mit einem kleinen, passiven R-C-Tiefpass zu "bereinigen".

Für jegliche Tipps, ob und mit was für Controllern sowas realisierbar ist, wäre ich Euch echt dankbar. Beispiele für 50 Hz-Frequenzen finden sich zuhauf aus dem Bereich irgendwelcher USV-Bastler, aber ob ein normaler Controller oder sogar ein DSP einen 1 kHz-Sinus generieren kann hab ich nirgends gefunden.

Bisher hab ich Controllertechnisch eben auch noch nicht die Erfahrung, da ich bisher beruflich nur mit 8051 und ein bisschen altem Z80 Assembler zu tun hatte. Von der Programmierung her sehe ich keine Probleme, da ich in C recht fit bin und von mir selber glaube dass ich mich auch recht schnell in nen neuen Assembler einarbeiten kann.

Wie gesagt wäre ich Euch echt dankbar, wenn Ihr mir weiterhelfen könntet.

Gruß Roland

gunzelg
04.08.2005, 18:18
Hallo Roland

einen DSP mußt Du dafür nicht bemühen. Wie Du schon schreibst geht das mit einem PWM-Ausgang oder, mit einem DAC. Da Du ohnehin an einem Filter nicht vorbeikommst würde ich das mit einem DAC machen. uC mit 8 Bit DAC, Sinuswerte ausrechnen, in Tabelle rein und in den DAC reinschieben. Dahinter noch einen Tiefpass fertig. Kann man auch mit PWM und nachgeschaltetem Filter erledigen. Das muß dann aber vermutlich ein aktiver Filter sein, kein passiver Tiefpass, da 1Khz doch schon relativ hochfrequenz (1kHz = 1ms, und hier mindestens 10 Werte(Schwingung = mindesten 10kHz, besser 20Khz PWM).

Gerhard

Dino Dieter
04.08.2005, 18:33
Hallo

Vielleicht hilft dir das auch weiter.

http://www.mikrocontroller.net/articles/Digitaler_Funktionsgenerator

MFG
Dieter

r.schmidlin
04.08.2005, 19:52
Merci Ihr beiden. Werd mir mal was überlegen und wenn ich noch Fragen hab meld ich mich wieder.

Gruß Roland

Unregistriert
01.02.2016, 16:01
DAs Problem kenne ich. MIr hat dies hier weitergeholfen

http://www.afug-info.de/Schaltungen-Eigenbau/PIC-Sinus-Tabelle/

Alois

Klebwax
02.02.2016, 07:21
Für jegliche Tipps, ob und mit was für Controllern sowas realisierbar ist, wäre ich Euch echt dankbar. Beispiele für 50 Hz-Frequenzen finden sich zuhauf aus dem Bereich irgendwelcher USV-Bastler, aber ob ein normaler Controller oder sogar ein DSP einen 1 kHz-Sinus generieren kann hab ich nirgends gefunden.

Bisher hab ich Controllertechnisch eben auch noch nicht die Erfahrung, da ich bisher beruflich nur mit 8051 und ein bisschen altem Z80 Assembler zu tun hatte. Von der Programmierung her sehe ich keine Probleme, da ich in C recht fit bin und von mir selber glaube dass ich mich auch recht schnell in nen neuen Assembler einarbeiten kann.

1kHz ist kein wirkliches Problem, ein Controller mit Hardware-PWM erzeugt das vollkommen autonom. Um das Filtern wirst du aber auch da nicht rumkommen, um einen Verstärker, um die Ausgangsimpedanz deines Signals an deine Last anzupassen, auch nicht. Nur die ASK kannst du dann in SW erledigen. Dafür ist Assembler absolut nicht nötig, das geht alles in C. Signale in Telefonqualität, 300Hz bis 3,2kHz, erledigt ein moderner µC mühelos im Hintergrund. Bei einer festen Frequenz ist das noch einfacher. Ob das Ganze aber wirklich einfacher als dein jetziger Ansatz wird?

MfG Klebwax

BMS
02.02.2016, 17:01
Hallo,
man könnte sich auch DDS-Chips anschauen ( https://de.wikipedia.org/wiki/Direct_Digital_Synthesis ), allerdings ist das für 1kHz etwas overengineered...
Von Analog Devices gibt es einige Chips von der Sorte, siehe http://search.datasheetcatalog.net/key/DDS .
Allerdings ist die AM dort meist nicht vorgesehen. Eventuell kann man ein digitales Potentiometer dahinter schalten, um die AM zu realisieren, da müsste man aber schauen ob das schnell genug funktioniert.
Grüße, Bernhard

RP6conrad
05.02.2016, 06:58
Versuch es mal mit ein STM32 Discovery board : Beispielen für Sinus Erzeuging ueber DAC (12 bit) sind forhanden. Den F100 lauft mit 24 MHz, ueber DMA lasst sich dan problemlos eine schone Sinus ausgeben.

Peter(TOO)
05.02.2016, 09:07
Hallo Bernhard,

man könnte sich auch DDS-Chips anschauen ( https://de.wikipedia.org/wiki/Direct_Digital_Synthesis ), allerdings ist das für 1kHz etwas overengineered...

Für sein Problem reicht die Sinus-Tabelle und der DAC. Die Sinustabelle wird durch einen einfachen Counter angesteuert.
Kann man recht einfach mit einem ROM für die Sinus-Tabelle aufbauen.
Da heutige ROMs sowieso viel zu gross sind, legt man mehrere Sinus-Tabellen an, je nach gewünschter Modulation. Mit dem eigentlichen Signal schaltet man dann zwischen den Tabellen um.

Wenn 10-Bit für den DAC ausreichen würde ich ein µC verwenden.
Für einen 16-Bit DAC wäre dann obiger Aufbau besser geeignet.

Leider finden sich bisher keine Angaben zum erlaubten Klirrfaktor und den Einschwingzeiten?
Analoge Filter reagieren nicht sofort.
Auch ist nicht so ganz klar WAS optimiert werden soll, bzw. um was für einen Einsatz es geht?
Wenn dies ein Prüfgerät werden soll, spielen die Kosten keine grosse Rolle, da zählen dann die technischen Parameter.
Bei einem Seriengerät stehen eher die Kosten und die Baugrösse im Vordergrund.

MfG Peter(TOO)