Forum: Mikrocontroller und Digitale Elektronik Frequenz zwischen zwei Signalen erzeugen


von starseed (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem für das ich eine gute Lösung suche. Und zwar 
bekommt mein µC von außen ein Stützsignal zugeführt (Größenordnung 100 
Hz). Die (soll) Stützsignalfrequenz ist dem µC bekannt und wird sich 
während der gesamten Laufzeit nicht ändern.

Zwischen diesen Stützsignalen sollen von dem µC N äquidistante 
Untersignale erzeugt werden wobei N sich vor Beginn eines jeden 
Stützsignals ändern kann.

Also im Endeffekt würde entstehen für N = 6; N = 3 und N = 8:

S U U U U U U S   U   U   U   S UUUUUUUU S

Mein Lösungsansatz wäre gewesen einfach nach jedem Stützsignal einen 
Timer aufzuziehen mit f = f_S * N (also Stützfrequenz mit der Anzahl der 
Untersignale multipliziert).

Was meint ihr dazu?

Was mir ein wenig Sorgen bereitet ist das die Frequenz von S (aufgrund 
der Quarz Streuung) nicht z.B. 100 Hz sondern 98 Hz beträgt während der 
Quarz des µC meinetwegen etwas schneller läuft. Das würde dazu führen, 
dass die Untersignale zu schnell generiert würden und sie zwischen S 
nicht mehr äquidistant verteilt wären (sondern der letzte U hätte in 
diesem Beispiel einen zu großen Abstand zum nachfolgenden S).

Gibt es eine Möglichkeit den Timer für die Untersignale optimal auf den 
Stützsignalgeber anzupassen?

Vielen Dank!

von Michael U. (amiga)


Lesenswert?

Hallo,

also wenn Deine Quarze um 2% streuen würde ich mir Gedanken darüber 
machen, was Du da als "Quarz" eingebaut hast...

Gruß aus Berlin
Michael

von Oldie (Gast)


Lesenswert?

Da brauchst du einen Timer mit genug Auflösung, also eher
16 Bit.

Ich kenne mich mehr in der Atmel-Welt aus, bei anderen µCs
wirds aber ähnlich gehen.

Bevor du nicht zwei Stützsignal-Trigger empfangen hast, wird es
nicht 100% passen, aber wenn du den Stützsignal-Trigger zu einem
Input-Capture-Eingang des selben Zählers schickst, kannst du die
Frequenz des Stützsignals (Zeitabstand in Timer-Ticks) gut
erfassen, und die Abstände (Timer-Ticks) zu den N gewünschten
Untersignal-Zeitpunkten berechnen.

Die Untersignal-Ausgabe könnte dann z.B. über Timer-Compare-
Interrupts bewerkstelligt werden.

von Falk B. (falk)


Lesenswert?

@ starseed (Gast)

>ich habe folgendes Problem für das ich eine gute Lösung suche. Und zwar
>bekommt mein µC von außen ein Stützsignal zugeführt (Größenordnung 100
>Hz). Die (soll) Stützsignalfrequenz ist dem µC bekannt und wird sich
>während der gesamten Laufzeit nicht ändern.

Kein mensch nennt das Stützsignal. Das ist ein Referenzsignal der 
Referenztakt.

>Zwischen diesen Stützsignalen sollen von dem µC N äquidistante
>Untersignale erzeugt werden wobei N sich vor Beginn eines jeden
>Stützsignals ändern kann.

Das macht eine PLL. Das kann man auch rein digital machen.

>Mein Lösungsansatz wäre gewesen einfach nach jedem Stützsignal einen
>Timer aufzuziehen mit f = f_S * N (also Stützfrequenz mit der Anzahl der
>Untersignale multipliziert).

>Was meint ihr dazu?

Ich würde es mit einem 16 Bit Timer und den Input Capture sowie Output 
Compare Funktion machen. Damit kann man SEHR genau die Referenz messen 
und daraus die Pulse Zwischen den "Stützpulsen" generieren.

>Was mir ein wenig Sorgen bereitet ist das die Frequenz von S (aufgrund
>der Quarz Streuung) nicht z.B. 100 Hz sondern 98 Hz beträgt

Ein Quarz hat nie 2% Fehler, bestenfalls 200ppm, das sind 0,02%.

>während der
>Quarz des µC meinetwegen etwas schneller läuft. Das würde dazu führen,
>dass die Untersignale zu schnell generiert würden und sie zwischen S
>nicht mehr äquidistant verteilt wären (sondern der letzte U hätte in
>diesem Beispiel einen zu großen Abstand zum nachfolgenden S).

Die Pll misst immer wieder den Abstand der Referenzpulse und generiert 
daraus immer wieder leicht korrigierte Pulse.

von msx (Gast)


Lesenswert?

Abhängig von der Eingangsfrequenz wird eine Ausgangsfrequenz mit (im 
möglichen Rahmen) beliebigen Faktor erzeugt.
Frequenz/Frequenz-Umsetzer: 
http://www.mino-elektronik.de/Generator/takte_impulse.htm#bsp4

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.