Springen naar inhoud

Synthese van fm signaal op uc


  • Log in om te kunnen reageren

#1

sillyconmarc

    sillyconmarc


  • >250 berichten
  • 318 berichten
  • Lorentziaan

Geplaatst op 10 januari 2011 - 11:24

Draaggolf van 133kHz moet gemoduleerd worden in FM met een signaal van 3000Hz (vaste waarde) en een frequentiezwaai van 5kHz.

Is het doenbaar om dit signaal (met DDS?) te genereren op een microcontroller? Zo ja wat is dan een mogelijke aanpak?

Ik dacht aan een tabel met samples; samples parallel naar een DAC uitsturen. DAC kan een R-2R netwerk zijn.

Vragen:
  • Is dit uberhaupt haalbaar?
  • Hoe moet ik de samples aanmaken?
  • Volgens Nyquist zou ik dan theoretisch 276000 samples / seconde moeten hebben. Maar hoeveel moet ik er praktisch gezien genereren?
Wil je eindelijk die dure computer aan het werk zetten...
help ons dan eiwitten vouwen, en help mee ziekten als kanker en zo te bestrijden in de vrije tijd van je chip...
http://www.wetenscha...showtopic=59270

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 10 januari 2011 - 11:59

Draaggolf van 133kHz moet gemoduleerd worden in FM met een signaal van 3000Hz (vaste waarde) en een frequentiezwaai van 5kHz.

Is het doenbaar om dit signaal (met DDS?) te genereren op een microcontroller? Zo ja wat is dan een mogelijke aanpak?

Ik dacht aan een tabel met samples; samples parallel naar een DAC uitsturen. DAC kan een R-2R netwerk zijn.

Vragen:

  • Is dit uberhaupt haalbaar?
  • Hoe moet ik de samples aanmaken?
  • Volgens Nyquist zou ik dan theoretisch 276000 samples / seconde moeten hebben. Maar hoeveel moet ik er praktisch gezien genereren?

Het probleem is dat je ook moet weten welke frequenties je NIET mag uitzenden (onderstellende dat dit naar een antenne gaat?). Enerzijds omdat je anders andere netwerken kunt storen (strafbaar), anderzijds omdat er anders te veel vermogen in de verkeerde frequenties zit. Enkel een DAC is dus te weinig, want je gaat te veel frequenties hebben door het digitale signaal. Als je bijvoorbeeld aan 15MHz samples stuurt naar je R-2R netwerk, zal je nog altijd een grote 15MHz component hebben in je signaal.

Nyquist is dan inderdaad voldoende samplesnelheid praktisch gezien. Je mag zeker niet minder, meer mag altijd. Al vraag ik me af of je hem wel juist bepaald hebt. Je bandbreedte is 10kHz als ik je goed begrijp, dus heb je maar 20000 samples per seconde nodig. Dat die band niet rond 0Hz zit, heeft daarbij geen belang.

Maar bedoel je dat je een (digitaal?) signaal van 3kHz moet moduleren met een draaggolf van 133 kHz, bandbreedte 128-138kHz? Is een DAC naar een VCO (of gewoon een NCO) dan geen beter idee?

Disclaimer: ik ben maar een student die net de vakken analoog ontwerp, VLSI en antennes gehad heeft. Ik heb geen praktijkervaring... misschien/waarschijnlijk weet iemand anders meer dan ik.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#3

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 10 januari 2011 - 12:14

Een van de eevoudigste methodes lijkt me een VCO achter de DAC te hangen.

Of anders genereer je een simpele blokgolf met de correcte instantane frequentie op je ĶC, gevolgd door een lowpass filter die enkel de eerste harmonischen doorlaat.
Voor die blokgolf heb je dan maximaal 2 samples per periode nodig van je grootste frequentie.
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#4

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 10 januari 2011 - 13:19

Voor die blokgolf heb je dan maximaal 2 samples per periode nodig van je grootste frequentie.

Volgens mij kun je dan nog beter een (goede) bandfilter gebruiken, dan heb je maar samples nodig volgens de breedte van je band. Tenzij je die processortijd niet nodig hebt natuurlijk.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#5

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 10 januari 2011 - 13:39

Wat bedoel je precies met die bandfilter?
Analoog vermenigvuldigen met een carrier en een van de twee zijbanden eruit filteren?
Of bedoelde je nog iets anders?
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#6

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 10 januari 2011 - 13:47

Wat bedoel je precies met die bandfilter?
Analoog vermenigvuldigen met een carrier en een van de twee zijbanden eruit filteren?
Of bedoelde je nog iets anders?

Nee, je maakt het signaal dat je wil met je DAC (zoals je ook aangaf), maar je gebruikt een bandfilter. Doordat de band die je nu gebruikt maar 10kHz is i.p.v. de 138kHz bij jou, moet je volgens Nyquist maar samples sturen aan 20kHz i.p.v. 276kHz.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#7

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 10 januari 2011 - 13:55

Ik volg even niet.

Wat ik nu begrijp is het volgende:
De ĶC genereert het te versturen signaal (128-137 kHz) gesampled aan 20kHz,
stuurt dat naar de ADC, waarvan je de uitgang bandpass filtert met fc=133kHz?

Wat mij niet lijkt te werken, dus ik vermoed dat je iets anders bedoelt.
Kan je het signaal verloop eens uitschrijven?
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#8

sillyconmarc

    sillyconmarc


  • >250 berichten
  • 318 berichten
  • Lorentziaan

Geplaatst op 10 januari 2011 - 14:28

Bedankt voor de antwoorden zover...

Het probleem is dat je ook moet weten welke frequenties je NIET mag uitzenden (onderstellende dat dit naar een antenne gaat?). Enerzijds omdat je anders andere netwerken kunt storen (strafbaar), anderzijds omdat er anders te veel vermogen in de verkeerde frequenties zit. Enkel een DAC is dus te weinig, want je gaat te veel frequenties hebben door het digitale signaal. Als je bijvoorbeeld aan 15MHz samples stuurt naar je R-2R netwerk, zal je nog altijd een grote 15MHz component hebben in je signaal.


Dat klopt. Om aan de geldende normen te voldoen zal er wat filtering nodig zijn.

Nyquist is dan inderdaad voldoende samplesnelheid praktisch gezien. Je mag zeker niet minder, meer mag altijd. Al vraag ik me af of je hem wel juist bepaald hebt. Je bandbreedte is 10kHz als ik je goed begrijp, dus heb je maar 20000 samples per seconde nodig. Dat die band niet rond 0Hz zit, heeft daarbij geen belang.


Nyquist zegt (voor zover mijn begrip strekt) dat de samplingfrequentie tweemaal de hoogste frequentie van het aangeboden spectrum moet zijn (en niet tweemaal de bandbreedte).

Maar bedoel je dat je een (digitaal?) signaal van 3kHz moet moduleren met een draaggolf van 133 kHz, bandbreedte 128-138kHz? Is een DAC naar een VCO (of gewoon een NCO) dan geen beter idee?


Draaggolf is 133kHz, signaal is 3kHz.

De (semi-)analoge manier om dit te doen heb ik al: Een PLL type 4046 met een vrijloopfrequentie van 133kHz die aangestuurd/gemoduleerd wordt door een 3000Hz signaal gegenereerd dmv een uC. Na de PLL gebruikt ik een hex inverter met alle poorten in parallel als versterker en een afgestemde LC serie kring als filter en de L is bovendien de antenne. Het uitgezonden signaal is voldoende "proper". :P Werkt perfect...

Nu heb ik echter een systeem nodig dat nog altijd met een 133kHz drager werkt maar met een instelbaar modulerend signaal te kiezen uit 4 mogelijkheden. Omdat dit toch een nieuwe ontwikkeling is dacht ik aan een DDS opstelling. Vandaar mijn vraag...


Een van de eevoudigste methodes lijkt me een VCO achter de DAC te hangen.

Of anders genereer je een simpele blokgolf met de correcte instantane frequentie op je ĶC, gevolgd door een lowpass filter die enkel de eerste harmonischen doorlaat.
Voor die blokgolf heb je dan maximaal 2 samples per periode nodig van je grootste frequentie.


;) Dat is wat ik nu al doe: PWM genereren met een uC, filteren en toevoeren aan een PLL. Ik wil eigenlijk uitzoeken of ik de PLL kan elimineren. Ik kan wel PWM genereren op 133kHz maar ik kan die niet snel genoeg laten variŽren om FM te simuleren.
Wil je eindelijk die dure computer aan het werk zetten...
help ons dan eiwitten vouwen, en help mee ziekten als kanker en zo te bestrijden in de vrije tijd van je chip...
http://www.wetenscha...showtopic=59270

#9

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 10 januari 2011 - 15:27

Nyquist zegt (voor zover mijn begrip strekt) dat de samplingfrequentie tweemaal de hoogste frequentie van het aangeboden spectrum moet zijn (en niet tweemaal de bandbreedte).

ook als antwoord op wat ZVDP schrijft:
Awel, dat is net wat ik wilde zeggen. Je begrip strekt dus lichtjes verkeerd. Nyquist moet 2x de breedte van je band zijn, wat bij laagdoorlaatsignalen inderdaad overeenkomt met 2x de hoogste frequentie. MAAR bij bandsignalen, zoals typisch uit een modulator komt, kun je dus veel efficiŽnter werken.

Strikt genomen moet je voor een optimaal resultaat dan wel pulsen sturen, en geen zero-order hold, maar dat maakt niet veel uit.

Je neemt dus de bandbreedt die je draaggolf inneemt. (de ruimte rond 133kHz, stel 10kHz). Dan heb je 2*de bandbreedte nodig daarvan , dus 20kHz. Je berekent dus hoe je sinus er zou moeten uitzien rond 133kHz, en je sampelt die functie aan een snelheid van 20kHz. Dit wil zeggen dat je iedere keer een paar perioden van je signaal overslaat, maar dat is helemaal niet erg.

Die samples komen dus uit je microprocessor (liefst puls, maar zero-order hold werkt volgens mij op het eerste zicht even goed) en stuur je nu door een bandfilter die de frequentie 128kHz-138kHz er uit filtert. Het resultaat is het signaal dat je zoekt.

Et voila, je hebt wat je moet hebben. Waarschijnlijk is de filter niet perfect enzo en moet je samplen aan 2.2*BW= 22kHz. Je maakt in feite gebruik van het aliasing-fenomeen, maar in plaats van de laagste frequenties te gebruiken zoals meestal het geval is, gebruik je de frequenties van de harmonische in de band die je wil hebben.

Moest het nog niet duidelijk zijn, vraag maar. In ieder geval lijkt dit me wat je zoekt, als je die samplerate omlaag wil halen.

Zie anders ook: http://en.wikipedia....aseband_signals
Geplaatste afbeelding

Noot: dit werkt enkel voor sinusgemoduleerde signalen, ik zie dat je ook andere signalen wilt maken, dat gaat daarmee niet (goed) werken.
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#10

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 10 januari 2011 - 16:16

Ik heb wel een klein probleempje als ik dat uitreken, want ik bekom namelijk alias:

bandbreedte:10kHz
centerfrequentie: 133kHz
samplefrequentie:2*bandbreedte=20kHz

Ik sample aan 20kHz, dus ik moet het origineel spectrum convolueren met een diractrein waarvan de diracimpulsen op f=n*20kHz liggen.

De convolutie voor n=0 geeft met het spectrum rond -133kHz en +133kHz terug, dus het signaal dat we willen bekomen uit de bandpass filter. Dat is perfect.

Maar n=13 geeft me volgende componenten:
13*20kHz-133kHz (negatieve lobe) en 13*20kHz+133kHz (positieve lobe)

De negatieve lobe komt dus terecht op (13*20-133)kHz=127kHz
Midden in de gewenste band en dus heb ik alias...
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#11

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 10 januari 2011 - 16:52

Maar je hebt natuurlijk wel gelijk dat je met undersampling bandbeperkte signalen kunt reconstrueren en gewoon Nyquist toepassen een te hoge waarde geeft.

Op wikipedia vond ik volgende formule:
Undersampling, de eerste formule onder 'Description'

Berekeningen leveren me een n van ongeveer 13 op, wat resulteert in een fs van 21331Hz.
En dat levert inderdaad geen alias meer op.

Je zat er dus toch dicht bij met 2*bandbreedte.
Dit lijkt me nu ook een goede methode om het signaal aan te maken. Je kan fs misschien nog iets hoger nemen, zodat je een minder selectief bandpass filter nodig hebt.
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#12

sillyconmarc

    sillyconmarc


  • >250 berichten
  • 318 berichten
  • Lorentziaan

Geplaatst op 11 januari 2011 - 16:29

Dus:
  • Samples genereren aan 24kHz.
  • Door een DAC halen.
  • Bewerken met een bandfilter met een centrale frequentie van 133kHz en een bandbreedte van 24kHz.

Ik heb al een 4de orde filter met die karakteristieken in een ander ontwerp. ;)

Klopt dit?
Wil je eindelijk die dure computer aan het werk zetten...
help ons dan eiwitten vouwen, en help mee ziekten als kanker en zo te bestrijden in de vrije tijd van je chip...
http://www.wetenscha...showtopic=59270

#13

317070

    317070


  • >5k berichten
  • 5567 berichten
  • Moderator

Geplaatst op 11 januari 2011 - 17:08

Dus:

  • Samples genereren aan 24kHz.
  • Door een DAC halen.
  • Bewerken met een bandfilter met een centrale frequentie van 133kHz en een bandbreedte van 24kHz.

Ik heb al een 4de orde filter met die karakteristieken in een ander ontwerp. ;)

Klopt dit?

Je moet er voor zorgen dat de volgende formules kloppen:
Geplaatste afbeelding voor Geplaatste afbeelding

Bij jou is fl = 133-12=121kHz en fh=133+12=145kHz.

n is dus maximaal 6, en daarbij is een samplefrequentie tussen 48.334kHz en 48.4kHz nodig. 24kHz is dus niet goed
Verborgen inhoud
(voor samplefrequenties in die regio moet BW<133 / 6.5=20.46kHz )

Hoe meer in het midden van die 2 waarden, hoe minder risico op overlap door je imperfecte filter. Als je n 1 groter kiest, verdubbelt de frequentieongevoeligheid ongeveer, en verdubbelt de samplefrequentie ongeveer.

Let ook dat dit wel een leuk systeem is, maar dat de eisen op je volledige systeem strenger worden naarmate de samplefrequentie kleiner wordt. Filters die niet snel genoeg afnemen zorgen namelijk heel snel voor te veel aliasing aan de randen van je band. Maar als je je door die wiskunde werkt, kun je de samplesnelheid dus enkele factoren kleiner maken.

@ZvdP: dat detail was ik inderdaad helemaal vergeten :P
What it all comes down to, is that I haven't got it all figured out just yet
And I've got one hand in my pocket and the other one is giving the peace sign
-Alanis Morisette-

#14

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 11 januari 2011 - 17:19

Bij jou is fl = 133-12=121kHz en fh=133+12=155kHz.

n is dus maximaal 6, en daarbij is een samplefrequentie tussen 51.667kHz en 62kHz nodig. 24kHz is dus niet goed.

Ik dacht dat fl=(133-5)kHz=128kHz en fh=(133+5)kHz=138kHz, wat een maximale n van 13 geeft, maar met zeer smalle range voor fs.

Maar die 4e orde bandpass lijkt me op eerste zicht een beetje te zwak om met de maximale n te undersampelen, aangezien je dan een zeer selectief filter nodig zult hebben. Je zou kunnen narekenen hoeveel db attenuatie je hebt bij de dichtstbijzijnde band.
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#15

sillyconmarc

    sillyconmarc


  • >250 berichten
  • 318 berichten
  • Lorentziaan

Geplaatst op 11 januari 2011 - 17:19

Je moet er voor zorgen dat de volgende formules kloppen:
Geplaatste afbeelding voor Geplaatste afbeelding

Bij jou is fl = 133-12=121kHz en fh=133+12=155kHz.

n is dus maximaal 6, en daarbij is een samplefrequentie tussen 51.667kHz en 62kHz nodig. 24kHz is dus niet goed.


Is het volgende dan verkeerd? waarom?

Draaggolf = 133kHz
Zwaai = 5kHz

fl = 133 - 5 = 128kHz
fh = 133 + 5 = 138kHz

1 <= n <= 138kHz/(138kHz - 128kHz) = 13.8 dus we kiezen n=13

(2 * fh) / n = 21.23kHz < fs < (2 * fl) / (n -1) = 21.33kHz

dus fs = 24kHz geeft wat reserve.
Wil je eindelijk die dure computer aan het werk zetten...
help ons dan eiwitten vouwen, en help mee ziekten als kanker en zo te bestrijden in de vrije tijd van je chip...
http://www.wetenscha...showtopic=59270





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures