1 Historia pewnego LedCuba, czyli od projektu do realizacjiGrzegorz Marczak
2 Czym jest LedCube? Jest to trójwymiarowy wyświetlacz złożony z diod świecących, mający kształt sześcianu. Różne projekty tego wyświetlacza można znaleźć w Internecie, ale zwykle nie są większe niż 5x5x5. A my chcieliśmy zrobić coś więcej…
3 Czym jest LedCube?
4 Czym jest LedCube?
5 Czym jest LedCube?
6 Ewolucja naszego LedCubaLedCube v1 Prosty, jednokolorowy wyświetlacz o wymiarach 8x8x8, sterowany przez komputer (port drukarkowy) Zbudowany w celu przetestowania układu sterowania diod oraz przećwiczenia montażu mechanicznego kostki
7 Ewolucja naszego LedCubaLedCube v2 Wersja dwukolorowa, działająca autonomicznie lub sterowany przez komputer (przez USB), wyposażony w gniazdo kart SD, możliwość podłączenie padów od PS2, analizator widma audio i wiele innych peryferiów Nigdy nie wyszedł z fazy prototypu
8 Ewolucja naszego LedCubaLedCube v2.5 Uproszczona wersja v2 Dwukolorowy, działający autonomicznie lub sterowany przez USB, wyposażony w analizator widma audio i zegar czasu rzeczywistego Powstał w kilku egzemplarzach, eliminujących wcześniej wykryte błędy i dodających usprawnienia Tej wersji będzie poświęcona dalsza część prezentacji
9 Ewolucja naszego LedCubaLedCube v3 Obecnie w końcowej fazie projektowania Dwukolorowy, 8x8x8, wyposażony w zmodyfikowany układ sterowania diod i wydajniejszy procesor (ARM) Możliwość sterowania pilotem zamiast niewygodnej miniaturowej klawiatury
10 Założenia LedCube ma być duży: co najmniej 8x8x8 ( projekty z Internetu mają zwykle rozmiary 3x3x3 lub 4x4x4, czasem 5x5x5) Ma być dwukolorowy (większość projektów to wyświetlacze jednokolorowe) Ma mieć możliwość pracy autonomicznej lub być sterowany przez PC (większość projektów z Internetu ma ograniczoną funkcjonalność)
11 Dylematy i wątpliwościKoszt – same tylko 512 diod to ok. 300zł Wątpliwości dotyczące jasności świecenia i możliwości mrugania diod Wątpliwości na temat połączeń diod led: czy wyświetlacz złożony z 512 bipolarnych diod da się w ogóle wysterować? Czy możliwe jest zapalenie dowolnej kombinacji diod? A może zbudować większy?
12 A dlaczego nie większy? KosztDylemat między brakiem osi symetrii i jej posiadaniem Wymiary nie będące wielokrotnością liczby 4 to marnotrawstwo elementów i komplikacja układu: czasem trzeba dołożyć nowy układ scalony tylko po to, żeby sterował 1 diodą, mimo że jest przewidziany do sterowania 8 lub 16
13 Etapy projektowania LedCuba v2.5
14 Pomysł Najważniejszy etap projektowaniaTrzeba podjąć decyzję mające wpływ na wszystkie dalsze prace Nasz pomysł: zbudować wyświetlacz większy i posiadający więcej możliwości niż podobne konstrukcje w Internecie
15 Założenia związane z funkcjonalnościąWyświetlanie dowolnych efektów graficznych w kolorze czerwonym, zielonym i żółtym Wyświetlanie tekstu w dowolnym z kolorów Wyświetlanie godziny i daty Funkcja analizatora widma dla sygnału audio Komunikacja i możliwość sterownia przez PC
16 Schemat blokowy Podział układu na bloki pełniące dające się wydzielić i nazwać funkcje. Pozwala oszacować złożoność układu i zaplanować jego podział na mniejsze części
17 Wzmacniacz i normalizator audioSchemat blokowy Matryca led 8x8x8 Sterownik warstw Klawiatura Konwerter USBRS232 CPU Sterownik warstwy Wzmacniacz i normalizator audio Gniazdo USB Gniazdo 3,5mm
18 Poszukiwanie elementówElementy, które chcemy użyć powinny: Być dostępne w Polsce Mieć rozsądną cenę Posiadać parametry wymagane przez projekt Ich stopień złożoności nie powinien być zbyt duży w stosunku do funkcji, którą mają pełnić w naszym projekcie Ich obudowy muszą umożliwiać wykonanie płytki i montaż w warunkach amatorskich Powinny być ze sobą możliwie kompatybilne
19 Do naszego projektu wybraliśmy:Bipolarne diody RG o średnicy 5mm Atmega328p – jako mikrokontroler sterujący Rejestry przesuwne 74HC595 – jako sterowniki warstwy i wyboru warstwy Tranzystory BC327 i BC237 jako stopnie mocy sterownika wyboru warstwy FT232RL jako konwerter RS-232 USB LM358 – jako normalizator i wzmacniacz audio
20 Schemat ideowy Wizualna prezentacja połączeń między elementamiPodczas jego tworzenia dobiera się również ostateczne (choć nie zawsze) wartości elementów Błąd na tym etapie zwykle uniemożliwia dalszą pracę
21 Schemat ideowy
22 Projekt płytki PCB Płytka pozwala na pewny i niezawodny montaż elementów Jej projekt musi spełniać liczne wymagania: ścieżki powinny być możliwie krótkie szerokość ścieżek powinna być zależna od natężenia prądu, który ma nimi płynąć szerokość ścieżek i odstępy między nimi muszą umożliwiać wykonanie płytki w warunkach amatorskich Do zaprojektowania płytki wykorzystaliśmy program Eagle
23 Projekt płytki PCB – płyta główna
24 Projekt płytki PCB – płyta wyświetlacza
25 Wykonanie płytki PCB Wykorzystujemy technikę termotransferową i środek trawiący B327 + kilka samodzielnie opracowanych rozwiązań, będących tajemnicą Jesteśmy w stanie uzyskać ścieżki i odstępy między nimi o szerokości do 1/4 mm
26 Montaż PCB Wycięcie PCB Wiercenie otworów LutowanieNiestaranność podczas lutowania może spowodować późniejszą frustrację, podobnie jak wykonanie przeskalowanej płytki
27 Pierwsze uruchomienieTest dymu i ognia Kontrola napięć W przypadku LedCuba nie da się wykonać więcej testów bez zaprogramowanego procesora
28 Program dla procesora AVRProgram steruje pracą wyświetlacza, odpowiada za komunikację z komputerem PC Napisany w całości w języku C Jeśli coś nie działa to może to być wina tego programu, niestarannego montażu płytki bądź błędu na poziomie schematu połączeń
29 Program dla PC Steruje pracą kostki w trybie komunikacji z PCNapisany w C# Pozwala na wyświetlanie dowolnych efektów na wyświetlaczu oraz programowanie tekstów i godziny dla trybu autonomicznego
30 Filmiki
31 Dlaczego LedCube v3? Podczas budowy i uruchamiania wersji v2.5 stwierdziliśmy, że: Użyty przez nas procesor ma za małą moc obliczeniową Diody świecą za słabo Prędkość transmisji szeregowej między PC i cubem jest za mała Zmiana trybu pracy przyciskami to totalny niewypał
32 Czy można zacząć przygodę z elektroniką prościej?
33 ZALEŻY, czasem się nie da
34 Ale czasem się da
35 Od czego to zależy? Przede wszystkim od:Stopnia komplikacji projektu: w przypadku prostych projektów część kroków można pominąć „Typowości” jego podzespołów: niekiedy niektóre bloki można zastąpić „gotowcami” Wymagań odnośnie budowy mechanicznej, czyli przede wszystkim wyglądu, wielkości czy obudowy: urządzenie brzydkie, bez obudowy można wykonać szybciej i mniejszym nakładem pracy niż „ozdobne” Doświadczenia
36 Zestawy deweloperskieCzasem w przypadku potrzeby wypróbowania rozwiązania nie wymagającego specjalistycznych lub nietypowych peryferiów i gdy sam projekt nie jest zbyt skomplikowany, można skorzystać z pomocy zestawów deweloperskich
37 Czym jest zestaw deweloperski?Jest to urządzenie składające się z modułów (bloków), z których można zbudować określone urządzenia wkładając w to minimalną pracę. W przypadku zestawów deweloperskich do projektowania i testowania urządzeń mikroprocesorowych praca ta ogranicza się zwykle do wykonania połączeń złączkami kablowymi, podłączeniu zasilania i napisaniu programu. Dowolność w sposobie łączenia bloków pozwala na zbudowanie prototypu możliwie podobnego do finalnego urządzenia.
38 Zestaw deweloperski Libra firmy Atnel
39 Zestaw deweloperski Libra firmy Atnel
40 Zestaw deweloperski Libra firmy Atnel
41 Wyposażenie Mikrokontroler Atmel Atmega32 Port szeregowyWyświetlacz alfanumeryczny Wyświetlacz led Diody led Buzzer Przyciski
42 Wyposażenie Gniazdo karty SDWyjście mocy (np. do podłączenia silnika krokowego) Zegar RTC Termometr Odbiornik podczerwieni Zasilacz Wyprowadzone wszystkie porty I/O
43 Możliwości Programowanie przez USBOprogramowanie może być pisane w dowolnym języku Zasilanie z zasilacza lub przez USB (wszystkie elementy posiadają podłączone zasilanie)
44 Czym jest mikrokontroler, czyli serce LedCuba i zestawu Libra?Układ scalony zawierający w sobie następujące elementy: Jeden lub kilka rdzeni obliczeniowych Pamięć (operacyjną, programu, ustawień) Peryferia wewnętrzne Porty I/O Liczniki Moduły komunikacyjne (port szeregowy, I2C itp.) Przetworniki ADC, komparatory itp.
45 Parametry Atmega32 8–bitowy rdzeń o architekturze AVR32kB pamięci programu (Flash) 2kB pamięci operacyjnej (SRAM) 1kB pamięci nieulotnej (EEPROM) 3 liczniki (2x 8-bitowy, 1x 16-bitowy) 32 porty I/O Taktowanie: 0..16MHz Wydajność do 16MIPS
46 W czym można napisać program dla mikrokontrolera AVR?Wybór jest stosunkowo niewielki: assembler, C/C++ lub basic, w praktyce: assembler i C (C++ wymaga zbyt dużo zasobów, basic ma ograniczoną liczbę narzędzi) Większy wybór… nie jest potrzebny Zaleta małego wyboru języków: mnóstwo przykładów i poradników do nich
47 Przykładowy program w C#include
48 Co należy zrobić z takim kodem C?Skompilować (np. kompilatorem gcc z pakietu WinAVR) Tak uzyskany plik .bin lub .hex załadować do pamięci Flash procesora za pomocą programatora i np. programu avrdude
49 Kontrola procesora przez programistęDo tego celu wykorzystuje się rejestry funkcyjne Każdy rejestr jest komórką pamięci: liczbą całkowitą Każdy z 8 bitów rejestru może (ale nie musi) pełnić jakąś funkcję Z poziomu programu rejestry są dla nas predefiniowanymi zmiennymi całkowitymi
50 Przykłady rejestrów GIFR - General Interrupt Flag RegisterBity 0..4 – nieużywane Bit 5: INTF2 – przerwanie INT2 on/off Bit 6: INTF1 – przerwanie INT1 on/off Bit 7: INTF0 – przerwanie INT0 on/off UDR - USART I/O Data Register Bity 0..7 – 8-bitowa liczba do wysłania/odebrania Zapis do tego rejestru powoduje wysłanie liczby przez port szeregowy
51 Dostęp do bitów w języku CUstawianie bitu GIFR |= (1<
52 Odmierzanie czasu Do odmierzania czasu, zliczania impulsów itp. wykorzystuję się liczniki Są to specjalne zmienne (8- lub 16-bitowe, kontrolowane przez układ zegarowy procesora, który może zmieniać ich stan w górę lub w dół Programista może je Odczytać i zapisać, w tym wyzerować Zmienić tryb pracy Obsłużyć zdarzenie związane z ich pracą (przepełnienie, osiągnięcie wybranej wartości itp.)
53 Zdarzenia Procesor może reagować na różne zdarzenia. Jest to tzw. obsługa przerwań. Ich źródła: Wejścia INT0, INT1, INT2 Liczniki Moduły komunikacyjne (np. port szeregowy) Przetwornik ADC i komparator analogowy Moduły obsługi pamięci
54 Obsługa przerwań w języku CKonfiguracja i zezwolenie na przerwanie (zależne od typu przerwania) poprzez ustawienie odpowiednich bitów w rejestrach funkcyjnych Funkcja obsługi przerwania w języku C ISR(NAZWA_SYGNAŁU) //np. SIG_OVERFLOW0 { //kod obsługujący przerwanie }
55 Porty I/O Każdy port może być wejściem lub wyjściem (zależnie od konfiguracji). Po włączeniu peryferiów wewnętrznych mikrokontrolera niektóre porty mogą nie być dostępne. Do sterowania portami I/O służą 3 rodzaje rejestrów: PORTx – stan wyjściowy (0-niski, 1 – wysoki) PINx – stan wejściowy (0-niski, 1 – wysoki)ss DDRx – kierunek (0 – wejście, 1 – wyjście)
56 Komunikacja z komputerem przez port szeregowyDo komunikacji z komputerem przez RS-232 służy urządzenie peryferyjne USART Komunikacja z komputerem polega na zapisywaniu wartości do rejestru UDR, a odbieranie danych – odczyt wartości rejestru UDR Zarówno wysłanie danych, jak i odebranie może być źródłem zdarzenia (przerwania)
57 Więcej na zajęciach praktycznych Dziękuję za uwagę