Для практичних задач мені знадобився ВЧ вимірювач потужності. Наявні на полиці екземляри є невиправдано дорогі. Вони базуються на логарифмічному підсилювачі. Я був купив собі AD8318 кілька років тому. Це не така ж мікросхема, що стоїть у ImmersionRC RF Power Meter, але принцип той же. На виході напруга з підсилювача пропорційна вхідній потужності у дБ. Ця залежність майже лінійна, але має температурний дрифт і залежить від частоти. Тому при вимірюванні вноситься частота аби врахувати цю поправку. Графіки залежності для різних температур і частот дані на 8й сторінці паспорту:
Всі ці залежності я вручну оцифрував і preprocess їх. В цій частині я розповім як я це зробив.
Оцифровував я ці залежності у webplotdigitizer. Кольорові криві оцифрувати можна автоматично. Чорну криву я тицяв вручну. В результаті отримав наступні графіки:
В підсумку 18 кривих (6 частот і 3 температури на кожні). Задача наступна: почистити криві від шуму оцифрування і знайти ефективний спосіб імплементування поправок у мікроконтроллері. Це можна зробити брут форс, але я зробив інакше.
Цього року я дізнався про SVD. Тепер я хочу відSVDіти все що бачу. SVD дає найкращий базис для данних. Свого роду це розширене перетворення Фур'є, але якщо в останньому ти нав'язуєш базис з косинусів і синусів, то тут SVD сам дає тобі базис, причому найкращий з усіх можливих (у L2 сенсі). Тут я його використовую аби відфільтрувати дані і зменшити їх вимірність.
Я виявилось, оці криві можна представити кількома модами. Ось графік мод за енергією:
Перша мода містить 94.74% інформації, перша і друга разом містить 98.78%, а перші три моди 99.28%. Тобто лише кілька мод достатньо щоб дуже точно описати дані. На малюнку знизу наведені ці три моди. Перша мода це похила крива (не зважай на знак, коефіціент проектції теж негативний, то ж в результаті маємо правильний знак). Друга мода теж нагадує нахид, хоч і з викрутасом. Третя мода враховує нелінійності на великих і малих вимірюваних потужностях.
Коефіціенти проекції цих мод показані під модами. Видно, що проекції залежать від температури і частоти. Особливо від температури залежить мода 3, то просто значить, що криву коробить на кінцях, коли холодно чи жарко.
Перша і друга моди мають виражену частотну залежність. Можна поспекулювати, що частково це пов'язано із узгодженням мікросхеми з лінією 50 Ом. На малюнку чорним кольором показано коефіціент відбивання без термінально резистора 52.3 Ом і червоним кольором із ним.
Для прикраду, можна погледіти на оцифровані дані (синя крива) і їх апроксимацію 3ма модами (червона крива). Криві майже ідентичні. Їх різниця (чорний колір) більше нагадує шум, ніж щось розбірливе.
Наступним крокором я проінтерполював мапи проекцій першої, другої і третьої мод з кроком у 20 градусів і 200 МГц:
Дані 3 мапи займатимуть приблизно і 3 моди займають загалом 1.23kB. Я припускаю, що лінійна інтерполяція на мікроконтроллері буде достатньо точна при такому кроці температури і частоти. Отримавши коефіціенти проекцій за заданих температурі і частоті залишається лиш їх помножити з відповідними модами і просумувати. Лінійною інтерполяцією також можна отримати значення потужності із цієї кривої маючи виміряну напругу на виході мікросхеми.
Далі буде.