Scanella & CapacitorX
Привет, я тут набросал плату для обнаружения всплесков в реальном времени, она записывает все кратковременные помехи и автоматически регулирует питание. Может, мне помогут твои инструменты для анализа данных? Как тебе идея?
Звучит как интересная затея. Можно организовать так: чтобы плата передавала необработанные волновые формы на сервер, а там уже запускать простой детектор с порогом и пиками на Python, ну там NumPy и SciPy пригодятся, и потом автоматическим скриптом регулировать напряжение через PWM-драйвер. Не забудь сохранить логи в CSV или SQLite, чтобы потом было удобно анализировать данные. Если возникнут какие-то сложности, дай знать, вместе подкорректируем параметры.
Спасибо. Я подключу плату так, чтобы необработанные данные АЦП отправлялись через UART на сервер, а затем запущу в Python алгоритм скользящего окна фиксированной ширины для определения пиков более 2 вольт. Всё буду записывать в SQLite, включая метки времени и поле для заданного напряжения питания. Добавлю ещё сторожевой таймер в прошивку, чтобы сбрасывал систему, если количество скачков превысит пороговое значение. Как только конвейер данных заработает, буду постепенно корректировать коэффициент заполнения ШИМ – не хочется “пролететь” мимо цели. Скажи, тебе нужны схемы до того, как я начну?
Этот план звучит здорово—только убедись, что скорость UART достаточно высока для твоей частоты дискретизации, и добавь контрольную сумму, чтобы обнаруживать повреждённые пакеты. Скользящее окно можешь сделать простым усреднением, а дельты ШИМ-импульсов можно хранить в небольшой таблице конфигурации. Если возникнут проблемы с задержкой, я помогу тебе подстроить индексы запросов в SQLite. Не стесняйся присылать схему, я посмотрю, можно ли быстро что-то подправить в железе, чтобы уменьшить джиттер в АЦП. Удачи!
Понял. Установлю UART на 115200 бит/с, 8N1, и добавлю 16-битный CRC-CCITT для каждого пакета. АЦП будет выдавать 12-битные данные с частотой 48 килообразцов, соответственно в каждом пакете будет 64 отсчета, что даст кадр примерно каждые 1.3 миллисекунды. Прошивка будет использовать скользящее среднее с шириной 32 для сглаживания базового уровня, а затем отмечать любые отсчеты, превышающие базовый уровень более чем на 2 вольта. Каждое такое превышение вызовет корректировку ШИМ на 1 миллисекунду – плюс или минус 1 процент, в зависимости от направления, – с использованием небольшого циклического буфера. Также добавлю сторожевой таймер, который перезагрузит микроконтроллер, если он увидит более 10 выбросов за 10 миллисекунд, на всякий случай, если скачок напряжения заблокирует питание. В логе SQLite будут колонки: ts, raw[64], avg, spike_flag, pwm_setpoint, crc_ok. Сейчас пришлю текст схемы.
Привет! Архитектура выглядит очень даже неплохо – только перепроверь вычисление CRC на стороне МК; даже небольшая ошибка может сбить твою синхронизацию кадров. И, знаешь, с 48 килосимволов в секунду и 115200 бит в секунду ты прямо на пределе – попробуй увеличить до 230400 бит в секунду, если получится, чтобы было место для дополнительной метаинформации. Дай мне схему, когда будешь готов – посмотрю, можно ли как-нибудь подправить переназначение выводов, чтобы уменьшить шум на трассе АЦП. Отличная работа с логикой сторожевого таймера – 10 импульсов за 10 миллисекунд – это строгая защита, но, может, попробуй сначала сделать мягкую перезагрузку, чтобы посмотреть, восстановится ли система, прежде чем делать жесткую. Будь на связи!
Пересчитаю CRC в ISR и сохраню контрольную сумму последнего корректного кадра в регистре, чтобы любые несовпадения можно было отметить до обработки. Подниму скорость UART до 230400 бит в секунду и добавлю 4-байтовый заголовок с синхронизирующим словом, длиной пакета и счётчиком, чтобы избежать потери кадров. Сначала сторожевой таймер вызовет мягкую перезагрузку контроллера ШИМ, прежде чем сбросится сам МК, просто чтобы убедиться, что это случайный сбой. Отправлю обновленную схему чуть позже.
Отлично доработал! Эти изменения должны решить большинство проблем. Синхронизирующее слово поможет держать поток в порядке, а мягкая перезагрузка – отличная страховка. С нетерпением жду обновлённую схему. Если нужна помощь с выбором пинов или распределением питания – обращайся. Замечательно получилось!