Sisällysluettelo:

Liikeanturin/laskurin ohjaamat valot: 7 vaihetta
Liikeanturin/laskurin ohjaamat valot: 7 vaihetta

Video: Liikeanturin/laskurin ohjaamat valot: 7 vaihetta

Video: Liikeanturin/laskurin ohjaamat valot: 7 vaihetta
Video: Во бору брусника (2 серия) (1989) фильм 2024, Heinäkuu
Anonim
Liiketunnistin/laskuriohjatut valot
Liiketunnistin/laskuriohjatut valot

Tämä projekti luotiin viimeisenä projektina digitaalisen suunnittelun kurssille Cal Poly, San Luis Obispo (CPE 133).

Miksi teemme näin? Haluamme auttaa säästämään luonnonvaroja maailmassa. Projektimme keskittyy sähkön säästämiseen. Säästämällä enemmän sähköä voimme säästää sähköntuotannossa käytettäviä luonnonvaroja. Vuoden 2018 alussa luonnonvaroja kulutetaan uskomattoman paljon. Haluamme olla tietoisia vaikutuksistamme ympäristöön ja osallistua luonnonvarojen säilyttämiseen. Elektroniikkaa voidaan käyttää monin tavoin energian säästämiseksi, mikä auttaa sekä ympäristöä että taloudellista tilannetta.*Tämä malli on luotu käytettävien komponenttien avulla.

Ihmiset unohtavat usein sammuttaa jouluvalot ja tuhlaavat energiaa jättämällä ne yöksi päälle. Todellisuudessa tämä hanke säästää sähköä, koska”jouluvalot” syttyvät vain silloin, kun ihmisiä on lähellä, mikä säästää energiaa, kun ketään ei ole lähellä. Lisäksi halusimme suunnitella ajastimen, jotta valot sammuvat kokonaan tietyn ajan kuluttua, jotta ne eivät syty esimerkiksi kello 3 aamulla havaitun liikkeen vuoksi.

Kuinka voit käyttää tätä muotoilua? Tämä malli voidaan toteuttaa kaikenlaisille valaisimille, olivatpa ne sitten koristeellisia, käytännöllisiä tai molempia. Jos haluat esimerkiksi työpöytävalosi toimivan vain 6 tuntia kerrallaan. Sinun on asetettava laskuri 21, 600 sekuntia (6 tuntia x 3, 600 sekuntia/tunti). Kun laskuri kasvaa aktiivisesti, liikeanturi ohjaisi valoa. Siten joka kerta, kun se sammuu tuona aikana, sinun tarvitsee vain heiluttaa kättäsi liiketunnistimen edessä ja se kytkeytyy takaisin päälle. Jos nukahdat työpöytäsi ääressä ja heräät 7 tuntia myöhemmin, liike ei käynnistä sitä.

Vaihe 1: Tarvittava ohjelmisto ja laitteisto

Vaadittu ohjelmisto ja laitteisto
Vaadittu ohjelmisto ja laitteisto
Vaadittu ohjelmisto ja laitteisto
Vaadittu ohjelmisto ja laitteisto
Vaadittu ohjelmisto ja laitteisto
Vaadittu ohjelmisto ja laitteisto
Vaadittu ohjelmisto ja laitteisto
Vaadittu ohjelmisto ja laitteisto

Ohjelmisto:

  • Vivado 2016.2 (tai uudempi versio) löytyy täältä
  • Arduino IDE 1.8.3 (tai uudempi versio) löytyy täältä

Laitteisto:

  • 1 Basys 3 -levy
  • 1 Arduino Uno
  • 2 Leipälaudat
  • 1 Ultraääni-etäisyysanturi HC-SR04
  • 9 uros-uros-johdot
  • 1 LED
  • 1 100Ω vastus

Vaihe 2: Koodit (Vivado)

Koodit (Vivado)
Koodit (Vivado)

Finite State Machine (katso tilakaavio yllä):

LED vaati äärellisen tilan konetta. LED -valossa on vain kaksi tilaa päällä ja pois päältä. Vain kaksi tuloa ohjaa LEDin tilaa, laskuri ja anturi. LED -valon pitäisi palaa vain silloin, kun anturi havaitsee liikkeen ja kun laskuri laskee nollasta kolmekymmentä sekuntia. Muissa tapauksissa LED -valo sammuu.

Tiedoston nimi: LEDDES

Laskuri:

Laskurin avulla voimme rajoittaa aikaa, jonka aikana liikeanturi voi aktivoida LED -valon. Sen arvo näkyy Basys 3 Boardin seitsemän segmentin näytössä lähdekoodin (”sseg_dec”) kautta. Kun nollauskytkin on alhaalla (arvo: '0'), laskuri alkaa kasvaa joka sekunti 0: sta 30. Kun se saavuttaa 30, se jäätyy kyseiselle numerolle. Se ei käynnisty uudestaan nollasta, ennen kuin nollauskytkin on vaihdettu asentoon 1 ja takaisin asentoon 1. Jos nollaus muuttuu 1: ksi laskurin ollessa käynnissä, laskuri jäädyttää saavutetun arvon. Kun nollaus palaa arvoon "0", laskuri käynnistyy uudelleen nollasta 30. Tämä toteutus edellyttää myös kellosignaalin käyttöä, sen koodi on annettu alla ("clk_div2").

Tiedostonimi: FinalCounter

TOIMITETUT TIEDOT:

Seitsemän segmentin näyttö:

Tämän koodin avulla seitsemän segmentin näyttö voi näyttää desimaaliarvoja. Yksi alimoduuli toimii dekooderina 8-bittisen binääritulon ja 4-bittisen binäärikoodatun desimaalin välillä. Toinen jakaa kellosignaalin päivittääkseen arvonsa tietyllä nopeudella.

Tiedostonimi: sseg_dec

Kellosignaali:

Tämän koodin avulla laskuri voi kasvaa 1 sekunnin välein. Se jakaa kellon taajuuden hitaammaksi. Olemme mukautuneet tarjoamaan 1 sekunnin jakson muuttamalla vakion max_count: integer: = (3000000)”arvoksi“vakio max_count: integer: = (50000000)”.

Tiedoston nimi: clk_div2

Toimitetut tiedostot: sseg_dec, clk_div2 *Nämä lähdetiedostot toimitti professori Bryan Mealy.

Vaihe 3: Ymmärtäminen, miten ne tulevat yhteen (VHDL -komponenttien kaaviot)

Ymmärtäminen, miten ne kokoontuvat (VHDL -komponenttien kaaviot)
Ymmärtäminen, miten ne kokoontuvat (VHDL -komponenttien kaaviot)

Päätiedosto ("MainProjectDES") sisältää kaikki aiemmin käsitellyt alitiedostot. Ne on kytketty yllä kuvatulla tavalla. Eri komponentit on yhdistetty toisiinsa porttikarttojen avulla signaalin lähettämiseksi yhdestä elementistä toiseen.

Kuten olet ehkä huomannut, FinalCounter tarjoaa 5-bittisen lähdön, kun taas sseg_dec vaatii 8-bittisen tulon. Kompensoidaksemme asetimme signaalin, joka yhdistää molemmat komponentit, alkamaan "000" ja lisäämään laskurin 5-bittisen lähdön. Näin saadaan 8-bittinen tulo.

Rajoitukset:

Näiden koodien suorittamiseksi Basys 3 -taululla vaadittiin rajoitustiedosto, joka kertoo jokaiselle signaalille, minne mennä ja miten osat on kytketty.

Vaihe 4: Koodi (Arduino)

Ohjelmoimme Arduino Unon käyttämään liiketunnistinta liikkeen havaitsemiseen ja antamaan lähdön, joka ilmoittaa LED -valon syttymisestä. Lisäksi anturin käyttäminen liikkeen havaitsemiseen vaatii juoksusilmukoita, jotka etsivät jatkuvasti etäisyyden muutosta. Pohjimmiltaan se tarvitsee ajastinta, joka toimii samanaikaisesti "korkean" signaalin tuottamiseksi, jotta LED syttyy, kun taas ajastin on nollattava, kun havaitaan uusi liike, mikä on lähes mahdotonta toteuttaa Vivadolla tiedon laajuuden perusteella luokasta. Lisäksi käytimme Arduinoa, koska HC-SR04: n käyttäminen Basys 3 -levyn kanssa ei olisi mahdollista, koska kortti syöttää vain 3,3 V, kun anturi vaatii 5 V: n virtalähteen. Havaitsemisliikkeen toteuttamiseksi se on todellinen koodaus toisin kuin CAD VHDL: ssä.

Käytimme anturin sisäänrakennettua pulssitoimintoa noutaaksemme ajan, joka kului anturista alun perin lähetetyn äänen ja äänen välillä, joka palaa takaisin, kun osutaan esineeseen. Sitten laskemme äänen nopeuden ja aikavälin avulla kohteen ja anturin välisen etäisyyden. Tästä lähtien tallennamme nykyisen etäisyyden ja seuraamme sitä. Tarkistamme etäisyyden 150 ms: n välein. Käytimme myös elapsedmil -kirjastoa ajaaksemme sisäisen ajastimen arduinon sisällä seurataksemme kulunutta aikaa. Jos havaitsemme etäisyyden muutoksen, joka vastaa liikettä, ajastin nollataan ja se pitää valon päällä, kunnes 3 sekuntia on kulunut. Aina kun anturi havaitsee toisen liikkeen, ajastin nollataan ja LED -valon signaali on "korkea" seuraavien 3 sekunnin ajan. Olemme liittäneet alla olevan kopion Arduino -koodistamme.

Vaihe 5: Kuinka komponentit sopivat yhteen

Kuinka komponentit sopivat yhteen!
Kuinka komponentit sopivat yhteen!
Kuinka komponentit sopivat yhteen!
Kuinka komponentit sopivat yhteen!
Kuinka komponentit sopivat yhteen!
Kuinka komponentit sopivat yhteen!

Kuten näet "Basys3: Pmod Pin-out -kaaviosta*" ja Arduino Uno Boardin valokuvasta, korostimme ja merkitsimme käyttämämme portit.

1. LED ja Basys 3 -levy

LED on kytketty sarjaan 100Ω vastuksen kanssa. -Valkoinen johdin yhdistää vastuksen Basys 3 -levyn PWR -nastaan. -Keltainen johto yhdistää LEDin Basys 3 -levyn nastaan H1.

2. Liiketunnistin ja Arduino Uno

-Oranssi lanka yhdistää liikeanturin Vcc (virta) Arduino Uno -levyn nastaan 5V. liikeanturi Arduino Uno -kortin nastaan 9.-Musta johto yhdistää liikeanturin nastan GND Arduino Uno -levyn nastaan GND.

[Käyttämämme johdot olivat liian lyhyitä päästäksemme osiin, joten ne oli kytketty toisiinsa]

3. Basys 3 Board ja Arduino Uno

Keltainen johto yhdistää Basys 3 -levyn nastan A14 Arduino Uno -levyn nastaan 6.

*Tämä kaavio on otettu Digilentin "Basys 3 ™ FPGA Board Reference Manual" -ohjeesta, joka löytyy täältä.

Vaihe 6: Esittely

Vaihe 7: Aika testata se

Onnittelut! Olet päässyt liiketunnistin- ja laskuriohjatun valoprojektimme loppuun! Kiitos, että luit Instructables -viestimme. Nyt on aika yrittää rakentaa tämä projekti itse. Jos seuraat jokaista vaihetta huolellisesti, sinulla pitäisi olla liiketunnistin ja laskuriohjattu valo, joka toimii samalla tavalla kuin meidän! Toivotamme sinulle onnea tämän hankkeen rakentamisessa ja toivomme, että se voi osaltaan säästää sähköä ja luonnonvaroja!

Suositeltava: