Spisu treści:

Model uniwersalnego wyłącznika: 10 kroków
Model uniwersalnego wyłącznika: 10 kroków

Wideo: Model uniwersalnego wyłącznika: 10 kroków

Wideo: Model uniwersalnego wyłącznika: 10 kroków
Wideo: przegląd zabezpieczeń / wyłączników nadprądowych ESek, ESów - eaton, hager, abb czy może bemko? 2024, Listopad
Anonim
Model uniwersalnego wyłącznika
Model uniwersalnego wyłącznika

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

Podział górnego modułu VHDL
Podział górnego modułu VHDL
Podział górnego modułu VHDL
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

Podział modułu wyłącznika awaryjnego VHDL
Podział modułu wyłącznika awaryjnego VHDL
Podział modułu wyłącznika awaryjnego VHDL
Podział 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

Podział modułu przerzutnika VHDL
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

Podział modułu piezoelektrycznego brzęczyka VHDL
Podział modułu piezoelektrycznego brzęczyka VHDL
Podział modułu piezoelektrycznego brzęczyka VHDL
Podział 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

Konstruowanie podstaw 3
Konstruowanie podstaw 3
Konstruowanie podstaw 3
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

Implementacja plików VHDL do Basys 3
Implementacja plików VHDL do Basys 3
Implementacja plików VHDL do Basys 3
Implementacja plików VHDL do 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

Korzystanie z płytki Basys 3
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: