Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekte:iqmod:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
projekte:iqmix [2014/02/03 20:36] – [Anleitung zur Inbetriebnahme] Schaltplan-Änderungen ycprojekte:iqmod:start [2014/02/17 12:22] thasti
Zeile 9: Zeile 9:
   * Review Layout: **erledigt, Rev 3**  --- //[[stefan@biereigel.de|Stefan Biereigel]] 2014/02/03 09:27//   * Review Layout: **erledigt, Rev 3**  --- //[[stefan@biereigel.de|Stefan Biereigel]] 2014/02/03 09:27//
   * Fertigung Leiterplatte: ** erledigt **   --- //[[dl3yc@darc.de|Sebastian Weiß]] 2014/02/03 14:17//   * Fertigung Leiterplatte: ** erledigt **   --- //[[dl3yc@darc.de|Sebastian Weiß]] 2014/02/03 14:17//
-  * Inbetriebnahme Leiterplatte: ** in Bearbeitung **  --- //[[dl3yc@darc.de|Sebastian Weiß]] 2014/02/03 14:17// +  * Inbetriebnahme Leiterplatte: ** erledigt **   --- //[[dl3yc@darc.de|Sebastian Weiß]] 2014/02/06 14:47//
  
 ===== Schaltungsbeschreibung ===== ===== Schaltungsbeschreibung =====
Zeile 26: Zeile 25:
 C2 und C3 sind dabei Trimmkondensatoren(3-10pF) mit 47pF Keramikkondensator parrallel geschalten. C2 und C3 sind dabei Trimmkondensatoren(3-10pF) mit 47pF Keramikkondensator parrallel geschalten.
  
-{{:projekte:simulation.png?600|}}+{{projekte:iqmod:simulation.png?600|}}
  
-{{:projekte:simulationsergebnis.png?600|}}+{{projekte:iqmod:simulationsergebnis.png?600|}}
  
-{{:projekte:2m-filter.asc|LTSpice-File}}+{{projekte:iqmod:2m-filter.asc|LTSpice-File}}
  
 Erreichbare Daten: Erreichbare Daten:
Zeile 42: Zeile 41:
 Überblick Spektrum bei Sollfrequenz 144,6MHz: Überblick Spektrum bei Sollfrequenz 144,6MHz:
  
-{{:projekte:si570_direct.jpg?200|}}+{{projekte:iqmod:si570_direct.jpg?200|}}
  
 Spektrum mit 2m-Filter: Spektrum mit 2m-Filter:
  
-{{:projekte:si570_2m_filter.jpg?200|}} +{{projekte:iqmod:si570_2m_filter.jpg?200|}} 
-{{:projekte:si570_2m_filter_1.jpg?200|}}+{{projekte:iqmod:si570_2m_filter_1.jpg?200|}}
   * Leistung: -1,6dBm   * Leistung: -1,6dBm
  
 Spektrum mit 70cm-Filter: Spektrum mit 70cm-Filter:
  
-{{:projekte:si570_70cm_filter.jpg?200|}} +{{projekte:iqmod:si570_70cm_filter.jpg?200|}} 
-{{:projekte:si570_70cm_filter_1.jpg?200|}}+{{projekte:iqmod:si570_70cm_filter_1.jpg?200|}}
   * Leistung: -9dBm   * Leistung: -9dBm
 </spoiler> </spoiler>
Zeile 61: Zeile 60:
 Überblick Spektrum bei Sollfrequenz 144,6MHz: Überblick Spektrum bei Sollfrequenz 144,6MHz:
  
-{{:projekte:vnwa_direct.jpg?200|}}+{{projekte:iqmod:vnwa_direct.jpg?200|}}
  
 Spektrum mit 2m-Filter: Spektrum mit 2m-Filter:
  
-{{:projekte:vnwa_2m_filter.jpg?200|}} +{{projekte:iqmod:vnwa_2m_filter.jpg?200|}} 
-{{:projekte:vnwa_2m_filter_1.jpg?200|}}+{{projekte:iqmod:vnwa_2m_filter_1.jpg?200|}}
   * Leistung: -27,2dBm   * Leistung: -27,2dBm
  
 Überblick Spektrum bei Sollfrequenz 433,8MHz: Überblick Spektrum bei Sollfrequenz 433,8MHz:
  
-{{:projekte:vnwa_70_direct.jpg?200|}}+{{projekte:iqmod:vnwa_70_direct.jpg?200|}}
  
 Spektrum mit 70cm-Filter: Spektrum mit 70cm-Filter:
  
-{{:projekte:vnwa_70_filter.jpg?200|}} +{{projekte:iqmod:vnwa_70_filter.jpg?200|}} 
-{{:projekte:vnwa_70_filter_1.jpg?200|}}+{{projekte:iqmod:vnwa_70_filter_1.jpg?200|}}
   * Leistung: -32,6dBm   * Leistung: -32,6dBm
 </spoiler> </spoiler>
Zeile 84: Zeile 83:
 Spektrum APRS(144,800MHz) links direkt, rechts mit 2m-Filter: Spektrum APRS(144,800MHz) links direkt, rechts mit 2m-Filter:
  
-{{:projekte:rpi_direct_aprs.jpg?200|}} +{{projekte:iqmod:rpi_direct_aprs.jpg?200|}} 
-{{:projekte:rpi_filter_aprs.jpg?200|}}+{{projekte:iqmod:rpi_filter_aprs.jpg?200|}}
  
 Spektrum 145,450MHz links direkt, rechts mit 2m-Filter: Spektrum 145,450MHz links direkt, rechts mit 2m-Filter:
  
-{{:projekte:rpi_145_450_direct.jpg?200|}} +{{projekte:iqmod:rpi_145_450_direct.jpg?200|}} 
-{{:projekte:rpi_145_450_filter.jpg?200|}}+{{projekte:iqmod:rpi_145_450_filter.jpg?200|}}
  
 C-Code zur Ansteuerung: C-Code zur Ansteuerung:
Zeile 258: Zeile 257:
 Der I/Q-Modulator will -10dBm..0dBm am LO-Eingang. Der LO-Buffer verstärkt das LO-Signal wie folgt: Der I/Q-Modulator will -10dBm..0dBm am LO-Eingang. Der LO-Buffer verstärkt das LO-Signal wie folgt:
  
-{{:projekte:max2470_amp.png?300|}}+{{projekte:iqmod:max2470_amp.png?300|}}
  
 Somit muss der LO mindestens -26dBm liefern. Somit muss der LO mindestens -26dBm liefern.
Zeile 271: Zeile 270:
 Revision: 3 Revision: 3
  
-{{:projekte:iqmod_sch.png?650|}}+{{projekte:iqmod:iqmod_sch.png?650|}}
  
-  * als {{:projekte:iqmod_sch.pdf|PDF-Datei}} +  * als {{projekte:iqmod:iqmod_sch.pdf|PDF-Datei}} 
-  * als {{:projekte:iqmod.sch|Eagle-Datei}}+  * als {{projekte:iqmod:iqmod.sch|Eagle-Datei}}
  
 Vorberechnung des Dämpfungsglieds Vorberechnung des Dämpfungsglieds
 ^ Dämpfung ^ R15,R16 ^ R14,R17 ^ R18^ ^ Dämpfung ^ R15,R16 ^ R14,R17 ^ R18^
 | 0dB | - | 100Ω | - | | 0dB | - | 100Ω | - |
-| -25dB | 120Ω | 56Ω | 450Ω |+| -20dB | 120Ω | 56Ω | 237Ω | 
 +| -25dB | 120Ω | 56Ω | 475Ω |
  
 Links zu den verwendeten Schaltkreisen: Links zu den verwendeten Schaltkreisen:
Zeile 324: Zeile 324:
 Revision: 3 Revision: 3
  
-{{:projekte:iqmod_pcb.png?200|}}+{{projekte:iqmod:iqmod_pcb.png?200|}}
  
-  * als {{:projekte:iqmod_pcb.pdf|PDF-Datei}} +  * als {{projekte:iqmod:iqmod_pcb.pdf|PDF-Datei}} 
-  * als {{:projekte:iqmod.brd|Eagle-Datei}}+  * als {{projekte:iqmod:iqmod.brd|Eagle-Datei}}
 ==== Änderungen ==== ==== Änderungen ====
 === Revision 1: === === Revision 1: ===
Zeile 363: Zeile 363:
     - Verpolungstest: 0..-30V, Spannung an Betriebsspannung der Schaltkreise: max. -0,8V     - Verpolungstest: 0..-30V, Spannung an Betriebsspannung der Schaltkreise: max. -0,8V
   - Bestückung X1(SMA, LO-Eingang) und Filter ohne Dämpfungsglied; Koax von Mittenanzapfung L3/L4 zu VNA   - Bestückung X1(SMA, LO-Eingang) und Filter ohne Dämpfungsglied; Koax von Mittenanzapfung L3/L4 zu VNA
-    - VNWA-Messung LO-Filter **TODO** +    - VNWA-Messung LO-Filter: {{projekte:iqmod:lo-filter_wo_trimmer.png?100|}} 
-    - Spektrum Si570 mit Filter: {{:projekte:si570_lo_filter.jpg?100|Spektrum Si570 mit Filter}}+    - Spektrum Si570 mit Filter: {{projekte:iqmod:si570_lo_filter.jpg?100|Spektrum Si570 mit Filter}}
   - Bestückung Rest, 50Ohm-Abschluss an X1 + X2   - Bestückung Rest, 50Ohm-Abschluss an X1 + X2
-    - Stromaufnahme bei VIN=5V: //xxx mA// (Soll:90..120mA) +    - Stromaufnahme bei VIN=5V: //xxx mA// (Soll:90..120mA) **TODO** 
-    - Prüfung der Spannung über C3, C4, C5, C8, C10 (Soll: VIN) +    - Prüfung der Spannung über C3, C4, C5, C8, C10 (Soll: VIN) **OK** 
-    - Spannng und Ripple VCM: //V//(Soll: 1,65V)+    - Spannng und Ripple VCM: //0,8 V//(Soll: 0,7V)
   - Messungen per Oszilloskop, Signalgenerator an X1 f=144MHz; f=1kHz an IN_I/IN_Q:   - Messungen per Oszilloskop, Signalgenerator an X1 f=144MHz; f=1kHz an IN_I/IN_Q:
-    - Phasenbeziehung zwischen LO+ und LO-: //xxx°//(Soll: 180°) +    - Phasenbeziehung zwischen LO+ und LO-: //xxx°//(Soll: 180°) **entfällt** 
-    - Phasenbeziehung zwischen BB_I+ und BB_I-: //xxx°//(Soll: 180°) +    - Phasenbeziehung zwischen BB_I+ und BB_I-: //xxx°//(Soll: 180°) **entfällt** 
-    - Phasenbeziehung zwischen BB_Q+ und BB_Q-: //xxx°//(Soll: 180°)+    - Phasenbeziehung zwischen BB_Q+ und BB_Q-: //xxx°//(Soll: 180°) **entfällt**
   - Spektrumanalyzer an X2, Signalgenerator an X1 f=144MHz, IN_I und IN_Q mit 1kHz SSB-Signal   - Spektrumanalyzer an X2, Signalgenerator an X1 f=144MHz, IN_I und IN_Q mit 1kHz SSB-Signal
     - Spiegelfrequenzunterdrückung: //xxx dB//     - Spiegelfrequenzunterdrückung: //xxx dB//
     - LO Leakage: //xxx dBc//     - LO Leakage: //xxx dBc//
  
-{{:projekte:iqmod:iqmod_sch_inbetrieb.pdf|Inbetriebnahme-Schaltplan}}+{{projekte:iqmod:iqmod_sch_inbetrieb.pdf|Inbetriebnahme-Schaltplan}} 
 + 
 +===== Ansteuerung ===== 
 +Um normale Audio-Dateien FM-moduliert als I/Q-Signale mit einer Soundkarte ausgeben zu können, gibt es folgendes kleines Tool: **fmmod** 
 + 
 +<file c fmmod.c> 
 +/* complex frequency modulator for i/q signal processing 
 + * Sebastian Weiss <dl3yc@darc.de> 
 + * Di 4. Feb 16:10:01 CET 2014 
 + */ 
 + 
 +#include <stdio.h> 
 +#include <stdlib.h> 
 +#include <sndfile.h> 
 +#include <math.h> 
 + 
 +#define BUFFER_LEN  1024 
 + 
 +void usage(void) 
 +
 +    printf("Usage: fmmod inputfile outputfile [carrier] [freqdev]\n \ 
 +            inputfile: path to input file(needs to be single channel)\n \ 
 +            outputfile: path to output file\n \ 
 +            carrier: carrier frequency in Hz(standard: 0.0)\n \ 
 +            freqdev: frequency deviation in Hz(standard: 3000)\n"); 
 +
 + 
 +void process_data(double *data, int count, int fs, double fc, double freqdev) 
 +
 +    static double old_phase = 0.0; 
 +    double cumsum[BUFFER_LEN]; 
 +    double phase; 
 +    int i; 
 + 
 +    if (count == 0) 
 +        return; 
 + 
 +    cumsum[0] = data[0]/fs; 
 +    for (i = 1; i < count; i++) { 
 +        cumsum[i] = cumsum[i-1] + data[i]/fs; 
 +    } 
 + 
 +    for (i=0; i < count; i++) { 
 +        phase = 2*M_PI*fc/fs*(i+1) + 2*M_PI*freqdev*cumsum[i] + old_phase; 
 +        data[2*i] = cos(phase); 
 +        data[2*i + 1] = -sin(phase); 
 +    } 
 + 
 +    old_phase = fmod(phase, 2*M_PI); 
 +    return; 
 +
 + 
 +int main(int argc, char *argv[]) 
 +
 +    static double data[2*BUFFER_LEN]; 
 +    SNDFILE *infile, *outfile; 
 +    SF_INFO sfinfo; 
 +    int readcount; 
 +    double carrier; 
 +    double freqdev; 
 + 
 +    if ((argc > 5) || (argc < 3)) { 
 +        usage(); 
 +        return 1; 
 +    } 
 + 
 +    freqdev = (argc == 5) ? atof(argv[4]) : 3000.0; 
 +    carrier = (argc > 3) ? atof(argv[3]) : 0.0; 
 + 
 +    infile = sf_open(argv[1], SFM_READ, &sfinfo); 
 +    if (!infile) { 
 +        printf("%s: Not able to open input file %s\n", argv[0], argv[1]); 
 +        sf_perror(NULL); 
 +        return 1; 
 +    } 
 + 
 +    if (sfinfo.channels > 1) { 
 +        printf("%s: Not able to process more than 1 channel\n", argv[0]); 
 +        return 1; 
 +    } 
 + 
 +    sfinfo.channels = 2; 
 + 
 +    outfile = sf_open(argv[2], SFM_WRITE, &sfinfo); 
 +    if (!outfile) { 
 +        printf("%s: Not able to open output file %s\n", argv[0], argv[2]); 
 +        sf_perror(NULL); 
 +        return 1; 
 +    } 
 + 
 +    while ((readcount = sf_read_double(infile, data, BUFFER_LEN))) { 
 +        process_data(data, readcount, sfinfo.samplerate, carrier, freqdev); 
 +        sf_write_double(outfile, data, 2*readcount); 
 +    } 
 + 
 +    sf_close(infile); 
 +    sf_write_sync(outfile); 
 +    sf_close(outfile); 
 + 
 +    return 0; 
 +
 + 
 +</file>
projekte/iqmod/start.txt · Zuletzt geändert: 2022/08/04 10:37 von yc

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki