Tartalomjegyzék:

L I G H T S: 5 lépés
L I G H T S: 5 lépés

Videó: L I G H T S: 5 lépés

Videó: L I G H T S: 5 lépés
Videó: Как подключить провода в светодиодной люстре. Перепутаны цвета в люстре. 2024, November
Anonim
LÁMPÁK
LÁMPÁK

Ennek a végső projektnek az volt a célja, hogy valami olyat hozzon létre, amely a fenntarthatóságra összpontosít, és megvalósítja a digitális tervezési koncepciókat, és ennek érdekében úgy döntöttem, hogy tervezek egy skálázható energiatakarékos rendszert a vhdl használatával, és a Basys 3 tábla számára készült (Artix-7 35T sorozat)). Méretezhető, mert tetszőleges számú érzékelő helyezhető el egy helyiségben, és tetszőleges számú rendszer helyezhető el egy épület vagy egy ház körül. Ez a rendszer elméletileg több ezer dollárt takarít meg a kereskedelmi épületekben, és csökkenti az energiafogyasztás nagy százalékát a kisebb lakóközösségekben azáltal, hogy megvalósítja az aktív és passzív vezérlésű fények, mozgásérzékelők, hét szegmenses kijelzőn megjelenő időzítők és vezérlőkapcsolók. Ez a példa egyetlen rendszerrel foglalkozik, három mozgásérzékelővel, egy főkapcsolóval, egy kézi/normál kapcsolóval, négy hét szegmenses kijelzővel és egyetlen lámpával, amelyet a rendszer vezérel.

Például egy kiválasztott helyiségben több mozgásérzékelőt helyeznek el (ebben a példaképben három van), és mindegyik jelet küld (1), ha mozgást észlel, és (0), ha nem. Ha a mozgásérzékelők közül legalább az egyik mozgást észlel, akkor a lámpák bekapcsolnak, ha még nincsenek bekapcsolva, és bekapcsolva maradnak, ha már be vannak kapcsolva. A mozgásérzékelők bármikor nem észlelnek semmit, egy időzítő elkezd visszaszámlálni egy meghatározott ideig (kódban állítható), és a lámpák folyamatosan égnek, amíg az időzítő visszaszámlál. Miután az időzítő befejezte a visszaszámlálást, az időzítő leáll, és a fények kialszanak. Ha legalább egy mozgásérzékelő mozgást észlel az időzítő visszaszámlálása közben, az időzítő leáll és visszaáll. És ha legalább egy mozgásérzékelő mozgást észlel, amikor a lámpák ki vannak kapcsolva, a lámpák azonnal bekapcsolnak.

Ennek a rendszernek két üzemmódja van, az egyik a fent leírt időzítővel, a másik pedig, ahol van egy kapcsoló, amely manuálisan vezérli a lámpákat (figyelmen kívül hagyva az érzékelőket). Van egy főkapcsoló, amely lehetővé teszi a felhasználó számára, hogy kiválassza, melyik módot kívánja használni, attól függően, hogy melyik érzi úgy, hogy összességében több energiát takarít meg. Volt. Egy olyan helyiség, mint a folyosó, előnyös lehet a passzív időzítő módban- a felhasználók nem biztosak abban, hogy mikor fognak áthaladni az emberek, de a be- és kikapcsoláskor a világítás be- és kikapcsolása kellemetlenséget okozna, míg egy ilyen helyiség mivel a hálószoba egyetlen felhasználóval jobb lenne manuálisan működtetni. A főkapcsoló pedig hasznos lehet olyan esetekben, mint például ha a hálószobában élő személy hosszabb időre távozik, akkor a főkapcsolót ki lehet kapcsolni, és az időzítő üzemmód hatékonyabban működik az energiatakarékosság érdekében.

Tehát ebben a rendszerben két állapotgép van, az egyik a fő állapotgép, a másik pedig a visszaszámláló. A fő állapotgépnek öt állapota van így definiálva: 1. "világít, mozgás észlelve" (id = 000), 2. "világít, mozgást nem észlel" (id = 001), 3. "világít, nincs mozgás észlelt "(id = 010), 4." manuálisan bekapcsolva "(id = 011) és 5." manuálisan kikapcsolva "(id = 100). Ennek a fő állapotú gépnek négy bemenete van: a főkapcsoló (ms), a kézi/normál kapcsoló (ns), egy jel, amely magas, ha legalább egy kapcsoló mozgást észlel, és egyébként alacsony (orx), valamint egy jel, amely magas, ha az időzítő elkészült, és egyébként alacsony (td). A fő állapotgépnek két kimenete van: lámpák (fények) és egy jel, amely jelzi, hogy mikor kell bekapcsolni a visszaszámlálót (időzítő) vagy (t) (mindkettőt felcserélve használják).

A második állapotgép, a visszaszámláló 12 állapotot tartalmaz: 10 közülük azonosítót tartalmaz a hét szegmens megjelenített számához- „seg 10” (id = 1010), „seg 9” (id = 1001), […], „Seg 2” (id = 0010), „seg 1” (id = 0001) és a másik két állapot egyaránt nullát jelenít meg, ami azt jelzi, hogy az időzítő ki van kapcsolva- tehát ott van az első üres „blank 1” (id = 1111)) és a második üres "üres 2" (id = 0000). A visszaszámláló egy bemenettel rendelkezik: időzítő (t), és három kimenet: a binárisan megjelenített szám, négy bit (bin) és egy jelzés, amely jelzi, hogy az időzítő kész (td).

1. lépés: Fekete doboz diagram

Fekete doboz diagram
Fekete doboz diagram

Ez egy áttekintés a teljes rendszer működéséről, és egy fekete doboz diagrammal van leírva.

  • Az óra a fő állapotgép és a hét szegmenses dekódoló órajelzésére szolgál; lassabb óra szükséges a lefelé mutató számlálóhoz, ezért van egy óraosztó modul, amely felveszi az óra bemenetét, és lassabb órát ad le a lefelé számláló számára.
  • A burkolat közbenső változója (orx) a mozgásérzékelőkhöz van kötve, és magas lesz, ha legalább az egyik érzékelő észlel valamit, és egyébként alacsony; ennek logikai egyenlete csak orx = s (2) vagy s (1) vagy s (0).
  • A fő fsm vezérli, hogy a rendszer milyen általános állapotban van, a bemenetektől (orx, ms, ns, td) függően, és kimeneti állapotát (sm) mutatja, leegyszerűsítve a két jelzéssel (időzítő és fények).

    • (időzítő) egy burkolójel, amelyet bemenetként a lefelé számláló fsm -hez küld, és a fő fsm aktuális állapota vezérli. Azt jelzi, hogy mikor kell bekapcsolni az időzítőt.
    • (fények) egy burkolójel, amelyet a LED vezérlésére használnak, és a fő fsm aktuális állapota vezérli.
  • A lefelé számláló fsm szabályozza, hogy a hét szegmens mit jelenítsen meg a bemenet (időzítő) függvényében, és a jelenlegi állapotot (sd) adja le, leegyszerűsítve a két jelzéssel (td és bin).

    • (td) egy burkolójel, amelyet bemenetként a fő fsm -nek küld, és a lefelé számláló fsm aktuális állapota vezérli. Visszacsatolójelként működik, amely jelzi, hogy az időzítő elkészült.
    • (bin) egy négybites burkolójel, amelyet négy bit nullával („0000” és bin) összefűznek, és a kombinált nyolc bitet elküldik a (q), egy nyolcbites burkolójelnek, amelyet viszont a hét szegmens dekódoló (ALU_VAL) alatt.
  • A hét szegmenses modul ugyanaz, mint a Polylearn esetében; fő bemenetei 8 bites számot (bin) - (ALU_VAL) vesznek fel, hogy négy különböző hét szegmenses kijelzőn jelenjenek meg, a kimenetek (SEGMENTS) a csomagolójelhez (seg) és (DISP_EN) a csomagoláshoz (disp_en) segítségével.

    • Mivel két vagy több hét szegmenses kijelző nem tud egyszerre különböző számjegyeket megjeleníteni, órára van szükség a négy szakasz átváltásához, a megfelelő számjegy megjelenítésével egyidejűleg minden egyes segédeszköz külön -külön történő bekapcsolásához, és a kellően gyors kerékpározás A ssegs egyszerre jelenik meg.
    • (előjel és érvényes) állandóak a program során, így a (jel) állandóan alacsony, az (érvényes) pedig állandóan magas.
    • (ALU_VAL) a burkolójelet (q) veszi fel bemenetként, amely a hét szegmenses kijelzőn binárisan megjeleníteni kívánt számot jelöli.
    • A kimenet (SEGMENTS) egy nyolc bites burkolójelhez (seg) és (DISP_EN) egy négybites burkolójelhez (disp_en) kerül.
  • Van egy D flip flop modul is, amely nincs kifejezetten feltüntetve az ábrán, de szükséges a két állapotgéphez, mint almodul, és segíti az állapotok átmenetét szinkronban.

    • (3) ezek közül szükséges a fő fsm -hez, mivel 2^(3) = 8> 5 állapot a kódoláshoz
    • (4) ezek közül szükséges a lefelé számláló fsm -hez, mivel 2^4 = 16> 12 állapot a kódoláshoz

2. lépés: Állapotgépek

Állami gépek
Állami gépek

A két állapotgép megfelelő megtervezéséhez az egyes állapotokat világosan meg kell határozni, annak kimeneteivel és állapotával, amelyre átmegy a lehetséges lehetséges bemenetek alapján.

A fő fsm állítások:

„Fény világít, mozgást észlelt” (id = 000)

A fények világítanak, legalább az egyik mozgásérzékelő érzékeli a mozgást, ezért az orx -nak magasnak kell lennie, és az ms be van kapcsolva.

  • Kimenetek: fények = 1 és időzítő = 0
  • Ez az állapot marad, ha ms = 1 és orx = 1.
  • A „világít, nem észlel mozgást” állapotba kerül, ha ms = 1 és orx = 0.
  • „Kézi bekapcsolás” állapotba kerül, ha ms = 0 és ns = 1.
  • „Kézi kikapcsolás” állapotba kerül, ha ms = 0 és ns = 0.

„Világít, nem észlel mozgást” (id = 001)

A fények be vannak kapcsolva, egyetlen mozgásérzékelő sem érzékel mozgást, ezért az orx -nak alacsonynak kell lennie, és az ms be van kapcsolva. Szintén ezen állapot elején a magasra állított időzítő azt mondja a visszaszámláló fsm -nek, hogy kezdje el a visszaszámlálást, folytatja a visszaszámlálást, és leállítja a visszaszámlálást, amint a visszaszámláló fsm közli ezzel az fsm -vel, hogy befejezte a számlálást.

  • Kimenetek: fények = 1 és időzítő = 1.
  • Ez az állapot marad, ha ms = 1 és orx = 0 és td (az időzítő kész) = 0.
  • A „világít, mozgás észlelve” állapotba kerül, ha ms = 1 és orx = 1.
  • A „kikapcsolt fények, mozgás nem észlelhető” állapotba kerül, ha ms = 1 és orx = 0 és td = 1.
  • „Kézi bekapcsolás” állapotba kerül, ha ms = 0 és ns = 1.
  • „Kézi kikapcsolás” állapotba kerül, ha ms = 0 és ns = 0.

„Kialszik a fény, nem észlel mozgást” (id = 010)

A fények ki vannak kapcsolva, semmilyen mozgás nem érzékelhető egyetlen mozgásérzékelőből sem, és az időzítő befejezte a visszaszámlálást, ezért az orx -nak alacsonynak kell lennie, az ms be van kapcsolva, és a td ki van kapcsolva.

  • Kimenetek: fények = 0 és időzítő = 0.
  • Ez az állapot marad, ha ms = 1 és orx = 0.
  • A „világít, mozgás észlelve” állapotba kerül, ha ms = 1 és orx = 1.
  • A „manuálisan bekapcsolt” állapotba kerül, ha ms = 0 és ns = 1.
  • „Kézi kikapcsolás” állapotba kerül, ha ms = 0 és ns = 0.

„Kézi bekapcsolás” (id = 011)

A fények be vannak kapcsolva, a mozgásérzékelők irrelevánsak, ezért az ms kikapcsol, az ns pedig be van kapcsolva.

  • Kimenetek: fények = 1 és időzítő = 0.
  • Ez az állapot marad, ha ms = 0 és ns = 1.
  • „Kézi kikapcsolás” állapotba kerül, ha ms = 0 és ns = 0.
  • Az állapotba lép: „a fények ki vannak kapcsolva, nem észlel mozgást, ha ms = 1.

„Kézi kikapcsolás” (id = 100)

A fények ki vannak kapcsolva, a mozgásérzékelők irrelevánsak, ezért az ms ki van kapcsolva, az ns pedig ki.

  • Kimenetek: fények = 0 és időzítő = 0.
  • Ez az állapot marad, ha ms = 0 és ns = 0.
  • „Kézi bekapcsolás” állapotba kerül, ha ms = 0 és ns = 1.
  • Az állapotba lép: „a lámpák ki vannak kapcsolva, nem észlel mozgást, ha ms = 1.

A lefelé mutató számláló kijelenti:

„Seg 10” (id = 1010)

A hét szegmenses kijelzőn 10 látható.

  • Kimenetek: bin = “1010” és td = 0.
  • A „seg 9” állapotba kerül, ha az időzítő = 1.
  • Az „üres 2” állapotba kerül, ha az időzítő = 0.

„Seg 9” (id = 1001)

A hét szegmenses kijelzőn 9 látható.

  • Kimenetek: bin = “1001” és td = 0.
  • A „seg 8” állapotba kerül, ha az időzítő = 1.
  • Az „üres 2” állapotba kerül, ha az időzítő = 0.

(A "Seg 8" és a "Seg 2" állapotok kihagyásra kerülnek, mert ugyanazt a mintát követik, mint a "Seg 10" és a "Seg 9", és nincs szükség magyarázatra)

„Seg 1” (id = 0001)

A hét szegmenses kijelzőn 1 látható.

  • Kimenetek: bin = “0001” és td = 0.
  • Az „üres 2” állapotba kerül az óra következő emelkedő szélén (nincs szükség bemenetre).

„Üres 2” (id = 1111)

A hét szegmenses kijelzőn 0 látható. A második üres állapot célja, hogy a biztonság érdekében külön állapot legyen, amikor td = 1.

  • Kimenetek: bin = “1111” és td = 1.
  • Az „üres 1” állapotba kerül az óra következő emelkedő szélén (nincs szükség bemenetre).

„Üres 1” (id = 0000)

A hét szegmenses kijelzőn 0 látható. Ez az az állapot, amelyben a rendszer akkor marad, amikor a fő állapotú gép „ki van kapcsolva, nem érzékel mozgást” állapotban van.

  • Kimenetek: bin = “0000” és td = 0.
  • A „seg 10” állapotba kerül, ha az időzítő = 1.

3. lépés: állapítsa meg a gépi igazságtáblázatokat, gerjesztési egyenleteket és kimeneti egyenleteket

Állapotgép igazságtáblázatok, gerjesztési egyenletek és kimeneti egyenletek
Állapotgép igazságtáblázatok, gerjesztési egyenletek és kimeneti egyenletek
Állapotgép igazságtáblázatok, gerjesztési egyenletek és kimeneti egyenletek
Állapotgép igazságtáblázatok, gerjesztési egyenletek és kimeneti egyenletek
Állapotgép igazságtáblázatok, gerjesztési egyenletek és kimeneti egyenletek
Állapotgép igazságtáblázatok, gerjesztési egyenletek és kimeneti egyenletek
Állapotgép igazságtáblázatok, gerjesztési egyenletek és kimeneti egyenletek
Állapotgép igazságtáblázatok, gerjesztési egyenletek és kimeneti egyenletek

A következő lépés az, hogy igazságtáblázatokat készít a két állapotgéphez, valamint gerjesztési egyenleteket és kimeneti egyenleteket minden fsm -hez. Minden fsm gerjesztési egyenlethez minden egyes következő állapotkódhoz kell rendelni egyenleteket az aktuális állapot és annak bemeneti jelei tekintetében. Minden fsm kimeneti egyenlethez minden egyes kimeneti jelhez egyenletek szükségesek az aktuális állapot szempontjából. Az ábrázolt igazságtáblákból mind a négy egyenletkészlet levonható. (qn minden állapotgép következő állapotkódolt bitje, q pedig az aktuális állapot)

(000) egyenértékű q (2) 'q (1)' q (0) ', és (0000) egyenértékű q (3)' q (2) 'q (1)' q (0) '

(pl. (0101) q (3) 'q (2) q (1)' q (0) és (110) q (2) q (1) q (0) ')

Gerjesztési egyenletek a fő fsm -hez:

  • qn (2) = (ms) '(ns)
  • qn (1) = (ms) '(ns)' + (ms) (orx) '[(td) (001) + (010)] + (ms) [(011) + (100)]
  • qn (0) = (ms) '(ns)' + (ms) (orx) '[(000) + (td)' (001)]

A fő fsm kimeneti egyenletei:

  • fények = (000) + (001) + (100)
  • időzítő = (001)

Gerjesztési egyenletek a lefelé számláló fsm -hez:

  • qn (3) = t [(0000) + (1010) + (1001) + (0001)]
  • qn (2) = t [(1000) + (0111) + (0110) + (0101) + (0001)]
  • qn (1) = t [(0000) + (1000) + (0111) + (0100) + (0011) + (0001)]
  • qn (0) = t [(1010) + (1000) + (0110) + (0100) + (0010) + (0001)]

A lefelé számláló fsm kimeneti egyenletei:

  • td = (1111)
  • bin (3) = (1010) + (1001) + (1000) + (1111) + (0000)
  • bin (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
  • bin (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
  • bin (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)

4. lépés: Csomagolás, almodulok és korlátozás

Amint azt az 1. lépésben már kifejtettük, ezek a modulok szükségesek ehhez a projekthez, és mindegyik össze van kötve a "final_proj.vhd" nevű csomagolómodullal. A "Basys3_Master.xdc" elnevezésű korlátozó fájl arra szolgál, hogy az összes burkoló bemenetet és kimenetet kapcsolja a kapcsolókhoz, a hét szegmenshez és a Basys 3 alaplap I/O portjához. A főkapcsolónak a tábla kapcsolójának kell lennie, amely a legközelebb van a vezetékek bekötési oldalához, a normál/kézi kapcsoló a második legközelebbi, és a három mozgásérzékelőt képviselő három kapcsoló a három kapcsoló közvetlenül a normál/kézi kapcsoló mellett. Az összes kód (logikai egyenletek, modul deklarációk stb.) Már ki van írva a fájlokba, így nem kell mást írnia ahhoz, hogy ez működjön.

5. lépés: I/O portok a LED -ekhez

I/O portok LED -hez
I/O portok LED -hez
I/O portok LED -hez
I/O portok LED -hez

Ennek a projektnek az utolsó lépése, hogy egy led segítségével meg kell mutatni, hogy a (fények) valóban be- és kikapcsolnak -e. A kábelezés a két képen látható. Győződjön meg arról, hogy van egy soros ellenállás a leddel (legalább 330 ohm), hogy ne égesse el a LED -et, és győződjön meg arról, hogy a led hosszú csapja ugyanabba a csatlakozóba van csatlakoztatva a basys táblán, mint a piros vezeték a jobb szélső), és a rövidebb csap csatlakozik a földhöz, ugyanaz a hüvelyfej, mint a fekete vezeték (fent, második balról).

Ajánlott: