Turinys:

Judėjimo jutiklio/skaitiklio valdomos lemputės: 7 žingsniai
Judėjimo jutiklio/skaitiklio valdomos lemputės: 7 žingsniai

Video: Judėjimo jutiklio/skaitiklio valdomos lemputės: 7 žingsniai

Video: Judėjimo jutiklio/skaitiklio valdomos lemputės: 7 žingsniai
Video: Высокая плотность 2022 2024, Lapkritis
Anonim
Judėjimo jutiklio/skaitiklio valdomos lemputės
Judėjimo jutiklio/skaitiklio valdomos lemputės

Šis projektas buvo sukurtas kaip paskutinis skaitmeninio dizaino kurso projektas „Cal Poly“, San Luis Obispo (CPE 133).

Kodėl taip darome? Norime padėti išsaugoti pasaulio gamtos išteklius. Mūsų projekto tikslas - taupyti elektros energiją. Taupydami daugiau elektros energijos, galėsime išsaugoti gamtinius išteklius, kurie naudojami elektros energijai gaminti. Prasidėjus 2018 metams, gamtos ištekliai sunaudojami neįtikėtinu greičiu. Mes norime suvokti savo poveikį aplinkai ir prisidėti prie gamtos išteklių išsaugojimo. Elektronika gali būti diegiama įvairiais būdais taupant energiją, kuri padeda aplinkai ir mūsų ekonominei būklei.*Šis modelis buvo sukurtas naudojant turimus komponentus.

Kas buvo mūsų įkvėpimas? Žmonės dažnai pamiršta išjungti atostogų šviesas ir švaistė energiją palikdami juos per naktį. Tiesą sakant, šis projektas sutaupys elektros energijos, nes „šventinės lemputės“degs tik tada, kai žmonės yra netoliese, ir taip taupoma energija, kai niekas nėra šalia. Be to, norėjome sukurti laikmatį, kad po tam tikro laiko lemputės visiškai išsijungtų, kad būtų užtikrinta, jog jos neįsijungia dėl, pavyzdžiui, 3 val.

Kaip galėtumėte naudoti šį dizainą? Šis dizainas gali būti pritaikytas visų tipų žibintams, nesvarbu, ar jie yra dekoratyvūs, praktiški, ar abu. Jei norite, kad, pavyzdžiui, jūsų stalo šviesa veiktų tik 6 valandas vienu metu. Turėtumėte nustatyti skaitiklį 21, 600 sekundžių (6 valandos x 3, 600 sekundžių per valandą). Kol skaitiklis aktyviai didėja, judesio jutiklis valdo šviesą. Taigi kiekvieną kartą, kai jis išsijungia per tą laiką, jums tiesiog reikia mostelėti ranka prieš judesio jutiklį ir jis vėl įsijungs. Jei užmigsite prie savo stalo ir pabusite po 7 valandų, jūsų judesys jo neįjungs.

1 veiksmas: reikalinga programinė įranga ir aparatinė įranga

Reikalinga programinė įranga ir aparatinė įranga
Reikalinga programinė įranga ir aparatinė įranga
Reikalinga programinė įranga ir aparatinė įranga
Reikalinga programinė įranga ir aparatinė įranga
Reikalinga programinė įranga ir aparatinė įranga
Reikalinga programinė įranga ir aparatinė įranga
Reikalinga programinė įranga ir aparatinė įranga
Reikalinga programinė įranga ir aparatinė įranga

Programinė įranga:

  • „Vivado 2016.2“(arba naujesnę versiją) rasite čia
  • „Arduino IDE 1.8.3“(arba naujesnę versiją) rasite čia

Techninė įranga:

  • 1 „Basys 3“lenta
  • 1 „Arduino Uno“
  • 2 Duonos lentos
  • 1 ultragarso diapazono jutiklis HC-SR04
  • 9 laidai nuo vyrų iki vyrų
  • 1 šviesos diodas
  • 1 100Ω rezistorius

2 žingsnis: kodai („Vivado“)

Kodai (Vivado)
Kodai (Vivado)

Baigtos būsenos mašina (žr. Aukščiau esančią būsenos diagramą):

Šviesos diodui reikėjo baigtinės būsenos mašinos. Šviesos diodas turi tik dvi įjungimo ir išjungimo būsenas. Tik du įėjimai valdo šviesos diodo būseną, skaitiklį ir jutiklį. Šviesos diodas turi degti tik tada, kai jutiklis aptinka judesį ir kai skaitiklis skaičiuoja nuo nulio iki trisdešimt sekundžių. Bet kuriuo kitu atveju šviesos diodas užges.

Failo pavadinimas: LEDDES

Skaitliukas:

Skaitiklis leidžia mums apriboti laiką, per kurį judesio jutiklis gali įjungti šviesos diodą. Jo vertė rodoma „Basys 3 Board“septynių segmentų ekrane per šaltinio kodą („sseg_dec“). Kai „Reset“jungiklis yra žemyn (vertė: „0“), skaitiklis pradeda didėti kiekvieną sekundę nuo 0 iki 30. Kai jis pasiekia 30, jis užšąla nuo to skaičiaus. Jis nebus paleistas iš naujo, kol „Reset“jungiklis nebus perjungtas į „1“ir atgal į „1.“Jei „Reset“taps „1“, kol skaitiklis eis, skaitiklis užšaldys bet kokią pasiektą vertę. Kai „Reset“grįš į „0“, skaitiklis bus paleistas iš naujo nuo 0 iki 30. Šiam įgyvendinimui taip pat reikia naudoti laikrodžio signalą, jo kodas pateiktas žemiau („clk_div2“).

Failo pavadinimas: FinalCounter

PATEIKTI Failai:

Septynių segmentų ekranas:

Šis kodas leidžia septynių segmentų ekrane rodyti dešimtainę reikšmę. Vienas submodulis veikia kaip dekoderis tarp 8 bitų dvejetainio įvesties ir 4 bitų dvejetainio koduoto dešimtainio skaičiaus. Kitas padalija laikrodžio signalą, kad atnaujintų jo vertę tam tikru greičiu.

Failo pavadinimas: sseg_dec

Laikrodžio signalas:

Šis kodas leidžia skaitiklį padidinti 1 sekundės žingsniu. Jis padalija įvesties laikrodžio dažnį į lėtesnį dažnį. Mes pritaikėme suteikti 1 sekundės laikotarpį, pakeisdami pastovų maks. Skaičių: sveikasis skaičius: = (3000000) “į„ pastovus maks.

Failo pavadinimas: clk_div2

Pateikti failai: sseg_dec, clk_div2 *Šiuos šaltinio failus pateikė profesorius Bryanas Mealy.

3 žingsnis: supratimas, kaip jie susirenka (VHDL komponentų schemos)

Supratimas, kaip jie susirenka (VHDL komponentų schemos)
Supratimas, kaip jie susirenka (VHDL komponentų schemos)

Pagrindiniame faile („MainProjectDES“) yra visi anksčiau aptarti antriniai failai. Jie yra sujungti aukščiau aprašytu būdu. Skirtingi komponentai yra sujungti naudojant prievadų žemėlapius, kad būtų siunčiamas signalas iš vieno elemento į kitą.

Kaip jau pastebėjote, „FinalCounter“suteikia 5 bitų išvestį, o „sseg_dec“reikalauja 8 bitų įvesties. Norėdami kompensuoti, mes nustatėme, kad signalas, jungiantis abu komponentus, prasidėtų „000“ir pridėtų 5 bitų išvestį iš skaitiklio. Taigi suteikiama 8 bitų įvestis.

Apribojimai:

Norint paleisti šiuos kodus „Basys 3“lentoje, buvo reikalingas apribojimų failas, nurodantis kiekvieną signalą, kur eiti ir kaip dalys buvo prijungtos.

4 žingsnis: kodas („Arduino“)

Mes užprogramavome „Arduino Uno“naudoti judesio jutiklį judesiui aptikti ir išvestį, kuri signalizuoja, kad šviesos diodas užsidega. Be to, norint naudoti jutiklį judesiui aptikti, reikia bėgimo kilpų, kurios nuolat ieško atstumo pokyčių. Iš esmės tam reikia laikmačio, kuris vienu metu veikia, kad išvestų „aukštą“signalą, kad šviesos diodas užsidegtų, o laikmatį reikia iš naujo nustatyti, kai aptinkamas naujas judesys, o tai beveik neįmanoma įdiegti „Vivado“, remiantis žiniomis klasės. Be to, mes naudojome „Arduino“, nes nebūtų įmanoma naudoti HC-SR04 su „Basys 3“plokšte, nes plokštė tiekia tik 3,3 V, o jutikliui reikia 5 V maitinimo šaltinio. Aptikimo judesiui įgyvendinti jis yra tikras kodavimas, o ne CAD VHDL.

Mes panaudojome jutikliui integruotą funkciją, kad gautume laiką, praleistą tarp garso, kuris iš pradžių sklido iš jutiklio, ir garso, kuris atsitrenkia atsitrenkus į objektą. Tada mes naudojame garso greitį ir laiko intervalą, kad apskaičiuotume atstumą tarp objekto ir jutiklio. Iš to mes saugome esamą atstumą ir jį stebime. Mes tikriname atstumą kas 150 ms. Mes taip pat naudojome „elapsedmil“biblioteką, norėdami paleisti vidinį laikmatį „arduino“viduje, kad galėtume sekti praėjusį laiką. Jei aptinkame atstumą, kuris atitinka judesį, laikmatis nustatomas į nulį ir jis degs, kol praeis 3 sekundės. Kai jutiklis aptinka kitą judesį, laikmatis nustatomas į 0 ir LED lemputės signalas bus „aukštas“kitas 3 sekundes. Žemiau pridėjome „Arduino“kodo kopiją.

5 žingsnis: kaip mūsų komponentai dera tarpusavyje

Kaip mūsų komponentai dera tarpusavyje!
Kaip mūsų komponentai dera tarpusavyje!
Kaip mūsų komponentai dera tarpusavyje!
Kaip mūsų komponentai dera tarpusavyje!
Kaip mūsų komponentai dera tarpusavyje!
Kaip mūsų komponentai dera tarpusavyje!

Kaip matote „Basys3: Pmod Pin-out Diagram*“ir „Arduino Uno Board“nuotraukoje, paryškinome ir pažymėjome naudojamus prievadus.

1. LED ir „Basys 3“plokštė

Šviesos diodas yra nuosekliai prijungtas prie 100Ω rezistoriaus. -Balta viela sujungia rezistorių su „Basys 3“plokštės PWR kaiščiu. -Geltona viela sujungia šviesos diodą su „Basys 3“plokštės H1 kaiščiu.

2. Judesio jutiklis ir „Arduino Uno“

-Oranžinė viela jungia judesio jutiklio Vcc (galia) prie „Arduino Uno“plokštės 5V kaiščio.-Balta viela jungia judesio jutiklio kaištį prie „Arduino Uno“plokštės 10 kaiščio. judesio jutiklį prie „Arduino Uno“plokštės 9 kaiščio.-Juoda viela jungia judesio jutiklio kaištį GND prie „Arduino Uno“plokštės GND kaiščio.

[Mūsų naudojami laidai buvo per trumpi, kad pasiektų komponentus, todėl jie buvo tarpusavyje sujungti]

3. „Basys 3“lenta ir „Arduino Uno“

Geltona viela sujungia „Basys 3“plokštės A14 kaištį su „Arduino Uno“plokštės 6 kaiščiu.

*Ši schema paimta iš „Digilent“„Basys 3 ™ FPGA Board Reference Manual“, kurį rasite čia.

6 žingsnis: demonstravimas

7 žingsnis: laikas išbandyti

Sveikinu! Jūs pasiekėte mūsų judesio jutiklio ir skaitiklio valdomo šviesos projekto pabaigą! Labai ačiū, kad perskaitėte mūsų „Instructables“įrašą. Dabar atėjo laikas jums patiems sukurti šį projektą. Jei atidžiai sekate kiekvieną žingsnį, turėtumėte turėti judesio jutiklį ir skaitiklio valdomą šviesą, kuri veiktų panašiai kaip mūsų! Linkime sėkmės kuriant šį projektą ir tikimės, kad jis gali padėti taupyti elektros energiją ir gamtos išteklius!

Rekomenduojamas: