Digital SSB-Sändare med en PIC32
Postat: 19 februari 2011, 22:39:02
Här är mitt första försök till att bygga en digital SSB-Sändare
där man slipper dyra och "svåra-att-få-ta-på" kristallfilter.
(SSB = Single Side Band eller enkelt sidband på svenska.)
Skulle ha tagit bilderna i dagsljus istället men det var
kolsvart ute när detta skrevs.
PIC32 (en PIC32MX320F064H ) matas med mikrofonsignalen
på en av analoga ingångarna. Mjukvaran delar upp signalen
i två, där den inbördes fasskillnaden är exakt 90 grader.
Samplingsfrekvensen är 12kHz, FIR-filtret har ca 2 x 100 "tappar".
Använder 32-bit fixpunkt, flyttal gick inte alls att använda (för "slött" ! )
FIR-filter koefficienterna är för närvarande på 24-bitars ordlängd.
PIC32:an klockas med maximala 80MHz.
Strömförbrukningen för hela bygget ligger på ca 140mA @ 12V.
Ville inte använda switchade regulatorer p.g.a. risk för störningar.
Två stycken D/A-omvandlare MCP4821 matas via SPI-interfacet.
Signalen från D/A-omvandlarna går genom två stycken
lågpassfilter (analoga) som skär bort onödigt "skräp".
Utan dessa filter så kommer man att sända ut signaler
på en mängd frekvenser i multiplar av samplingsfrekvensen.
Den analoga signalen matas sedan till två stycken blandare
eller balanserade modulatorer av typ NE/SA612 "gilbert cell".
De balanserade modulatorerna matas även med två stycken
90 grader fasförskjutna signaler, i det här fallet 10MHz / 4 =2,5MHz
En 74AC74 (två D-vippor) fixar till fasförskjutningen.
Slutligen summeras 2,5MHz-signalerna från de balanserade modulatorerna
i en emitterföljare (där den ensamma trimpoten finns.)
På utgången måste ett passande lågpassfilter anslutas, utan det
kommer sändning att ske på oönskade (ev olagliga ) frekvenser.
Balanserade modulatorerna matas med fyrkantsvåg på ca 250-300mV.
Fourierserieutveckling av fyrkantsvåg visar att det finns frekvenser
på f=1 (grundtonen, 2,5MHz i det här fallet), 3*f, 5*f, 7*f o.s.v.
Så utsignal finns då på 3*2,5MHz = 7,5MHz o.s.v.
Undertryckningen av oönskat sidband ligger på ca -40dB.
Så om önskat sidband ger 10W så blir det andra på 1mW
vilket är acceptabelt.
---------------------------------------------------
Problem som uppstod under projektets gång var bl.a.
hur man skulle skala alla filterkoefficienter?
Hur stora (numeriska) tal får man i det digitala filtret?
Overflow ger en massa konstiga ljud ut.
Första försöken gav mest brus ut p.g.a. jag hade inte tagit
de 12-största bitarna ut till D/A-omvandlaren.
Fick en massa övning i hur man använder pekare i C.
(mest hur man inte använder
)
Fick säga ett ord på tre bokstäver som börjar på f och slutar på n
rätt många gånger
Övrigt.......
Tal låter helt obegripligt om man vänder på bas och diskant.
Man kan låta som man skulle ha andats in helium, "Kalle Anka".
Musik är lite trixigt att lyssna på för det minsta lilla frekvensen
ligger fel så låter det falskt!
där man slipper dyra och "svåra-att-få-ta-på" kristallfilter.
(SSB = Single Side Band eller enkelt sidband på svenska.)
Skulle ha tagit bilderna i dagsljus istället men det var
kolsvart ute när detta skrevs.
PIC32 (en PIC32MX320F064H ) matas med mikrofonsignalen
på en av analoga ingångarna. Mjukvaran delar upp signalen
i två, där den inbördes fasskillnaden är exakt 90 grader.
Samplingsfrekvensen är 12kHz, FIR-filtret har ca 2 x 100 "tappar".
Använder 32-bit fixpunkt, flyttal gick inte alls att använda (för "slött" ! )
FIR-filter koefficienterna är för närvarande på 24-bitars ordlängd.
PIC32:an klockas med maximala 80MHz.
Strömförbrukningen för hela bygget ligger på ca 140mA @ 12V.
Ville inte använda switchade regulatorer p.g.a. risk för störningar.
Två stycken D/A-omvandlare MCP4821 matas via SPI-interfacet.
Signalen från D/A-omvandlarna går genom två stycken
lågpassfilter (analoga) som skär bort onödigt "skräp".
Utan dessa filter så kommer man att sända ut signaler
på en mängd frekvenser i multiplar av samplingsfrekvensen.
Den analoga signalen matas sedan till två stycken blandare
eller balanserade modulatorer av typ NE/SA612 "gilbert cell".
De balanserade modulatorerna matas även med två stycken
90 grader fasförskjutna signaler, i det här fallet 10MHz / 4 =2,5MHz
En 74AC74 (två D-vippor) fixar till fasförskjutningen.
Slutligen summeras 2,5MHz-signalerna från de balanserade modulatorerna
i en emitterföljare (där den ensamma trimpoten finns.)
På utgången måste ett passande lågpassfilter anslutas, utan det
kommer sändning att ske på oönskade (ev olagliga ) frekvenser.
Balanserade modulatorerna matas med fyrkantsvåg på ca 250-300mV.
Fourierserieutveckling av fyrkantsvåg visar att det finns frekvenser
på f=1 (grundtonen, 2,5MHz i det här fallet), 3*f, 5*f, 7*f o.s.v.
Så utsignal finns då på 3*2,5MHz = 7,5MHz o.s.v.
Undertryckningen av oönskat sidband ligger på ca -40dB.
Så om önskat sidband ger 10W så blir det andra på 1mW
vilket är acceptabelt.
---------------------------------------------------
Problem som uppstod under projektets gång var bl.a.
hur man skulle skala alla filterkoefficienter?
Hur stora (numeriska) tal får man i det digitala filtret?
Overflow ger en massa konstiga ljud ut.
Första försöken gav mest brus ut p.g.a. jag hade inte tagit
de 12-största bitarna ut till D/A-omvandlaren.
Fick en massa övning i hur man använder pekare i C.
(mest hur man inte använder

Fick säga ett ord på tre bokstäver som börjar på f och slutar på n
rätt många gånger

Övrigt.......
Tal låter helt obegripligt om man vänder på bas och diskant.
Man kan låta som man skulle ha andats in helium, "Kalle Anka".
Musik är lite trixigt att lyssna på för det minsta lilla frekvensen
ligger fel så låter det falskt!