Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Mikroprocesor Atmel - który pobiera najmniej prądu ?

FlashCode 15 Jun 2008 18:56 4519 31
NDN
  • #1
    FlashCode
    Level 13  
    Pytanie jak w tytule. Wymagane parametry pracy : taktowanie rdzenia min 300kHz (AVR lub 8051), zasilanie 2,7- 3V, wszystkie porty w stanie wysokim w czasie pracy, 2kB pamięci programu, min. 8 portów we/wy. Nie wchodzi w grę wprowadzanie procesorka w stany oszczędzania energii - musi pracować i nadzorować swoje porty non-stop. Do tej pory na AT89S2051 z kwarcem 4MHz uzyskałem pobór 1,4mA. Interesuje mnie pobór poniżej 750uA. Czy ktoś ma jakieś doświadczenie/podpowiedzi ?
  • NDN
  • #2
    johny_w
    Level 21  
    Witam. Może być ciężko. Też ostatnio to wałkuję i póki co udało mi się wycisnąć z megi32 1,8mA przy 3.3V (+sterowanie LCD) i zegarze 1Mhz. Mega16 podobnie. Inne AVR'ki mają już gorsze parametry jeśli chodzi o pobór prądu.

    Niestety producent podaje tylko pobór prądu dla min. 1Mhz. Brak informacji nt. tego czy przy np. 500kHz pobór prądu będzie mniejszy. A tego jeszcze nie sprawdzałem.

    Niektóre PIC'e wg. not katalogowych wyglądają obiecująco (ok. 200 uA) - jednak również nie sprawdzałem.

    No i pamiętaj, że jest różnica w taktowaniu rdzenia '51 i AVR. Te pierwsze mają dzielnik zdaje się 12. Czyli z kwarcu 12Mhz rdzeń jest taktowany zegarem 1Mhz.
  • NDN
  • #3
    __Grzegorz__
    Level 30  
    Freddie Chopin wrote:
    msp430

    4\/3!!


    Od kiedy to Atmel produkuje procesory MSP430?

    Producentem ich jest TI.
  • #4
    myrcioch
    Level 18  
    Dlaczego brak informacji? W rozdziale Typical Characteristics/Active Supply Current wykresy zaczynają się od 100kHz. Dla 2,7V i 300kHz mamy 0,6mA dla Atmega8 oraz 0,3mA dla Atmega32. W przypadku podanym przez Jj_Johnys - Atmega32 @ 3,3v/1MHz powinna pobierać właśnie 1,8mA.

    Można też skorzystać z serii PicoPower i zejść z 0,3mA do 0,15-0,2mA (w zależności od modelu)
  • #6
    kamyczek
    Level 38  
    Wiele zależy od tego jak napiszesz program jeśli użyjesz mikrokontrolera z literką "P" posiada on sporo udogodnień do zastosowań energooszczędnych. Czym mniejszy będzie mikrokontroler tym mniej pochłonie energii ...
  • #7
    Chyllus
    Level 17  
    Zgadza się, są to modele z literką P (picoPower) i np. dla ATmega3250P w nocie katalogowej możemy przeczytać:

    Ultra-Low Power Consumption
    – Active Mode:
    420 µA at 1 MHz, 1.8V
    – Power-down Mode:
    40 nA at 1.8V
    – Power-save Mode:
    750 nA at 1.8V
  • #8
    Freddie Chopin
    MCUs specialist
    __Grzegorz__ wrote:

    Od kiedy to Atmel produkuje procesory MSP430?

    Producentem ich jest TI.

    Od kiedy to nie mozna zmienic procesora glownego, jesli zalezy komus na energooszczednosci? to ty jestes tym geniuszem, ktory zglosil posta? No normalnie sam sobie bana bym wlepil za napisanie o MSP430 - najbardziej energooszczednym procesorze na rynku - w temacie, w ktorym ktos pisze, ze zalezy mu na bardzo malym poborze pradu...

    <sciana>

    Jakbym dal temat, ze chce maluchem wycisnac 250km/h to myslisz, ze nikt nie napisalby mi, aby zmienic samochod?

    Pozatym temat jest w dziale uC ogolne. Jak autor chcial scisle AVRa, to przeciez istnieje tutaj podforum o tych uC. Nie umiescil tego tam - czy to z lenistwa, czy specjalnie - 'naraza' sie wiec na odpowiedzi ogolne.

    P.S. jak ktos zacznie sugerowac zaraz, ze nabijam sobie punkty, to normalnie chyba mu oddam wszystkie...

    4\/3!!
  • #9
    _Matik_
    Level 19  
    Freedie Chopin: no ale po co sie spuszczac skoro sa Atmele ktore spelniaja wymagania pytajacego, a o procki tej firmy autor wlasnie pytal.
  • #10
    Freddie Chopin
    MCUs specialist
    no i bardzo dobrze ze sa. na przyszlosc bedzie od razu wiadomo, ze msp430 jest jeszcze bardziej energooszczedne i tylko o to chodzi. swiat nie konczy sie na firmie atmel.

    no to jak juz sie nad tym 'spuscilem', jak to nazwales, to sobie ide <: podoba mi sie to nowoczesne slownictwo <:

    4\/3!!
  • #11
    Balu
    Level 38  
    @ <podkreślenie><podkreślenie>Matik: Co to za wyrażenie spuszczać? Na co dzień też tak mówisz? P.S. akurat w tym wypadku Freddy ma całkowitą rację są to najoszczędniejsze uC na rynku.


    P.S. Freddy nabijasz sobie posty :> :D
  • #12
    Ch.M.
    Level 27  
    Hehe nie nabija postów tylko się nadyma na ATmele :)

    Autor mógłby sprecyzować co to znaczy "nadzorować wszystkie swoje porty" Jak znam życie, to wyjdzie, że sprawdzać trzeba tylko kilka portów i spokojnie do tego można użyć kilka modeli AVR śpiących sobie przez większą część pracy.
    Porada --> niektóre procki mają konfigurowalne zewnętrzne przerwania
    Porada 2 --> jeśli nie wymagasz dużo MIPS to równie dobrze możesz się budzić co np.0,1s i sprawdzać wszystkie piny i znowu uderzać w kimono.

    To nie procek jest energooszczędny, tylko kod (czytaj: programista)

    Pozdrawiam
  • #13
    FlashCode
    Level 13  
    Wspomnę tu jeszcze o dwóch najważniejszych wymogach - jak najniższa cena i jak najmniejsza obudowa. Procek ma za zadanie: włączać odbiornik RF co 0,1sek (port nr1) na ok. 3msek, w tym czasie sprawdzić czy na wejściu (port nr2) pojawia się jakieś info szeregowo (maks 10Kbits/s), jeśli tak to zdekodować i odpowiednio wysterować buzzer (port nr3) i LED (port nr4).

    Pozostałe 4 porty mają na razie zostać wolne do dalszych rozszerzeń (we/wy). Na pewno układ musi być zasilaniy pojedynczą baterią CR2450 - 3V. Odbiornik RF znalazłem sobie nawet bardzo przyjazny - w trybie "polled operation" ma pobór prądu poniżej 300uA.

    MSP430 brzmi obiecująco ale cena 8-O
  • #14
    Ch.M.
    Level 27  
    To tak jak pisałem: budzisz przerwaniami i po sprawie. Jakbyś jeszcze napisał co to za RX używasz to może by się okazało, że ma interfejs SPI, który też jest obsługiwany przez przerwania...
    Im więcej danych podasz, tym lepszą odpowiedź uzyskasz
    Pozdrawiam

    P.S. Do Twoich zastosowań wystarcza z nadmiarem (pod)rodzina ATmega 48/88/168 w wersji V, a jeszcze taniej wersja zwykła (czyli od 2,7V) która posiada 26 przerwań zewnętrznych , Pinchange, kilka oscylatorów RC, w tym dwa super energooszczędne, a brak mu do pełni szczęścia JTAG... chociaż nie brak, tylko potrzeba debugger z DEBUG-WIRE
  • #15
    Chyllus
    Level 17  
    Jeśli sześć portów I/O by wystarczyło to można zastosować ATtiny13A, ATtiny48 lub ATtiny88, które mają jeszcze mniejszy pobór prądu i małą obudowę. Lecz jeśli koniecznie trzeba zastosować 8 I/O to wtedy nadmiarowo trzeba będzie wykorzystać ATmega48/88/168.
    A jak już wszyscy wcześniej zauważyli - najbardziej energooszczędny jest program (bądź może takim być) ;)
    Pozdrawiam
  • #16
    Dr_DEAD
    Level 28  
    FlashCode wrote:
    Procek ma za zadanie: włączać odbiornik RF co 0,1sek (port nr1) na ok. 3msek, w tym czasie sprawdzić czy na wejściu (port nr2) pojawia się jakieś info szeregowo (maks 10Kbits/s), jeśli tak to zdekodować i odpowiednio wysterować buzzer (port nr3) i LED (port nr4).

    Hehehehe, Ch.M. trafił w sendno. Przy takich założeniach wykorzystując wszystkie możliwości MSP430 można zejść z prądem na poziom 4uA a nie 750uA, a więc poniżej prądu samorozładowania baterii (czyli przewidywany czas działania na jednej to jakieś 7lat). Martwiłbym się raczej o tego LED'a i Buzer bo to one będą najbardziej prądożerne.
  • #17
    FlashCode
    Level 13  
    Info na wejściu kodowane jest w Manchester, długość - 256bitów (bity startowe, preambuła itd). Informacja musi byc bardzo dokladnie zdekodowana gdyż odbiornik przy braku sygnału użytecznego RF daje niezły szum cyfrowy, bardzo podobny do użytecznego.

    Ch.M. - a jak to przerwaniami zrealizować ? Na razie testowalem 89s2051 i żeby wybudzić go z power-down potrzebne jest zewnetrzne przerwanie. W idle-mode duzo nie zaoszczędzam - z 1.4 mA spada do 1.24mA

    Aha, no i ostatnio doszła jeszcze kontrola napięcia baterii

    Pozdrawiam
  • #19
    Ch.M.
    Level 27  
    Prosisz o pomoc a nie odpowiadasz na pytania. napisz co to za odbiornik, bo nie wiem jakim interfacem przesyłasz dane. Przerwania moga być od pinów sprzętowo oznaczonych INT lub połowicznie sprzętowych PINCHANGE - chociaż tego nie sprawdzałem jeszcze :)

    w każdym razie odsyłam do strony 40 http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf

    I nie musisz używać wersji P procka bo nie on zeżre Ci najwięcej baterii, tylko peryferia. Spokojnie możesz go taktować 1MHz czy nawet 8MHz jeśli obliczenia będą faktycznie skomplikowane. Ważniejsze by powyłączać zbędne peryferia. Do tego celu masz specjalne rejestry w tym procku :)
    Jak już zaczniesz się bawić WDT to napotkasz pewnie na kolejne niespodzianki, ale to już inna bajka :>

    jeśli boisz się wchodzenia w usypianie i inicjalizacji watchdoga to może odpal procek z wbudowanego generatora 128kHz co uprości mocno kod i zapewni wydatek prądowy na jądro ledwo 60uA.
  • #20
    FlashCode
    Level 13  
    Chopin - właśnie myśle nad Attiny26 - przy 3V i 1MHz ma pobór typ 700uA a w IdleMode - 180uA. Z Idle do Active mode moge go sobie wybudzać jego timerem co jakiś czas, czyli średni pobór bedę miał na poziomie 400-500uA.

    Ch.M. juz co objaśniam - odbiornik to ATA5745 433MHz. Odbiera sygnały z systemów zdalnego sterowania. I problem w tym że w czasie gdy może odebrać sygnał radiowy bierze 4mA a w stby - dziesiątki uA. Ma końcówkę "enable" która steruje praca/stby. I gdy jes w stby - nic nie odbierze.
    Musi mieć "nadzorcę" który co pewien czas go wybudzi, po jakieś 1ms sprawdzi czy na wyjściu jest sygnał, obrobi go i dalej da odbiornik w stby. Czyli odpada ze procek dostanie sygnał przerwania od odbiornika.

    Obecnie stosunek czasu pracy do stby odbiornika mam okolo 1:15

    P.S. Właśnie doczytałem że Atmege też mogę wyprowadzać z Idle jego Timerem
  • #21
    Ch.M.
    Level 27  
    Tiny 26 troszkę starawy jest, ale nienajgorszy. Jakim zegarem go popychasz?
  • #22
    FlashCode
    Level 13  
    Attiny lub Atmege zapuszcze kwarcem 1MHz -popularna wartość i zupelnie wystarczająca. Obecnie 8051 chodzi na 4MHz czyli dokladnie rdzen na 333kHz i w zupelnosci wystarcza żeby czasowo dokładnie obrobić sygnał 10Kbits/s
  • #23
    Ch.M.
    Level 27  
    to nie chodzi o to by obrobić, tylko przy takim słabym ratio jak Twoje, należy na dłużej uśpić procka, czyli szybciej przetworzyć dane. AVR maja to do siebie, że korzystniej jest podkręcić zegar (dokonac obliczeń) i zużyć mniej prądu niż przy wolniejszym zegarze. Popatrz na wykresy prąd-zegar.
    Swoją drogą to kiepskie radio wybrałeś, ale rozumiem, że tak ma byc :)
    Najkorzystniejsza metoda dla Ciebie to kręcić tiny wyżej i usypiać (power down). Wybudzać możesz procka timerem, ale nie zwykłym tylko od watchdoga :)
  • #24
    FlashCode
    Level 13  
    Takie ratio wyszło mi przy testach - muszę miec gwarancje że jak największa liczba danych z eteru będzie prawidłowo odebrana, przy odrzuceniu szumu cyfrowego.

    Dobry pomysł Ch.M. z tym watchdogiem :D
  • #25
    Ch.M.
    Level 27  
    FlashCode wrote:
    Info na wejściu kodowane jest w Manchester, długość - 256bitów (bity startowe, preambuła itd)(...)

    Rozumiem że w tym "itd" zawiera się CRC?
    Z reguły takie proste radyjka kiepsko sobie radzą przy max bitrate. Zastanów się (jeśli musisz mieć gwarancje odbioru) czy nie lepiej wysyłać dane wolniej lub dwukrotnie: raz szybko, a później wolno i w razie błędnego odczytu pierwszej paczki rekonfigurujesz odbiornik i przełączasz na wolny tryb. To już niuanse ale zawsze może komus się przydać :)
    Pozdro
  • #26
    FlashCode
    Level 13  
    Jak wygląda sygnał radiowy - to juz mam niestety narzucone odgórnie. Przy obecnej (pierwszej) konfiguracji wygłada to tak :
    1Kbits/s, 128 bitów startowych, 4 synchronizujące, 4 startowe, i 120 danych z czego 8 bitów zaraz po tsratowych oznacza rozkaz np otwórz/zamknij, 8 na końcu otwórz/zamnknij dla drugiego kanału, a reszta pomiędzy nimi to dla mnie treść o znikomym znaczeniu - zmienna wartosć - zmienny kod w systemach zdalnego sterowania.

    Cały sygnał ma dł. ok. 256ms, startowe trwają ok 128ms i zeby dobrze "wstrzelic się" i zdekodować resztę muszę odbiornik uruchamiać co maks 110ms żeby wpasował się w część startową sygnału. Procek bada czasy impulsów i jak pasują podejmuje dalszą akcję nad sygnałem. Jak nie pasują- wyłącza dbiornik znowu na 110ms. Rysunkami mniej więcej jest to ładnie rozrysowane w którejś nocie ATA5745

    W drugiej konfiguracji ma być 10Kbits/s .
    Wierz mi Ch.M. , próbowałem różne odbiorniki w cenie poniżej 2 Euro/stz (MICREL, ST, HOPE i hybrydowe) i ATA5745 wypada najlepiej :)
  • #27
    Ch.M.
    Level 27  
    aa cena, to wszystko tłumaczy :)
    Swoją drogą możesz miec problemy z zasięgiem w budynkach, do tego celu bardziej nadaje się fala dwa razy krótsza, a i można w określonym paśmie wysłać nawet 1/4W spełniając pewne wymagania :)
    Powodzenia
  • #28
    PiotrPitucha
    Level 34  
    Witam
    Bierzesz Atmegę z literką P na końcu.
    Piszesz porządny program.
    I jedziesz na jednej baterii kilka lat.
    Skontaktuje się z firmą JM, prowadzili kurs na temat pisania programów pod procesory serii P, pobory prądu schodziły grubo poniżej oczekiwań, średnio przy usypianiu między transmisją i pomiarami były to setki nA a nie uA.
    Piotr

    Ps. Jak znajdę płytkę to wyśle Ci prezentację, doświadczenia robione były na płytce z procesorem Atmega 169P, wyświetlaczem LCD, miernikiem temperatury na termistorze i Transceiverem ISM, dodatkowo na płytce była pamięć DataFlash i bateryjka taka jak w BIOS komputera ( CR2032 ), ten zestaw przy pełnej optymalizacji mógł pracować kilka lat.
    Co do pomysłu z WD to nie jest najlepszy, przy optymalizacji poboru mocy jest to jeden z elementów które należy wyłączyć,
  • #29
    Ch.M.
    Level 27  
    PiotrPitucha wrote:
    Witam
    Bierzesz Atmegę z literką P na końcu.

    Lol, odkrywcze, ale jakbyś pofatygował się czytać temat od początku to byś wiedział, że chodzi o ekonomię także.
    PiotrPitucha wrote:

    Co do pomysłu z WD to nie jest najlepszy, przy optymalizacji poboru mocy jest to jeden z elementów które należy wyłączyć,

    Bez komentarza, albo skomentuję, a jak chcesz wybudzić układ? Znowu to co wyżej: nie doczytałeś tematu i nie wiesz, że nie mamy możliwości innego budzenia jak timerem.

    Emocje przed meczem, czy co ? I tak wynik był przesądzony ;P
    Pozdrawiam
  • #30
    Fyszo
    Level 37  
    Kilka czynników tu gra rolę:
    - układ 'na miare' i nic więcej
    - fabryczna niska 'energobiorność'
    - optymalizacja kodu.
    Nie pchaj się w super rozbudowane peryferia (każde musi być zasilane) i nawet jak można wyłączyć to po co ci one.
    Typy energooszczędne podawali koledzy wyżej (każdy ma swoje preferencje)
    Algorytm gra tu najważniejszą rolę, także zamiast szukać oszczędności w strukturze układu, ucz sie optymalizacji kodu i algorytmów.