poniedziałek, 4 kwietnia 2011

SmartPIP - Wybór mikrokontrolera i jego wersji


Autor: Dondu

Artykuł jest częścią cyklu: SmartPIP - Elektroniczny dręczyciel


Jako, że na blogu w zakresie początkujących z rodziną Atmel AVR używamy mikrokontrolera ATmega8, stąd i nasz SmartPIP będzie oparty o ten układ.

Mikrokontroler ten jest produkowany w kilku wersjach:
  • ATmega8
  • ATmega8L
  • ATmega8A

Napięcie pracy vs częstotliwość zegara

Ponieważ SmartPIP ma być zasilany z baterii o różnych napięciach oraz pracować możliwie jak najdłużej, stąd powinniśmy wybrać odpowiednią jego wersję. Zerknijmy więc na podstawowe parametry dot. zasilania i częstotliwości pracy tych mikrokontrolerów.

Podstawowe dane można znaleźć już na pierwszej stronie datasheet:

dla ATmega8 i ATmega8L:
ATmega8, ATmega8L - Napięcia pracy vs maksymalna częstotliwość zegara.

dla ATmega8A:
ATmega8A - Napięcia pracy vs maksymalna częstotliwość zegara.

Z powyższych informacji możemy od razu odrzucić podstawową wersję, czyli ATmega8, ponieważ nie spełnia założenia o szerokim zakresie napięcia pracy.

Pozostają nam więc do wyboru ATmega8L lub ATmega8A.

W przypadku ATmega8L z powyższego fragmentu datasheet wynika, że będziemy mogli pracować w szerokim zakresie napięć 2,7-5,5V, ale przy maksymalnej częstotliwości zegara wynoszącej 8MHz.

W przypadku ATmega8A z powyższego fragmentu datasheet można wnioskować, że dla najniższego możliwego napięcia pracy 2,7V może on pracować w pełnym zakresie częstotliwości od 0 do 16MHz. Niestety tak nie jest, a w datasheet znajdziemy dodatkową informację w tym zakresie:


ATmega8A - Wykres bezpieczny obszaru pracy dla napięć zasilania i częstotliwości zegara.


Jak widzisz na powyższym wykresie jeżeli chcemy, by urządzenie działało zgodnie z naszymi założeniami przy najszerszym możliwym zakresie napięć, to nie możemy przekroczyć częstotliwości 8MHz, czyli tak samo jak w przypadku ATmega8L.

De facto 8MHz będzie dla nas i tak zbyt dużą częstotliwością, ale o tym napiszę później.

Skoro zarówno wersja A jak i L pracują na napięciu 2,7V z maksymalną częstotliwością 8MHz, a nam potrzeba i tak mniejszej częstotliwości, to z tego punktu widzenia moglibyśmy zastosować dowolną z nich.



Pobierany prąd

Ponieważ dla nas bardzo istotnym jest oszczędzanie energii baterii, stąd popatrzmy na wybrane w powyższym punkcie wersje A i L pod tym kątem. Porównajmy zależności prądu pobieranego w czasie pracy dla różnych częstotliwości w zależności od wersji mikrokontrolera.

ATmega8L:

ATmega8L - Wykres poboru prądu w zależności od częstotliwości pracy zegara mikrokontrolera.


ATmega8A:

ATmega8A - Wykres poboru prądu w zależności od częstotliwości pracy zegara mikrokontrolera.


Poniżej dla obu wersji mikrokontrolera zestawiłem na bazie powyższych wykresów wartości prądu  (w przybliżeniu) jaki będzie pobierany dla skrajnych napięć zasilania i dwóch częstotliwości:


Vcc = 2,7VVcc = 5,5V
Częstotliwość zegaraATmegaLATmegaAATmegaLATmegaA
1MHz1,7mA1,3mA2,7mA1,8mA
8MHz5mA3,5mA13mA8,5mA


Jak widzisz różnice są spore w zależności od wersji mikrokontrolera.

Z powodu specyfiki SmartPIP'a, będzie on usypiany przez blisko 100% czasu. Podstawowym trybem snu będzie Power Save Mode (o tym w następnych artykułach). Jest dla nas więc niezwykle istotne, by sprawdzić jak oba mikrokontrolery pożerają nasz cenny ładunek baterii w tym trybie snu:

ATmega8L:

ATmega8L - Pobór prądu w trybie Power Save.


ATmega8A:

ATmega8A - Pobór prądu w trybie Power Save.


Tak jak poprzednio zestawmy odczytane z wykresów dane:


Napięcie zasilaniaATmegaLATmegaA
2,7V9µA5,5µA
5,5V19,5µA9,6µA


Jak widzisz tutaj także różnice są duże, a nawet bardzo duże.

Jeżeli więc masz wybór, zastosuj ATmega8A.


Artykuł jest częścią cyklu: SmartPIP - Elektroniczny dręczyciel

10 komentarzy:

  1. A może by tak sięgnąć po mikrokontrolery PIC albo inne Atmele? Kod i tak pewno będzie w C, więc hardware nie jest aż tak istotne, nieprawdaż?
    Przykładowo PIC12F1822/16F1823 pracują w zakresie napięć 1,8-5,5V przy zegarze poniżej 16Mhz, pobór prądu Przy zegarze wewnętrznym 31kHz to tylko 45uA dla 1,8V i 60uA dla 5V. Przy 500kHz nie przekracza 350uA w najgorszym przypadku. Dla 4MHz jest to zakres 500uA-1mA przy napięciu 1,8-5V W rybie power down z wyłączonym wszystkim zaś 24uA przy 5V. 26uA przy dodaniu watchdoga. Możnaby się pokusić o małą bateryjkę słoneczną, by znacząco wydłużyć czas pracy(dwukrotnie nawet). Cena też niezła, 12F1822 4-5PLN, 16F1823 6-7PLN.
    Masochista potrzebujący 32 bitów do dręczenia innych może pokusić się o Tiny Gecko czyli małego ARMa Cortex M3 pobierającego 150uA/MHz przy 3V.

    OdpowiedzUsuń
  2. Być może zrobię także wersję na PIC (moje ulubione), ale na razie zacytuję pierwsze zdanie z tego artykułu:

    "Jako, że na blogu w zakresie początkujących z rodziną Atmel AVR używamy mikrokontrolera ATmega8, stąd i nasz SmartPIP będzie oparty o ten układ."

    OdpowiedzUsuń
  3. Ja widzę tylko jeden problem z zaczynaniem od PICów, co wielu może zniechęcić - koszt programatora. Mimo wszystko trza zainwestować w PICKita lub jakiegoś jego klona, bo próbując robić jakikolwiek programator pod port szeregowy człowiek nabawić się może ciężkiego ataku furii. Nie wiem, czy to wina sprzętu, czy oprogramowania, ale jakoś nigdy nie udało mi się takiego programatora uruchomić, a próbowałem kilka razy.

    OdpowiedzUsuń
  4. Ja nie bawiłem się w składanie własnego. Aktualnie mam PICkit 3.

    OdpowiedzUsuń
  5. Panowie. Co by nie pisac jednak atmegi sa popularniejsze. Zamiast zrobic cos na prostym i popularnym procku juz wlaczacie "komplikator".
    dajcie spokoj,ten kurs jest dla poczatkujacych.
    jezeli dla kogos za prosty to niech poszuka innego dostosowanego do wlasnej wiedzy.
    Mi jako absolutnie poczatkujacego atmega8 otpowiada ale PICe tez chetnioe poznam, ale nie w tym temacie.
    Prosze stworzyc zupelnie oddzielny temat poswiecony PICom, poczawszy od budowy programatora, uzywanego softu (darmowego), migajacej diody, a pozniej mozecie na nim sobie robic i karty graficzne go komputera.
    Na wszytko jest czas i miejsce, wiec jezeli dla kogos ten kurs jest juz za latwy, dajcie pouczyc sie mniej wtajemniczonym a nie popisujecie sie wiedza przekraczajaca temat tego kursu.

    OdpowiedzUsuń
  6. Sądzę, że Anonimowy nie to miał na myśli. Po prostu pokazał alternatywę i miał dobre intencje :-)

    OdpowiedzUsuń
  7. Dokładnie, Dondu.
    Swoją drogą, to jeśli kod napisany będzie w C, to zasadniczo nie robi różnicy to, jakiej rodziny jest mikrokontroler, bo jedyne, co się zmieni, to nazwy rejestrów i inne drobiazgi. Tak czy siak będzie trzeba sięgać do noty katalogowej, więc nie widzę wielkiego problemu. Ponadto trzymanie się kurczowo jednego mikrokontrolera bo się jest początkującym skończyć się może tym, iż się początkującym ekspertem od tego mikrokontrolera zostanie, i będzie się robiło wszystko, byle go nie zmienić na inną wersję. Przykładowo jest kilkanaście projektów mierników L/C z użyciem mikrokontrolera i komparatora czy wzmacniacza operacyjnego w roli generatora, ale nie znalazłem jeszcze ani jednego projektu wykorzystującego moduł CTMU w nowszych PICach, czy jego odpowiednika w układach Atmela. Zawsze warto się rozejrzeć za lepszym rozwiązaniem, nawet z samej ciekawości.

    OdpowiedzUsuń
  8. Staram się tak opisywać tematy, by dokładnie wytłumaczyć zasadę na przykładzie ATmega8. Późniejsza implementacja jest już łatwa i zależna od zastosowanego mikrokontrolera, nawet jeśli to jest inny producent.

    Istotą tego cyklu jak i większości artykułów na blogu, jest wskazywanie drogi. Wybraliśmy ATmega8, bo to całkiem dobry mikrokontroler, z darmowymi narządziami i tanim programatorem. Dodatkowo najpopularniejszy wśród polskich początkujących o czym świadczy ilość tematów w dziale AVR w porównaniu z innymi na Elektroda.pl

    Z ciekawostek, to po opublikowaniu cyklu o BLDC, jeden z czytelników napisał do mnie, że dziękuje za tak szczegółowe opisy programu, ponieważ dzięki nim opracował własny w BASCOM - nie spodziewałem się, że to tak zadziała :D

    OdpowiedzUsuń
  9. Bardzo fajny artukuł, gratuluję :)
    Ale czy nie lepiej byłoby użyć kontrolera Attiny ? Ma możliwość wybudzenia przerwaniem watchdoga, oszczędność energii może być jeszcze większa, a ilość pinów w tym przypadku nie byłaby chyba problemem...

    OdpowiedzUsuń
    Odpowiedzi
    1. Zapewne ATtiny byłby dobrą alternatywą, ale tutaj świadomie używam ATmega8, bo jest on podstawą do wszelkich artykułów na blogu, które mają cechy kursu AVR.

      Usuń