Generera frekvenser med hög upplösning?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Användarvisningsbild
Klas-Kenny
Inlägg: 11861
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Generera frekvenser med hög upplösning?

Inlägg av Klas-Kenny »

Hade uppfattningen att detta skulle vara lätt, men det var värre än väntat.

Skulle behöva generera en klocksignal på säg 50-100 kHz, med 6-7 siffrors upplösning. Tänkte först att det skulle vara enkelt med bara en timer i en µC, men det visade sig inte vara fallet. Det skulle kräva enormt hög klockfrekvens (behöver ju då kunna räkna till 10 000 000 på en hundratusendels sekund).
Men, man kan ju köpa en funktionsgenerator som gör jobbet, inklusive en hel massa annan funktionalitet, många vågformer etc. för hyfsat små pengar. Så jag kan inte riktigt tänka mig att det borde vara *så* svårt om man bara har rätt metod.

Så, "hur gör man"? Vad finns det för metoder för att åstadkomma detta?
Findecanor
Inlägg: 1048
Blev medlem: 2 juli 2010, 23:04:07

Re: Generera frekvenser med hög upplösning?

Inlägg av Findecanor »

Motoriserad vridkondensator? :-þ
SvenW
Inlägg: 1157
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Re: Generera frekvenser med hög upplösning?

Inlägg av SvenW »

Behöver du kunna variera frekvensen kontinuerligt? Eller engångsställa med valbar frekvens?
Kan man tolerera fasbrus, eller måste signalen vara ren?
Allting går, men det kan bli kompicerat. Man kan använda någon typ av frekvensblandare och summera två signaler.
Man kan behöva analoga filter. Man kan alternativt använda en faslåst loop, men då får man fasbrus.
rikkitikkitavi
Inlägg: 16074
Blev medlem: 21 juni 2003, 21:26:56
Ort: Väster om Lund (0,67 mSv)

Re: Generera frekvenser med hög upplösning?

Inlägg av rikkitikkitavi »

Dds?
Användarvisningsbild
Klas-Kenny
Inlägg: 11861
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Generera frekvenser med hög upplösning?

Inlägg av Klas-Kenny »

Behöver kunna variera "när som helst" så att säga. Och vill gärna ha en så digital lösning som möjligt då jag vill kunna mata in en önskad frekvens och få ut den (dock är den absoluta noggrannheten inte särskilt kritisk, bara man kan ställa i små steg).

Lite fasbrus *borde* inte vara något stort problem.
Tanken med blandare har funnits, men känns ändå inte helt självklart. Kan med timer i en µC generera en frekvens på sådär 10 Hz med rätt upplösning, att blanda den då med tex. 70kHz ger ju summa och skillnadsfrekvenser på 70 010 Hz och 69 990 Hz, inte helt enkelt att filtrera ut den önskade.
Även tanken med PLL har funnits, men frågan är "vad som händer" när man multiplicerar upp så långt som ifrån då de 10 Hz som enkelt kan genereras, uppåt 10 000 ggr?

Läste på lite om DDS nu, kollat på det innan men inte riktigt blivit klok på hur man kommer fram till förhållandet mellan utfrekvens och upplösning.
Men, vad jag förstod det som nu så kan man vid samtliga utfrekvenser få en upplösning om f/2^n där f är den inre klockfrekvensen och n är antalet bitar i "tuning word", stämmer det?
Då kräver det ju en hyggligt snabb DDS, men borde inte vara omöjligt. Kollade snabbt på AD9956 som borde kunna göra jobbet. Känns bara sanslöst stort och framför allt dyrt, för någonting så förhållandevis enkelt. Nästan löjligt att montera en krets som kan ge ut signaler (med samma höga upplösning) på flera hundra MHz när man bara behöver några tiotal kHz.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Generera frekvenser med hög upplösning?

Inlägg av lillahuset »

Sju siffrors upplösning vid 100kHz är 0.01Hz.
Om du gör en DDS så räcker det med, om vi tänker oss att du vill ha 128 steg i sinusvågen vid 100kHz, med uppdatering med 12,8MHz vilket inte är speciellt märkvärdigt. Om man har en vettig processor. En Cortex M4 för en femtiolapp eller så. Så har du massor av kapacitet över för annat.
Användarvisningsbild
Klas-Kenny
Inlägg: 11861
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Generera frekvenser med hög upplösning?

Inlägg av Klas-Kenny »

lillahuset: Förklara gärna närmare hur man tänker och räknar kring det där!
Om det går att göra med enbart en µC (tanken är att konstruktionen ska innehålla en 48MHz STM32-någonting) så vore det ju helt fantastiskt. Jag får bara inte ihop hur det ska gå till..
Och utsignalen ska inte ens vara sinusformad, bara en fyrkantig klocka.
SvenW
Inlägg: 1157
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Re: Generera frekvenser med hög upplösning?

Inlägg av SvenW »

Det går att göra blandare som undertrycker ena sidbandet, och det är inte särskilt svårt.
Men alla blandare tillför lite brus.
Går det inte att klara av önskad upplösning med lite högre frekvens, säg 1000Hz?

Och ja, med Cortex M4 går det nog att lösa problemet nästan utan externa komponenter gissar jag.
Vågar dock inte garantera detta :-(
nifelheim
Den första
Inlägg: 2505
Blev medlem: 27 mars 2008, 22:31:16
Ort: stockholm

Re: Generera frekvenser med hög upplösning?

Inlägg av nifelheim »

Med risk för att jag missuppfattat frågan, :)

har lekt lite med Si570, den är grym,

https://www.silabs.com/Support%20Docume ... /si570.pdf

Den ligger lite högt i frekvens, men delar du med 256 blir det ju perfekt :-)

Det finns nog någon annan liknande modell som passar dig bättre i frekvens.
Användarvisningsbild
Klas-Kenny
Inlägg: 11861
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Generera frekvenser med hög upplösning?

Inlägg av Klas-Kenny »

Nu vaknade min hjärna vad gäller DDS. Där går det ju hur enkelt som helst, löses utan problem av tex. en AD9837.

Men, om det går med bara µC'n så tar jag gärna emot den lösningen. Vore ju tveklöst det bästa. :)
H.O
Inlägg: 5942
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Generera frekvenser med hög upplösning?

Inlägg av H.O »

AD9851 är ju ett "mindre" alternativ till 9956 du tittade på. Finns färdiga kort i olika varianter på EBAY om du ska labba.
Om du byter ut 30MHz kristallen som verkar sitta på de flesta kort till en med lägre frekvens så får du ner maximal utfrekvens och upplösning ökar så det matchar ditt område bättre. Med 30MHz kristallen så har du 40mHz upplösning. Men, det är en DDS med allt vad det innebär.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Generera frekvenser med hög upplösning?

Inlägg av lillahuset »

Jaha, du vill bara ha en fyrkant ut. Hur mycket "jitter" kan du tolerera? Det blir det som avgör hur hög uppdateringsfrekvens du behöver. Säg att du kan tolerera 1% "jitter" vid 100kHz, då behöver du en uppdateringsfrekvens på 100 * 100kHz = 10MHz i en DDS.

Förmodligen är det bättre att bara använda en 32 bits timer. Med 48MHz klocka får du "wrap around" efter 2^32/48E6Hz~89s. Sedan finns det väl, om jag inte minns helt fel en prescaler som kan ge dig multiplar av ~0.011Hz. Inte riktigt vad du frågade efter men nästan. Sänk frekvensen till 42,95MHz så ligger du väldigt nära.

Vilken STM32 hade du tänkt dig? Luktar L lång väg. :)

Med reservation för tankefel.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Generera frekvenser med hög upplösning?

Inlägg av Micke_s »

STM32F4 har 32bitars timer, kör du chippet full och timer så har du 1/168000000 per steg ~ca 6ns
Så i teorin så borde du kunna ställa in din pwm mellan 12ns och upp till 25 sekunder med 6ns upplösning...

Edit: lillahuset var inne på samma lösning.
Edit2: vill du ha längre tider än 25 sekunder så går det att seriekoppla timers.
Edit3: kör 32 bitars timer utan prescaler och ändra top-värdet istället.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Generera frekvenser med hög upplösning?

Inlägg av lillahuset »

Visst är det underbart med en cykeltid på drygt 6ns. :D PIC någon?

Edit: Knappt, inte drygt.
Användarvisningsbild
Klas-Kenny
Inlägg: 11861
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Generera frekvenser med hög upplösning?

Inlägg av Klas-Kenny »

Men alltså..

När jag kör en timer, så blir det väl effektivt att jag bara delar ner klockfrekvensen. Så om man då kör nämnda 168 MHz och vill ha ut 100 kHz får man ju dela med 1680 (räkna till 1679 eller vad det blir). Ändrar jag då ett steg i vad jag räknar till, säg att gå ifrån att dela med 1680 till 1681 så är det ju bara en frekvensändring på ~59 Hz.

Annat sätt att se på det, en frekvens på 100 kHz har en periodtid på 10 µs. Jag vill kunna justera 1/100 000 av detta, alltså nere på 100 ps. Då är 6 ns plötsligt inte så snabbt. :humm:
Skriv svar