Budując układ do pomiaru temperatury (patrz Jak mierzyć temperaturę z Arduino) napisałem prosty program
i zauważyłem, że kolejne pomiary potrafią się czasem sporo różnić mimo, że temperatura czujnika tak naprawdę się nie zmienia. No cóż, pewnie napięcie na usb niezbyt stabilne jest więc stąd te niedokładności. Aby je usunąć zrobiłem małą zmianę w programie, a mianowicie:#define TEMP_PIN 2 void setup() { Serial.begin(57600); } void loop() { float wart = analogRead(TEMP_PIN); float temp = ((wart * 5.0 / 1024.0) - 0.5) / 0.01; Serial.print(temp); }
zmianę, która jak łatwo zauważyć przez minutę liczy średnią, a następnie wypisuje ją oraz liczbę pomiarów.W ciągu minuty na moim arduino liczba pomiarów w ciągu minuty to prawie 500 tys. Zaczęło mnie zastanawiać czy tak duża liczba pomiarów jest potrzebna. Intuicja mi bowiem podpowiadała, że każdy taki pomiar zużywa energię, a arduino z baterii potrafi być zasilane więc dobrze aby na niej długo działało.#define TEMP_PIN 2 #define INTERVAL 60000 unsigned long lastTime = 0; unsigned long count = 0; unsigned long value_sum = 0; void setup() { Serial.begin(57600); } void loop() { int value = analogRead(TEMP_PIN); value_sum += value; count ++; unsigned long time = millis(); if (time - lastTime > INTERVAL) { float temp = (((value_sum) * 5.0 / 1024.0 / count) - 0.5) / 0.01; Serial.print(temp); Serial.print(";"); Serial.print(count); Serial.println(); lastTime = time; count = 0; value_sum = 0; } }
Po nieco trudnej ale ciekawej lekturze dwóch artykułów:
- Opracowanie Pani Agnieszki Korgul na temat pomiarów pt Analiza danych pomiarowych
- kilka dodatkowych informacji w Wikipedii - Odchylenie standardowe
Pytanie jednak brzmi czy zmniejszenie liczby pomiarów poprzez wstawienie instrukcji 'delay' na końcu metody loop zmniejszy pobór energii. Arduino podłączone do 9V baterii wykonując powyższy program pobiera 47,1 mA. Po dodaniu na końcu instrukcji
delay (6);
liczba pomiarów spada do 9800, a pobór prądu ... rośnie do 47,8 mA.No i to by było na tyle w temacie oszczędzania energii. Szczerze mówiąc zawiedziony jestem, taki fajny algorytm dynamicznego dostosowywania liczby pomiarów do aktualnych warunków w głowie miałem.
Do tematu jednak zamierzam wrócić bo to się wierzyć nie chce, że nie da się postawić układu w stan zawieszenia kiedy zapotrzebowanie na energię jest minimalne
Brak komentarzy:
Prześlij komentarz