Как я могу заставить свой arduino запускаться при обнаружении магнита и продолжать работать, пока приложение не определит, что оно должно быть выключено

Моей мыслью было использовать магнитный геркон для включения Arduino. Но как заставить его работать, если магнит перемещается? Идея состоит в том, что приложение определяет, когда можно отключить питание Arduino.

Мне не нужно энергопотребление, когда система бездействует, так как между срабатываниями магнитных триггеров могут пройти недели.

Дуг

, 👍1


3 ответа


Лучший ответ:

1

Вы можете подключить силовой полевой МОП-транзистор параллельно геркону, которым управляет Arduino:

схема

Arduino включается при активации геркона. Затем вы можете активировать (установить ВЫСОКИЙ уровень) контакт, подключенный к MOSFET, чтобы Arduino по-прежнему получал необходимую мощность через MOSFET, если геркон выключается. Если настало время выключить Arduino, вы можете отпустить цифровой контакт (НИЗКИЙ уровень или высокий импеданс/вход), чтобы он стал низким. Это отключит полевой МОП-транзистор, который отключит питание Arduino.

,

Крисл - Я думаю, это именно то, что я искал. Однако у меня есть один вопрос: поскольку я использую 4 батарейки АА в качестве источника питания, должен ли я вместо этого подключить соединение «Arduino 5V» на вашей схеме к выводу Vin? Будут ли другие проблемы, так как я использую более высокое напряжение? - Дуг, @Doug Bower

Нет, более высокое напряжение не должно быть проблемой (большинство полевых МОП-транзисторов имеют довольно высокий предел напряжения). Только убедитесь, что используемый МОП-транзистор рассчитан на ток выше, чем требуется для всей схемы. И он должен перейти в режим насыщения при напряжении затвора 5 В., @chrisl


1

Переведите Arduino в режим глубокого сна и подключите прерывание к контакту, который контролирует ваш геркон. После запуска он может запустить ваш код, прежде чем снова погрузиться в спящий режим

,

1

Библиотека LowPower поможет вам минимизировать количество потребляемой энергии, переводя Arduino в спящий режим. Arduino проснется, как только сработает магнитный геркон, после чего вы сможете выполнить некоторый код, прежде чем он снова вернется в спящий режим.

Есть пример скетча, который может вам подойти:

// **** ВКЛЮЧАЕТ *****
#include "LowPower.h"

// Использовать вывод 2 в качестве вывода для пробуждения
const int wakeUpPin = 2;

void wakeUp()
{
    // Просто обработчик прерывания контакта.
}

void setup()
{
    // Настроить вывод пробуждения в качестве входных данных.
    // Это потребляет несколько мкА тока.
    pinMode(wakeUpPin, INPUT);   
}

void loop() 
{
    // Разрешить вывод пробуждения для запуска прерывания по низкому уровню.
    attachInterrupt(0, wakeUp, LOW);

    // Вход в состояние отключения питания с отключенными модулями АЦП и БПК.
    // Просыпаемся, когда на выводе пробуждения низкий уровень.
    LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF); 

    // Отключить внешнее прерывание вывода при пробуждении вывода.
    detachInterrupt(0); 

    // Делаем что-нибудь здесь
    // Пример: чтение датчика, регистрация данных, передача данных.
}
,

Спасибо за это решение. Это не совсем то, что я искал из-за энергопотребления (хотя оно очень низкое!), но я планирую использовать его для других проектов., @Doug Bower