Форум Радиолюбителей

Птеродактиль трансивер (аналог+DDC)

1484506 просмотров, 2129 ответов — стр. 115 из 142

Игорь 2
Сообщений: 21288
28 мая 2022 г. в 08:05#1711
Цитата: ra0ahc
Пока синт Игоря даже со свистульками - рулит!


Это какие ещё свистульки?
У меня полный чистяк на аппаратах...
ra0ahcra0ahc
Сообщений: 4868
28 мая 2022 г. в 08:06#1712
Цитата: Игорь
[quote author=ra0ahc link=topic=501.msg48558#msg48558 date=1653756807]Пока синт Игоря даже со свистульками - рулит!


Это какие ещё свистульки?
У меня полный чистяк на аппаратах...
[/quote]
У вас же нет плис )))
Valery GusarovValery Gusarov
Сообщений: 2476
28 мая 2022 г. в 08:07#1713
Цитата: veso74
влияние математики (для ADF4351) - несколько чисел разные, а я даже не дотронулся рукой до платы

И под каждую частоту ПЧ видимо свои...
ra0ahcra0ahc
Сообщений: 4868
28 мая 2022 г. в 08:08#1714
// PLL-Reg-R0 = 32bit
// Registerselect 4bit
// int N_Int = 92; // 16bit
int Prescal = 0; // 1bit geht nicht it does not work
// int Autocal = 1; //1 bit =0 для мелких изменений <10кГц =1 для остальных изменений.
// reserved // 10bit

// PLL-Reg-R1 = 32bit
// Registerselect 4bit
// int FRAC1 = 10; // 24 bit
// reserved // 4bit

// PLL-Reg-R2 = 32bit
// Registerselect 4bit
int M_Mod2 = 16383; // 14 bit
// int Frac2 = 0; // 14 bit

// PLL-Reg-R3 = 32bit - FIXED !
// Registerselect 4bit
//Fixed value to be written = 0x3 =3

// PLL-Reg-R4 = 32bit
// Registerselect 4bit
int U1_CountRes = 0; // 1bit
int U2_Cp3state = 0; // 1bit
int U3_PwrDown = 0; // 1bit
int U4_PDpola = 1; // 1bit
int U5_MuxLog = 1; // 1bit
int U6_RefMode = 1; // 1bit
// int U5_LPD = 0; // 1bit
// int U6_LPF = 1; // 1bit 1=Integer, 0=Frac not spported yet
int CP_ChgPump = 9; // 4bit
int D1_DoublBuf = 0; // 1bit
int R_Counter = 1; // 10bit
int RD1_Rdiv2 = 0; // 1bit
int RD2refdoubl = 0; // 1bit
int M_Muxout = 6; // 3bit
// reserved // 2bit

// PLL-Reg-R5 = 32bit
// Registerselect // 4bit
// Phase Select: Not of partcular interst in Amatuer radio applications. Leave at a string of zeros.

// PLL-Reg-R6 = 32bit
// Registerselect // 4bit
//Variable value to be written!!!
int D_out_PWR = mdbm; // 2bit OutPwr 0-3 3= +5dBm Power out 1
int D_RF_ena = 1; // 1bit OutPwr 1=on 0 = off Outport Null freischalten
int Reserved = 0; // 3bit
int D_RFoutB = 1; // 1bit aux OutSel
int D_MTLD = 0; // 1bit
int CPBleed = 126; // 8bit
int D_RfDivSel = 3; // 3bit 3=70cm 4=2m lokale Variable
int D_FeedBack = 1; // 1bit
// reserved // 7bit

// PLL-Reg-R7 = 32bit
// Registerselect // 4bit
//Fixed value to be written = 0x120000E7 = 301990119 (dec)

// PLL-Reg-R8 = 32bit
// Registerselect // 4bit
//Fixed value to be written = 0x102D0428 = 271385640 (dec)

// PLL-Reg-R9 = 32bit
// Registerselect // 4bit
//Fixed value to be written = 0x5047CC9 = 84180169 (dec)

// PLL-Reg-R10 = 32bit
// Registerselect // 4bit
//Fixed value to be written = 0xC0067A = 12584570 9dec)

// PLL-Reg-R11 = 32bit
// Registerselect // 4bit
//Fixed value to be written = 0x61300B = 6369291 (dec)

// PLL-Reg-R12 = 32bit
// Registerselect // 4bit
//Fixed value to be written = 0x1041C = 66588 (dec)

// Referenz Freg Calc

// int F4_BandSel = 10.0 * B_BandSelClk / PFDFreq;
double RFout = Freq; // VCO-Frequenz 144200000 Freq ist global, RFout ist lokal

// calc bandselect und RF-div
float outdiv = 1;
if (RFout >= 680000000) {
outdiv = 0.5f;
D_RfDivSel = 0;
D_RFoutB = 0;
D_RF_ena = 0;
}
if (RFout < 680000000) {
outdiv = 1;
D_RfDivSel = 0;
D_RFoutB = 1;
D_RF_ena = 1;
}
if (RFout < 340000000) {
outdiv = 2;
D_RfDivSel = 1;
D_RFoutB = 1;
D_RF_ena = 1;
}
if (RFout < 170000000) {
outdiv = 4;
D_RfDivSel = 2;
D_RFoutB = 1;
D_RF_ena = 1;
}
if (RFout < 85000000) {
outdiv = 8;
D_RfDivSel = 3;
D_RFoutB = 1;
D_RF_ena = 1;
}
if (RFout < 42500000) {
outdiv = 16;
D_RfDivSel = 4;
D_RFoutB = 1;
D_RF_ena = 1;
}
if (RFout < 21250000) {
outdiv = 32;
D_RfDivSel = 5;
D_RFoutB = 1;
D_RF_ena = 1;
}
if (RFout < 10625000) {
outdiv = 64;
D_RfDivSel = 6;
D_RFoutB = 1;
D_RF_ena = 1;
}

/////////////////////////////////////////////////////////////////////////////
//////////////////////// N and Frac1 and Frac2 calculations /////////////////
//////////////////////// Done using double precision 64 bit /////////////////
//////////////////////// Results agree exactly with AD demo /////////////////
/////////////////////////////////////////////////////////////////////////////

double PFDFreq = refin * ((1.0 + RD2refdoubl) / (R_Counter * (1.0 + RD1_Rdiv2))); //Phase detector frequency

double N = (outdiv*RFout) / PFDFreq; // Calculate N

int N_Int = (int)N; // N= 50 for 5 GHz // Turn N into integer

double F_Frac1x = (N - N_Int) * pow(2, 24); // Calculate Frac1 (N remainder * 2^24)

int F_FracN = (int)F_Frac1x; // turn Frac1 into an integer

double F_Frac2x = ((F_Frac1x - F_FracN)) * pow(2, 14); // Claculate Frac2 (F_FracN remainder * 2^14)

int F_Frac1 = (int)F_Frac1x; // turn Frac1 into integer
int F_Frac2 = (int)F_Frac2x; // turn Frac2 into integer

////////////////// Set 32 bit register values R0 to R12 ///////////////////////////

R[0] = (unsigned long)(0 + N_Int * pow(2, 4) + Prescal * pow(2, 20) + Autocal * pow(2,21)); // R0 für Startfrequenz ok

// R[0] = (unsigned long)(0x203200);

R[1]=(unsigned long)(1 + F_Frac1 * pow(2, 4));

//R[1] = (unsigned long)(0x20C491);

R[2] = (unsigned long)(2 + M_Mod2 * pow(2, 4) + F_Frac2 * pow(2, 18)); //

R[3] = (unsigned long)(0x3); //Fixed value (Phase control not needed)

R[4] = (unsigned long)(4 + U1_CountRes * pow(2, 4) + U2_Cp3state * pow(2, 5) + U3_PwrDown * pow(2, 6) + U4_PDpola * pow(2, 7) + U5_MuxLog * pow(2, + U6_RefMode * pow(2, 9) + CP_ChgPump * pow(2, 10) + D1_DoublBuf * pow(2, 14) + R_Counter * pow(2, 15) + RD1_Rdiv2 * pow(2, 25) + RD2refdoubl * pow(2, 26) + M_Muxout * pow(2, 27));
// R[4] = (unsigned long)(0x32050B84); //Variable But probably can leave fixed.

R[5] = (unsigned long) (0x800025); // Fixed (Reserved)

R[6] = (unsigned long)(6 + D_out_PWR * pow(2, 4) + D_RF_ena * pow(2, 6) + Reserved * pow(2, 7) + D_RFoutB * pow(2, 10) + D_MTLD * pow(2, 11) + Reserved * pow(2, 12) + CPBleed * pow(2, 13) + D_RfDivSel * pow(2, 21) + D_FeedBack * pow(2, 24) +10 * pow(2, 25));
// R[6] = (unsigned long) (0x35002076); //variable

R[7] = (unsigned long) (0x120000E7);
R[8] = (unsigned long) (0x102D0428);
R[9] = (unsigned long) (0x302FCC9);
R[10] = (unsigned long) (0xC0043A);
R[11] = (unsigned long) (0x61300B);
R[12] = (unsigned long) (0x1041C);
veso74
Сообщений: 969
28 мая 2022 г. в 08:11#1715
Под именем файла в основном изменение коэффициентов. В главном: можете получить одну частоту каждого синтезатора бесконечным способов/коэффициентов. В одном случае важно одно, в другом — другое. Например скорость изменения, паразитные частоты и многое другое. (ни часто обратно пропорциональны.) И чип синтеза - уиверсальной, можно сконтролировать как угодно. А не как заработает схема в начало - с условно идентичные и предсказуемые параметры, например, как мультивибратор или схема с одним светодиодом и одним резистором.

Как например: взяли код из интернета и адаптировали его для своих целей (вижу немецкий в некоторых комментариях). Да, но исследуйте влияние коеффициентов сейчас. Часто коды являются первыми, заработанными авторами. И передаются от человека к человеку (часто с ошибками и неточностями)

некоторые рекомендации:
1: увеличитье charge pump на макс.
2. работа с большим шагом / будет противоречить требованию синтезатора для радиостанции, хотим чтобы шаг был маленький -> необх. маленькая частота сравнения.
3. на выбранной частоте сравнения FLOAT дает меньше помех в ближней зоне спр. INT. В дальнем: это относительно, надо проверить, не хуже ли.

Точки много, в основном: из теории синтезаторов, но есть специф. для выбраного чипа.

Посему для себя: чужой програмной код управления чипа (в сл.: синтезатора): только для проверки работает или нет. Если мне нужно сделать выводы об основных параметрах чипах, я должен их сам выбрать, и подумать какой параметр написать. Но ето значит полное знакомство с документацией ... и пустая трата времени, с необходимостью исследований.
ra0ahcra0ahc
Сообщений: 4868
28 мая 2022 г. в 08:15#1716
Все, вспомнил о чем вы! Есть такая проблема, много обсуждали по си5351
veso74
Сообщений: 969
28 мая 2022 г. в 08:25#1717
Часто небольшое изменение одного или двух параметров (как в случае: R1 и charge pump) меняет реакции глобально о чипах. И это не будет ощущаться, если код не будет написан и изучен самостоятельно. Но это также цена использования (время, нерв, подробное знакомство напр. с теорией и идокументации и др.) чужих программных кодов/драйверов для чипов.

И часто так быстро делаются неправильные выводы об общих параметрах (синтезатора), которые могут стать немного лучше с небольшой модификацией.

Как Si5351 - один говорит: мусор (для первого осциллятора), другой говорит: замечательная микросхема (пишу при условии, что оба детально изучили микросхему (причем часто первые даже не пробовали читать pdf для чего сделан чип например)) .
ra0ahcra0ahc
Сообщений: 4868
28 мая 2022 г. в 08:47#1718
Увеличил выход генератора на максималку +5дБм стало почище. Явно мусора меньше. Но потребление 250мА блин.
Микросхема греется ого-го
6Ж2П6Ж2П
Сообщений: 1065
28 мая 2022 г. в 08:51#1719
Чувствительность не связана с ФШ, а обратное преобразование шумов повышает уровень шумов, но это величина переменная, зависящая от уровня внеполосной помехи. Потому говорить о получении чувствительности в связи с ФШ, не указав уровень помехи, это ерунда. Тем более про прямую связь чувствительности и ФШ
ra0ahcra0ahc
Сообщений: 4868
28 мая 2022 г. в 08:52#1720
Вот здесь сейчас нет параженок


ra0ahcra0ahc
Сообщений: 4868
28 мая 2022 г. в 08:57#1721
Чувствительность не связана с ФШ, а обратное преобразование шумов повышает уровень шумов, но это величина переменная, зависящая от уровня внеполосной помехи. Потому говорить о получении чувствительности в связи с ФШ, не указав уровень помехи, это ерунда. Тем более про прямую связь чувствительности и ФШ

К смесителю подключаешь и сразу все понятно с шумами. У ДДС генераторов -120дБ полка шума , у Игоря синта -145. и тд
Даешь на вход дпф минимальный сигнал и сразу видишь разницу, шумовая полка просто лезет вверх. (смотрю уже на НЧ)
Так , что без разницы какие расчеты по итогу все переходит в НЧ и далее к нам у уши )))
ФШ: если юбка широкая и высокая, то все рядом стоящие станции дадут дополнительный шум. И к стати об этом много здесь говорилось про ширину юбки. Чем шире юбка - тем больше мусора собирает с дальних зон .

Где я ошибся ?
ra0ahcra0ahc
Сообщений: 4868
28 мая 2022 г. в 08:58#1722
1: увеличитье charge pump на макс.
Практически ничего не дало.
ra0ahcra0ahc
Сообщений: 4868
28 мая 2022 г. в 09:02#1723
Продолжение тестов не имеет значение. Нужны экраны. Первый каскад как пылесос. Реле в этом месте как антенна работает, хотя контакты у реле 5 мм всего - ну вот хватает ))) собирает.
veso74
Сообщений: 969
28 мая 2022 г. в 09:03#1724
Попробуйте влияние Charge Pump Current Setting (CP4 to CP1 bits (Bits[DB13:DB10]), Register 4): посередине, на обоих концах... другое.

ADF4355 софт также полезно для выбора (и для расчета коэффициентов):
ADF4355/ADF4355-2/ADF4355-3/ADF4356/ADF5355/ADF5356 Evaluation

R Counter поддерживайте 1 (для маленького шага вероятно должно быть иначе: /)
У меня (на ADF4351) при наименьшей выходной мощности в ближней зоне помех меньше всего.
ra0ahcra0ahc
Сообщений: 4868
28 мая 2022 г. в 09:10#1725
int CP_ChgPump = 9; // 4bit 9
int D1_DoublBuf = 0; // 1bit
int R_Counter = 1; // 10bit