Использование двух Arduino для снижения энергопотребления
Я планирую построить датчик качества воды с pH, температурой, растворенным кислородом и электропроводностью. Похоже, что энергопотребление будет очень высоким, особенно из-за изолятора сигнала, я оцениваю около 250 мА. Я собираюсь разместить его в удаленном районе, поэтому мне нужно, чтобы он был максимально энергоэффективным.
Я думал, сработает ли это?
Что, если я использую два Arduino для управления питанием? Первый Arduino будет управлять подачей питания на второй Arduino, на котором установлен датчик, используя таймер (RTC) для отключения питания на 30 минут и включения на 30 секунд для считывания данных датчика.
Может ли это работать? Как будет выглядеть схема?
Для изолятора я думал использовать Tentacle Shield, и в документации говорится, что сам изолятор потребляет около 150 мА плюс цепь датчика. https://www.whiteboxes.ch/docs/tentacle/t1/#/
Спасибо за помощь.
@JSK, 👍2
Обсуждение3 ответа
На самом деле, вы можете просто запустить 1 Arduino и использовать его для
- Все необходимые измерения.
- Управление питанием датчиков (отключение питания, когда оно не требуется)
- Дополнительно: используйте маломощные режимы микроконтроллера, установленного в Arduino
Обновление: О втором варианте: Вы можете использовать электрическое реле или транзистор для управления питанием датчика. Часто датчики имеют несколько соединений: земля (-), Vin(+) и несколько сигнальных соединений. Так между питанием и Vin(+) датчика можно поставить электрическое реле. Управляющий контакт электрического реле подключается к любому свободному контакту на Arduino. Следовательно, Arduino может включать и отключать подачу питания на датчик, просто установив 1 или 0 для этого контакта. Я рекомендую вам использовать электрическое реле, потому что это проще, но если вы хотите попробовать транзистор, вы можете обратиться к этому вопросу & ответы: https://electronics.stackexchange.com/ questions/95089/switching-9v-using-npn-transistor-and-arduino
Насчет 3-го варианта: Ардуино основаны на каком-то MCU (часто AVR, не всегда). Эти микроконтроллеры имеют несколько режимов пониженного энергопотребления. Вы можете напрямую управлять режимом питания MCU для повышения энергоэффективности.
Итак, вы можете сделать 1-й и 2-й варианты и попробовать сделать 3-й:
- Узнайте, какой микроконтроллер установлен в Arduino.
- Узнайте, какие режимы питания он поддерживает.
- Реализовать управление питанием в соответствии со спецификацией этого MCU.
Например, если у вас Arduino Mega 2560, то она основана на микроконтроллере ATmega2560, см. техническое описание (https://ww1.microchip.com/downloads/en/devicedoc/atmel-2549-8-bit-avr-microcontroller-atmega640- 1280-1281-2560-2561_datasheet.pdf) и найти там информацию о режимах питания/сна (стр. 50) и способах "пробуждения" из этих режимов.
Также вы можете прочитать об этом здесь: https://microchipdeveloper.com/8avr:avrsleep
Также вы можете попробовать найти какие-нибудь удобные библиотеки для Arduino, например "Low-Power" и просто используйте их, не углубляясь в микроконтроллеры, таблицы данных и т. д.
Как бы я поступил по второму варианту?, @JSK
@JSK, я обновил ответ: добавил дополнительную информацию о втором варианте, @Ihor Drachuk
Я бы сделал следующее:
Программное обеспечение:
Arduino находится в спящем режиме
каждые x секунд (x в зависимости от ваших потребностей) просыпайтесь, затем включайте и считывайте один датчик за другим и передавайте результаты или делайте что хотите.
затем снова ложитесь спать
Оборудование:
- поскольку у вас есть 4 датчика, вы можете подключить их выходы к аналоговым входам Arduino (или цифровым...)
- вам понадобятся 4 электронных переключателя, желательно МОП-транзисторов, подключенных к 4 цифровым выходам для независимого переключения питания каждого датчика.
Это должно снизить потребление до минимума.
После того, как ваша система заработает, вы также можете подумать об использовании только микрочипа AVR, а не всего Arduino, например, если вам не нужно USB-соединение. Кроме того, вы можете еще больше снизить энергопотребление, установив более низкую тактовую частоту микросхемы AVR, если не используете Arduino.
На самом деле, для такого проекта вы должны использовать два Arduino, один как ПОДЧИНЕННЫЙ, а другой как ГЛАВНЫЙ.
Вы упомянули 4 датчика для измерения качества воды, но у вас будет больше модулей, таких как RTC и MicroSD, для хранения данных. Итак, я думаю, вам следует использовать Slave для сбора данных с датчиков с помощью Tentacle Shield, а другой Arduino в качестве Master для УПРАВЛЕНИЯ другими модулями и SLAVE.
Для этого вы можете настроить связь между ними по протоколу I2C. Для моего крупного квалификационного проекта я представил полный прототип датчика удаленной платформы параметров поверхностных вод, используя как Arduino Uno (SLAVE), так и Mega (MASTER). В качестве источника питания я использовал мотоциклетный аккумулятор 12В 8А.
Все данные, собранные датчиками, сохранялись локально SDModulo и отправлялись SIM-модулем на сервер RaspberryPi.
Для низкого энергопотребления вам следует использовать режим DeepSleep для ардуино. Вы можете настроить этот режим с помощью модуля RTC. Arduino LowPowerDeepSleep.
Что касается трассы, думаю, у вас все будет хорошо, если вы воспользуетесь щупальцевым щитом. Это уже сделано.
- спящий режим и сторожевой пес одновременно
- Установить регистр управления на низкий уровень в ds3231 rtc
- Проблемы со скоростью шагового двигателя Nema 17
- ESP32 не может считывать данные с датчиков DHT11, MH-Z19C
- Монитор напряжения батареи сразу после глубокого сна
- Управление скоростью двигателя постоянного тока с помощью внешнего источника питания
- C++ против языка Arduino?
- avrdude ser_open() can't set com-state
Скажите, пожалуйста, какой «изолятор сигнала» вы имеете в виду. Некоторые Arduino (возможно, все они) могут быть переведены в спящий режим, что может сэкономить много «энергии». Хорошее место, чтобы начать изучать, как это сделать, — использовать панель поиска в верхней части страницы. В среде разработки Arduino IDE доступна библиотека LowPower., @VE7JRO
Во-первых, вам не нужны два arduino. Вы можете перевести ардуино в глубокий сон. Во-вторых, если у вас потребляемая мощность 250 мА, она, скорее всего, исходит от всех имеющихся у вас сенсорных плат, поэтому вам нужна схема (например, полевой МОП-транзистор), чтобы отключить питание этих плат до того, как Arduino выйдет из строя. в спящий режим., @hcheung
Добавил детали по изолятору, @JSK
Ардуино с его светодиодами и линейными регуляторами мощности не оптимизировано для минимального энергопотребления. Кстати: Как вы сигнализируете о результатах ваших датчиков и измерений?, @DataFiddler