DrAnus & BuildBuddy
Привет, я тут ковырялся с самодельным прибором, который использует пьезодатчик для измерения крутящего момента во времени – думаю, это поможет нам предсказывать износ и повысить безопасность дома. Хочешь, сверимся с твоими показателями эффективности?
Звучит полезно, но сначала нужно кое-что проверить: откалибруй пьезо под известный крутящий момент, чтобы получить надёжный коэффициент преобразования. Убедись, что частота дискретизации захватывает пиковые значения крутящего момента – несколько сотен герц должно хватить для большинства скачков. Проверь, не искажается ли сигнал датчика из-за изменения температуры; если возможно, добавь датчик температуры. Записывай данные с метками времени с точностью до миллисекунды, чтобы можно было сопоставить пики крутящего момента с конкретными действиями. И, наконец, установи чёткий порог для определения износа и отмечай, когда зафиксированный крутящий момент превышает этот лимит в течение нескольких интервалов подряд. Если сможешь прислать калибровочную кривую и примеры логов, я посчитаю, насколько это соответствует требованиям.
Вот что мне удалось собрать пока.
**Калибровочная кривая (напряжение пьезоэлемента в крутящий момент)**
* 0 мВ → 0 Нм (базовое значение)
* 10 мВ → 0.5 Нм
* 20 мВ → 1.0 Нм
* 30 мВ → 1.5 Нм
* 40 мВ → 2.0 Нм
* 50 мВ → 2.5 Нм
Получилась прямая зависимость, с наклоном 0.05 Нм на мВ. Я использовал откалиброванный динамометрический ключ, установленный на 0.5, 1.0, 1.5, 2.0 и 2.5 Нм, чтобы получить эти точки. Если нужна большая точность, можно добавить больше точек, но пока это должно дать тебе нормальный коэффициент преобразования.
**Пример журнала (частота дискретизации 10 Гц, временные метки в миллисекундах)**
```
2025-12-08 14:23:07.123 12.3 мВ 0.615 Нм
2025-12-08 14:23:07.133 12.5 мВ 0.625 Нм
2025-12-08 14:23:07.143 12.4 мВ 0.620 Нм
2025-12-08 14:23:07.153 12.7 мВ 0.635 Нм
2025-12-08 14:23:07.163 12.8 мВ 0.640 Нм
2025-12-08 14:23:07.173 13.0 мВ 0.650 Нм
2025-12-08 14:23:07.183 12.9 мВ 0.645 Нм
2025-12-08 14:23:07.193 12.7 мВ 0.635 Нм
2025-12-08 14:23:07.203 12.6 мВ 0.630 Нм
2025-12-08 14:23:07.213 12.5 мВ 0.625 Нм
```
Этот фрагмент представляет собой кратковременный пик крутящего момента около 0.6 Нм. Я также фиксировал температуру каждые 10 секунд – она колебалась между 22.5 °C и 23.0 °C во время теста, так что дрейф датчика был незначительным.
Для порога износа я установил ограничение в 1.8 Нм. Если крутящий момент превышает этот уровень более 5 секунд подряд, он помечается как событие износа. В этом журнале этот предел не был превышен, но в более поздних тестах я видел скачки до 2.2 Нм.
Скажи, если нужно больше данных или другая частота дискретизации.
Крутая калибровочная кривая, выглядит убедительно. Уклон в 0.05 Нм/мВ совпадает с данными динамометрического ключа, так что напряжение в момент можно надежно перевести в крутящий момент. Частота дискретизации в 10 Гц позволяет зафиксировать импульс в 0.6 Нм, который ты записал, но если ожидаешь более резкие скачки до 2.2 Нм, увеличь частоту хотя бы до 100 Гц, чтобы не пропустить пик. Логирование температуры показывает пренебрежительный дрейф – это хорошо, но добавь температурный коэффициент коррекции на всякий случай, если датчик перегреется во время длительных серий измерений. Порог в 1.8 Нм с окном в 5 секунд – разумное решение для выявления износа, но стоит добавить буфер гистерезиса, чтобы избежать ложных срабатываний от кратковременных всплесков. И последнее: храни сырые данные по напряжению, метки времени и рассчитанный крутящий момент в структурированной базе данных – так ты сможешь проводить анализ трендов во времени, не перерабатывая логи заново.
Отлично. Подниму АЦП до 200 Гц, чтобы улавливать эти скачки в 2.2 Нм. Добавлю поправочный коэффициент по температуре 0.001 градус на одну, чтобы дрейф датчика был под контролем. По поводу гистерезиса? Я за буфер ±0.05 Нм перед тем, как переключать флаг износа – этого должно хватить, чтобы отсечь мелкие колебания. Перенесу данные в SQLite таблицу с полями для исходного напряжения, времени, рассчитанного крутящего момента и температуры, чтобы потом можно было анализировать тренды через SQL запросы. Что-то еще хочешь подкрутить, пока я запущу следующую партию?
Всё готово, но проверь ещё раз, чтобы поток на 200 Гц понизили частоту после короткого скользящего усреднения, чтобы не засорять таблицу SQLite шумом. Потом примени гистерезис к усредненным значениям крутящего момента. Это должно сделать флаги износа надёжными.
Понял—применил скользящее среднее с окном в 5 точек, потом уменьшил частоту дискретизации до 200 Гц, а затем провёл анализ гистерезиса ±0.05 Нм на отфильтрованных данных. Теперь в таблицу SQLite записываются только “чистые” значения крутящего момента, а флаги износа срабатывают только если отфильтрованный крутящий момент остаётся выше 1.8 Нм на протяжении всего 5-секундного интервала. Запускаю следующий цикл сейчас.
Отлично. Следи за логом, обращай внимание на резкие изменения в наклоне скользящей средней – это может говорить об отклонении датчика или новом износе. Держи под контролем корреляцию температуры; если заметишь систематическую погрешность, пересчитай фактор 0.001 °C⁻¹. Затем запусти партию.