Spisu treści:
- Krok 1: Importuj podane pliki VHDL
- Krok 2: Podział górnego modułu VHDL
- Krok 3: Awaria modułu wyłącznika awaryjnego VHDL
- Krok 4: Podział modułu przerzutnika VHDL
- Krok 5: Awaria modułu piezoelektrycznego brzęczyka VHDL
- Krok 6: Podział pliku ograniczeń VHDL
- Krok 7: Konstruowanie podstaw 3
- Krok 8: Implementacja plików VHDL w Basys 3
- Krok 9: Korzystanie z płytki Basys 3
- Krok 10: Pochwal się
Wideo: Model uniwersalnego wyłącznika: 10 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Czy masz dość sprawdzania, czy wszystkie światła w twoim domu są wyłączone przed pójściem spać? Czy chciałbyś, żebyś mógł wyłączyć wszystkie światła na raz bez żadnego zamieszania? W celu zaoszczędzenia energii i czasu postanowiliśmy stworzyć system, który teoretycznie mógłby zamknąć cały dom na raz.
Wymodelowaliśmy dowód tej koncepcji, używając kilku diod LED i płytki drukowanej bases 3, i stworzyliśmy projekt, który dezaktywowałby wszystkie diody LED za naciśnięciem przycisku. Model ten mógłby być również zastosowany do rzeczywistego systemu oświetlenia domowego, chociaż wymagałby bardziej skomplikowanego okablowania i modyfikacji danych plików VHDL.
Krok 1: Importuj podane pliki VHDL
Aby nasz model działał poprawnie, musisz pobrać oprogramowanie, które daje instrukcje płytce Basys 3.
Najpierw musisz pobrać narzędzie do syntezy, aby zaimplementować pliki vhdl na sprzęcie. Jeśli chcesz mieć pewność, że cały kod w pełni odtworzy nasz projekt bez konieczności jakichkolwiek modyfikacji, zalecamy skorzystanie z Vivado 2016.2. Po zainstalowaniu Vivado możesz stworzyć projekt i pobrać nasze pliki źródłowe. Dodaj je jako źródła do swojego projektu, nie zapomnij również dodać pliku z ograniczeniami!
Następnie wyjaśnimy, co robi każdy z plików źródłowych. Pomiń kroki od 2 do 6, jeśli chcesz tylko przejść do fizycznej konstrukcji urządzenia.
Krok 2: Podział górnego modułu VHDL
Najwyższym modułem projektu jest to, co łączy wszystkie poszczególne moduły składowe z używanym sprzętem. Jak widać na górze mamy moduły killSwitch i buzzerControl zdefiniowane jako komponenty.
Dolna sekcja określa, w jaki sposób te moduły są ze sobą połączone. Podłączyliśmy cztery diody LED do płyty i powiązaliśmy je z modułami killSwitch od dev0 do dev3. Mamy zdefiniowane cztery moduły killSwitch, ponieważ potrzebujemy jednego do zarządzania stanem każdej podłączonej diody LED. Każdy z tych modułów wykorzystuje sygnał zegara i przycisku, który stworzyliśmy w górnej definicji modułu, a także odpowiednie sygnały wejściowe przełącznika i urządzenia wyjściowe.
Moduł sterowania brzęczykiem na dole aktywuje brzęczyk po naciśnięciu uniwersalnego przycisku wyłączenia. Jak widać do modułu sterującego brzęczykiem przekazywany jest sygnał zegara i przycisku jako wejścia. Jest również przekazywany do fizycznego wyjścia brzęczyka, aby odpowiednio go kontrolować.
Krok 3: Awaria modułu wyłącznika awaryjnego VHDL
Kill Switch to uniwersalny przycisk wyłączania, a moduł zajmuje się przede wszystkim podłączaniem go do innych elementów obwodu, aby po jego naciśnięciu wszystkie światła zgasły.
Podczas gdy górny moduł obsługuje łączenie fizycznego sprzętu z oprogramowaniem, moduł killSwitch obsługuje główną logikę każdego urządzenia. Moduł przyjmuje wejścia dla sygnału zegara, uniwersalny przycisk wyłączania oraz przełącznik dwustabilny urządzenia. W zamian kontroluje stan pinu urządzenia, do którego jest podłączony.
W części kodu dotyczącej architektury widzimy, że jest ona zależna od modułu dFlipFlop do przechowywania pamięci. Widać również, że zadeklarowaliśmy cztery sygnały, które będą używane do połączenia przerzutnika, a także do realizacji naszych instrukcji logicznych. W sekcji behawioralnej kodu utworzyliśmy instancję modułu dFlipFlop i przypisaliśmy nasze sygnały I/O do portów.
Stąd główna część naszej logiki leży w wartościach sygnałów dla invertState i isDevOn. Nasza logiczna podstawa dla urządzenia jest następująca: „Za każdym razem, gdy przełącznik zostanie wciśnięty, światło zmieni stan włączenia/wyłączenia. Za każdym razem, gdy przycisk zostanie naciśnięty, a dioda LED jest aktualnie włączona, dioda LED zmieni swój stan na wyłączony. Z tych dwóch stwierdzeń możemy ekstrapolować, że stan diody LED powinien być XOR przełącznika i naszego elementu pamięci. W ten sposób zmiana w którymkolwiek z nich odwraca diodę. Widać to zaimplementowane w sygnale isDevOn. Stan diody LED dla elementu pamięci jest obsługiwany przez nasz sygnał invertState. Jeśli dioda się świeci, a przycisk jest wciśnięty, nasz element pamięci zaktualizuje się i odwróci swój stan. To również odwraca stan diody LED.
Krok 4: Podział modułu przerzutnika VHDL
Jednym z problemów z naszym projektem był fakt, że po użyciu wyłącznika, światła, które były wcześniej włączone, mogą wymagać dwukrotnego przełączenia, aby powrócić do pozycji włączonej. Z biegiem czasu byłoby to dość niewygodne dla ludzi. Udało nam się obejść tę niedogodność, włączając do naszego projektu „Flip Flop”, element obwodu zdolny do przechowywania informacji. Teraz system pamięta, czy włącznik światła był wcześniej włączony, więc po ponownym przekręceniu włączy się niezależnie od swojej początkowej pozycji.
Kod VHDL używa instrukcji if i else w celu utworzenia Flip Flop jako komponentu w naszym projekcie obwodu. Gwarantuje to, że gdy sygnał zegara przechodzi ze stanu niskiego do wysokiego, gdy żarówka jest włączona i gdy wyłącznik jest wciśnięty, wyjście przerzutnika nadpisuje jego wejście. Gdy dane wejściowe są nadpisywane, przerzutnik jest odwracany.
Krok 5: Awaria modułu piezoelektrycznego brzęczyka VHDL
Ten plik jest nieco zbędny, jeśli chodzi o projekt sprzętu, ale jest niezbędny, aby górny moduł i pliki ograniczeń działały płynnie. Jeśli zdecydujesz się nie używać brzęczyka Piezo, pobierz ten plik, ale nie podłączaj brzęczyka do płyty Basys 3.
Brzęczyk Piezo, po naciśnięciu przycisku wyłączania, odtworzy dwutonowy dźwięk, który zapewni użytkownikowi dźwiękową informację zwrotną, że przycisk został naciśnięty. Zaimplementowaliśmy to behawioralnie w VHDL za pomocą serii instrukcji if w strukturze procesu. Zaczęliśmy od utworzenia wartości całkowitej, aby śledzić liczbę zmian zegara. Po rozpoczęciu procesu program spędza pierwsze pół sekundy (od 0 do 50 milionów taktów) na wyprowadzaniu nuty A z częstotliwością 440 Hz. Osiąga się to poprzez odwracanie sygnału brzęczyka piezo co parzystą wielokrotność taktu zegara 227272 z funkcją modulo. Liczba ta jest wynikiem podzielenia sygnału zegarowego płytki (100 MHz) przez żądaną częstotliwość (400 Hz). W ciągu drugiej połowy sekundy (50 do 100 milionów tyknięć zegara) płyta wyprowadza nutę F o częstotliwości 349,2 Hz tą samą metodą, co poprzednio. Po jednej sekundzie program nie zwiększa już zmiennej zegara i przestaje wysyłać cokolwiek z brzęczyka piezoelektrycznego. Ponowne naciśnięcie uniwersalnego przycisku wyłączania resetuje tę liczbę do 0, ponownie uruchamiając cykl szumów.
Krok 6: Podział pliku ograniczeń VHDL
Plik z ograniczeniami informuje Vivado, jakich urządzeń na płycie Basys 3 używamy. Dostarcza również Vivado nazw, które nadaliśmy urządzeniom w naszym kodzie. Vivado potrzebuje tych informacji, aby wiedzieć, jak połączyć nasze elementy logiczne z fizycznym sprzętem. Plik z ograniczeniami zawiera dużą ilość zakomentowanego (nieużywanego) kodu. Te wiersze kodu odnoszą się do urządzeń na płycie, których nie używamy.
Urządzenia, których używamy, to cztery przełączniki wejściowe oznaczone na płycie jako V17, V16, W16 i W1. Używamy również uniwersalnego przycisku wyłączania, oznaczonego U18. Styki wyjściowe dla naszych czterech podłączonych diod LED to JB4, JB10, JC4 i JC10. Dla naszego brzęczyka piezzo używamy pinu wyjściowego JA9.
Jak wspomnieliśmy w zestawieniu na górze modułu, jeśli chcesz dodać do płyty dodatkowe diody LED lub inne urządzenia, musisz zwiększyć zakres sygnałów sw i dev, dodać więcej modułów killSwitch i połączyć je ze sobą. Następnie musisz połączyć te nazwy zmiennych ze sprzętem urządzenia za pomocą pliku ograniczeń. Można to zrobić poprzez odkomentowanie (ponowne włączenie) linii kodu powiązanych z pinami, których chcesz użyć, a następnie dodanie nazwy powiązanej z nim zmiennej w górnym module. Odpowiednią składnię do tego można skopiować z używanych przez nas urządzeń. Aby poznać nazwy pinów, których chcesz użyć na płycie, zapoznaj się z przewodnikiem referencyjnym Baasys 3 tutaj.
Krok 7: Konstruowanie podstaw 3
Będziesz musiał podłączyć diody LED do właściwych portów I/O Basys 3. Postępuj zgodnie z załączonymi rysunkami, aby określić, jakie są prawidłowe porty, ponieważ jeśli podłączysz diodę LED do niewłaściwego portu, nie zaświeci się. Jeśli zdecydowałeś się podłączyć brzęczyk piezoelektryczny, musisz również podłączyć go do odpowiednich portów I/O.
Gdy płyta jest gotowa, podłącz ją do komputera za pomocą kabla USB.
Krok 8: Implementacja plików VHDL w Basys 3
Teraz, gdy twoja tablica jest gotowa, a twój kod jest gotowy, możesz w końcu złożyć model.
Po skonfigurowaniu projektu w Vivado musisz kliknąć przycisk „Generuj strumień bitów”, aby skompilować kod, zanim zostanie przesłany na forum. Jeśli w tym momencie pojawi się komunikat o błędzie, musisz dokładnie sprawdzić, czy Twój kod dokładnie odpowiada naszemu. Kiedy mówię dokładnie, mam na myśli nawet średniki lub rodzaje nawiasów, które są używane. Po pomyślnym napisaniu strumienia bitów przejdź do menedżera sprzętu w Vivado i kliknij przycisk „Otwórz cel”, a następnie natychmiast kliknij „Zaprogramuj urządzenie”. Twoja płyta Basys 3 powinna być teraz w pełni funkcjonalna.
Krok 9: Korzystanie z płytki Basys 3
Teraz, gdy płyta Basys 3 działa i została zaprogramowana do reprezentowania naszego modelu, musisz wiedzieć, jak z niej korzystać.
Każdy z czterech przełączników najbardziej po prawej stronie steruje jedną z diod LED, pstrykanie nimi spowoduje włączenie lub wyłączenie diody LED. Jeśli dioda LED nie aktywuje się, sprawdź, czy jesteś podłączony do właściwego portu I/O i czy dioda LED działa w pierwszej kolejności.
Jeśli chcesz wyłączyć wszystkie diody naraz, musisz nacisnąć środkowy przycisk w zestawie pięciu przycisków pokazanych powyżej.
Krok 10: Pochwal się
Model służy jako zgrabna mała nowość, którą możesz zademonstrować przed przyjaciółmi i rodziną. Teoretycznie można go również użyć do wdrożenia uniwersalnego wyłącznika w domowej instalacji elektrycznej, jeśli zastąpisz diody LED przewodami prowadzącymi do światła. Chociaż jest to możliwe, nadal musielibyśmy to odradzać. Próba zmiany okablowania bez pomocy elektryka może wyrządzić poważne szkody sobie lub domowi.
Zalecana:
Podłączanie wyłącznika zasilania do Creator Ci40: 4 kroki
Podłączanie wyłącznika zasilania do Creator Ci40: Wbudowanie płyty Creator Ci40 do obudowy może wymagać zdalnego sterowania zasilaniem płyty. Ta instruktażowa pokazuje, jak dodać pasywne i aktywne opcje sterowania zasilaczem DC do płyty. Czego będziesz potrzebować 1 x Creator
Tworzenie uniwersalnego pilota z NodeMCU: 7 kroków
Tworzenie uniwersalnego pilota z NodeMCU: W tym projekcie zbudujemy uniwersalny pilot zdolny do klonowania i wysyłania sygnałów w podczerwieni. Do kontrolowania całego tego procesu zostanie użyty interfejs sieciowy. NodeMCU w połączeniu z fotoreceptorem podczerwieni będzie odpowiedzialny za klonowanie
Ładna i tania obudowa do wyłącznika zasilania: 4 kroki (ze zdjęciami)
Ładna i tania obudowa do wyłącznika zasilania: Części elektryczne powinny:- nie tylko działać, - wyglądać naprawdę ładnie (WAF - współczynnik akceptacji kobiet!) - tanio- wykonywać mniej pracy…Poszedłem na zakupy…Gdy chcesz zapytać ja: „Jak to podłączyć? a jak to podłączyć do arduino, malina…? ” potem to
Instalacja wyłącznika gitarowego: 5 kroków
Instalacja wyłącznika na gitarze: Przewodnik po montażu wyłącznika/odcięcia wyłącznika na gitarze. Wiem, że istnieje już przewodnik po tym, ale mam nadzieję, że dam moje dwa centy na zainstalowanie wyłącznika awaryjnego
Hakowanie uniwersalnego zasilacza IGo: 4 kroki
Hakowanie twojego uniwersalnego zasilacza IGo: iGo tworzy uniwersalny zasilacz do zasilania takich rzeczy jak laptopy, wyświetlacze i urządzenia mobilne. Oferują szeroką gamę wymiennych końcówek do podłączenia konkretnego urządzenia. Znalazłem monitor LCD Apple Studio Display u lokalnego