Добавить в корзинуПозвонить
Найти в Дзене
Автоэлектрик

Регистратор напряжения (даталоггер) для автоэлектрика: от Arduino до STM32

За десять лет работы автоэлектриком я столкнулся с сотнями неисправностей, некоторые из них здесь, но самые коварные — те, что не хотят проявляться в гараже. Проблемы с проводкой, подгнившие реле, окислившиеся разъёмы — всё это может дать сбой раз в неделю, а то и раз в месяц. Как поймать момент, когда напряжение с реле пропадает раз в неделю? Как зафиксировать пропадание массы, которое случается только на кочках? Обычный мультиметр бесполезен, осциллограф слишком громоздок для длительного мониторинга в дороге. Сначала я собрал «костыль» из нескольких плат Arduino, соединённых проводами‑паутинкой. Питание от внешнего аккумулятора, SD‑карта на макетке, куча перемычек — это работало, но было ненадёжно, боялось вибраций и занимало полчемодана. После нескольких провальных выездов (то контакт отвалился, то карта не инициализировалась) я понял: нужен специализированный прибор. Так родился этот проект — компактный даталоггер на STM32F103C8T6, который можно закрепить под капотом и забыть на не
Оглавление

За десять лет работы автоэлектриком я столкнулся с сотнями неисправностей, некоторые из них здесь, но самые коварные — те, что не хотят проявляться в гараже. Проблемы с проводкой, подгнившие реле, окислившиеся разъёмы — всё это может дать сбой раз в неделю, а то и раз в месяц. Как поймать момент, когда напряжение с реле пропадает раз в неделю? Как зафиксировать пропадание массы, которое случается только на кочках? Обычный мультиметр бесполезен, осциллограф слишком громоздок для длительного мониторинга в дороге.

Сначала я собрал «костыль» из нескольких плат Arduino, соединённых проводами‑паутинкой. Питание от внешнего аккумулятора, SD‑карта на макетке, куча перемычек — это работало, но было ненадёжно, боялось вибраций и занимало полчемодана. После нескольких провальных выездов (то контакт отвалился, то карта не инициализировалась) я понял: нужен специализированный прибор. Так родился этот проект — компактный даталоггер на STM32F103C8T6, который можно закрепить под капотом и забыть на неделю.

Проект полностью открыт: схемы, исходники, 3D‑модель корпуса — всё доступно на GitHub и GITVERSE. Сегодня я расскажу, как его собрать, настроить и использовать для поиска «плавающих» неисправностей в электрооборудовании автомобиля.

Что умеет даталоггер?

  • Запись 4 аналоговых каналов (0–16в, но заменив делители и формулу пересчёта в коде можно сделать любыми).
  • Сохранение данных на SD‑карту в формате CSV с временными метками (в миллисекундах от старта).
  • Автоматическое создание новых файлов (log001.csv … log999.csv) - не нужно думать о перезаписи.
  • Настраиваемый интервал - от 100 мс до нескольких секунд (задаётся через config.txt).
  • Светодиодная индикация состояния — сразу видно, работает ли устройство.
  • Встроенный просмотрщик на HTML/JavaScript - открывайте логи в браузере, даже без интернета.

Где это может пригодиться?

  1. Поиск кратковременных пропаданий питания на датчиках (коленвала, ABS, температуры).
  2. Отслеживание работы реле – фиксация момента срабатывания и падения напряжения на контактах.
  3. Диагностика цепей зарядки – запись напряжения бортовой сети во время движения.
  4. Обнаружение «глючных» масс – когда на корпусе появляется блуждающий потенциал.
  5. Мониторинг нескольких точек одновременно – например, входное и выходное напряжение регулятора.

Аппаратная часть

За основу взят популярный модуль STM32F103C8T6 (Blue Pill) – он дёшев, имеет 12‑битный АЦП и аппаратный SPI. К нему подключается:

  • Модуль SD‑карты (SPI‑интерфейс). Внимание: большинство модулей работают от 3,3 В, но есть и 5‑вольтовые – проверяйте.
  • Светодиод – встроенный на PB12 (на некоторых платах он подключен к PC13, но в проекте используется PB12).
  • Делители напряжения – для защиты входа АЦП и масштабирования сигналов (если измеряете выше 3,3 В).

Схема подключения (пины)

Пин STM32НазначениеPB12LED (индикация)PA4CS для SD‑картыPB13SCK для SD‑картыPB14MISOPB15MOSIPA0Аналоговый вход 0PA1Аналоговый вход 1PA2Аналоговый вход 2PA3Аналоговый вход 3

Подключение к SD‑модулю:

  • VCC → 3,3 В (или 5 В, смотря по модулю)
  • GND → GND
  • CS → PA4
  • SCK → PB13
  • MOSI → PB15
  • MISO → PB14

Все аналоговые входы могут быть дополнительно защищены супрессорами и RC‑фильтрами, если вы подключаете их к цепям с высоким уровнем помех.

Программная часть

Проект написан в PlatformIO (можно открыть и в Arduino IDE) с использованием Arduino‑фреймворка для STM32. Это упрощает работу с SPI, SD‑библиотекой и АЦП.

В репозиториях приведён полный код main.cpp — именно он работает в моём устройстве. Всё прокомментировано для ясности. Нет смысла его копировать сюда.

Как это работает

  1. Инициализация – настраиваются пины, SPI, проверяется наличие SD‑карты. Если карта есть, создаётся новый файл с инкрементируемым номером, читается config.txt и записывается заголовок CSV.
  2. Индикация – три коротких вспышки при успехе, быстрый мигающий свет (2 Гц) при ошибке, постоянное горение во время записи, медленное мигание (1 Гц) в режиме ожидания.
  3. Основной цикл – по таймеру (интервал из конфига) читаются 4 канала АЦП, формируется строка и дописывается в файл. Файл закрывается после каждой записи, чтобы минимизировать потерю данных при внезапном отключении питания.

Настройка интервала логирования

По умолчанию частота опроса – 1 Гц (интервал 1000 мс). Но для диагностики быстрых процессов может потребоваться 10 Гц (100 мс) или, наоборот, для длительного мониторинга – 1 раз в минуту.

Для изменения просто создайте в корне SD‑карты файл config.txt с единственной строкой:

INTERVAL=200

где 200 – интервал в миллисекундах. Если файл отсутствует или строка не найдена, берётся значение по умолчанию.

Формат данных

Файлы logXXX.csv содержат заголовок и строки:

csv

Timestamp(ms),Analog_0,Analog_1,Analog_2,Analog_3
120,1024,512,256,128
1120,1020,510,260,130
...

  • Timestamp – время в миллисекундах от старта МК (сброс при включении).
  • Analog_0..3 – сырые значения АЦП (0–4095). При необходимости вы можете пересчитать их в напряжение или другие единицы в таблице после выгрузки.

Просмотр данных прямо на карте

На SD‑карте есть папка datalogger cd с тремя файлами (index.html, style.css, script.js). Скопируйте их в корень карты, откройте index.html в любом браузере на компьютере (или даже на смартфоне). Встроенный просмотрщик построит графики по выбранному CSV‑файлу – очень удобно.

-2

Как я собирал свой экземпляр

Первая версия была спаяна на макетке, но для полевых условий я разработал печатную плату размером с кредитку. На ней предусмотрено место для трёхосевого акселерометра ADXL345 (для вибрационного анализа), но в базовой версии он не используется – на плате просто есть посадочное место.

-3

Важный момент: при работе под капотом стоит защитить плату от влаги и грязи – используйте герметичный бокс или нанесите защитный лак на плату.

-4

Результаты испытаний

В первый же выезд прибор помог поймать «умирающее» реле бензонасоса – напряжение на его выходе падало с 12,6 В до 8 В на 20с при каждом третьем включении. Без даталоггера мне пришлось бы менять всё подряд или ездить с осциллографом.

Второй случай – поиск плохой массы на датчике кислорода. Сигнал «плавал» от 0,1 до 0,9 В, хотя должен был быть стабильным. Лог показал синхронные провалы с включением вентилятора охлаждения – проблема оказалась в общем соединении масс.

Что можно улучшить?

  • Добавить RTC часы для реального времени (вместо millis).
  • Подключить GPS для привязки к координатам.
  • Ввести прерывания по таймеру для более точных интервалов.
  • Реализовать передачу данных по UART в реальном времени.

Но даже в базовом варианте устройство решает 90% задач автоэлектрика.

Где взять всё необходимое?

  • Исходники (прошивка, схемы) – GitVerse (проект открыт, MIT).
  • Готовая плата – вы можете заказать производство по файлам из репозитория.

Заключение

Этот проект родился из личной необходимости и превратился в универсальный инструмент, который я использую. Он дёшев, прост в сборке и очень эффективен. Если вы автоэлектрик или просто любите копаться в электронике автомобиля – обязательно попробуйте.

Буду рад ответить на вопросы в комментариях. Удачи на дорогах и стабильного напряжения в цепях!

PS. Если у вас нет возможности спаять плату, можете использовать готовый модуль на STM32 с SD‑картой – достаточно подключить выводы по схеме и залить прошивку. Весь проект заточен на минимальные доработки.