Taula de continguts:

L I G H T S: 5 passos
L I G H T S: 5 passos

Vídeo: L I G H T S: 5 passos

Vídeo: L I G H T S: 5 passos
Vídeo: How to Light for Darkness | 5 Cinematography Techniques 2024, De novembre
Anonim
L I G H T S
L I G H T S

El propòsit d’aquest projecte final era crear alguna cosa que se centrés en la sostenibilitat i implementés conceptes de disseny digital i, per fer-ho, vaig decidir dissenyar un sistema d’estalvi d’energia escalable mitjançant vhdl i creat per a la placa Basys 3 (sèrie Artix-7 35T). Es pot escalar perquè es poden col·locar qualsevol nombre de sensors en una habitació i qualsevol d'aquests sistemes es pot col·locar al voltant d'un edifici o d'una casa. El que faria aquest sistema és estalviar teòricament milers de dòlars en edificis comercials i disminuir un gran percentatge del consum d’energia en comunitats residencials més petites mitjançant la implementació d’un sistema connectat de llums controlats activament i passivament, detectors de moviment, temporitzadors que es mostren en pantalles de set segments i interruptors de control. Aquest exemple tracta d'un sol sistema amb tres detectors de moviment, un commutador mestre, un interruptor manual / normal, quatre pantalles de set segments i una sola llum que el sistema controla.

Per exemple, en una habitació escollida, es col·locarien diversos detectors de moviment al voltant (aquest exemple de disseny en té tres) i cadascun enviaria un senyal (1) si detecta moviment i (0) si no. Si almenys un dels detectors de moviment detecta moviment, els llums s’encenen si no estan engegats i es mantenen encesos si ja estan engegats. En qualsevol moment, tots els detectors de moviment no detecten res, un temporitzador comença a comptar enrere durant un temps determinat (ajustable en codi) i els llums es mantenen mentre el temporitzador compta enrere. Un cop el temporitzador finalitza el compte enrere, el temporitzador s’atura i els llums s’apaguen. Si almenys un detector de moviment detecta moviment mentre el temporitzador compta enrere, el temporitzador s’atura i es reinicia. I si almenys un detector de moviment detecta moviment mentre els llums estan apagats, els llums s’encenen immediatament.

Aquest sistema té dos modes, un amb el temporitzador tal com s’ha indicat anteriorment, i un segon en què hi ha un interruptor que controla els llums manualment (ignorant els sensors). Hi ha un commutador principal que permet a l'usuari triar el mode que vol utilitzar en funció del que consideri que estalviarà més energia en general. Ex. Una habitació com un passadís podria beneficiar-se del mode de temporitzador passiu: els usuaris no estan segurs de quan passaran les persones, però encendre i apagar els llums cada vegada que entren i surten seria un inconvenient, mentre que una habitació com ja que un dormitori amb un sol usuari funcionaria millor manualment. I l’interruptor principal seria útil en casos com si la persona que viu al dormitori marxés durant un període de temps prolongat, l’interruptor principal es podria apagar i el mode temporitzador funcionaria per estalviar energia de manera més eficient.

Per tant, en aquest sistema hi ha dues màquines d’estats, una és la màquina d’estats principal i una altra per al temporitzador de compte enrere. La màquina d'estats principal té cinc estats definits com a tals: 1. "llums encesos, moviment detectat" (id = 000), 2. "llums encesos, sense moviment detectat" (id = 001), 3. "llums apagades, sense moviment detectat "(id = 010), 4." activat manualment "(id = 011) i 5." apagat manualment "(id = 100). Aquesta màquina d’estat principal té quatre entrades: l’interruptor mestre (ms), l’interruptor manual / normal (ns), un senyal elevat quan almenys un commutador detecta moviment i, si no, és baix (orx) i un senyal que és alt un cop acabat el temporitzador, i en cas contrari (td) és baix. La màquina d’estat principal té dues sortides: llums (llums) i un senyal que indica quan s’ha d’encendre el temporitzador de compte enrere (temporitzador) o (t) (tots dos s’utilitzen indistintament).

La segona màquina d'estats, el temporitzador de compte enrere, té 12 estats: 10 d'ells tenen identificadors associats amb el número que mostra el segment: "seg 10" (id = 1010), "seg 9" (id = 1001), […], “Seg 2” (id = 0010), “seg 1” (id = 0001) i els altres dos estats mostren tots dos zero, el que representa que el temporitzador està desactivat, de manera que hi ha el primer "blanc 1" en blanc (id = 1111) i el segon "blanc 2" en blanc (id = 0000). El temporitzador de compte enrere té una entrada: temporitzador (t) i tres sortides: el número que es mostra en binari amb quatre bits (bin) i un senyal que indica que el temporitzador està acabat (td).

Pas 1: diagrama de la caixa negra

Diagrama de la caixa negra
Diagrama de la caixa negra

Aquesta és una visió general del funcionament del sistema sencer i es descriu amb un diagrama de caixa negra.

  • El rellotge s’utilitza per rellotjar la màquina d’estats principal i el descodificador de set segments; es necessita un rellotge més lent per al comptador de baixada, de manera que hi ha un mòdul divisor de rellotge que pren l'entrada de rellotge i emet un rellotge més lent per al comptador de baixada.
  • La variable intermèdia (orx) de l’embolcall està lligada als sensors de moviment i serà elevada si almenys un dels sensors detecta alguna cosa i baixa d’altra manera; l'equació booleana per a això és només orx = s (2) o s (1) o s (0).
  • El principal fsm controla l'estat general en què es troba el sistema, depenent de les entrades (orx, ms, ns, td) i genera l'estat actual en què es mostra (sm) simplificat amb els dos senyals per als quals s'utilitza (temporitzador i llums).

    • (temporitzador) és un senyal d’embolcall que s’envia al comptador descendent fsm com a entrada i que està controlat per l’estat actual del fsm principal. Indica quan cal activar el temporitzador.
    • (llums) és un senyal d’embolcall que s’utilitza per controlar el led i està controlat per l’estat actual del fsm principal.
  • El comptador descendent fsm controla el que mostra el segment de set segons l’entrada (temporitzador) i genera l’estat actual en què es troba (sd) que es mostra simplificat amb els dos senyals que s’utilitzen (td i bin).

    • (td) és un senyal d’embolcall que s’envia al fsm principal com a entrada i està controlat per l’estat actual del comptador descendent fsm. Funciona com un senyal de retroalimentació que indica quan s’ha acabat el temporitzador.
    • (bin) és un senyal d’embolcall de quatre bits que es concatena amb quatre bits de zero (“0000” i bin) i els vuit bits combinats s’envien a (q), un senyal d’embolcall de vuit bits, que al seu torn s’envia als set descodificador de segment a (ALU_VAL).
  • El mòdul de set segments és el mateix que a Polylearn; les seves entrades principals prenen un número de 8 bits (bin) fins a (ALU_VAL) per mostrar-se en quatre pantalles de set segments diferents mitjançant les sortides (SEGMENTS) per embolicar el senyal (seg) i (DISP_EN) per embolicar (disp_en).

    • Com que dos o més pantalles de set segments no poden mostrar dígits diferents al mateix temps, cal un rellotge per recórrer els quatre segs, mostrant el dígit adequat a la vegada perquè cada segseg s’activi individualment i fer una bicicleta prou ràpidament fa que Ssegs semblen estar a la vegada.
    • (signar i vàlid) són constants a tot aquest programa, de manera que (signar) es defineix permanentment com a baix i (vàlid) és permanentment alt.
    • (ALU_VAL) pren el senyal d'embolcall (q) com a entrada, que representa el número que es mostrarà a la pantalla de set segments en binari.
    • La sortida (SEGMENTS) s’envia a un senyal d’embolcall de vuit bits (seg) i (DISP_EN) a un senyal d’embolcall de quatre bits (disp_en).
  • També hi ha un mòdul D flip flop que no es mostra explícitament al diagrama, però es necessita per a les dues màquines d'estats com a submòduls i ajuda la transició d'estats de manera sincrònica.

    • (3) d'aquests són necessaris per al fsm principal, ja que 2 ^ (3) = 8> 5 estats per a la codificació
    • (4) d'aquests són necessaris per al comptador descendent fsm ja que 2 ^ 4 = 16> 12 estats per a la codificació

Pas 2: Màquines d'estat

Màquines estatals
Màquines estatals

Per dissenyar correctament les dues màquines d’estats, cal definir els estats individuals amb claredat, amb les seves sortides i l’estat al qual transita en funció de les diferents entrades possibles.

Principals estats fsm:

"Llums enceses, moviment detectat" (id = 000)

Les llums estan enceses, almenys un dels detectors de moviment detecta el moviment, de manera que l’orx ha de ser alt i ms està activat.

  • Sortides: llums = 1 i temporitzador = 0
  • Es manté com aquest estat quan ms = 1 i orx = 1.
  • Va a indicar "llums encesos, no s'ha detectat cap moviment" si ms = 1 i orx = 0.
  • Va a l'estat "activat manualment" si ms = 0 i ns = 1.
  • Va a l'estat "apagat manualment" si ms = 0 i ns = 0.

"Llums enceses, no s'ha detectat cap moviment" (id = 001)

Les llums estan activades, no es detecta cap moviment des de cap detector de moviment, de manera que orx ha de ser baix i ms està activat. També al començament d’aquest estat, el temporitzador que s’estableix en alt indica que el compte enrere fsm comenci el compte enrere, procedeixi al compte enrere i deixi el compte enrere un cop el compte enrere fsm digui a aquest fsm que s’ha acabat el compte.

  • Sortides: llums = 1 i temporitzador = 1.
  • Es manté com aquest estat quan ms = 1 i orx = 0 i td (el temporitzador està acabat) = 0.
  • Va a indicar "llums encesos, moviment detectat" si ms = 1 i orx = 1.
  • Va a l'estat "llums apagats, no s'ha detectat cap moviment" si ms = 1 i orx = 0 i td = 1.
  • Va a l'estat "activat manualment" si ms = 0 i ns = 1.
  • Va a l'estat "apagat manualment" si ms = 0 i ns = 0.

"Llums apagades, no s'ha detectat cap moviment" (id = 010)

Les llums estan apagades, no es detecta cap moviment de cap sensor de moviment i el temporitzador ha acabat el compte enrere, de manera que orx ha de ser baix, ms està activat i td està apagat.

  • Sortides: llums = 0 i temporitzador = 0.
  • Es manté com aquest estat quan ms = 1 i orx = 0.
  • Va a indicar "llums encesos, moviment detectat" si ms = 1 i orx = 1.
  • Va a l'estat "activat manualment" si ms = 0 i ns = 1.
  • Passa a l'estat "apagat manualment" si ms = 0 i ns = 0.

"Encès manualment" (id = 011)

Les llums estan enceses, els detectors de moviment són irrellevants, per tant, ms està apagat i ns està activat.

  • Sortides: llums = 1 i temporitzador = 0.
  • Es manté com aquest estat quan ms = 0 i ns = 1.
  • Passa a l'estat "apagat manualment" si ms = 0 i ns = 0.
  • Va a l'estat "llums apagades, no s'ha detectat cap moviment si ms = 1.

"Apagat manualment" (id = 100)

Les llums estan apagades, els detectors de moviment són irrellevants, de manera que ms està apagat i ns apagat.

  • Sortides: llums = 0 i temporitzador = 0.
  • Es manté com aquest estat quan ms = 0 i ns = 0.
  • Va a l'estat "activat manualment" si ms = 0 i ns = 1.
  • Va a l'estat "llums apagades, no s'ha detectat cap moviment si ms = 1.

Estats del comptador baix:

"Seg 10" (id = 1010)

La pantalla de set segments mostra un 10.

  • Sortides: bin = "1010" i td = 0.
  • Va a indicar "seg 9" si el temporitzador = 1.
  • Va a indicar "2 en blanc" si el temporitzador = 0.

"Seg 9" (id = 1001)

La pantalla de set segments mostra un 9.

  • Sortides: bin = "1001" i td = 0.
  • Va a indicar "seg 8" si el temporitzador = 1.
  • Va a indicar "2 en blanc" si el temporitzador = 0.

(Els estats "Seg 8" fins a "Seg 2" s'ometen perquè segueixen el mateix patró que "Seg 10" i "Seg 9" i no són necessaris per a l'explicació)

"Seg 1" (id = 0001)

La pantalla de set segments mostra un 1.

  • Sortides: bin = "0001" i td = 0.
  • Va a indicar "2 en blanc" a la següent vora ascendent del rellotge (no cal introduir cap entrada).

"En blanc 2" (id = 1111)

La visualització de set segments mostra un 0. L’objectiu d’un segon estat en blanc és que hi hagi un estat separat per quan td = 1 per seguretat.

  • Sortides: bin = "1111" i td = 1.
  • Va a indicar "1 en blanc" a la següent vora ascendent del rellotge (no cal introduir cap entrada).

"1 en blanc" (id = 0000)

La pantalla de set segments mostra un 0. Aquest és l’estat en què es manté el sistema quan la màquina d’estat principal està en estat “s’encén, no s’ha detectat cap moviment”.

  • Sortides: bin = "0000" i td = 0.
  • Va a indicar "seg 10" si el temporitzador = 1.

Pas 3: Taules de veritat de màquines d’estat, equacions d’excitació i equacions de sortida

Taules de veritat de màquines d’estat, equacions d’excitació i equacions de sortida
Taules de veritat de màquines d’estat, equacions d’excitació i equacions de sortida
Taules de veritat de màquines d’estat, equacions d’excitació i equacions de sortida
Taules de veritat de màquines d’estat, equacions d’excitació i equacions de sortida
Taules de veritat de màquines d’estat, equacions d’excitació i equacions de sortida
Taules de veritat de màquines d’estat, equacions d’excitació i equacions de sortida
Taules de veritat de màquines d’estat, equacions d’excitació i equacions de sortida
Taules de veritat de màquines d’estat, equacions d’excitació i equacions de sortida

El següent pas és crear taules de veritat per a les dues màquines d'estats i equacions d'excitació i equacions de sortida per a cada fsm. Per a cada equació d’excitació fsm, ha d’haver-hi equacions per a cada següent bit codificat d’estat en funció de l’estat actual i els seus senyals d’entrada. Per a cada equació de sortida fsm, cal que hi hagi equacions per a cada senyal de sortida en funció de l’estat actual. Els quatre conjunts d’equacions es poden extreure de les taules de veritat representades. (qn és el següent bit codificat d'estat per a cada màquina d'estats i q és l'estat actual)

(000) equivalent a q (2) 'q (1)' q (0) 'i (0000) equivalent a q (3)' q (2) 'q (1)' q (0) '

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

Equacions d'excitació per a la fsm principal:

  • 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)]

Equacions de sortida per al fsm principal:

  • llums = (000) + (001) + (100)
  • temporitzador = (001)

Equacions d'excitació per al comptador descendent fsm:

  • 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)]

Equacions de sortida per al comptador descendent fsm:

  • 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)

Pas 4: embolcall, submoduls i restricció

Com ja s'ha explicat al pas 1, aquests mòduls són necessaris per a aquest projecte i estan tots units amb el mòdul d'embolcall titulat "final_proj.vhd". El fitxer de restriccions titulat "Basys3_Master.xdc" s'utilitza per enllaçar totes les entrades i sortides de l'embolcall als commutadors, els set segments i els ports d'E / S de la placa Basys 3. El commutador mestre hauria de ser el commutador de la placa més proper al costat en què estan connectats els cables, el commutador normal / manual és el segon més proper i els tres commutadors que representen els tres sensors de moviment són els tres commutadors immediatament al costat del commutador normal / manual.. Tot el codi (equacions booleanes, declaracions de mòduls, etc.) ja està escrit als fitxers, de manera que no cal que escriviu res més perquè això funcioni.

Pas 5: ports d'E / S per LED

Ports d'E / S per LED
Ports d'E / S per LED
Ports d'E / S per LED
Ports d'E / S per LED

L’últim pas d’aquest projecte és utilitzar un led per mostrar si els llums s’encenen o no. El cablejat es mostra a les dues imatges. Assegureu-vos que hi hagi una resistència en sèrie amb el led (com a mínim 330 ohms) per no cremar-lo i assegureu-vos que el pin llarg del led estigui connectat a la mateixa capçalera femenina de la placa base que es mostra el fil vermell (part superior més a la dreta) i el pin més curt està connectat a terra, la mateixa capçalera femenina que es mostra el fil negre (superior, segon des de l’esquerra).

Recomanat: