Stránka 1 z 2

Spotřeba Arduino Mini Pro

Napsal: 25 říj 2022, 20:26
od Ludek
Zdravím, napájím Arduino Mini Pro 12V alkalikou do RAW vstupu. Ale žere asi 15mA :-(
Potřebuji, aby po zapnutí napíjení HNED usnul, spinkal a nepapal moc.
Ale jakmile mu na nějaký vstup dám třeba High, tak aby okamžitě do 1-2 ms začal makat.
Jde to?

Re: Spotřeba Arduino Mini Pro

Napsal: 25 říj 2022, 23:03
od AstroMiK
Níže uvádím osekaný příklad uspání, pomocí kterého se mi povedlo snížit spotřebu Arduina MiniPro asi na 6uA.
Musel jsem ale vypájet z plošňáku PWR LED a stabilizátor.
Napájel jsem to pak třema tužkovkama v sérii přímo na pin Vcc.

Kompletní projekt jsem vystavoval tady: http://www.astromik.org/raspi/gsmalarm/

Osekaný příklad (nevyzkoušený):

Kód: Vybrat vše

// Priklad hlubokeho SLEEP rezimu a probuzeni pres FALLING hranu na D2
//==================================================================================================
// Nastavení FUSE bajtu v ATmega328:
//   LFuse = 0xFF
//   HFuse = 0xDF
//   EFuse = 0x07
//==================================================================================================



#include <avr/sleep.h>


//==================================================================================================
// Podprogram pro "interrupt" kontaktem pri otevirani dveri. (aktivuje se sestupnou hranou na D2)
void dvere()
  {
    sleep_disable();
    detachInterrupt (0);
  } 
//==================================================================================================



//==================================================================================================
void setup(void) 
  {
    for (byte i = 0; i <= A5; i++)   // Kvuli snizeni spotreby ve sleep rezimu vsechny piny nastavit na vystup a stahnout do LOW ...
      {
        pinMode (i, OUTPUT);
        digitalWrite (i, LOW);
      }
    pinMode (2, INPUT_PULLUP);       // ... krome kontaktu na dverich, ktery slouzi k probuzeni z rezimu spanku.
  }
//==================================================================================================



//==================================================================================================
//             HLAVNI  SMYCKA
void loop(void) 
  {

    //-------------------------------------------------------------------------------------
    // hned po startu se procesor uspi do stavu s minimalnim odberem (kolem 6uA)
    //   (opsano a upraveno z: http://www.gammon.com.au/power  ) 
    ADCSRA = 0;  
    set_sleep_mode (SLEEP_MODE_PWR_DOWN);  
    noInterrupts ();                         // timed sequence follows
    attachInterrupt (0, dvere, FALLING);
    EIFR = bit (INTF0);                      // clear flag for interrupt 0
    
    sleep_enable();
    
    interrupts ();                           // guarantees next instruction executed
    sleep_cpu ();                            // sleep within 3 clock cycles of above
    //-------------------------------------------------------------------------------------



    //-------------------------------------------------------------------------------------
    //  V tomto miste ceka procesor na probuzeni pomoci sestupne hrany na pinu D2 (kontakt na dverich).
    //-------------------------------------------------------------------------------------



    //-------------------------------------------------------------------------------------
    // tady bude kod, ktery se ma vykonat po probuzeni
    //
    //
    //-------------------------------------------------------------------------------------
 
 



  }    // Konec hlavni smycky, na zacatku nasledujici smycky se zase uspi.
//==================================================================================================

Re: Spotřeba Arduino Mini Pro

Napsal: 26 říj 2022, 06:37
od Ludek
Oj Ty jsi borec,
dnes se na to podívám, vyzkouším a poreferuju :-) díky

Re: Spotřeba Arduino Mini Pro

Napsal: 26 říj 2022, 06:58
od Ludek
Ještě dotaz amatéra - jak změnit Fuse, když mám jen IDE ?

Re: Spotřeba Arduino Mini Pro

Napsal: 26 říj 2022, 08:01
od Axamith
Pokud opravdu potřebuješ provozovat Arduino Pro mini v režimu spánku s minimální spotřebou, zbav se žroutů na desce. Trvale svítící LEDky a napěťového regulátoru. Samozřejmě pak nemůžeš desku napájet 12V. Po tomto zásahu jsem se dostal v režimu spánku na 4 uA. A to už stojí za to.

Re: Spotřeba Arduino Mini Pro

Napsal: 26 říj 2022, 10:20
od Ludek
Jojo, LED jsem odpojil. Ale musím to napájet z 12V alkaliky A23.

Re: Spotřeba Arduino Mini Pro

Napsal: 26 říj 2022, 11:16
od ondraN
Tak to zapomeň na lineární stabilizátor. Jeho vlastní odběr je cca 1-5mA, dle typu a kusu na desce. Buď musíš použít nějaký DC-DC konvertor z 12V na 5V s extrémně malou vlastní spotřebou a nebo to napájet ve sleepu z nějaké záložní baterie a po vstupu do normálního modu si přes nějaký FET zapnout tu hlavní baterii a před usnutím zase vypnout.

Re: Spotřeba Arduino Mini Pro

Napsal: 26 říj 2022, 15:02
od Ludek
Ondro kdepak... já potřebuji toto :
- sepnu napájení a ihned to musí snížit spotřebu
- do 30 sec přijde to přerušení - pin 2 a IHNED to musí počítat impulzy.
- pak se pin 2 uvolní a zase musí jít spát...
takže už vyzkoušeno a šlape to.

Takže spotřeba do 3 mA je OK... Teď mi to ukazuje 19 mA
Ale díky, Vaše rady mi MOC pomohly.
Jen by mě zajímalo, jak se u Arduina MiniPro dá nastavit FUSE.

Re: Spotřeba Arduino Mini Pro

Napsal: 26 říj 2022, 15:07
od ondraN
Po třech dnech bude baterie úplně vybitá. Na fuse musíš mít HW programátor, přes USB to nejde. Pohledej tady na fóru, už se to tu párkrát řešilo.
P.S. Někde byl návod, jak udělat ten programátor z arduina, snad to je i v nějaké té diskuzi.

Re: Spotřeba Arduino Mini Pro

Napsal: 26 říj 2022, 16:08
od AstroMiK
Na programování "Arduina Mini Pro" už ten programátor asi musíš mít (Mini Pro nemá USB konektor).
Jestli ho nemáš, tak se dá vyrobit z obyčejného Arduina (Uno, Nano ...):
https://docs.arduino.cc/built-in-exampl ... ArduinoISP


Na nastavení FUSE existuje několik možných postupů.
Já používám grafickou nadstavbu "AVRDUDESS":
https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/

Tam jednoduše zadáš, jak chceš FUSE nastavit a stiskneš tlačítko WRITE.

FUSE se dají ale přepsat i přes příkazovou řádku (parametry programu "avrdude.exe", který je součástí arduino IDE)

Taky je možné zaeditovat soubor "boards.txt" a provést funkci "Vypálit zavaděč" přes Arduino IDE.

Pozor! Při špatném nastavení FUSE si můžeš Arduino trvale umrtvit.