- Napięcie zasilania: 5 V z USB lub 3,3 V, lub 7…9 V z zasilacza zewnętrznego.
- Mikrokontroler ATmega16U4 lub ATmega32U4.
- Programowanie za pomocą USB.
- Pasuje do płytek stykowych.
Dzięki sprzętowemu USB zyskuje się zgodność ze standardem oraz prostsze i pewniejsze sposoby oprogramowania tego interfejsu. W projekcie zastosowano mikrokontroler ATmega32U4, można również użyć jego odpowiednika o mniejszej pamięci Flash, tj. ATmega16U4. Płytkę drukowaną zaprojektowano w ten sposób, że pasuje do standardowych płytek stykowych umożliwiając szybką budowę prototypów.
Opis urządzenia
Projektując urządzenie starałem się uczynić go jak najbardziej bezpiecznym i uniwersalnym, pamiętając jednocześnie, że jest głównie przeznaczony do umieszczania na płytce stykowej. Nie do przecenienia jest fakt, że układ może być zasilany i programowany bezpośrednio z portu USB komputera, co w wielu sytuacjach upraszcza i uprzyjemnia pracę.
Płytkę prototypową przyłącza się do komputera z wykorzystaniem złącze CON3 typu USB Mini B. Bezpiecznik F1 o wartości 500 mA ma na celu ochronę portu USB komputera w wypadku zwarcia na płytce, gdy jest ona z niego zasilana (500 mA to maksymalna wartość natężenia prądu, którą zgodnie ze standardem można pobierać z portu USB). Wartości rezystancji R1 oraz R2 wzięto z karty katalogowej mikrokontrolera.
Układ IC1 (USB6B1) produkcji STMicroelectronics chroni przed przepięciami mogącymi pojawiać się na linii transmisyjnej. Dzięki wbudowanym diodom zapewnia on ograniczenie wysokich napięć mogących wystąpić na przewodach sygnałowych i zasilających. Poza interfejsem USB, układ nadaje się m.in. do ochrony interfejsu RS-485, a jego podstawową zaletą jest mała ilość miejsca zajmowanego na płytce w porównaniu z rozwiązaniami opartymi o elementy dyskretne.
Kondensatory C1 i C2, C9…C12 i dławik L1 filtrują zaburzenia mogące wystąpić na szynie zasilania. Dławik L1 to tzw. koralik przeciwzakłóceniowy (ferrite bead), którego rolą jest absorbowanie prądu o wysokiej częstotliwości i wydzielanie go w postaci ilości ciepła. Podana na schemacie wartość 60 oznacza, że koralik ma impedancję 60 Ω przy częstotliwości 100 MHz (tę wartość warto zawsze konsultować z dokumentacją danego modelu). Wartości elementów C1, L1, C2 zostały dobrane zgodnie z zaleceniami odszukanymi w dokumentacji firm FTDI [1] oraz Texas Instruments [2].
Płytkę wyposażono w stabilizator napięcia 3,3 V, dzięki któremu jest możliwy wybór napięcia zasilającego mikrokontroler między +3,3 V ze stabilizatora a +5 V pobieranym z USB. Na blok zasilania składają się elementy kondensatory C3 i C4, układ scalony IC2, rezystor R5, dioda D1, złącza J1 i J2. Pojemność kondensatora C3 (10 μF) dobrano zgodnie z zaleceniami dokumentacji mikrokontrolera. Jeśli miałaby być większa, dla zgodności ze standardem USB niezbędne może okazać się zastosowanie soft startu w projektowanym urządzeniu. Pojemność C4 (1 μF) to minimalna zalecana dla IC2. Układ IC2 (MCP1825) wybrano ze względu na relatywnie mały (maks. 220 μA) pobierany prąd, co może mieć znaczenie przy testowaniu urządzeń USB wykorzystujących tryb czuwania, gdy pobierany prąd nie powinien przekraczać wartości 500 μA. Biorąc pod uwagę prąd pobierany przez wbudowane w mikrokontroler rezystory podciągające magistralę USB (ok. 200 μA) dla mikrokontrolera pozostaje około 80 μA. Rola zworki J2 wydaje się oczywista – umożliwia ona odłączenie diody D1 (sygnalizującej zasilanie), pobierającej w tym wypadku znaczny prąd.
Wyboru napięcia zasilającego mikrokontroler dokonuje się zworką J1. Układ zasilania mikrokontrolera wymaga kilku słów wyjaśnienia. Zgodnie ze standardem, napięcie zasilające interfejsu USB wynosi około +5 V, zaś napięcie poziomu wysokiego na liniach sygnałowych (D–, D+) wynosi około +3,3 V, dlatego mikrokontroler ma wbudowany stabilizator napięcia +3,3 V, umożliwiający odpowiednie zasilanie linii sygnałowych. Wejście (UVCC) oraz wyjście (UCAP) tego stabilizatora są dostępne na wyprowadzeniach mikrokontrolera. W prezentowanym urządzeniu, wejście stabilizatora (UVCC) przyłączono na stałe do napięcia VBUS (tj. +5 V z USB), natomiast do wyjścia (UCAP) jest przyłączony jedynie kondensator filtrujący C8. Dzięki takiej konfiguracji, mikrokontroler może generować wymagane poziomy napięć interfejsu USB niezależnie od napięcia zasilającego (VCC). Dzięki zworce J1, napięcie VCC mikrokontrolera może zostać ustalone na +5 V z USB lub +3,3 V ze stabilizatora IC2. Warto zaznaczyć, że mikrokontroler może pracować w różnych konfiguracjach zasilania, które omówiono szerzej w nocie katalogowej układu. Widoczne na rys. 2 wyprowadzenie VBUS umożliwia mikrokontrolerowi detekcję przyłączenia do USB.
Rezonator kwarcowy Q1 oraz kondensatory C6 i C7 ustalają częstotliwość taktowanie mikrokontrolera. Częstotliwość Q1 jest krytyczna i powinna wynosić 8 lub 16 MHz, ponieważ tylko te wartości zapewniają poprawną pracę interfejsu USB.
Dodatkowo, na maksymalną częstotliwość taktowania ma wpływ napięcie zasilające: dla 3,3 V wynosi ona 8 MHz, dla 5 V może to 16 MHz. W trakcie użytkowania nie stwierdziłem niestabilnej pracy mikrokontrolera dla częstotliwości 16 MHz przy zasilaniu 3,3 V, jednak nie należy tego przyjmować za regułę.
Na płytce znalazło się również miejsce dla mikroprzełączników S1…S5 oraz diod LED D2…D4. Przycisk S1 służy do zerowania mikrokontrolera, zaś S2 do uruchamiania bootloadera (sposób programowania opisano dalej). Przyciski ogólnego przeznaczenia S3…S5, podobnie jak diody D2…D4 mogą być wykorzystane dowolnie. Zworki J3…J5 pozwalają na odłączenie diod od mikrokontrolera. Linie przycisków S1 i S2 zostały podciągnięte do plusa zasilania za pomocą rezystorów R3 oraz R4, zaś przyciski S3…S5 mogą być podciągnięte za pomocą rezystorów wbudowanych w mikrokontroler.
Na złącza CON1 i CON2 (goldpin) wyprowadzono wszystkie porty mikrokontrolera, sygnał RESET, zasilanie oraz wejście napięcia odniesienia przetwornika A/C. Rozstaw złączy na płytce drukowanej wynosi 22,86 mm (9×2,54 mm), co pozwala na jej łatwe umieszczenie w otworach płytki stykowej.