Back

Wokół Arduino. Właściwości wejść i wyjść

Już wiemy, że Arduino (konkretnie Arduino Uno) to dość prosty układ elektroniczny z popularnym mikroprocesorem Atmela. Aby uzupełnić podstawową wiedzę, powinieneś przyswoić sobie szereg ważnych informacji dotyczących końcówek wejścia/wyjścia (I/O).

Właściwości wejść i wyjść

Zawsze należy pamiętać, że w przytłaczającej większości układów CMOS na wejściach są wbudowane diody chroniące przed ładunkami statycznymi i że ze względów technologicznych każde wejście ma jakąś niedużą pojemność (rzędu 10pF), co przedstawione jest na rysunku 1.

Rysunek 1

Wskutek obecności diod ochronnych nie można na wejścia/wyjścia podawać napięć „zewnętrznych” wyższych niż napięcie zasilania i niższych niż potencjał masy, bo przez te diody ochronne popłynie prąd, który może nawet uszkodzić procesor.
Problem ten nabiera szczególnego znaczenia w układach zasilanych dwoma napięciami 5V i 3,3V. Ale wtedy w grę wchodzą też dodatkowe okoliczności i kwestiom tym poświęcimy oddzielny artykuł. A na razie sprawa prostsza, podstawowa: w Arduino Uno na piny nie wolno podawać napięć wyższych niż 5V. Podanie z zewnątrz napięcia wyższego może spowodować przepływ dużego prądu, podwyższenie napięcia zasilania i dosłowne spalenie układów scalonych.

W układach CMOS, a więc także w procesorze Atmega328 w Arduino, piny pracujące jako wejścia mają ogromną rezystancję wejściową. Jest to ogromną zaletą. Rysunek 2 pokazuje obwody obecne w każdym uniwersalnym pinie wejścia/wyjścia mikrokontrolerów Atmel. Niektóre piny mają jeszcze bardziej rozbudowane, dodatkowe obwody współpracujące z różnymi peryferiami procesora. Przykładowo w procesorze ATmega328 piny portu PC0…PC5 (w Arduino oznaczone A0…A5) dodatkowo mogą być dołączone przez multiplekser do wejścia 10-bitowego przetwornika ADC, co jak wiemy, pozwala mierzyć wartość napięcia z rozdzielczością 0,1%.

Rysunek 2

Wszystkie piny Arduino, także wejścia analogowe A0…A5, mogą być skonfigurowane jako wejścia cyfrowe, rozróżniające stany 0, 1 (LOW, HIGH). Warto wiedzieć, że na każdym „cyfrowym” wejściu pracuje bufor – przerzutnik Schmitta, który zapewnia histerezę. Według katalogu histereza nie jest mniejsza niż 5% napięcia zasilania, co przy Vcc = 5V dawałoby minimum 250mV. Jak jednak wskazuje rysunek 3, przy zasilaniu 5V typowo powinna ona być większa, nieco ponad 0,5V, czyli ponad 10%. Obecność histerezy jest istotną zaletą i warto ją wykorzystywać!

Rysunek 3

W skomplikowanej scalonej strukturze z rysunku 2 mogą się pojawić szkodliwe prądy upływu. Producent ostrożnie i asekuracyjnie gwarantuje, że będą mniejsze niż 1 mikroamper, ale w praktyce są wielokrotnie mniejsze od tej wartości. Dzięki temu przy pracy w roli wejścia pin ma bardzo dużą rezystancję wejściową, rzędu wielu, nawet setek megaomów. Także gdy piny A0…A5 pracują „analogowo” jako wejścia przetwornika ADC, też mają ogromną rezystancję, typowo 100 megaomów.

Z jednej strony to bardzo dobrze, ale duża rezystancja wejściowa oznacza, że na pinach mogą się łatwo indukować napięcia zakłócające, zwłaszcza o częstotliwości sieci 50Hz, a to może zwiększyć pobór prądu związany z niepotrzebnym przełączaniem tranzystorów w obwodach wejściowych.

Oporność wejść analogowych

Wprawdzie typowa statyczna rezystancja wejściowa przetwornika ADC jest ogromna (100MΩ), ale pracuje tam też kondensator próbkująco-pamiętający (CSHsample and hold) dołączany przez rezystancję 1…100kΩ. Warto pamiętać, że maksymalna częstotliwość pracy przetwornika ADC wynosi od 15000 do 80000 pomiarów na sekundę. W sumie chodzi o to, że pomiędzy kolejnymi pomiarami ADC kondensator CSH musi się w pełni naładować, dlatego zaleca się, żeby rezystancja wewnętrzna źródła sygnału mierzonego nie była większa niż 10kΩ.

Ponieważ pojemność CSH (14pF) i „zawsze obecna” pojemność wejściowa CI (ok. 10pF) są małe, problem dotyczy często powtarzanych pomiarów ADC, w praktyce głównie sytuacji, gdy chcemy rejestrować wyższe napięcia zmienne i na wejściu analogowym dodajemy dzielnik według rysunku 4. Aby nie stwarzać problemu, dolny rezystor dzielnika (RA) nie powinien być większy niż 10kΩ.

Rysunek 4

Przy okazji warto podkreślić, że zwykle nie musimy żmudnie dobierać dzielnika o „okrągłej” wartości tłumienia, ponieważ i tak musimy skalibrować taki woltomierz programowo. W bardziej precyzyjnych zastosowaniach należy tylko zadbać, by rezystory miały jak najmniejszy współczynnik cieplny. Popularne rezystory metalizowane często mają współczynnik cieplny 50…100ppm/°C (0,005…0,01%/°C), czyli dużo gorszy niż współczynniki termiczne wielu zewnętrznych źródeł napięcia odniesienia. W wątpliwych przypadkach warto sprawdzić stabilność cieplną dzielnika napięcia, podgrzewając go pomału np. suszarką do włosów.

Właściwości wyjść

Jeżeli chodzi o pracę pinów w roli wyjść, to trzeba pamiętać, że tranzystory w stopniu wyjściowym portu procesora mają niezerową rezystancję w stanie włączenia. Rezystancja RDSon tranzystorów wyjściowych typowo wynosi około 25 omów, więc w pierwszym przybliżeniu końcówkę pracującą jako wyjście można traktować zgodnie z rysunkiem 5.

Rysunek 5

Jak pokazuje pochodzący z katalogu rysunek 6, „idealnie czyste” stany logiczne, równe potencjałowi masy i napięcia zasilania, wystąpią na wyjściach wtedy, gdy nie będzie płynął tam prąd.

Rysunek 6

Według katalogu prąd wyjściowy, czy to wpływający, czy wypływający, nie powinien przekraczać 40mA dla pojedynczego pinu, 100mA dla wszystkich pinów danego portu oraz w sumie 200mA dla wszystkich pinów procesora. Należy dążyć do tego, żeby prądy poszczególnych wyjść były mniejsze niż 40mA, najlepiej by nie przekraczały 10mA. W zastosowaniach, gdzie precyzyjnie mierzone mają być wartości analogowe, trzeba jeszcze bardziej minimalizować wszelkie prądy, by zmniejszyć spadki napięć na rezystancjach ścieżek/przewodów oraz by zmniejszyć wzrost temperatury wynikający z grzania się struktury mikroprocesora.

Piotr Górecki