Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałLudwika Kobel Został zmieniony 9 lat temu
1
Historia pewnego LedCuba, czyli od projektu do realizacji
Grzegorz 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 LedCuba
LedCube 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 LedCuba
LedCube 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 LedCuba
LedCube 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 LedCuba
LedCube 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ści
Koszt – 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? Koszt
Dylemat 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 projektowania
Trzeba 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 audio
Schemat blokowy Matryca led 8x8x8 Sterownik warstw Klawiatura Konwerter USBRS232 CPU Sterownik warstwy Wzmacniacz i normalizator audio Gniazdo USB Gniazdo 3,5mm
18
Poszukiwanie elementów
Elementy, 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 elementami
Podczas 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 Lutowanie
Niestaranność podczas lutowania może spowodować późniejszą frustrację, podobnie jak wykonanie przeskalowanej płytki
27
Pierwsze uruchomienie
Test dymu i ognia Kontrola napięć W przypadku LedCuba nie da się wykonać więcej testów bez zaprogramowanego procesora
28
Program dla procesora AVR
Program 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 PC
Napisany 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 deweloperskie
Czasem 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 szeregowy
Wyświetlacz alfanumeryczny Wyświetlacz led Diody led Buzzer Przyciski
42
Wyposażenie Gniazdo karty SD
Wyjś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 USB
Oprogramowanie 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 AVR
32kB 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 <iom32.h> #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> int main(void) { //inicjalizacja (ustawienie wartości początkowych rejestrów, zmiennych itp.) while(1) //nieskończona pętla główna programu } return 0;
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 Register
Bity 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 C
Ustawianie bitu GIFR |= (1<<INTF0); Zerowanie bitu GIFR &= ~(1<<INTF0); Odczyt bitu bit = ((GIFR >> INTF0) & 0x1);
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 C
Konfiguracja 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 szeregowy
Do 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ę
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.