Page 23 of 39

Re: Универсальный синтезатор Si570/Si5351

Posted: 28 May 2021, 14:22
by SWL
Relayer wrote:

Code: Select all

Lval = Lconst[trx.BandIndex];
:D Чувствовал же, что можно проще!
Ячейки то совпадают :D
Спасибо!

Code: Select all

float Lconst[] = {L1, L2, L3, L4, L5, L6, L7, L8, L9};
float Lval = 0;

Lval = Lconst[trx.BandIndex];

   float L = pow(Lval, -6);
Теперь должно быть так, правильно ?

Code: Select all

Скетч использует 29570 байт (96%) памяти 
:shock:
Было 92%)

Re: Универсальный синтезатор Si570/Si5351

Posted: 28 May 2021, 14:38
by SWL
и в догонку

Code: Select all

long C = pow( round( 1 / (4 * square (M_PI) * square (trx.state.VFO[trx.GetVFOIndex()]) * (float)L )) , 12); // в пФ
  Serial.print(C, DEC);
outLCCtrl.Set(C);
  outLCCtrl.Write();
Так будет считать ?
И посмотреть результат в мониторе порта.

Re: Универсальный синтезатор Si570/Si5351

Posted: 28 May 2021, 14:47
by SWL
UR5VCP wrote:Может через case сделать
Тоже сначала думал, но массив че то захотелось...

Re: Универсальный синтезатор Si570/Si5351

Posted: 28 May 2021, 14:59
by SWL

Code: Select all

#define L1 110.0 	
#define L2 110.0 
#define L3 30.0 
#define L4 6.0 
#define L5 6.0	
#define L6 1.0 
#define L7 1.0
#define L8 1.0 
#define L9 1.0 

float Lconst[] = {L1, L2, L3, L4, L5, L6, L7, L8, L9};
float L = pow( Lconst[trx.BandIndex] , -6); // в Гн
long C = pow( round( 1 / (4 * square (M_PI) * square (trx.state.VFO[trx.GetVFOIndex()]) * (float)L )) , 12); // в пФ
 Serial.print(C, DEC);
outLCCtrl.Set(C);
outLCCtrl.Write();
Убрал промежуточную переменную.
2 Relayer
А можно дефайны L объявить в config.h ? Или не будет работать ?
Компилятор не ругается.

Re: Универсальный синтезатор Si570/Si5351

Posted: 28 May 2021, 17:07
by UR5FFR
Плавающая точка и функции типа pow, square и тп жрут память. По остальному я не подскажу т.к. не знаю что там должно и как у вас считаться.

Re: Универсальный синтезатор Si570/Si5351

Posted: 28 May 2021, 17:31
by SWL
C = 1/(4𲃲L)
Формула Томпсона.
В дефайнах Lconst вводим индуктивность в микрогенри, а в конечной L переводим в Генри (-6 степень).

Code: Select all

float L = pow( Lconst[trx.BandIndex] , -6);
В формуле Фарады, Генри, Герцы.
Потом емкость, для вывода , переводим в пикофарады (12 степень) и округляем до целого значения пикофарад.

Code: Select all

long C = pow( round( 1 / (4 * square (M_PI) * square (trx.state.VFO[trx.GetVFOIndex()]) * (float)L )) , 12);
Выводим на PCF8574 .
При восьми разрядах имеем изменение 0-255 пф.
Как то так.
Может 4 * square (M_PI) (4*число Пи) ввести числом, до седьмого знака ? Это съэкономит память ?

Re: Универсальный синтезатор Si570/Si5351

Posted: 28 May 2021, 19:24
by SWL
Никто не заметил ошибок?

Code: Select all

 float L = Lconst[trx.BandIndex] *pow(10  , -6);  

Code: Select all

   long C = round(( 1 / (4 * square (M_PI) * square (trx.state.VFO[trx.GetVFOIndex()]) * (float)L )) * pow( 10 , 12));     
Исправил :D
Пока ехал домой, 1*10^-⁶, и 1*10^¹² не давала покоя :)

Re: Универсальный синтезатор Si570/Si5351

Posted: 28 May 2021, 20:01
by SWL
Работает!
Залил скетч, монитор порта дает изменяющиеся показания емкости.
Почти совпадает с расчетом +- пару кГц. Расширитель і2с подключу после ужина :D (проверю код).
Еще надо будет подогнать диапазоны и индуктивности под имеющийся :D дискретный КПЕ.
А то на нижнем диапазоне требует больше 600 пф, а у меня их нету :lol:
Еще надо учесть емкости монтажа, паразитные, начальную емкость и вычитать их перед отправкой на вывод.
Как то так.

Re: Универсальный синтезатор Si570/Si5351

Posted: 29 May 2021, 06:00
by Conan
"...мой разгоряченный мозжечок мыслишка в полночь посетила..." ;)

Вообщем, Андрей, может идея вам понравится/понадобится.
Поместить/оформить все три SI-шки с обвесом в виде субмодуля (дочерней платы), и уже в последующих проектах использовать именно субмодуль, а не трассировать всякий раз по новой.

Есть ещё одна идея в плане развития проекта - но это скорее как экзотика.
Хотя найдутся и такие, которые воспримут её на "Ура"!
Построить ПП управления на двух 1.8" TFT индикаторах - на одном(правом) крутить виртуальный лимб(диск настройки),
а на другом(левом) - индицировать s-метр, режимы работы, и прочее.
Функционально это мало что добавит, но самому изделию добавит шарма/очарования/притягательности. ;)
Ведь, как любил часто повторять мой генеральный, когда я ещё работал в "ящике" - красивый самолёт красиво летает!

Re: Универсальный синтезатор Si570/Si5351

Posted: 29 May 2021, 09:01
by UR5FFR
Не, два дисплея это уже занадто красиво. Такая красота будет просто ослеплять :)
Субмодуль с сишками не упрощает трассировку как могло бы показаться. Разве что его можно вынести от синтеза и разместить ближе к основной плате радиотракта. Но это сомнительное удовольствие.
Ближайшее что будет по проекту - небольшой рефакторинг с целью отказаться от конвертора TSX и заменить его на более простое решение.