Forum: Mikrocontroller und Digitale Elektronik langsames Sinussignal generieren


von Thomas ". (kyma)


Lesenswert?

Hallo,

bin Neuling in µC und C,habe zunächst viele treats, das tutorial und 
div. gegoogelte pages gelesen. Möchte aber das Rad nicht neu erfinden. 
Aufgabe:

gegeben ist ein TTL Rechtecksignal (high 6ms) mit variabler 
Periodenlänge zwischen 0.5Hz und 2.5 Hz.
1.die Periodenlänge soll möglichst genau gemessen werden.
2.ich benötige als Ausgabe ein Sinussignal von +- 65Hz nach der Funktion 
y=65x^-1, (wobei x die gemessene Frequenz ist;-))
Mit dem Sinussignal wird ein (Vibrations-)Aktor betrieben, der neben der 
Frequenz y auch fast alle Subharmonischen produziert.
Sinn der Übung ist es, eine Interferenz (je nach Phase destruktiv oder 
konstruktiv)zwischen den Obertönen der zu messenden Frequenz x und den 
Subharmonischen der erzeugten Frequenz y zu erreichen.
Das bedeutet, dass y immer ein ganzzahliges Vielfaches von x sein muss.
y soll andauernd laufen und durch die gemessenen Veränderungen in x 
immer aktualisisert werden.
Die Messergebnisse möchte ich währenddessen per Uart an ein PC 
TerminalProg loggen.

Jetzt die Fragen:
Wie ich die Sache bislang verstanden habe, kann ich das nicht mit EINEM 
Bauteil ( zB Tiny, Mega) erreichen, da allein schon die Generierung 
einer PWM als Sinus über Lut den µC so beschäftig, dass er währenddessen 
keine anderen Operationen wie Messen und Berechnen durchführen kann.

Ist es richtig, dass für eine solch niedrige Frequenz DDS mit einem 
ADxxx oversized wäre?

Ist die Idee, einen µC zum Messen, Rechnen und UART zu nehmen und einen 
zweiten µC zur Generierung des PWM Signals zu nehmen völlig nebendran?

Ich würde mich über einen oder mehrere Tipps freuen!

Thomas

von spess53 (Gast)


Lesenswert?

Hi

>Ist die Idee, einen µC zum Messen, Rechnen und UART zu nehmen und einen
>zweiten µC zur Generierung des PWM Signals zu nehmen völlig nebendran?

Ja, weil diese Annahme

>Wie ich die Sache bislang verstanden habe, kann ich das nicht mit EINEM
>Bauteil ( zB Tiny, Mega) erreichen, da allein schon die Generierung
>einer PWM als Sinus über Lut den µC so beschäftig, dass er währenddessen
>keine anderen Operationen wie Messen und Berechnen durchführen kann.

nicht stimmt. Eher begeht der µC aus Langeweile Suizid.

MfG Spess

von Falk B. (falk)


Lesenswert?

@  Thomas "s." (kyma)

>gegeben ist ein TTL Rechtecksignal (high 6ms) mit variabler
>Periodenlänge zwischen 0.5Hz und 2.5 Hz.
>1.die Periodenlänge soll möglichst genau gemessen werden.

Das geht einfach per ICP Funktion.

>2.ich benötige als Ausgabe ein Sinussignal von +- 65Hz nach der Funktion
>y=65x^-1, (wobei x die gemessene Frequenz ist;-))

Also y = 65/x, macht bei dir Frequenzen von 26-130 Hz.

>Das bedeutet, dass y immer ein ganzzahliges Vielfaches von x sein muss.

Kriegt man hin.

>Die Messergebnisse möchte ich währenddessen per Uart an ein PC
>TerminalProg loggen.


Hmm.

>Wie ich die Sache bislang verstanden habe, kann ich das nicht mit EINEM
>Bauteil ( zB Tiny, Mega) erreichen, da allein schon die Generierung
>einer PWM als Sinus über Lut den µC so beschäftig, dass er währenddessen
>keine anderen Operationen wie Messen und Berechnen durchführen kann.

Stimmt nicht. So ein AVR hat schon mächtig Power. Ausserdem kann man der 
Einfacheit halber auf einen R2R DAC zurückgreifen, das entspannt die 
Sache zusätzlich. Damit wird die Sinuserzeugung zu Kinderspiel.

>Ist es richtig, dass für eine solch niedrige Frequenz DDS mit einem
>ADxxx oversized wäre?

Ja.

>Ist die Idee, einen µC zum Messen, Rechnen und UART zu nehmen und einen
>zweiten µC zur Generierung des PWM Signals zu nehmen völlig nebendran?

Mehr oder weniger. Das macht am Ende mehr Aufwand als ein AVR.

Deinen Sinus kann man leicht per Software-DDS machen, siehe Artikel, 
dort gibt es ein paar nette Projekte. Für max. 130 Hz reichen Pi mal 
Daumen 1-5kHz Samplingrate + Filter. Die Messung und das bissel 
UART-Gedöns macht der AVR nebenbei und pfeift noch La Paloma, auch mit 
nur ein paar MHz Takt.

MFg
Falk

von Thomas ". (kyma)


Lesenswert?

..vielen Dank! Dass der µC Suizid macht, möchte ich nicht;-) Habe dann 
wohl das ein oder andere noch nicht so richtig verstanden.....

von seennoob (Gast)


Lesenswert?

Hallo

Normalerweise müsste das kein Problem sein wegen deiner 
Leistungbedenken. Weil du das Zählen der Periodendauer sowieso mit 
Interrupts machst. PWM sind auch in HW realisiert also dürftest du mit 
einem µC auskommen.

Mfg Patrick

von Thomas ". (kyma)


Lesenswert?

@falk
Danke, werde mich mit den von Dir angeregten Lösungsansätzen 
auseinandersetzen....

>Also y = 65/x, macht bei dir Frequenzen von 26-130 Hz.

Was meine x / y Sache angeht dachte ich folgendermaßen:

Wenn x beispielsweise 1.24 Hz wäre, dann rechne ich y= 65/1,24=52,4193.. 
ergibt Faktor 52, 52x1.24Hz ergäbe dann 64,48Hz

oder in ms:1.24Hz = 0,8064ms
y=65 x 0,8064516 = 52,419354 ergibt ebenfalls Faktor 52 / 0,806451 = 
64,480049 Hz

Thomas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.