3/3
Проекцию вектора и его результирующее значение можно вычислить, желающие могут изучить
эту статью или
эту диссертацию. Это потребует вычисления тригонометрических функций, которые заставляют микроконтроллер считать дольше, следовательно, больше потреблять энергии. Кроме того, убирают из вариантов выбора дешёвые малопроизводительные (и малопотребляющие) микроконтроллеры.
На самом деле, для активатора это всё не нужно. Хотя тригонометрию и можно сократить с помощью
CORDIC, или даже табличной аппроксимации, всё это оверкил. Достаточно просто запомнить показания по осям и ждать, пока по любой из осей показания изменятся сильнее шума. Такой метод имеет минус в виде нелинейной чувствительности, но практика показывает, что на работу изделия это не влияет. 15 лет назад я сделал
охранку для рюкзака, которая работала таким вот образом с аналоговым акселерометром. Использую до сих пор, работает надёжно, пару раз спасала лодку от кражи.
Там, кстати, предусмотрено два управляющих выхода, если вдруг хочется подключить внешнее исполнительное устройство...
То есть, алгоритм таков: после истечения таймера дальнего взведения, мы считаем что устройство уже заложено и несколько раз обмеряем оси (чтобы исключить случайный шум) и запоминаем усреднённое за серию измерений значение сигнала для каждой из осей чувствительности. Это есть сигнал, нормальный для текущего пространственного положения датчика. Сигнал ноля.
Далее, мы задаём уровень шума – величину изменения сигнала в обе стороны, которую мы считаем нормальной и не реагируем на неё. Любой датчик будет шуметь, величину этого шума лучше определить экспериментально, причём уже в вашей плате, включая шумы от источника питания и прочие наводки. Это константа, которая вшита в прошивку и которую алгоритм учитывает в своей работе.
И третий параметр, который следует задать – чувствительность. То есть, изменение на какую величину мы считаем сработкой. Этот параметр может быть жёстко забит, или выставляться крутилкой переменного резистора. Разумеется, чувствительность считается от уровня шума и выше.
И теперь задача нашего микроконтроллера (МК) – просыпаться раз в 100-250 миллисекунд, получать от датчика значения сигналов осей и проверять, не изменилась ли хоть одна на величину более уровня шума в плюс или минус от нулевой точки. Если да – подаём сигнал на ЭД.
Параллельно считаем таймер самоликвидации, ну и напряжение батареи контролировать не лишне, чтобы устройство не начало глючить, когда напряжение упадёт ниже порога устойчивой работы МК.
Дополнительно, можно рекомендовать 4 вещи:
1. Все внешние цепи должны шунтироваться RC цепями с минимальными значениями резисторов. Это повысит устойчивость к ЭМИ.
2. Не жалейте светодиодов и цепей самоконтроля. При подаче питания нужно видеть глазами что все цепи встали в правильное положение и ничего не заглючило. Потом, для снижения потребления, их можно погасить.
3. Используйте чеку на микрике для цепи ЭД. Чека должна поджимать микрик и выдёргиваться дистанционно шнурком или дроном при его взлёте. С установленной чекой цепь ЭД должна быть физически разомкнута.
4. Используйте биполярный транзистор в исполнительной цепи. Эти транзисторы управляются током и их так просто статикой с рук не переключить, в отличие от фетов, а рабочего тока для активации ЭД хватит даже у дремучего КТ815.
Вот и всё. Теперь вы можете сами сделать джоник из MPU и любого МК на свой вкус.