X
GO

Video škola robotike

Šesnaesti dio: Ušteda energije mikrokontrolera Arduino

  • 15 prosinca 2020
  • Autor: Zoran
  • Broj pregleda: 401
Video škola robotike

Zbog pogoršane epidemiološke situacije i strožih mjera zaštite koje su nedavno uvedene, održavanje radionica robotike u prostorijama ZTK grada Splita je još jednom odgođeno do daljnjeg. Kako polaznici te radionice - ali i svi ostali koji su zainteresirani za robotiku - ne bi time bili zakinuti, ZTK grada Splita nastavlja s objavljivanjem Video škole robotike, niza didaktičkih video uradaka o toj zanimljivoj djelatnosti. Imamo namjeru periodično objavljivati takve uratke dokle god ne bude moguće nastaviti održavanje robotičkih radionica "uživo".

U ovom videu su objašnjeni načini uštede energije pomoću kojih samostalni Arduino sustav može s istom baterijom funkcionirati i po nekoliko tisuća puta duže. Uštedu vršimo pomoću "sleep" modova, preskaliranjem osnovne frekvencije ili uklanjanjem određenih komponenti s mikrokontrolera. Više o tome u videu!

Video možete pogledati OVDJE:

Dodaci

Frequency prescaling:

int led = 13;

void setup() {
  pinMode(led, OUTPUT);
}


void loop() {
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW);
  delay(1000);
}


Sleep Modes:

#include <avr/sleep.h>  
 
int wakePin = 2;                 // pin used for waking up  
 
 
void wakeUpNow() {  
  // execute code here after wake-up before returning to the loop() function  
  // timers and code using timers (serial.print and more...) will not work here.  
  // we don't really need to execute any special functions here, since we  
  // just want the thing to wake up  
}  
 
 
void sleepNow() {  

//Potrošnja na početku 58 mA
// CLKPR=0x01; Potrošnja 54 mA
// CLKPR=0x02; Potrošnja 51 mA
// CLKPR=0x03; Potrošnja 49 mA
// CLKPR=0x04; Potrošnja 48 mA
// SLEEP_MODE_ADC       Potrošnja 45 mA
// SLEEP_MODE_PWR_SAVE  Potrošnja 38 mA
// SLEEP_MODE_STANDBY   Potrošnja 38 mA
// SLEEP_MODE_PWR_DOWN  Potrošnja 37 mA

// Do sada ušteđeno energije 63.8%

//Uklanjanjem naredbi digitalWrite() uštadjeli smo dodatnih 5 mA odnosno potrošnja iznosi 32 mA
//Uklanjanjem ledice a Arduino-a potrošnja je pala na svega 4.6 mA
//Uklanjanjem i druge ledice potrošnja bi pala na otprilike 0.01 mA

//Što iznosi ušteda energije od 5800 puta :)

 


//SLEEP_MODE_IDLE – najmanja ušteda
//SLEEP_MODE_ADC
//SLEEP_MODE_PWR_SAVE
//SLEEP_MODE_STANDBY
//SLEEP_MODE_PWR_DOWN – najveća ušteda


    set_sleep_mode(SLEEP_MODE_PWR_DOWN);   // sleep mode is set here  
    sleep_enable();          // enables the sleep bit in the mcucr register  
    attachInterrupt(0,wakeUpNow, LOW); // use interrupt 0 (pin 2) and run function  
    sleep_mode();            // here the device is actually put to sleep!!  
    // THE PROGRAM CONTINUES FROM HERE AFTER WAKING UP  
    sleep_disable();         // first thing after waking from sleep: disable sleep...  
    detachInterrupt(0);      // disables interrupt 0 on pin 2 so the wakeUpNow code will not be executed during normal running time.  
}  

 

void setup() {  
 
CLKPR=0x80;
CLKPR=0x04;

//pinMode(led,OUTPUT);
pinMode(wakePin, INPUT_PULLUP);  
attachInterrupt(0, wakeUpNow, LOW); // use interrupt 0 (pin 2) and run function wakeUpNow when pin 2 gets LOW  

}  
 
void loop() {  

sleepNow();     // sleep function called here  

}

Dokumenti za preuzimanje

Ispiši
Kategorije: Skole i tecajevi
Tagovi:

Ime:
Email:
Predmet:
Poruka:
x