Я делаю носки с подогревом с регулировкой от Nano, как продлить срок службы батареи?

Я хочу установить температуру и включить Nano на 2 минуты, затем выключить на 2 минуты и повторить, используя ту же температуру, что и изначально, и иметь возможность изменять настройки температуры и делать то же самое.

Следующий скетч работает вместе с отображением напряжения батареи с помощью приложения MIT Inventor 2 через Bluetooth HC-05 на мой телефон Android (без последовательности включения/выключения, которую я ищу).

Я надеюсь сохранить ноги в тепле, но и продлить срок службы батареи. Можете ли вы сказать мне, какие методы я должен исследовать, чтобы выяснить, как это сделать? Я посмотрел на millis(), мигнул без промедления и мои собственные ограниченные навыки программирования не увенчались успехом. Спасибо.

#define right 5
#define left 6

int leftval = 0;
int val=0;
int vg=0;

void setup() {
  Serial.begin(9600);
  pinMode(left, OUTPUT);
  pinMode(right, OUTPUT);
  pinMode(A0, INPUT);
}

void loop() {
  int vg = analogRead(A0);  
  Serial.println(vg / 82.049, 1);
  delay(200);
  if (Serial.available() >= 2) {  
    unsigned int a = Serial.read();
    unsigned int b = Serial.read();
    unsigned int val = (b * 256) + a;

    if (val >= 0 && val <= 255) {
      analogWrite(right,val);
      delay(200);
    }

    if (val >= 1000 && val <= 1255) {
      leftval = val - 1000;  
      analogWrite(left, leftval);
      delay(200);
    }
  }
}

, 👍0

Обсуждение

https://www.arduino.cc/en/Reference/ArduinoLowPower - однако энергопотребление Arduino будет бледнеть в незначительности по сравнению с энергопотреблением вашего нагревательного элемента., @Majenko

@Majenko, зачем этот комментарий? Я не вижу под вопросом просьбу о снижении потребления Нано. OP хочет включить нагревательный элемент на 2 минуты, затем выключить его на 2 минуты, @Juraj

@Juraj, потому что ОП спросил "есть Nano включить на 2 минуты, а затем выключить на 2 минуты" - не включать и выключать элемент, а включать и выключать Nano. Может, это бедный английский?, @Majenko


1 ответ


1

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

Нагревательные элементы преобразуют ватты мощности в калории тепла. Чем больше ватт вы вводите, тем больше тепла вы получаете.

Ток • рабочий цикл • время включения = общая потребляемая мощность И общее выработанное тепло.

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

Учитывая, что у вас уже есть возможность изменять рабочий цикл для вашего нагревательного элемента (с помощью аналоговой записи вправо и влево), единственный разумный способ уменьшить потребление энергии-это снизить настройку нагрева. Похоже, у тебя уже есть такая способность. Выключите обогрев и установите немного более холодные ножки или используйте аккумулятор большей емкости.

Все это говорит о том, что если вы уменьшите температуру до 0, нагревательный элемент полностью прекратит использование энергии. В этот момент Arudino медленно разрядит вашу батарею, пока ваши электрические носки будут лежать в ящике для носков. Было бы полезно перевести ваш Arduino в режим сна с очень низким энергопотреблением (или даже полностью отключить его), чтобы избежать его слива, пока вы им не пользуетесь.

Изменить:

Если вы хотите, чтобы нагревательный элемент был включен в течение 2 минут, выключен в течение 2 минут, это даст точно такую же экономию энергии, как и при его работе на уровне половины текущей мощности, но постоянно.

Если вы действительно хотите реализовать подход "2 минуты включено, 2 минуты выключено", вам нужно будет использовать функцию millis (), чтобы отслеживать время, когда вы в последний раз включали/выключали элементы. Я предлагаю переработать ваш текущий код, чтобы удалить задержку и также использовать millis.

Взгляните на скетч "BlinkWithoutDelay" (который, как я полагаю, входит в состав интегрированной среды разработки и, безусловно, доступен в Интернете), чтобы получить представление о том, как выполнять синхронизацию без использования задержки().

,

Я не вижу под вопросом просьбу о снижении потребления наноматериалов. ОП хочет включить нагревательный элемент на 2 минуты, затем выключить его на 2 минуты, @Juraj

Я отредактировал свой ответ, чтобы решить проблему 2 минут включения, 2 минуты выключения и выключения питания, и предоставил отправную точку для ее реализации, если это то, что они действительно хотят сделать. (Как я уже отмечал, включение и выключение питания каждые 2 минуты будет иметь точно такую же экономию энергии, как и уменьшение рабочего цикла ШИМ в два раза.), @Duncan C

Спасибо. Батарея источника для нагревательного элемента была моей проблемой. Я рассматривал millis() как вариант, но мне нужно было, чтобы кто-то подтвердил, что это потенциальный вариант. Я изучу millis() и моргну без промедления., @Kris Frankum