Përmbajtje:

Sensori i lëvizjes/Dritat e kontrolluara kundër: 7 hapa
Sensori i lëvizjes/Dritat e kontrolluara kundër: 7 hapa

Video: Sensori i lëvizjes/Dritat e kontrolluara kundër: 7 hapa

Video: Sensori i lëvizjes/Dritat e kontrolluara kundër: 7 hapa
Video: The Choice is Ours (2016) Official Full Version 2024, Nëntor
Anonim
Sensori i lëvizjes/Dritat e kontrolluara kundër
Sensori i lëvizjes/Dritat e kontrolluara kundër

Ky projekt u krijua si një projekt përfundimtar për një kurs të Dizajnit Dixhital në Cal Poly, San Luis Obispo (CPE 133).

Pse po e bëjmë këtë? Ne duam të ndihmojmë në ruajtjen e burimeve natyrore në botë. Projekti ynë fokusohet në kursimin e energjisë elektrike. Duke kursyer më shumë energji elektrike, ne do të jemi në gjendje të ruajmë burimet natyrore që përdoren për të gjeneruar energji elektrike. Ndërsa fillojmë 2018, burimet natyrore po konsumohen me një ritëm të jashtëzakonshëm. Ne duam të jemi të ndërgjegjshëm për ndikimin tonë në mjedisin tonë dhe të luajmë rolin tonë në ruajtjen e burimeve natyrore. Elektronika mund të zbatohet në mënyra të ndryshme për të kursyer energji e cila ndihmon mjedisin si dhe gjendjen tonë ekonomike.*Ky model u krijua duke përdorur komponentët në dispozicion për ne.

Cili ishte frymëzimi ynë? Njerëzit shpesh harrojnë të fikin dritat e tyre të pushimeve dhe humbin energji duke i lënë ato gjatë natës. Në realitet, ky projekt do të kursejë energji elektrike sepse "dritat e festave" do të ndizen vetëm kur njerëzit janë afër, duke kursyer kështu energji kur askush nuk është përreth. Për më tepër, ne donim të krijonim një kohëmatës në mënyrë që dritat të fiken plotësisht pas një kohe të caktuar për të siguruar që ato të mos ndizen për shkak të lëvizjes së zbuluar në orën 3 të mëngjesit, për shembull.

Si mund ta përdorni këtë dizajn? Ky dizajn mund të zbatohet për të gjitha llojet e dritave, pavarësisht nëse janë dekorative, praktike ose të dyja. Nëse dëshironi që drita e tavolinës tuaj të funksionojë vetëm për 6 orë në të njëjtën kohë, për shembull. Ju do të duhet të vendosni një numërues në 21, 600 sekonda (6 orë x 3, 600 sekonda/orë). Ndërsa numëruesi po rritet në mënyrë aktive, sensori i lëvizjes do të kontrollojë dritën. Kështu, sa herë që fiket gjatë asaj periudhe kohore, ju vetëm duhet të tundni dorën para sensorit të lëvizjes dhe ai do të ndizet përsëri. Nëse flini në tryezën tuaj dhe zgjoheni 7 orë më vonë, lëvizja juaj nuk do ta ndezë atë.

Hapi 1: Softueri dhe hardueri i kërkuar

Softueri dhe Hardueri i kërkuar
Softueri dhe Hardueri i kërkuar
Softueri dhe Hardueri i kërkuar
Softueri dhe Hardueri i kërkuar
Softueri dhe Hardueri i kërkuar
Softueri dhe Hardueri i kërkuar
Softueri dhe Hardueri i kërkuar
Softueri dhe Hardueri i kërkuar

Softuer:

  • Vivado 2016.2 (ose një version më i fundit) mund të gjendet këtu
  • Arduino IDE 1.8.3 (ose një version më i fundit) mund të gjendet këtu

Hardware:

  • 1 Basys 3 bord
  • 1 Arduino Uno
  • 2 Tabela Breadboard
  • 1 Sensor tejzanor i rangut HC-SR04
  • 9 Tela meshkuj me meshkuj
  • 1 LED
  • 1 Rezistencë 100Ω

Hapi 2: Kodet (Vivado)

Kodet (Vivado)
Kodet (Vivado)

Makina me gjendje të fundme (shiko diagramin e gjendjes më lart):

LED kërkonte një makinë me gjendje të fundme. Një LED ka vetëm dy gjendje të ndezjes dhe fikjes. Vetëm dy hyrje kontrollojnë gjendjen e LED, numëruesin dhe sensorin. E vetmja kohë që LED duhet të jetë e ndezur është kur sensori zbulon lëvizjen dhe kur numëruesi numëron nga zero në tridhjetë sekonda. Çdo rast tjetër LED do të fiket.

Emri i skedarit: LEDDES

Counter:

Numëruesi na lejon të kufizojmë kohëzgjatjen gjatë së cilës sensori i lëvizjes mund të aktivizojë LED. Vlera e tij shfaqet në ekranin e shtatë segmenteve të Bordit Basys 3 përmes një kodi burimor ("sseg_dec"). Kur çelësi i Rivendosjes është poshtë (vlera: '0'), numëruesi fillon të rritet çdo sekondë nga 0 në 30. Kur arrin 30, ai ngrin në atë numër. Nuk do të rifillojë nga 0 derisa çelësi Reset të kalohet në '1' dhe përsëri në '1.' Nëse Reset bëhet '1' ndërkohë që numëruesi po shkon, numëruesi do të ngrijë në çfarëdo vlere që kishte arritur. Kur Reset kthehet në '0', numëruesi do të riniset nga 0 në 30. Ky zbatim kërkon gjithashtu përdorimin e një sinjali të orës, kodi i tij jepet më poshtë ("clk_div2").

Emri i skedarit: FinalCounter

DOSJET E PARAQITUR:

Shfaqja e Shtatë Segmenteve:

Ky kod lejon që ekrani me shtatë segmente të shfaq vlerat dhjetore. Një nënmodul vepron si dekodues midis një hyrje binare 8-bit dhe një dhjetore 4-bitëshe të koduar binar. Tjetri ndan sinjalin e orës për të rifreskuar vlerën e tij me një ritëm të caktuar.

Emri i skedarit: sseg_dec

Sinjali i orës:

Ky kod lejon që numëruesi të rritet në rritje prej 1 sekonde. Ai ndan frekuencën e orës hyrëse në një frekuencë më të ngadaltë. Ne u përshtatëm për të siguruar një periudhë prej 1 sekonde duke ndryshuar konstantën max_count: integer: = (3000000)”në“max_count konstante: integer: = (50000000).”

Emri i skedarit: clk_div2

Skedarët e ofruar: sseg_dec, clk_div2 *Këto skedarë burim u siguruan nga profesori Bryan Mealy.

Hapi 3: Kuptimi se si ata bashkohen (Skemat e Përbërësve VHDL)

Kuptimi se si ata bashkohen (Skemat e Përbërësve VHDL)
Kuptimi se si ata bashkohen (Skemat e Përbërësve VHDL)

Skedari kryesor ("MainProjectDES") përmban të gjithë nënfajlet e diskutuar më parë. Ato janë të lidhura në mënyrën e mësipërme. Komponentët e ndryshëm janë të ndërlidhur duke përdorur hartat e portit për të dërguar një sinjal nga një element në tjetrin.

Siç mund ta keni vënë re, FinalCounter siguron një dalje 5-bit ndërsa sseg_dec kërkon një hyrje 8-bit. Për të kompensuar, ne vendosim që sinjali që lidh të dy përbërësit të fillojë me "000" dhe të shtojë daljen 5-bitësh nga sporteli. Duke siguruar kështu një hyrje 8-bit.

Kufizimet:

Për të ekzekutuar këto kode në Tabelën Basys 3, kërkohej një skedar kufizimesh, i cili i tregonte secilit sinjal se ku të shkonte dhe si lidheshin pjesët.

Hapi 4: Kodi (Arduino)

Ne programuam Arduino Uno të përdorte sensorin e lëvizjes për të zbuluar lëvizjen dhe për të siguruar një dalje që sinjalizon që LED të ndizet. Për më tepër, përdorimi i sensorit për të zbuluar lëvizjen kërkon drejtimin e sytheve që kërkojnë vazhdimisht ndryshim në distancë. Në thelb, ajo ka nevojë për një kohëmatës që funksionon njëkohësisht për të nxjerrë një sinjal "të lartë" që LED të ndizet ndërsa kohëmatësi duhet të rivendoset sapo të zbulohet lëvizje e re, e cila është pothuajse e pamundur të zbatohet në Vivado bazuar në fushëveprimin e njohurive të klasës. Për më tepër, ne përdorëm një Arduino sepse nuk do të ishte e mundur të përdornim HC-SR04 me Basys 3 Board pasi bordi furnizon vetëm 3.3V ndërsa sensori kërkon një furnizim me energji 5V. Për zbatimin e lëvizjes zbuluese, është kodimi aktual në krahasim me CAD në VHDL.

Ne përdorëm funksionin e impulsit të ndërtuar për sensorin për të tërhequr kohën e kaluar midis zërit të lëshuar fillimisht nga sensori dhe zërit që kthehet kur godet një objekt. Pastaj ne përdorim shpejtësinë e zërit dhe intervalin kohor për të llogaritur distancën midis objektit dhe sensorit. Nga kjo, ne ruajmë distancën aktuale dhe mbajmë gjurmët e saj. Ne kontrollojmë distancën çdo 150ms. Ne gjithashtu përdorëm bibliotekën elapsedmil për të drejtuar një kohëmatës të brendshëm brenda arduino për të mbajtur gjurmët e kohës së kaluar. Nëse zbulojmë një ndryshim në distancë, i cili korrespondon me një lëvizje, kohëmatësi rivendoset në zero dhe do ta mbajë dritën ndezur derisa të kenë kaluar 3 sekonda. Sa herë që sensori zbulon një lëvizje tjetër, kohëmatësi rivendoset në 0 dhe sinjali për dritën LED do të jetë "i lartë" për 3 sekondat e ardhshme. Ne kemi bashkangjitur një kopje të kodit tonë Arduino më poshtë.

Hapi 5: Si Komponentët tanë Përshtaten Së bashku

Si Komponentët tanë Përshtaten Së bashku!
Si Komponentët tanë Përshtaten Së bashku!
Si Komponentët tanë Përshtaten Së bashku!
Si Komponentët tanë Përshtaten Së bashku!
Si Komponentët tanë Përshtaten Së bashku!
Si Komponentët tanë Përshtaten Së bashku!

Siç mund ta shihni në "Basys3: Pmod Diagram Pin-out*" dhe foton e Arduino Uno Board, ne theksuam dhe etiketuam portet që përdorëm.

1. Tabela LED dhe Basys 3

LED është e lidhur në seri me rezistencën 100Ω. -Teli i bardhë lidh rezistencën me pin PWR të tabelës Basys 3. -Teli i verdhë lidh LED me pin H1 të bordit Basys 3.

2. Sensori i Lëvizjes dhe Arduino Uno

-Teli portokalli lidh Vcc (fuqinë) e sensorit të lëvizjes me pin 5V të bordit Arduino Uno.-Teli i bardhë lidh pin Trig të sensorit të lëvizjes me kunjin 10 të bordit Arduino Uno.-Teli i verdhë lidh pin Echo të sensori i lëvizjes në kunjin 9 të bordit Arduino Uno.-Teli i zi lidh pinin GND të sensorit të lëvizjes me kunjin GND të bordit Arduino Uno.

[Telat që përdorëm ishin shumë të shkurtër për të arritur në përbërës, kështu që ata ishin të ndërlidhur]

3. Bordi Basys 3 dhe Arduino Uno

Teli i verdhë lidh pinin A14 të tabelës Basys 3 me pinin 6 të bordit Arduino Uno.

*Ky diagram është marrë nga manuali i referencës i Digilent "Basys 3 ™ FPGA Board" i cili mund të gjendet këtu.

Hapi 6: Demonstrim

Hapi 7: Koha për ta provuar

Urime! Ju keni arritur në fund të projektit tonë të sensorit të lëvizjes dhe dritës së kontrolluar kundër! Faleminderit shumë që lexuat postimin tonë Instructables. Tani është koha që ju të përpiqeni ta ndërtoni vetë këtë projekt. Nëse ndiqni çdo hap me kujdes, duhet të keni një sensor lëvizjeje dhe një dritë të kontrolluar kundër që funksionon e ngjashme me tonën! Ne ju dëshirojmë fat të mirë në ndërtimin e këtij projekti, dhe shpresojmë se mund të kontribuojë në kursimin e energjisë elektrike, si dhe burimet natyrore!

Recommended: