Dlaczego niektóre piny mają znaki „~” obok ich numerów?


32

Szukałem w moim Arduino Uno i zauważyłem, że symbol za pomocą sworzni cyfrowych 11, 10, 9, 6, 5, i 3. Co to znaczy? Czy to wpływa na sposób działania? Czy nie mogę używać tych pinów w pewnych sytuacjach?


19
Symbol tyldy oznacza „w przybliżeniu”. Jak w „to jest w przybliżeniu pin 11”. Podczas procesu MFG piny mogą się nieco przesunąć. Rzadko pin 11 ma dokładnie 11. Zazwyczaj jest to trochę więcej lub trochę mniej niż 11. Szpilki, które mają zwiększoną tendencję do przesuwania się, będą oznaczone symbolem ~. :)

6
@AnnonomusPerson David jest żartobliwy, co nie jest od razu oczywiste, jeśli nie znasz pinoutów i podobnych.
Shamtam

7
@Shamtam: Lub jeśli nie znasz Davida :)
Chris Laplante

Odpowiedzi:


31

Zrelaksować się. Nie martw się Piny te są wywoływane PWMi są takie same jak inne piny, z tym wyjątkiem, że mają „dodatkową premię”.


Niektóre zastosowania ze strony Arduino :

  • Ściemnianie diody LED
  • Symuluje wyjście analogowe. Moc wyjściowa wciąż cyfrowo zmienia się z 0 V na 5 V. Jednak filtr dolnoprzepustowy (kondensator i rezystor) do symulacji napięć analogowych.
  • Generowanie sygnałów audio.
  • Zapewnienie regulacji prędkości obrotowej silników.
  • Generowanie modulowanego sygnału, na przykład do sterowania diodą podczerwieni do pilota.

Jak to działa:

Piny PWM są kontrolowane przez wbudowane timery, które automatycznie przełączają piny z częstotliwością około 490 Hz. „Modulacja szerokości impulsu” (PWM) określa, jak długo pin pozostaje włączony lub wyłączony dla jednego cyklu tej częstotliwości. Może to przyciemnić diodę LED, dając iluzję, że ma połowę jasności jak poprzednio, gdzie naprawdę bardzo szybko miga. Obraz różnych cykli roboczych.

Gdy cykl pracy wynosi 25%, trwa on jedną czwartą czasu. Jeśli użyłeś diody LED, wyglądałaby na około 1/4 jako jasna [daj lub bierz]. (Uwaga: jak niektórzy zauważyli, nie jest to tak naprawdę proporcjonalne, ale zostawmy to w ten sposób dla uproszczenia. EX: 25% nie zawsze jest o 1/4 jasności.)

(Jeśli jesteś naprawdę inteligentny, prawdopodobnie możesz dodać kondensator, aby był również wyjściem analogowym).


Jak użyć tych pinów do wyjścia:

Najpierw musisz zdefiniować pin jako wyjście. Następnie używasz go, analogWrite(ledPin, 128); aby go uruchomić. Jest ledPinto pin PWM, który chcesz uruchomić PWM i 128powinien zostać zastąpiony numerem pomiędzy 0i 255; 0: 0% duty cycle(Obraca sworzeń całkowicie wyłączony) i 255: 100% duty cycle. (całkowicie włącza pin)

Źródło: http://www.arduino-tutorials.com/arduino-pwm/


Dlaczego nie mogę tak szybko włączyć i wyłączyć światła w moim kodzie ?:

Technicznie możesz jednak mieć pewne problemy:

  • Może nie być tak precyzyjny, jak używanie obwodów przewodowych z Arduino
  • Łatwiej jest po prostu wpisać instrukcję zamiast mieć wiele instrukcji „jeśli”

Tak naprawdę nie zrobi to żadnej różnicy, jeśli jedynym celem Arduino jest generowanie sygnałów PWM. Jeśli jednak włączysz jakieś opóźnienia dłuższe niż 50 MS w głównej pętli, zepsuje to taktowanie. Przy podejściu programowym chciałbyś wyeliminować wszelkie funkcje „opóźnienia”, ponieważ Arduino działa tylko na jednym wątku (może zrobić tylko jedną rzecz na raz). Jeśli wiesz, co robisz, nie będzie to miało większego wpływu na ściemnianie światła, ale jeśli masz dodatkowy pin z PWM, po prostu marnujesz czas na podejście programowe.


Jak zauważyli inni:

Nadal potrzebujesz rezystora dla swoich obwodów, aby ograniczyć prąd i napięcie. Nie możesz tego pominąć.


1
Nie mam pojęcia, co rozumiesz przez „moc przetwarzania” (lub cokolwiek, co to wyrażenie ma oznaczać). PWM działa, ponieważ jest uruchamiany przez liczniki czasu, które działają niezależnie od działającego kodu.
baldengineer

@ JamesC4S Mam na myśli, że powoduje to spowolnienie całego kodu, jeśli dodasz opóźnienie i będzie on włączany i wyłączany. Procesor może zrobić tyle rzeczy na sekundę, zanim się przegrzeje, więc kontroluje szybkość.
Anonimowy pingwin

@AnnonomusPerson W odpowiedziach na pytania musisz być bardziej przejrzysty. Nadal nie rozumiem, co twoje wyjaśnienie ma wspólnego z „mocą obliczeniową”. Na przykład możesz pisać procedury PWM, które nie używają opóźnienia (), na przykład za pomocą millis (), co miałoby minimalny wpływ na szybkość wykonywania reszty kodu.
baldengineer

1
@AnnonomusPerson: Powiedziałbym, że istnieją dwa sposoby implementacji PWM w kodzie: albo jeden może mieć procesor wykonujący PWM w pętli, która nie robi nic innego, może tylko zdecydować, kiedy wyjść, albo można mieć przerwanie tykania timera wykonać PWM. W poprzedniej sytuacji procesor nie będzie w stanie nic zrobić podczas działania PWM; w tym ostatnim będą limity dokładności i precyzji czasu PWM. Sprzętowe obwody PWM pozwalają układowi generować czyste przebiegi PWM, które są dokładne z dokładnością do ułamka mikrosekundy podczas wykonywania innych czynności.
supercat

Zwróć uwagę, że dzięki temu, jak działa widzenie, dioda LED o wartości 1/4 DC (lub dowolnym innym współczynniku) niekoniecznie wyświetla odpowiedni ułamek pełnej jasności.
Ignacio Vazquez-Abrams

7

Powszechnym nieporozumieniem na temat styków PWM jest to, że podczas korzystania z PWM nie jest konieczne stosowanie rezystorów ograniczających prąd (na przykład z diodami LED).

To nie jest prawda. Piny PWM należy traktować jak piny cyfrowe, które są włączane i wyłączane automatycznie. Oznacza to, że przechodzą na to samo WYSOKIE napięcie, jak każdy z pozostałych pinów.

Korzystając z diod LED z PWM, nadal musisz używać rezystorów ograniczających prąd. Używając silników z PWM, powinieneś (prawie zawsze) używać tranzystora.


2
@AnnonomusPerson Nie, to nie jest poprawne. Nadal potrzebujesz ograniczników prądu dla diod LED, nawet jeśli masz prawdziwe wyjścia analogowe. Diody LED potrzebują źródeł prądu stałego, a nie źródeł napięcia stałego.
baldengineer 16.04.13

3
Możesz dostać diody LED z wbudowanym rezystorem ograniczającym prąd. Byłem bardzo rozczarowany, kiedy poprosiłem o diodę LED w Maplin i odpowiedni rezystor, który wyłączyłby 12V, gdy powiedzieli mi, że mają diody bezpośrednio z 12V. Heh, poczekaj, aż spróbują spakować ładunek tranzystorów w jednym pakiecie, aby stworzyć bramkę AND lub coś takiego.
Andrew Morton
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.