Skip to content

Instantly share code, notes, and snippets.

@vyorkin
Created March 9, 2026 10:23
Show Gist options
  • Select an option

  • Save vyorkin/94b2d83ca8e8b81aa0416d207851b458 to your computer and use it in GitHub Desktop.

Select an option

Save vyorkin/94b2d83ca8e8b81aa0416d207851b458 to your computer and use it in GitHub Desktop.
lm7001 roadmap

#lm7001

LM7001 Filter Calculator — Дорожная карта улучшений

О проекте

Веб-приложение для RF-инженеров (React 18 + TypeScript + Vite + Recharts) с тремя калькуляторами: фильтр петли ФАПЧ, выходной ФНЧ и активный фильтр на BJT-транзисторе. Развёрнуто на https://lm7001.vercel.app.


Уровень 1 — Высокий эффект, минимальные затраты

1. Поделиться через URL

Кодировать все входные параметры в строку запроса URL для создания ссылок на конкретный расчёт. Декодировать при загрузке.

  • URLSearchParams чтение/запись, history.replaceState при изменении параметров
  • Файлы: LoopFilterCalculator.tsx, OutputLPFCalculator.tsx, ActiveFilterCalculator.tsx

2. Копирование результатов в буфер обмена

Кнопка «Копировать» в ResultsPanel.tsx — экспорт в форматированный текст или CSV для лабораторных записей.

3. Округление до стандартного ряда (E-серий)

После расчёта R, C, L — показывать ближайшее значение из ряда E12/E24/E96 и погрешность в %.

  • Новый файл: src/lib/eseries.ts
  • Отображать оба значения (точное и стандартное) в ResultsPanel.tsx

4. Панель с формулами

Сворачиваемый блок «Показать формулы» в каждом калькуляторе с ключевыми уравнениями.

  • Новый компонент: FormulaPanel.tsx

Уровень 2 — Средняя сложность

5. График АЧХ замкнутой петли (Вкладка 1)

Сейчас вкладка 1 показывает только разомкнутую петлю. Добавить H_cl(jω) = L(jω) / (1 + L(jω)) как второй ряд данных.

  • Файлы: loopFilter.ts, FrequencyPlot.tsx, LoopFilterCalculator.tsx

6. Оценка времени захвата

Добавить оценку t_lock ≈ 1/fc к результатам фильтра петли ФАПЧ.

  • Файлы: loopFilter.ts, types/index.ts

7. Параметрический анализ чувствительности

Свип одного параметра (напр., fc от 1 до 10 кГц) с отображением влияния на R, C1, C2, запас по фазе.

  • Новый компонент: SweepPanel.tsx

8. Экспорт в PDF / стили для печати

Чистый однострочный CSS для печати: входные данные + таблица результатов + топологическая схема + график.

  • Новый файл: src/styles/print.css

9. Экспорт перечня компонентов (CSV / JSON)

Перечень с обозначениями (R1, C1, C2, L1), расчётными значениями и значениями из стандартного ряда.

  • Новый файл: src/lib/bom.ts

Уровень 3 — Значимые новые функции

10. Калькулятор диапазона захвата и удержания (Вкладка 4)

Диапазон удержания (Δf_H), диапазон захвата (Δf_P), диапазон вхождения в синхронизм (Δf_L).

  • Новые файлы: src/lib/pllRanges.ts, src/components/PLLRangesCalculator.tsx

11. Оценка паразитных составляющих на частоте опоры

Уровень паразитных в дБн от подавления фильтром петли на частоте fref.

  • Spur ≈ 20·log10(|H(j·2π·fref)|)
  • Файлы: loopFilter.ts (расширение результата), LoopFilterCalculator.tsx

12. Пассивный фильтр петли 3-го порядка

Добавление второго RC-звена для лучшего подавления паразитных. Переключатель порядка фильтра на вкладке 1.

  • Новый файл: src/lib/loopFilter3rd.ts

13. Интегрирование фазового шума

Оценка интегрального фазового шума (СКО джиттера в полосе) на основе упрощённой модели уровня шума.

  • Новый файл: src/lib/phaseNoise.ts

14. Справочник по ПЧ / пьезокерамическим фильтрам

Статическая вкладка или модальное окно: таблица распространённых ПЧ-фильтров 10,7 МГц для FM-приёмников.


Уровень 4 — Качество кода

15. Модульные тесты (Vitest)

Тесты для всех чистых математических функций. Эталонный тест: проверенный пример с запасом по фазе 45°.

  • fRF=90 МГц, fIF=10,7 МГц, fref=25 кГц → N=4028, C1=10,06 нФ, R=15,28 кОм, C2=1,73 нФ
  • Файлы: src/lib/__tests__/loopFilter.test.ts, outputLpf.test.ts, activeFilter.test.ts

16. Storybook

Разработка компонентов ResultsPanel, FrequencyPlot и SVG-схем в изоляции.

17. Доступность (WCAG 2.1 AA)

  • role="table" + aria-label в ResultsPanel
  • <title> + <desc> в SVG-схемах
  • Навигация с клавиатуры для вкладок

Матрица приоритетов

# Функция Эффект Сложность
3 Округление до E-ряда Высокий Низкая
1 Поделиться через URL Высокий Низкая
5 График замкнутой петли Высокий Средняя
6 Оценка времени захвата Средний Низкая
2 Копирование результатов Средний Низкая
4 Панель с формулами Средний Низкая
7 Параметрический анализ Высокий Средняя
10 Диапазон захвата/удержания Высокий Средняя
11 Паразитные на fref Высокий Средняя
8 Экспорт в PDF Средний Средняя
9 Перечень компонентов Средний Средняя
15 Модульные тесты Высокий (DX) Средняя
12 Фильтр 3-го порядка Высокий Высокая
13 Фазовый шум Средний Высокая
14 Справочник по ПЧ-фильтрам Средний Низкая
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment