Jste zde

Minimalizace spotřeby ATMEL 2051

Jak zminimalizovat spotřebu 89c2051 od ATMELu. Jednoduché a velmi efektivní řešení.

U jedné časoměrné aplikace s Atmelem jsem potřeboval napájení procesoruzálohovat baterií. Pod vlivem obdobných zapojení s PICy jsem předpokládal,že jako u většiny CMOS obvodů, bude příkon přímo úměrný pracovnímu kmitočtu.Pokud je při 24 MHz spotřeba obvodu 16 mA, měla by být při použití hodinkovéhokrystalu 32,768 KHz pouhých 22uA. Po připojení krystalu a vyřešení problémus jeho spolehlivým rozkmitáním však byla naměřena spotřeba cca 6 mA. Pohlubší analýze byly zjištěny příčiny této nesrovnalosti a byly stanovenydále popisované zásady pro optimalizaci pracovních podmínek procesoru tak,aby byl použitelný i v nízkopříkonových bateriových aplikacích. 

Příčiny vyššího příkonu procesoru
Programová paměť FLASH EPROM je aktivní pevnou část strojového cyklu.Pohledem do katalogu pamětí FLASH lze zjistit jejich spotřebu v aktivnímstavu  (dle typu) cca 10 až 20 mA. To je podstatně více, než u pamětíCMOS UV EPROM, případně OTP EPROM používaných v PICech. 

Při snižování frekvence zůstává střída aktivace paměti konstantní atím i příspěvek její spotřeby k celkové spotřebě procesoru. Tento proudlze odvodit z rozdílu příkonu aktivního a IDL režimu při nízkém kmitočtua činí 4,8 mA při 5 V, případně 1,65 mA při 3 V. Znamená to, že snižovánímfrekvence roste energie potřebná pro vykonání jednoho strojového cyklu.Problém by mohl vyřešit jedině výrobce procesoru, kdyby omezil vnitřnímčasováním aktivní dobu programové paměti pouze na dobu nutnou pro přečteníinstrukce. Jenže výrobce tak neučinil. Proto je výhodné, aby při požadavkuna nízkou výpočetní rychlost procesor pracoval s vyšším kmitočtem a pravidelněpřecházel do režimu IDL, kde se paměť nepoužívá. Pokud však bude kmitočetpříliš vysoký, spotřeba v režimu IDL bude zvyšovat celkovou spotřebu procesoru.Proto je nutné hledat optimální kmitočet. 

Spotřeba oscilátoru
Spotřebu oscilátoru je možno podstatně ovlivnit způsobem připojeníkrystalu. Pokud oscilátor kmitá, k jeho vlastní spotřebě se přičítá proudz výstupu do obvodu krystalu. Zatímco krystal kmitá sinusově, průběh výstupníhonapětí procesoru je obdélníkový a vlivem překmitávání je i napětí na vstupnístraně omezováno na obdélníky. Vznikají vyrovnávací proudy, které zvyšujícelkovou spotřebu až o 1 mA. Řešením je zařazení odporu do série s výstupemprocesoru (vývod č. 4). Odpor navíc zlepšuje stabilitu kmitočtu oscilátoru,což oceníme v časoměrných aplikacích.  Příliš velká hodnota odporuvšak opět spotřebu zvyšuje, neboť nakmitané napětí se sníží tak, že výstupnístupeň oscilátoru přechází do lineárního režimu. Optimální velikost odporuje závislá na kmitočtu krystalu. Pro kmitočty 3 až 4 MHz je optimální hodnota2K2.  Při kmitočtech nad 12 MHz je nutné odpor vyřadit. 

Princip minimalizace spotřeby
Při minimalizaci spotřeby je nutné, aby procesor nebyl časově plněvytížen a aby mohl pravidelně přecházet do úsporného režimu IDL. Úkolemminimalizace bude stanovit takový kmitočet krystalu, při kterém bude vzhledemk požadované střední výpočetní rychlosti spotřeba minimální. Pro tentoúčel byla uskutečněna řada měření spotřeby s různými kmitočty krystalůjak v aktivním režimu, tak v režimu IDL. Při měření byl do výstupu oscilátoruzařazen optimální odpor pro dosažení minimální spotřeby. Měření byla prováděnana pěti procesorech jejich vzájemné rozdíly byly zanedbatelné. 

Výsledky měření jsou graficky znázorněny na obrázcích : 

Graf závislosti spotřeby procesoru ATMEL 2051 na napájecím napětí

Graf závislosti spotřeby procesoru ATMEL 2051 na frekvenci oscilátoru

Z těchto výsledků byly sestaveny empirické vzorce. 
 

aktivní režim IDL režim
spotřeba při 3 V I = 1,9 + 0,21 . f  I = 0,25 + 0,06 . f 
spotřeba při 5 V I = 6 + 0,43 . f I = 1,2 + 0,1 . f
Tabulka spotřeby procesorů ATMEL 2051   [mA, MHz ]

Pro úplnost je ještě na posledním obrázku změřená závislost minimálníhonapájecího napětí na kmitočtu krystalu. 

Graf závislosti minimálního napájecího napětí procesoru ATMEL x51na frekvenci oscilátoru.

Celková spotřeba je tedy dána 

    I = P . Iaktiv + ( 1 - P ) I idl 

 kde P je poměr skutečně využité výpočetní rychlosti k výpočetnírychlosti dané kmitočtem krystalu.

Naměřené hodnoty platí pro AT89c2051 (měřil jsem 10 kusů z různých sériía hodnoty se minimálně lišily).
 
 
 

Navržené odvozené hodnoty
Minimum funkce, kde proměnnou bude kmitočet krystalu, je velmi ploché.Pro různé hodnoty využité výpočetní rychlosti byly sestaveny následujícítabulky minimálních příkonů. Pro porovnání je počítána spotřeba i při kmitočtukrystalu 3,6864 MHz. Tento kmitočet je dobře dělitelný jak pro získánístandardních přenosových rychlostí, tak i pro časoměrné aplikace a je tojeden z nejnižších kmitočtů, které většina prodejců dodává za standardnínízké ceny.

Ucc = 5 V

stroj. cyklů za vteřinu optimální kmitočet  [MHz]  spotřeba [mA] spotřeba při 3,6864 MHz [mA]
100 0,245 1,25 1,58
1000 0,76 1,35  1,58
10000 2,43 1,72 1,76
100000 7,7 3,11 3,51
300000 13,1 5,02 7,45

Ucc = 3 V

stroj. cyklů za vteřinu optimální kmitočet  [MHz]  spotřeba [mA] spotřeba při 3,6864 MHz [mA]
100 0,183 0,272 0,472
1000 0,57 0,321 0,478
10000 1,8 0,486 0,544
100000 5,8 1,12 1,19
300000 9,9  1,984 2,62

Program pro výpočet konstant
Pro výpočet zde uvedených konstant byl použit můj program SPOTREBA.ZIPkterý je vám k dispozici..
 

Příklad řešení


#include <stdio.h>
#include <stdlib.h>
#include <reg51.h>

sbit Led  = P1^0;
typedef unsigned char byte;
byte Poccas;        /* pocitanicasu                 &n bsp;                 */

void Casov(void)        /*   casovani programu       */
{
PCON=1;            /* cekani v IDLE modu                  &nbs p;           */
TH0=256-100;        /* krystal3,6864, /12 /256=1200Hz; /100=12Hz      */
}

void Pocinic(void)      /*  pocatecni inicializace   */
{
TMOD=0x31;         /* casovac0 v rezimu 1, casovac 1 zastaven         */
TCON=0x10;         /* RUNpro casovac 0                   & nbsp;            */
ET0=1;            /* povoleni preruseni od casovace 0                 */
EA=1;             /* celkove povoleni preruseni                   ;     */
}

main(void)
{
do
  {
  Casov();        /* jeden casovy interval 1/12 sec.                  */
  Poccas++;

  if(Poccas==0) Led=1;
  if(Poccas==6) Led=0;
  if(Poccas==12) Poccas=0;
  }
while(1);
}


Závěr
Z výsledků vyplývá, že volba kmitočtu krystalu není kritická a provětšinu nízkopříkonových aplikací vyhoví jakýkoliv krystal z dolního koncestandardní kmitočtové řady. 
Výše uvedené závěry platí pouze pro 89c2051, u 4051 bude situace pravděpodobněobdobná, i když bude možná použita modernější technologie. U "velkých"procesorů v 40. pinovém pouzdru je udávána podstatně větší spotřeba v IDLrežimu.
 Režim IDL se v daném uspořádáni používá pouze s běžícím časovačem,který pomocí přerušení vrátí procesor do aktivního stavu a zároveň časujeběh programu. Důležitou podmínkou je, aby program prováděný v jednom časovémintervalu nebyl delší, než je čas pro něj časovačem vymezený. V praxi toznamená, že všechna delší zpoždění jsou realizována přislušným počtem zavoláničasovací funkce. Program v příloze názorně ukazuje na jednoduchém blikátkupoužití IDL režimu. Časovac běži v 16- bitovem režimu a po návratu z přerušeníse nastavuje jen jeho horní polovina. Pokud přepsání časovace proběhnedříve, než za 256 strojovych cyklů, je zachována kontinuita počítáni času.K programu patři i obsluha přerušení od časovače. Na adrese přerušení jepouze návrat ( instrukce RETI ). 

 


DOWNLOAD programu SPOTŘEBA,který vám usnadní návrh nízkopříkonové aplikace.. - ZDE




VAElektronik - ing. Vladimir Andel
Hodnocení článku: