niedziela, 20 marca 2011

Datasheet: Mikrokontroler - prądy pinów I/O


Autor: Dondu

Artykuł jest częścią cyklu: Mikrokontroler vs prądy pinów

Maksymalny prąd pinu I/O jest zależny od struktury wewnętrznej mikrokontrolera. Jak przekonasz się poniżej, występuje tutaj szereg przypadków, bardzo indywidualnych dla danej rodziny mikrokontrolerów.


Mikrokontroler AVR ATmega

W przypadku mikrokontrolerów AVR np. ATmega8 mamy na pozór prostą sytuację, gdyż wszystkie piny I/O (wejścia/wyjścia) mają określony prąd maksymalny na poziomie 40mA:


Datasheet AVR ATmega8: Maksymalne dopuszczalne wartości prądów pinów.

Wielu początkujących nie drąży już tematu dalej i nieświadomi zagrożeń, przyjmują tę wartość jako jedyne ograniczenie.

Co dokładnie oznacza ten parametr?

Ni mniej, ni więcej, tylko maksymalny możliwy prąd pinu mikrokontrolera, którego nie wolno przekroczyć niezależnie od kierunku sink, czy source, gdyż grozi to uszkodzeniem mikrokontrolera. Wartość 40mA, to wartość krytyczna i tak powinieneś ją rozumieć:

Datasheet AVR - Ostrzeżenie o możliwości uszkodzenia mikrokontrolera.

Nie oznacza to jednak, że możesz bezkarnie żądać 40mA od każdego pinu.
Nie oznacza także, że możesz jednocześnie wieloma pinami (każdy po 40mA) sterować.

Istotny tutaj jest drugi parametr na powyższym fragmencie datasheet (piny Vcc i GND) oraz kilka innych, o czym piszę w następnych częściach tego cyklu artykułów.



Jak jest więc wartość bezpieczna, zalecana?

Datasheet ATmega8 przyjmuje, że wartościami tymi są wartości testowe określone następująco:
  • 20mA dla zasilania 5V,
  • 10mA dla zasilania 3V
ale nie znajdziesz tego w tabelce, lecz w notkach pod nią:

AVR ATmega8 - wartości testowe (bezpieczne) prądów pinów.

W związku z tym, możesz przyjmować, że takie jak wyżej parametry zapewnią prawidłową i bezpieczną pracę mikrokontrolera.

AVR ATmega8 - deklaracja producenta dot. prądów pinów.



Prawidłową i bezpieczną?

Dlaczego bezpieczną już wiesz, ale co oznacza prawidłową pracę?

Każdy pin I/O ma swój wewnętrzny układ, na którego wyjściu (podczas pracy jako wyjście) znajdują się tranzystory sterujące pinem. Jak każdy element elektroniczny one także mają swoje parametry. Także wewnętrzna struktura mikrokontrolera (połączenia) dodatkowo ograniczają możliwe do osiągnięcia parametry wyjścia mikrokontrolera.

Dlatego też, tranzystory na wyjściu pinu mikrokontrolera mają swoje charakterystyki zależne od:
  • napięcia zasilającego mikrokontroler, 
  • prądu płynącego przez pin,
  • temperatury pracy mikrokontrolera.

Stąd powyżej podane są osobne prądy dla napięć zasilania 5V oraz 3V.

Niektórzy producenci pokazują w datasheet wykresy tych zależności, co znacząco ułatwia dobieranie parametrów pracy mikrokontrolera dla różnych napięć jego zasilania. Wiesz zapewne, że większość mikrokontrolerów może pracować w bardzo szerokich zakresach napięć zasilających, co jest ich kolosalną zaletą.

Przyglądnijmy się więc co pokazują nam wykresy w datasheet ATmega8. 


Dla jedynki logicznej na wyjściu (Source Current):


AVR ATmega8 - Wykres zależności prąd pinu vs napięcie pinu, dla jedynki logicznej na wyjściu (Source Current) przy zasilaniu 5V.

Jak należy czytać powyższy wykres?

Przykład

Jeżeli:
  • zasilasz mikrokontroler napięciem 5V
  • i ma on temperaturę 25°C 
  • i pobierasz z pinu prąd 40mA
to napięcie wyjściowe pinu spadnie do nieco poniżej 4V. Czyli otrzymasz na wyjściu ponad 1V mniej niż się spodziewasz!

Zaraz! Ale tutaj jest pokazane, że można osiągać o wiele więcej niż 40mA, choć spadek napięcia będzie oczywiście odpowiednio większy!

Owszem, tak wynika z pomiarów, na podstawie których te wykresy powstały, ale producent nie daje żadnej gwarancji, że pin nie ulegnie uszkodzeniu.


Kiedy istotny jest problem spadku napięcia na pinie I/O?

Dla nas z tego wykresu istotna jest także inna informacja. Skoro przy dużym prądzie występuje znaczny spadek napięcia na pinie mikrokontrolera, to istnieje możliwość, że stan ten nie zostanie odebrany prawidłowo jako jedynka przez urządzenie, którym pin steruje. W takich przypadkach, należy uwzględnić spadek napięcia pinu i odpowiednio zmodyfikować układ sterowany przez mikrokontroler.


Poniżej ten sam wykres, ale dla napięcia zasilania 2,7V:


AVR ATmega8 - Wykres zależności prąd pinu vs napięcie pinu, dla jedynki logicznej na wyjściu (Source Current) przy zasilaniu 2,7V.




Dla zera logicznego na wyjściu (Sink Current):


AVR ATmega8 - Wykres zależności prąd pinu vs napięcie pinu, dla zera logicznego na wyjściu (Sink Current) przy zasilaniu 5V.

Jak należy czytać powyższy wykres?

Przykład

Jeżeli:
  • zasilasz mikrokontroler napięciem 5V,
  • i ma on temperaturę 25°C,
  • i przez pin zwierający do masy płynie prąd 40mA
to napięcie wyjściowe pinu będzie wynosić około 0,9Vczyli sporo ponad oczekiwane 0V!

W tym przypadku (zero logiczne) także występuje problem związany z możliwością złej interpretacji przez sterowany pinem element elektroniczny. Nie będę go opisywał ponieważ jest on analogiczny do opisu dla przypadku jedynki logicznej (patrz wyżej). Podobnie z prądami większymi od 40mA - wyjaśniłem powyżej.

Poniżej ten sam wykres, ale dla napięcia zasilania 2,7V:


AVR ATmega8 - Wykres zależności prąd pinu vs napięcie pinu, dla zera logicznego na wyjściu (Sink Current) przy zasilaniu 2,7V.




AVR: Pin RESET wyjątkiem

Następna niespodzianka czeka Ciebie w przypadku pinu RESET. Pin ten jest używany podczas programowania wysokonapięciowego (+12V), stąd od strony elektronicznej jest zupełnie inaczej zbudowany. Dlatego też ma zupełnie inną charakterystykę prądową, gdy pracuje jako zwykły pin I/O:


AVR ATmega8 - Pin RESET - Wykres zależności prąd pinu vs napięcie pinu, dla jedynki logicznej na wyjściu (Source Current) przy zasilaniu 5V.


AVR ATmega8 - Pin RESET - Wykres zależności prąd pinu vs napięcie pinu, dla jedynki logicznej na wyjściu (Source Current) przy zasilaniu 2,7V.


AVR ATmega8 - Pin RESET - Wykres zależności prąd pinu vs napięcie pinu, dla zera logicznego na wyjściu (Sink Current) przy zasilaniu 5V.


AVR ATmega8 - Pin RESET - Wykres zależności prąd pinu vs napięcie pinu, dla zera logicznego na wyjściu (Sink Current) przy zasilaniu 2,7V.

Jak rozumieć powyższe wykresy opisałem wcześniej w tym artykule.

Ale to nie koniec niespodzianek, następną z tym związaną opisuję w kolejnych punktach tego cyklu artykułów.


Mikrokontroler PIC

W drugim przykładowym mikrokontrolerze PIC18F87K90, sytuacja jest bardziej skomplikowana:

Microchip PIC18F87K90 - Datasheet - Maksymalne prądy pinów.

Po pierwsze widzimy, że (podobnie jak w ATmega8) prądy sink oraz source są takie same dla poszczególnych pinów I/O.

Po drugie możesz zauważyć, kolosalne różnice pomiędzy dopuszczalnymi prądami dla poszczególnych pinów I/O. Zauważ, że różne porty mają różne wartości prądów, a w przypadku PORTA, istnieje nawet podział na piny numer od 0 do 5 oraz piny 6 i 7.

Różnice są ogromne przez co nie można bezkarnie podłączyć np. standardowej diody LED sterowanej prądem 20mA pod piny, które wytrzymują jedynie 2mA. Należy wtedy zwiększyć rezystor tak, by nie przekroczyć 2mA. Jednakże wtedy możesz nie uzyskać odpowiedniej jasności, co oznacza, że albo diodę LED należy przenieść na inny pin lub zastosować diody o dużej emisji światła przy małym prądzie - na rynku są dostępne. W zakresie liczenia prądów diod pomocny będzie Kalkulator diod LED.

Diody LED są oczywiście tylko przykładem.


Prądy pinów: Spis treści

Brak komentarzy:

Prześlij komentarz