projekte:iqmod:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
projekte:iqmix [2014/02/03 08:27] – [Projektstatus] review thasti | projekte:iqmod:start [2014/02/17 12:16] – Page moved and renamed from projekte:iqmod to projekte:iqmod:start thasti | ||
---|---|---|---|
Zeile 8: | Zeile 8: | ||
* Review Schaltplan: **erledigt, Rev 3 ** --- // | * Review Schaltplan: **erledigt, Rev 3 ** --- // | ||
* 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:simulation.png? | + | {{simulation.png? |
- | {{:projekte:simulationsergebnis.png? | + | {{simulationsergebnis.png? |
- | {{:projekte:2m-filter.asc|LTSpice-File}} | + | {{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? | + | {{si570_direct.jpg? |
Spektrum mit 2m-Filter: | Spektrum mit 2m-Filter: | ||
- | {{:projekte:si570_2m_filter.jpg? | + | {{si570_2m_filter.jpg? |
- | {{:projekte:si570_2m_filter_1.jpg? | + | {{si570_2m_filter_1.jpg? |
* Leistung: -1,6dBm | * Leistung: -1,6dBm | ||
Spektrum mit 70cm-Filter: | Spektrum mit 70cm-Filter: | ||
- | {{:projekte:si570_70cm_filter.jpg? | + | {{si570_70cm_filter.jpg? |
- | {{:projekte:si570_70cm_filter_1.jpg? | + | {{si570_70cm_filter_1.jpg? |
* Leistung: -9dBm | * Leistung: -9dBm | ||
</ | </ | ||
Zeile 61: | Zeile 60: | ||
Überblick Spektrum bei Sollfrequenz 144,6MHz: | Überblick Spektrum bei Sollfrequenz 144,6MHz: | ||
- | {{:projekte:vnwa_direct.jpg? | + | {{vnwa_direct.jpg? |
Spektrum mit 2m-Filter: | Spektrum mit 2m-Filter: | ||
- | {{:projekte:vnwa_2m_filter.jpg? | + | {{vnwa_2m_filter.jpg? |
- | {{:projekte:vnwa_2m_filter_1.jpg? | + | {{vnwa_2m_filter_1.jpg? |
* Leistung: -27,2dBm | * Leistung: -27,2dBm | ||
Überblick Spektrum bei Sollfrequenz 433,8MHz: | Überblick Spektrum bei Sollfrequenz 433,8MHz: | ||
- | {{:projekte:vnwa_70_direct.jpg? | + | {{vnwa_70_direct.jpg? |
Spektrum mit 70cm-Filter: | Spektrum mit 70cm-Filter: | ||
- | {{:projekte:vnwa_70_filter.jpg? | + | {{vnwa_70_filter.jpg? |
- | {{:projekte:vnwa_70_filter_1.jpg? | + | {{vnwa_70_filter_1.jpg? |
* Leistung: -32,6dBm | * Leistung: -32,6dBm | ||
</ | </ | ||
Zeile 84: | Zeile 83: | ||
Spektrum APRS(144, | Spektrum APRS(144, | ||
- | {{:projekte:rpi_direct_aprs.jpg? | + | {{rpi_direct_aprs.jpg? |
- | {{:projekte:rpi_filter_aprs.jpg? | + | {{rpi_filter_aprs.jpg? |
Spektrum 145,450MHz links direkt, rechts mit 2m-Filter: | Spektrum 145,450MHz links direkt, rechts mit 2m-Filter: | ||
- | {{:projekte:rpi_145_450_direct.jpg? | + | {{rpi_145_450_direct.jpg? |
- | {{:projekte:rpi_145_450_filter.jpg? | + | {{rpi_145_450_filter.jpg? |
C-Code zur Ansteuerung: | C-Code zur Ansteuerung: | ||
Zeile 258: | Zeile 257: | ||
Der I/ | Der I/ | ||
- | {{:projekte:max2470_amp.png? | + | {{max2470_amp.png? |
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? | + | {{iqmod_sch.png? |
- | * als {{:projekte:iqmod_sch.pdf|PDF-Datei}} | + | * als {{iqmod_sch.pdf|PDF-Datei}} |
- | * als {{:projekte:iqmod.sch|Eagle-Datei}} | + | * als {{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Ω | | + | | -20dB | 120Ω | 56Ω | 237Ω | |
+ | | -25dB | 120Ω | 56Ω | | ||
Links zu den verwendeten Schaltkreisen: | Links zu den verwendeten Schaltkreisen: | ||
Zeile 319: | Zeile 319: | ||
== Review == | == Review == | ||
* was ist mit dem angesprochenen 50 Ohm Widerstand dort am Eingang? Weggelassen? | * was ist mit dem angesprochenen 50 Ohm Widerstand dort am Eingang? Weggelassen? | ||
+ | * Nein, der wird mit in die 2 Widerstände des Dämpfungsglieds eingerechnet | ||
===== Layout ===== | ===== Layout ===== | ||
Revision: 3 | Revision: 3 | ||
- | {{:projekte:iqmod_pcb.png? | + | {{iqmod_pcb.png? |
- | * als {{:projekte:iqmod_pcb.pdf|PDF-Datei}} | + | * als {{iqmod_pcb.pdf|PDF-Datei}} |
- | * als {{:projekte:iqmod.brd|Eagle-Datei}} | + | * als {{iqmod.brd|Eagle-Datei}} |
==== Änderungen ==== | ==== Änderungen ==== | ||
=== Revision 1: === | === Revision 1: === | ||
Zeile 359: | Zeile 360: | ||
- Bestückung Spannungsaufbereitung | - Bestückung Spannungsaufbereitung | ||
- 0..10V an VIN anlegen | - 0..10V an VIN anlegen | ||
- | - Auslösespannung TVS-Diode: //xxx V//(Soll: 6,5V) | + | - Auslösespannung TVS-Diode: //6,8 V//(Soll: 6,5V) |
- | - Stromaufnahme bei 10V: //xxx mA//(1A) | + | - Verpolungstest: 0..-30V, Spannung an Betriebsspannung der Schaltkreise: |
- | - Bestückung X1(SMA, LO-Eingang) und Filter ohne R15,R16; 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 |
- | - Abgleich Filter, VNA-Messung | + | - VNWA-Messung |
+ | - Spektrum Si570 mit Filter: {{si570_lo_filter.jpg? | ||
- 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: |
- | - 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: //x V// | + | - Spannng und Ripple VCM: //0,8 V// |
- Messungen per Oszilloskop, | - Messungen per Oszilloskop, | ||
- | - Phasenbeziehung zwischen LO+ und LO-: // | + | - Phasenbeziehung zwischen LO+ und LO-: // |
- | - Phasenbeziehung zwischen BB_I+ und BB_I-: // | + | - Phasenbeziehung zwischen BB_I+ und BB_I-: // |
- | - Phasenbeziehung zwischen BB_Q+ und BB_Q-: // | + | - Phasenbeziehung zwischen BB_Q+ und BB_Q-: // |
- 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: | - Spiegelfrequenzunterdrückung: | ||
- LO Leakage: //xxx dBc// | - LO Leakage: //xxx dBc// | ||
+ | |||
+ | {{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 < | ||
+ | * 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