Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

LibreVNA + LibreCAL: автоматичне калібрування

librecal_autocal.py робить повне SOLT-калібрування LibreVNA електронним калібрувальним набором LibreCAL без ручного перемикання стандартів. Результати кожного запуску зберігаються в librecal_out/ і комітяться в цей репозиторій, щоб мати повну історію калібрувань.

Як це працює

LibreVNA-GUI не вміє керувати LibreCAL через SCPI, тому скрипт працює з обома приладами окремо:

  1. Підключається до LibreVNA-GUI (SCPI по TCP, порт 19542) і до LibreCAL (SCPI по USB-serial, знаходить його за VID:PID 1209:4122).
  2. Чекає, поки термостат LibreCAL вийде на робочу температуру (:TEMP:STABLE?).
  3. Вичитує з LibreCAL виміряні характеристики стандартів (набір коефіцієнтів, за замовчуванням FACTORY) і зберігає їх у Touchstone (.s1p / .s2p). Стандарти LibreCAL неідеальні, тому калібрувати з ідеальною моделлю не можна.
  4. Зберігає бекап поточного cal kit у GUI і збирає новий кіт із цих Touchstone-файлів.
  5. Перемикає LibreCAL у OPEN → SHORT → LOAD (усі порти одночасно) → THROUGH для кожної пари портів і на кожному стані запускає калібрувальний вимір у GUI.
  6. Активує SOLT і зберігає .cal.
  7. Перевірка: з новим калібруванням ще раз вимірює кожен стан LibreCAL і порівнює з його коефіцієнтами.

Вимоги

  • LibreVNA-GUI (перевірено на 1.6.5): запущений, VNA підключений, у налаштуваннях увімкнено SCPI-сервер.
  • Python 3 з pyserial.
  • Серійний порт LibreCAL має бути вільним: не підключайтеся до нього в LibreCAL-GUI або в діалозі eCal у LibreVNA-GUI, поки працює скрипт.
  • Скрипт і LibreVNA-GUI мають працювати на одній машині: GUI сам зберігає .cal/.calkit і читає Touchstone-файли за шляхами, які передає скрипт.

Використання

Спочатку налаштуйте в GUI розгортку (діапазон, кількість точок, IFBW, потужність), потім:

./librecal_autocal.py

Калібрування діє тільки для тих налаштувань розгортки, з якими його зроблено. Після зміни налаштувань запустіть скрипт знову. Діапазон розгортки має вкладатися в діапазон коефіцієнтів LibreCAL (у FACTORY це 9 kHz – 8.5 GHz), скрипт це перевіряє.

Опція За замовчуванням Опис
--map 1:1,2:2 відповідність портів VNA:LibreCAL, напр. 1:3,2:4
--set FACTORY набір коефіцієнтів LibreCAL (:COEFF:LIST?)
--out librecal_out/ поруч зі скриптом тека для результатів
--host, --scpi-port localhost, 19542 адреса SCPI-сервера LibreVNA-GUI
--serial автовизначення серійний пристрій LibreCAL, напр. /dev/ttyACM0
--temp-timeout 900 скільки секунд чекати стабілізації температури
--no-verify — пропустити перевірку

Після запуску закомітьте результати:

git add librecal_out && git commit -m "Calibration $(date +%F)" && git push

Результати

Усі файли одного запуску мають однакову мітку часу YYYYMMDD_HHMMSS:

librecal_out/
├── latest.cal                                  # копія останнього калібрування (для git diff)
├── librecal_<stamp>.cal                        # калібрування
├── librecal_<serial>_<set>_<stamp>.calkit      # cal kit, зібраний з даних LibreCAL
├── calkit_backup_<stamp>.calkit                # кіт, який був у GUI до запуску
└── coeffs_<serial>_<set>_<stamp>/              # коефіцієнти LibreCAL у Touchstone
    ├── P1_OPEN.s1p  P1_SHORT.s1p  P1_LOAD.s1p
    ├── P2_OPEN.s1p  P2_SHORT.s1p  P2_LOAD.s1p
    └── P12_THROUGH.s2p

Файли з мітками часу ніколи не перезаписуються. latest.cal перезаписується при кожному запуску, тому git бачить його як той самий файл, що змінився. Так можна подивитися, як змінилося калібрування між запусками:

git log --oneline -- librecal_out/latest.cal
git diff HEAD~1 -- librecal_out/latest.cal

Завантажити збережене калібрування в GUI можна через меню Calibration → Load або SCPI-запитом VNA:CAL:LOAD? /абсолютний/шлях/до/файлу.cal.

Перевірка

Наприкінці скрипт виводить найбільшу векторну похибку |S_виміряне − S_коефіцієнт| по всій розгортці для кожного стану LibreCAL, а для THROUGH також приблизну похибку в dB. Приклад першого калібрування (1 MHz – 6 GHz, 501 точка, IFBW 1 kHz, −10 dBm):

  OPEN  S11: 0.0137    OPEN  S22: 0.0132
  SHORT S11: 0.0066    SHORT S22: 0.0068
  LOAD  S11: 0.0035    LOAD  S22: 0.0019
  THRU  S21: 0.0046 (≈ ±0.040 dB)
  THRU  S12: 0.0037 (≈ ±0.032 dB)

Це перевірка тими самими стандартами, якими калібрували. Вона показує, що калібрування застосоване й узгоджене, але не замінює незалежної перевірки окремим атенюатором або навантаженням.

Примітки до LibreVNA-GUI 1.6.5

  • У SCPI-команді VNA:CAL:KIT:STA:<n>:FILE є помилки з індексами портів. Для .s1p/.s2p вони не заважають, тому скрипт генерує саме такі файли і завжди передає номери портів явно.
  • Помилки команд скрипт визначає через *ESR?. Запит із помилкою GUI просто лишає без відповіді, тому скрипт вважає тайм-аут помилкою.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages