mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:27:33 +00:00
fix(puresignal): цель feedback 22 для Orion MkII + outlier-фильтр calcc
Разбор «IMD3 хуже, чем в Thetis»: юзерская плата (Orion MkII/Anvelina PRO3) при стоковой цели feedback 152 перегружает входные каскады ADC2208+кодека — фидбек сам интермодулирует, PS корректирует по искажённому наблюдению. Замеры eu2av (Thetis-Enhanced): оптимум FB≈22 при ATT≈10 дБ. - PSFBTarget: цель уровня feedback, авто по плате (board 5 → 22, иначе 152), настройка ps_fb_target (0 = авто) - авто-ATT: пороги от цели (FB > 1.5×цели / FB < 0.7×цели при ATT>0), ddB = 20*log10(FB/цель). Заодно чинит «ATT всегда 0»: старый порог >181 на этой плате никогда не достигался - PSOutlierSigmaEff → SetPSOutlierSigma (новый экспорт libwdsp): MAD- фильтр выбросов перед фитом calcc, авто σ=5.0 для Orion MkII, настройка ps_outlier_sigma (-1 = авто) - лампа FB в поповере: зоны от цели (0.7–1.3× зелёная), подпись «FB: тек/цель» Требует libwdsp с патчами eu2av (форк wdsp, коммит d27684c). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+14
-8
@@ -97,8 +97,9 @@ const
|
||||
CLR_INPUT = TColor($00FFFFFF);
|
||||
CLR_INPUT_TEXT = TColor($00202020);
|
||||
|
||||
// Лампа feedback (пороги Thetis: >181 горячо, 129..181 оптимум, 91..128
|
||||
// слабовато, <=90 нет сигнала). TColor = BGR.
|
||||
// Лампа feedback — пороги от цели PSFBTarget (Thetis-Enhanced eu2av):
|
||||
// >1.5×цели горячо, 0.7..1.3×цели оптимум, 0.5×..0.7× слабовато, ниже — нет
|
||||
// сигнала. TColor = BGR.
|
||||
CLR_FB_HOT = TColor($00FF9030); // голубой: слишком горячо (атт. мал)
|
||||
CLR_FB_OK = TColor($0000FF00); // зелёный: оптимум
|
||||
CLR_FB_LOW = TColor($0000FFFF); // жёлтый: слабовато
|
||||
@@ -382,7 +383,7 @@ end;
|
||||
|
||||
procedure TPureSignalPopup.RefreshStatus;
|
||||
var
|
||||
FB: Integer;
|
||||
FB, FBTarget: Integer;
|
||||
LampClr: TColor;
|
||||
begin
|
||||
if (FController = nil) or not Visible then Exit;
|
||||
@@ -394,17 +395,22 @@ begin
|
||||
FBtn2Ton.Active := FController.FTwoTone;
|
||||
|
||||
FB := FController.PSFeedbackLevel;
|
||||
FBTarget := FController.PSFBTarget;
|
||||
if FController.FPSFeedbackOn then
|
||||
begin
|
||||
if FB > 181 then LampClr := CLR_FB_HOT
|
||||
else if FB > 128 then LampClr := CLR_FB_OK
|
||||
else if FB > 90 then LampClr := CLR_FB_LOW
|
||||
else LampClr := CLR_FB_NONE;
|
||||
if FB > Round(FBTarget * 1.5) then LampClr := CLR_FB_HOT
|
||||
else if FB >= Round(FBTarget * 0.7) then
|
||||
begin
|
||||
if FB <= Round(FBTarget * 1.3) then LampClr := CLR_FB_OK
|
||||
else LampClr := CLR_FB_LOW // 1.3..1.5×: желтовато
|
||||
end
|
||||
else if FB >= Round(FBTarget * 0.5) then LampClr := CLR_FB_LOW
|
||||
else LampClr := CLR_FB_NONE;
|
||||
end
|
||||
else
|
||||
LampClr := CLR_LAMP_OFF;
|
||||
if FFbLamp.Color <> LampClr then FFbLamp.Color := LampClr;
|
||||
FLbFbVal.Caption := Format('FB: %d', [FB]);
|
||||
FLbFbVal.Caption := Format('FB: %d/%d', [FB, FBTarget]);
|
||||
|
||||
if FController.PSCorrecting then
|
||||
begin
|
||||
|
||||
Reference in New Issue
Block a user