Sisällysluettelo:
- Vaihe 1: Tarvittava ohjelmisto ja laitteisto
- Vaihe 2: Koodit (Vivado)
- Vaihe 3: Ymmärtäminen, miten ne tulevat yhteen (VHDL -komponenttien kaaviot)
- Vaihe 4: Koodi (Arduino)
- Vaihe 5: Kuinka komponentit sopivat yhteen
- Vaihe 6: Esittely
- Vaihe 7: Aika testata se
Video: Liikeanturin/laskurin ohjaamat valot: 7 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
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
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)
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)
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
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:
Liikeanturin hälytys: 5 vaihetta
Liiketunnistinhälytys: Tarkistatko aina, kuka on ovellasi? Tämä on täydellinen kohde sinulle. Olen aina ollut utelias tietämään, onko oveni ulkopuolella ihmisiä tietämättä. Olen luonut tämän liiketunnistinhälytyksen led -valoilla, jotka osoittavat
Liikeanturin vesihana käyttämällä Arduinoa ja magneettiventtiiliä - DIY: 6 vaihetta
Liikeanturin vesihana käyttämällä Arduinoa ja magneettiventtiiliä - DIY: Tässä projektissa näytän sinulle, kuinka rakentaa liiketunnistimen vesihana magneettiventtiilin avulla. Tämä projekti voi auttaa sinua muuttamaan olemassa olevan manuaalisen vesihanan hanaksi, jota voidaan ohjata liiketunnistuksen perusteella. Käytetään IR -anturiliitäntää
Home Assistant Geiger -laskurin integrointi: 8 vaihetta
Home Assistant Geiger -laskurin integrointi: Tässä opetusohjelmassa aion näyttää, kuinka voit lisätä mukautettuja antureita HASS -laitteeseen (kotiassistentti) tarkemmin geigerilaskuriin, mutta prosessi on samanlainen myös muille antureille. Käytämme NodeMCU -korttia, arduino -pohjaista geigerilaskuria
DIY Geiger -laskurin korjaus: 9 vaihetta (kuvilla)
DIY Geiger -laskurin korjaus: Tilasin tämän DIY Geiger -laskurin verkossa. Se saapui ajoissa, mutta se vaurioitui, väylän sulakkeenpitimet murskattiin ja J305 Geiger Muller -putki tuhoutui. Tämä oli ongelma, koska käytin pisteitä aiemmista ostoksistani tältä
Lego Mini Cooper -sovelluksen ohjaamat valot: 7 vaihetta (kuvilla)
Lego Mini Cooper -sovelluksen ohjattavat valot: Vaara, UXB! Onko unelmiesi työ pommin hävittämisen asiantuntija, mutta epäröit kuolevan osan vuoksi? Sitten tämä on projekti sinulle! Vietät pitkiä tunteja tehdessäsi pieniä säätöjä erittäin epävakaaseen laitteeseen, hiki porautumassa