projekte:iqmod:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
projekte:iqmix [2014/02/05 23:28] – [Anleitung zur Inbetriebnahme] yc | projekte:iqmod:start [2014/02/17 16:40] – thasti | ||
---|---|---|---|
Zeile 9: | Zeile 9: | ||
* Review Layout: **erledigt, Rev 3** --- // | * Review Layout: **erledigt, Rev 3** --- // | ||
* Fertigung Leiterplatte: | * Fertigung Leiterplatte: | ||
- | * Inbetriebnahme Leiterplatte: | + | * Inbetriebnahme Leiterplatte: |
===== 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: | + | {{projekte:iqmod: |
- | {{:projekte: | + | {{projekte:iqmod: |
- | {{:projekte: | + | {{projekte:iqmod: |
Erreichbare Daten: | Erreichbare Daten: | ||
Zeile 42: | Zeile 41: | ||
Überblick Spektrum bei Sollfrequenz 144,6MHz: | Überblick Spektrum bei Sollfrequenz 144,6MHz: | ||
- | {{:projekte: | + | {{projekte:iqmod: |
Spektrum mit 2m-Filter: | Spektrum mit 2m-Filter: | ||
- | {{:projekte: | + | {{projekte:iqmod: |
- | {{:projekte: | + | {{projekte:iqmod: |
* Leistung: -1,6dBm | * Leistung: -1,6dBm | ||
Spektrum mit 70cm-Filter: | Spektrum mit 70cm-Filter: | ||
- | {{:projekte: | + | {{projekte:iqmod: |
- | {{:projekte: | + | {{projekte:iqmod: |
* Leistung: -9dBm | * Leistung: -9dBm | ||
</ | </ | ||
Zeile 61: | Zeile 60: | ||
Überblick Spektrum bei Sollfrequenz 144,6MHz: | Überblick Spektrum bei Sollfrequenz 144,6MHz: | ||
- | {{:projekte: | + | {{projekte:iqmod: |
Spektrum mit 2m-Filter: | Spektrum mit 2m-Filter: | ||
- | {{:projekte: | + | {{projekte:iqmod: |
- | {{:projekte: | + | {{projekte:iqmod: |
* Leistung: -27,2dBm | * Leistung: -27,2dBm | ||
Überblick Spektrum bei Sollfrequenz 433,8MHz: | Überblick Spektrum bei Sollfrequenz 433,8MHz: | ||
- | {{:projekte: | + | {{projekte:iqmod: |
Spektrum mit 70cm-Filter: | Spektrum mit 70cm-Filter: | ||
- | {{:projekte: | + | {{projekte:iqmod: |
- | {{:projekte: | + | {{projekte:iqmod: |
* Leistung: -32,6dBm | * Leistung: -32,6dBm | ||
</ | </ | ||
Zeile 84: | Zeile 83: | ||
Spektrum APRS(144, | Spektrum APRS(144, | ||
- | {{:projekte: | + | {{projekte:iqmod: |
- | {{:projekte: | + | {{projekte:iqmod: |
Spektrum 145,450MHz links direkt, rechts mit 2m-Filter: | Spektrum 145,450MHz links direkt, rechts mit 2m-Filter: | ||
- | {{:projekte: | + | {{projekte:iqmod: |
- | {{:projekte: | + | {{projekte:iqmod: |
C-Code zur Ansteuerung: | C-Code zur Ansteuerung: | ||
Zeile 258: | Zeile 257: | ||
Der I/ | Der I/ | ||
- | {{:projekte: | + | {{projekte:iqmod: |
Somit muss der LO mindestens -26dBm liefern. | Somit muss der LO mindestens -26dBm liefern. | ||
Zeile 271: | Zeile 270: | ||
Revision: 3 | Revision: 3 | ||
- | {{:projekte: | + | {{projekte:iqmod: |
- | * als {{:projekte: | + | * als {{projekte:iqmod: |
- | * als {{:projekte: | + | * als {{projekte:iqmod: |
Vorberechnung des Dämpfungsglieds | Vorberechnung des Dämpfungsglieds | ||
Zeile 325: | Zeile 324: | ||
Revision: 3 | Revision: 3 | ||
- | {{:projekte: | + | {{projekte:iqmod: |
- | * als {{:projekte: | + | * als {{projekte:iqmod: |
- | * als {{:projekte: | + | * als {{projekte:iqmod: |
==== Änderungen ==== | ==== Änderungen ==== | ||
=== Revision 1: === | === Revision 1: === | ||
Zeile 364: | Zeile 363: | ||
- Verpolungstest: | - Verpolungstest: | ||
- Bestückung X1(SMA, LO-Eingang) und Filter ohne Dämpfungsglied; | - Bestückung X1(SMA, LO-Eingang) und Filter ohne Dämpfungsglied; | ||
- | - VNWA-Messung LO-Filter: {{:projekte: | + | - VNWA-Messung LO-Filter: {{projekte: |
- | - Spektrum Si570 mit Filter: {{:projekte: | + | - Spektrum Si570 mit Filter: {{projekte:iqmod: |
- Bestückung Rest, 50Ohm-Abschluss an X1 + X2 | - Bestückung Rest, 50Ohm-Abschluss an X1 + X2 | ||
- Stromaufnahme bei VIN=5V: //xxx mA// (Soll: | - Stromaufnahme bei VIN=5V: //xxx mA// (Soll: | ||
Zeile 378: | Zeile 377: | ||
- LO Leakage: //xxx dBc// | - LO Leakage: //xxx dBc// | ||
- | {{:projekte: | + | {{projekte: |
===== Ansteuerung ===== | ===== Ansteuerung ===== | ||
- | Um normale Audio-Dateien FM-moduliert als I/Q-Signale mit einer Soundkarte ausgeben zu können, gibt es folgendes kleines Tool: **fmmod** | + | 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 < | + | |
- | * Di 4. Feb 16:10:01 CET 2014 | + | |
- | */ | + | |
- | + | ||
- | #include < | + | |
- | #include < | + | |
- | #include < | + | |
- | #include < | + | |
- | + | ||
- | #define BUFFER_LEN | + | |
- | + | ||
- | void usage(void) | + | |
- | { | + | |
- | printf(" | + | |
- | inputfile: path to input file(needs to be single channel)\n \ | + | |
- | outputfile: path to output file\n \ | + | |
- | carrier: carrier frequency in Hz(standard: | + | |
- | freqdev: frequency deviation in Hz(standard: | + | |
- | } | + | |
- | + | ||
- | 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/ | + | |
- | 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], | + | |
- | if (!infile) { | + | |
- | printf(" | + | |
- | sf_perror(NULL); | + | |
- | return 1; | + | |
- | } | + | |
- | + | ||
- | if (sfinfo.channels > 1) { | + | |
- | printf(" | + | |
- | return 1; | + | |
- | } | + | |
- | + | ||
- | sfinfo.channels = 2; | + | |
- | + | ||
- | outfile = sf_open(argv[2], | + | |
- | if (!outfile) { | + | |
- | printf(" | + | |
- | sf_perror(NULL); | + | |
- | return 1; | + | |
- | } | + | |
- | + | ||
- | while ((readcount = sf_read_double(infile, | + | |
- | process_data(data, | + | |
- | sf_write_double(outfile, | + | |
- | } | + | |
- | + | ||
- | sf_close(infile); | + | |
- | sf_write_sync(outfile); | + | |
- | sf_close(outfile); | + | |
- | + | ||
- | return 0; | + | |
- | } | + | |
- | + | ||
- | </ | + |
projekte/iqmod/start.txt · Zuletzt geändert: 2022/08/04 10:37 von yc