INHOUDSOPGAWE:

Bewegingsensor/toonbankbeheerde ligte: 7 stappe
Bewegingsensor/toonbankbeheerde ligte: 7 stappe

Video: Bewegingsensor/toonbankbeheerde ligte: 7 stappe

Video: Bewegingsensor/toonbankbeheerde ligte: 7 stappe
Video: How to use W3230 Thermostat Heat and Cold Relay Controller AC DC 12V/24V/120/220V P1 to P8 2024, Julie
Anonim
Bewegingsensor/toonbankbeheerde ligte
Bewegingsensor/toonbankbeheerde ligte

Hierdie projek is geskep as 'n finale projek vir 'n Digital Design -kursus by Cal Poly, San Luis Obispo (CPE 133).

Waarom wil ons dit doen? Ons wil help om natuurlike hulpbronne ter wêreld te bewaar. Ons projek fokus op die besparing van elektrisiteit. Deur meer elektrisiteit te bespaar, kan ons die natuurlike hulpbronne wat gebruik word om elektrisiteit op te wek, bewaar. Met die aanvang van 2018 word natuurlike hulpbronne teen 'n ongelooflike tempo verbruik. Ons wil ons bewus wees van ons impak op ons omgewing en ons deel speel in die bewaring van natuurlike hulpbronne. Elektronika kan op verskillende maniere geïmplementeer word om energie te bespaar, wat die omgewing sowel as ons ekonomiese toestand help.*Hierdie model is gemaak met behulp van die beskikbare komponente.

Wat was ons inspirasie? Mense vergeet dikwels om hul vakansieligte af te skakel en vermors energie deur hulle oornag aan te sit. In werklikheid sal hierdie projek elektrisiteit bespaar omdat die "vakansie -ligte" slegs sal brand as mense naby is, en sodoende energie bespaar as niemand naby is nie. Boonop wou ons 'n timer ontwerp sodat die ligte na 'n gegewe tyd heeltemal sou afskakel om te verseker dat hulle nie aanskakel as gevolg van beweging wat byvoorbeeld om 03:00 opgespoor word nie.

Hoe kan u hierdie ontwerp gebruik? Hierdie ontwerp kan geïmplementeer word vir allerhande ligte, of dit nou dekoratief, prakties of albei is. As u byvoorbeeld wil hê dat u lessenaar slegs ses uur op 'n slag moet funksioneer. U sal 'n teller moet stel op 21, 600 sekondes (6 uur x 3, 600 sekondes/uur). Terwyl die toonbank aktief toeneem, sal die bewegingsensor die lig beheer. Elke keer dat dit gedurende daardie tydperk afskakel, hoef u net u hand voor die bewegingsensor te waai, en dit sal weer aanskakel. As u by u lessenaar aan die slaap raak en 7 uur later wakker word, sal u beweging dit nie aanskakel nie.

Stap 1: Vereiste sagteware en hardeware

Vereiste sagteware en hardeware
Vereiste sagteware en hardeware
Vereiste sagteware en hardeware
Vereiste sagteware en hardeware
Vereiste sagteware en hardeware
Vereiste sagteware en hardeware
Vereiste sagteware en hardeware
Vereiste sagteware en hardeware

Sagteware:

  • Vivado 2016.2 (of 'n meer onlangse weergawe) kan hier gevind word
  • Arduino IDE 1.8.3 (of 'n meer onlangse weergawe) kan hier gevind word

Hardeware:

  • 1 Basys 3 bord
  • 1 Arduino Uno
  • 2 Broodplanke
  • 1 Ultrasoniese afstandsensor HC-SR04
  • 9 Man-tot-mannetjies drade
  • 1 LED
  • 1 100Ω Weerstand

Stap 2: Kodes (Vivado)

Kodes (Vivado)
Kodes (Vivado)

Finite State Machine (sien toestand diagram hierbo):

Die LED benodig 'n eindtoestandmasjien. 'N LED het slegs twee toestande om aan en af te wees. Slegs twee insette beheer die toestand van die LED, die toonbank en die sensor. Die enigste keer dat die LED moet brand, is wanneer die sensor beweging opspoor en die toonbank van nul tot dertig sekondes tel. In enige ander geval sal die LED af wees.

Lêernaam: LEDDES

Teller:

Met die toonbank kan ons die tydsduur beperk waarin die bewegingsensor die LED kan aktiveer. Die waarde daarvan word op die Basys 3 Board se sewe segment vertoon deur middel van 'n bronkode ("sseg_dec"). As die Reset -skakelaar af is (waarde: '0'), begin die teller elke sekonde van 0 na 30. As dit 30 bereik, vries dit op die getal. Dit begin nie weer van 0 af totdat die Reset -skakelaar na '1' en terug na '1.' teruggeskakel word nie. As Reset '1' word terwyl die teller aangaan, sal die teller vries op die waarde wat dit bereik het. As Reset teruggaan na '0', begin die toonbank weer van 0 tot 30. Hierdie implementering vereis ook die gebruik van 'n kloksignaal; die kode word hieronder verskaf ("clk_div2").

Lêernaam: FinalCounter

VERSKAF lêers:

Sewe segment vertoon:

Met hierdie kode kan die sewe segment vertoon desimale waardes vertoon. Een submodule dien as dekodeerder tussen 'n 8-bis binêre invoer en 'n 4-bis Binary Coded Decimal. Die ander een verdeel die kloksignaal om die waarde teen 'n sekere tempo te verfris.

Lêernaam: sseg_dec

Kloksein:

Met hierdie kode kan die toonbank in stappe van 1 sekonde toeneem. Dit verdeel die ingangsklokfrekwensie in 'n stadiger frekwensie. Ons het aangepas om 'n periode van 1 sekonde te gee deur konstante max_count: integer: = (3000000) "na" constant max_count: integer: = (50000000) te verander."

Lêernaam: clk_div2

Verskaf lêers: sseg_dec, clk_div2 *Hierdie bronlêers is verskaf deur professor Bryan Mealy.

Stap 3: Verstaan hoe hulle bymekaar kom (skema's van VHDL -komponente)

Verstaan hoe hulle bymekaarkom (skema's van VHDL -komponente)
Verstaan hoe hulle bymekaarkom (skema's van VHDL -komponente)

Die hooflêer ("MainProjectDES") bevat al die sub -lêers wat voorheen bespreek is. Hulle is op bogenoemde wyse verbind. Die verskillende komponente word met mekaar verbind met poortkaarte om 'n sein van een element na 'n ander te stuur.

Soos u dalk opgemerk het, bied die FinalCounter 'n 5-bis-uitvoer, terwyl sseg_dec 'n 8-bis-invoer benodig. Om dit te vergoed, stel ons die sein wat beide komponente verbind, aan met '000' en voeg die 5-bis-uitset van die toonbank by. Dit bied dus 'n 8-bis-invoer.

Beperkings:

Om hierdie kodes op die Basys 3 -bord te laat loop, was 'n beperkingslêer nodig wat vir elke sein aandui waarheen hulle moet gaan en hoe die dele verbind is.

Stap 4: Kode (Arduino)

Ons het die Arduino Uno geprogrammeer om die bewegingsensor te gebruik om beweging op te spoor en 'n uitset te gee wat die LED aandui om aan te brand. Boonop benodig lopende lusse wat die sensor gebruik om beweging op te spoor wat voortdurend na verandering in afstand soek. Dit het in wese 'n timer nodig wat gelyktydig loop om 'n 'hoë' sein te gee sodat die LED kan brand, terwyl die timer herinstel moet word sodra nuwe beweging opgespoor word, wat byna onmoontlik is om op Vivado te implementeer op grond van die omvang van die kennis van die klas. Boonop het ons 'n Arduino gebruik omdat dit nie haalbaar sou wees om HC-SR04 met die Basys 3-bord te gebruik nie, aangesien die kaart slegs 3,3V lewer terwyl die sensor 'n 5V-kragtoevoer benodig. Vir die implementering van die opsporingsbeweging is dit werklike kodering in teenstelling met CAD in VHDL.

Ons het die ingeboude ingeboude funksie vir die sensor gebruik om die tyd wat tussen die geluid wat oorspronklik deur die sensor uitgestraal word, te herwin, en die geluid wat weerkaats wanneer 'n voorwerp getref word. Dan gebruik ons die spoed van klank en tydsinterval om die afstand tussen die voorwerp en die sensor te bereken. Daaruit stoor ons die huidige afstand en hou dit dop. Ons kyk elke 150 ms na die afstand. Ons het ook die elapsedmil -biblioteek gebruik om 'n interne timer in die arduino in te voer om die tyd wat verloop het, by te hou. As ons 'n afstandsverandering opspoor, wat ooreenstem met 'n beweging, word die timer weer op nul gestel en dit sal die lig aanhou tot 3 sekondes verby is. Elke keer as die sensor 'n ander beweging opspoor, word die timer teruggestel na 0 en die sein vir die LED -lig sal gedurende die volgende 3 sekondes hoog wees. Ons het 'n afskrif van ons Arduino -kode hieronder aangeheg.

Stap 5: Hoe pas ons komponente bymekaar

Hoe pas ons komponente bymekaar!
Hoe pas ons komponente bymekaar!
Hoe pas ons komponente bymekaar!
Hoe pas ons komponente bymekaar!
Hoe pas ons komponente bymekaar!
Hoe pas ons komponente bymekaar!

Soos u kan sien in die "Basys3: Pmod Pin-out Diagram*" en die foto van die Arduino Uno Board, het ons die poorte wat ons gebruik het gemerk en benoem.

1. Die LED en Basys 3 Board

Die LED is in serie verbind met die 100Ω weerstand. -Die wit draad verbind die weerstand met die pin PWR van die Basys 3 -bord. -Die geel draad verbind die LED met pen H1 van die Basys 3 -bord.

2. Die bewegingsensor en die Arduino Uno

-Die oranje draad verbind Vcc (krag) van die bewegingsensor met pen 5V van die Arduino Uno-bord. -Die wit draad verbind pen Trig van die bewegingsensor aan pen 10 van die Arduino Uno-bord. -Die geel draad verbind pen Echo van die bewegingsensor aan pen 9 van die Arduino Uno-bord. -Die swart draad verbind pen GND van die bewegingsensor met die pen GND van die Arduino Uno-bord.

[Die drade wat ons gebruik het, was te kort om by die komponente te kom, dus was hulle onderling verbind]

3. Die Basys 3 -bord en die Arduino Uno

Die geel draad verbind pen A14 van die Basys 3 -bord met pen 6 van die Arduino Uno -bord.

*Hierdie diagram is geneem uit Digilent se "Basys 3 ™ FPGA Board Reference Manual" wat hier gevind kan word.

Stap 6: Demonstrasie

Stap 7: Tyd om dit uit te toets

Baie geluk! U het die einde bereik van ons bewegingsensor en teen -beheerde ligprojek! Baie dankie dat u ons Instructables -pos gelees het. Dit is nou tyd dat u hierdie projek self probeer bou. As u elke stap noukeurig volg, moet u 'n bewegingsensor en 'n teenbeheerde lig hê wat soortgelyk is aan ons s'n! Ons wens u sterkte toe met die bou van hierdie projek en hoop dat dit kan bydra tot die besparing van elektrisiteit sowel as natuurlike hulpbronne!

Aanbeveel: