Zmena frekvencie zariadenia

možnosti zabezpečenia nízkej spotreby mikrokontroléra pomocou zmeny frekvencie

Spotreba zariadenia

Spotreba zariadenia sa s časom môže a aj bude meniť. Aktuálna spotreba závisí od mnohých vecí, ale najmä od toho, aké komponenty má zariadenie pripojené a čo s nimi robí. Napríklad rozsvietenie LED diódy sa prejaví zvýšením spotreby o 2 mA (spotreba samozrejme závisí od jej typu).

Spotreba LED diódy je však v porovnaní s inými zariadeniami zanedbateľná. Napr. doska Raspberry Pi Pico 2 W obsahuje modul CYW43, ktorý zabezpečuje komunikáciu cez WiFi a Bluetooth.

Pracovná frekvencia mikrokontroléra

Jedným zo spôsobov zníženia spotreby zariadenia je zníženie jeho pracovnej frekvencie. Tým, že zariadenie spomalíme, znížime aj jeho spotrebu.

Zistenie pracovnej frekvencie

Na zistenie aktuálnej pracovnej frekvencie zariadenia slúži funkcia freq() v module machine. Ak je funkcia zavolaná bez parametrov, vráti hodnotu aktuálnej frekvencie zariadenia v hertzoch:

>>> import machine
>>> machine.freq()
150000000

Mikrokontrolér RP2350 na doske Raspberry Pi Pico 2 má teda predvolenú pracovnú frekvenciu 150 MHz. Staršia doska Raspberry Pi Pico s mikrokontrolérom RP2040 má predvolenú frekvenciu 125 MHz.

Zmena pracovnej frekvencie

Pracovnú frekvenciu mikrokontroléra je možné zmeniť volaním rovnakej funkcie s parametrom, ktorým je jej nová hodnota v hertzoch. Ak je potrebné nastaviť pracovnú frekvenciu zariadenia na 100 MHz, bude volanie funkcie vyzerať takto:

>>> machine.freq(100 * 10**6)
>>> machine.freq()
100000000

Výrobca garantuje činnosť mikrokontroléra RP2350 pri frekvencii najviac 150 MHz [1]. Jazyk MicroPython dovolí nastaviť aj vyššiu frekvenciu, vtedy však ide o tzv. pretaktovanie, pri ktorom správnu činnosť mikrokontroléra nikto nezaručuje. Nie každú frekvenciu je navyše možné z hodinového signálu vytvoriť. Ak to možné nie je, funkcia vyvolá výnimku ValueError so správou "cannot change frequency".

Frekvencia periférií

Okrem pracovnej frekvencie mikrokontroléra je možné druhým parametrom funkcie freq() nastaviť aj frekvenciu periférií. Tá môže byť buď 48 MHz, alebo zhodná s pracovnou frekvenciou mikrokontroléra. Predvolená hodnota je 48 MHz:

>>> machine.freq(100 * 10**6, 100 * 10**6)

Ak sa frekvencia periférií zmení, všetky existujúce inštancie rozhraní UART a SPI zmenia svoju prenosovú rýchlosť a je potrebné ich znova nakonfigurovať. Inak nemusia pracovať správne.

Spotreba pri zmene frekvencie

Zmenou pracovnej frekvencie mikrokontroléra je možné ovplyvniť aj jeho spotrebu. Čím nižšia je pracovná frekvencia, tým nižší je aj odber zariadenia. Zariadenie však zároveň pracuje pomalšie, takže tú istú prácu vykonáva dlhšie.

Spotreba pri zapnutí WiFi modulu

Po zapnutí odoberá mikrokontrolér prúd okolo 16mA pri pracovnej frekvencii 150MHz. Ak však zapneme WiFi modul, tak krátkodobo uvidíme spotrebu na úrovni takmer 60mA. To je spôsobené tým, že sa WiFi modul potrebuje inicializovať. Akonáhle sa inicializuje, jeho spotreba klesne na hodnotu 30 - 35 mA, čo zodpovedá prúdovej spotrebe modulu rádia v stave nečinnosti.

>>> import network
>>> wlan = network.WLAN(network.STA_IF)
>>> wlan.active(True)

Keď sa WiFi modul úspešne pripojí k WiFi sieti, jeho spotreba sa bude pohybovať okolo hodnoty 55mA.

>>> wlan.connect('ssid', 'password')
>>> wlan.ifconfig()

Ak sa WiFi modul odpojí od WiFi siete, spotrebou sa dostaneme na úroveň 30-35 mA:

>>> wlan.disconnect()

Aby sme sa dostali na pôvodnú hodnotu, v ktorej bolo zariadenie v kľude, potrebujeme WiFi modul vypnúť. To urobíme metódou .deinit() a spotreba sa opäť dostane na hodnotu 16mA:

>>> wlan.deinit()

Ďalšie zdroje

Literatúra

[1] RASPBERRY PI LTD. RP2350 Datasheet: A microcontroller by Raspberry Pi. In [online]. 2024. [cit. 2026-09-01]. Dostupné na internete: <https://datasheets.raspberrypi.com/rp2350/rp2350-datasheet.pdf>.