Satura rādītājs:
- 1. darbība: Melnās kastes diagramma
- 2. solis: valsts iekārtas
- 3. darbība: norādiet mašīnas patiesības tabulas, ierosmes vienādojumus un izvades vienādojumus
- 4. solis: iesaiņojums, apakšmoduļi un ierobežojumi
- 5. darbība: LED I/O porti
Video: L I G H T S: 5 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Šī gala projekta mērķis bija radīt kaut ko tādu, kas koncentrētos uz ilgtspējību un īstenotu digitālā dizaina koncepcijas, un, lai to paveiktu, es nolēmu izveidot pielāgojamu enerģijas taupīšanas sistēmu, izmantojot vhdl, un izgatavota Basys 3 dēļa (Artix-7 35T sērija)). Mērogojams, jo telpā var ievietot neierobežotu skaitu sensoru un ap ēku vai māju var novietot neierobežotu skaitu šo sistēmu. Tas, ko šī sistēma darītu, teorētiski ietaupītu tūkstošiem dolāru komerciālās ēkās un samazinātu lielu enerģijas patēriņa procentuālo daļu mazākās dzīvojamās kopienās, ieviešot savienotu sistēmu ar aktīvi un pasīvi kontrolētām gaismām, kustības detektoriem, taimeriem, kas parādīti septiņu segmentu displejos, un vadības slēdži. Šis piemērs attiecas uz vienu sistēmu ar trim kustības detektoriem, galveno slēdzi, manuālo/parasto slēdzi, četriem septiņu segmentu displejiem un vienu gaismas signālu, ko sistēma vada.
Piemēram, izvēlētajā telpā apkārt tiktu novietoti vairāki kustības detektori (šim paraugam ir trīs), un katrs no tiem nosūtītu signālu (1), ja tas atklātu kustību, un (0), ja ne. Ja vismaz viens no kustības detektoriem nosaka kustību, gaismas ieslēdzas, ja vēl nav ieslēgtas, un paliek ieslēgtas, ja tās jau ir ieslēgtas. Jebkurā laikā visi kustības detektori neko neatklāj, taimeris sāk skaitīt atpakaļ noteiktu laiku (regulējams kodā), un gaismas paliek ieslēgtas, kamēr taimeris sāk skaitīt laiku. Kad taimeris ir beidzis atpakaļskaitīšanu, taimeris apstājas un gaismas izslēdzas. Ja vismaz viens kustības detektors nosaka kustību, kamēr taimeris sāk skaitīt atpakaļ, taimeris apstājas un tiek atiestatīts. Un, ja vismaz viens kustības detektors nosaka kustību, kad gaismas ir izslēgtas, gaismas uzreiz ieslēdzas.
Šai sistēmai ir divi režīmi, viens ar taimeri, kā norādīts iepriekš, un otrs, kur ir slēdzis, kas manuāli kontrolē gaismas (ignorējot sensorus). Ir galvenais slēdzis, kas ļauj lietotājam izvēlēties, kuru režīmu izmantot, pamatojoties uz to, kurš, viņuprāt, kopumā ietaupīs vairāk enerģijas. Piem. Tāda istaba kā gaitenis varētu gūt labumu no pasīvā taimera režīma- lietotāji nav pārliecināti, kad cilvēki brauks cauri, taču gaismas ieslēgšana un izslēgšana katru reizi, kad ieejat un iziet, radītu neērtības, turpretī šāda telpa kā guļamistaba ar vienu lietotāju būtu labāk vadāma manuāli. Un galvenais slēdzis būtu noderīgs tādos gadījumos kā, ja guļamistabā dzīvojošajai personai būtu jāatstāj uz ilgāku laiku, tad galveno slēdzi varētu izslēgt, un taimera režīms darbotos, lai efektīvāk taupītu enerģiju.
Tātad šajā sistēmā ir divas valsts iekārtas, viena ir galvenā stāvokļa mašīna, bet otra - atpakaļskaitīšanas taimerim. Galvenajai mašīnai ir pieci stāvokļi, kas definēti kā šādi: 1. "gaismas ir ieslēgtas, kustība ir konstatēta" (id = 000), 2. "gaismas ir ieslēgtas, kustība nav konstatēta" (id = 001), 3. "gaismas ir izslēgtas, kustības nav" atklāts "(id = 010), 4." manuāli ieslēgts "(id = 011) un 5." manuāli izslēgts "(id = 100). Šai galvenajai mašīnai ir četras ieejas: galvenais slēdzis (ms), manuālais/parastais slēdzis (ns), signāls, kas ir augsts, kad vismaz viens slēdzis nosaka kustību, un citādi ir zems (orx), un signāls, kas ir augsts, kad taimeris ir pabeigts, un citādi ir zems (td). Galvenajai mašīnai ir divas izejas: gaismas (gaismas) un signāls, kas norāda, kad jāieslēdz atpakaļskaitīšanas taimeris (taimeris) vai (t) (abas tiek izmantotas savstarpēji aizstājamas).
Otrajai stāvokļa mašīnai, atpakaļskaitīšanas taimerim, ir 12 stāvokļi: 10 no tiem ir ID, kas saistīti ar numuru, ko parāda septiņi segmenti- “seg 10” (id = 1010), “seg 9” (id = 1001), […], “Seg 2” (id = 0010), “seg 1” (id = 0001) un abos pārējos stāvokļos tiek parādīta nulle, kas nozīmē, ka taimeris ir izslēgts, tāpēc ir pirmais tukšais “blank 1” (id = 1111)) un otro tukšu "tukšu 2" (id = 0000). Atpakaļskaitīšanas taimerim ir viena ieeja: taimeris (t) un trīs izejas: skaitlis, kas tiek parādīts binārā ar četriem bitiem (bin) un signāls, kas norāda, ka taimeris ir pabeigts (td).
1. darbība: Melnās kastes diagramma
Šis ir pārskats par visas sistēmas darbību, un tas ir aprakstīts ar melnās kastes diagrammu.
- Pulksteni izmanto, lai pulkstenētu galveno stāvokļa mašīnu un septiņu segmentu dekodētāju; lejupvērstam skaitītājam ir nepieciešams lēnāks pulkstenis, tāpēc ir pulksteņa dalītāja modulis, kas ņem pulksteņa ievadi un izvada lēnāku pulksteni lejupvērstam skaitītājam.
- Starpposma mainīgais (orx) iesaiņojumā ir saistīts ar kustības sensoriem un būs augsts, ja vismaz viens no sensoriem kaut ko atklās, un citādi zems; Būla vienādojums tam ir tikai orx = s (2) vai s (1) vai s (0).
-
Galvenais fsm kontrolē sistēmas vispārējo stāvokli atkarībā no ieejām (orx, ms, ns, td) un izvada pašreizējo stāvokli (sm), kas parādīts vienkāršotā veidā, izmantojot divus signālus, kuriem tas tiek izmantots (taimeris un gaismas).
- (taimeris) ir iesaiņojuma signāls, kas tiek nosūtīts uz leju skaitītāju fsm kā ieeja un ko kontrolē galvenā fsm pašreizējais stāvoklis. Tas norāda, kad ieslēgt taimeri.
- (gaismas) ir iesaiņojuma signāls, ko izmanto, lai kontrolētu LED, un to kontrolē galvenā fsm pašreizējais stāvoklis.
-
Lejupvērstā skaitītāja fsm kontrolē to, ko parāda septiņi segmenti atkarībā no ieejas (taimeris), un izvada pašreizējo stāvokli (sd), kas parādīts vienkāršoti ar diviem signāliem, kuriem tas tiek izmantots (td un bin).
- (td) ir iesaiņojuma signāls, kas tiek nosūtīts uz galveno fsm kā ieeju un ko kontrolē lejupvērstā skaitītāja fsm pašreizējais stāvoklis. Tas darbojas kā atgriezeniskās saites signāls, kas norāda, kad taimeris ir pabeigts.
- (bin) ir četru bitu iesaiņojuma signāls, kas ir savienots ar četriem nulles bitiem (“0000” un bin), un apvienotie astoņi biti tiek nosūtīti uz (q), astoņu bitu iesaiņojuma signālu, kas savukārt tiek nosūtīts uz septiņiem segmenta dekodētājs zem (ALU_VAL).
-
Septiņu segmentu modulis ir tāds pats kā Polylearn; tās galvenās ieejas aizņem 8 bitu skaitli (bin) līdz (ALU_VAL), lai parādītu četros dažādos septiņu segmentu displejos, izmantojot izejas (SEGMENTS) iesaiņojuma signālam (seg) un (DISP_EN) - iesaiņojumam (disp_en).
- Tā kā divos vai vairākos septiņu segmentu displejos vienlaikus nevar parādīt dažādus ciparus, ir nepieciešams pulkstenis, lai pārvietotos pa četriem posmiem, vienlaikus parādot atbilstošo ciparu, lai katrs segments tiktu ieslēgts atsevišķi, un riteņbraukšana pietiekami ātri ssegs, šķiet, ir ieslēgts uzreiz.
- (paraksts un derīgs) visā programmā ir nemainīgi, tāpēc (zīme) ir pastāvīgi iestatīta kā zema un (derīga) ir pastāvīgi iestatīta kā augsta.
- (ALU_VAL) uztver iesaiņojuma signālu (q) kā ievadi, kas apzīmē skaitli, kas tiks parādīts binārajā septiņu segmentu displejā.
- Izeja (SEGMENTS) tiek nosūtīta uz astoņu bitu iesaiņojuma signālu (seg) un (DISP_EN) uz četru bitu iesaiņojuma signālu (disp_en).
-
Ir arī D flip flop modulis, kas nav skaidri parādīts diagrammā, bet ir nepieciešams abām stāvokļa mašīnām kā apakšmoduļi un palīdz sinhroni stāvokļu pārejai.
- (3) no tiem ir nepieciešami galvenajam fsm, jo 2^(3) = 8> 5 stāvokļi kodēšanai
- (4) no tiem ir nepieciešami lejupvērstam skaitītājam fsm, jo 2^4 = 16> 12 stāvokļi kodēšanai
2. solis: valsts iekārtas
Lai pareizi izstrādātu abas stāvokļa mašīnas, ir skaidri jādefinē atsevišķi stāvokļi, norādot tā izvadus un stāvokli, uz kuru tas pāriet, pamatojoties uz dažādajām iespējamām ievadēm.
Galvenais fsm norāda:
“Iedegtas gaismas, konstatēta kustība” (id = 000)
Gaismas ir ieslēgtas, vismaz viens no kustības detektoriem nosaka kustību, tāpēc orx jābūt augstam un ms ir ieslēgts.
- Izejas: gaismas = 1 un taimeris = 0
- Šis stāvoklis paliek, ja ms = 1 un orx = 1.
- Pārslēdzas uz statusu “gaismas ir ieslēgtas, kustība nav konstatēta”, ja ms = 1 un orx = 0.
- Pāriet uz stāvokli “manuāli ieslēgts”, ja ms = 0 un ns = 1.
- Pāriet uz stāvokli “manuāli izslēgts”, ja ms = 0 un ns = 0.
“Gaisma ir ieslēgta, kustība nav konstatēta” (id = 001)
Gaismas ir ieslēgtas, kustību detektors neatklāj kustības, tāpēc orx jābūt zemam un ms ir ieslēgts. Arī šī stāvokļa sākumā taimeris, kas tiek iestatīts kā augsts, liek atpakaļskaitīšanas fsm sākt atpakaļskaitīšanu, turpina skaitīt atpakaļ un pārtrauc skaitīšanu, kad atpakaļskaitīšanas fsm paziņo šim fsm, ka skaitīšana ir pabeigta.
- Izejas: gaismas = 1 un taimeris = 1.
- Paliek šāds stāvoklis, kad ms = 1 un orx = 0 un td (taimeris ir pabeigts) = 0.
- Pārslēdzas uz statusu “gaismas ir ieslēgtas, kustība ir konstatēta”, ja ms = 1 un orx = 1.
- Pāreja uz stāvokli “gaismas ir izslēgtas, kustība nav konstatēta”, ja ms = 1 un orx = 0 un td = 1.
- Pāriet uz stāvokli “manuāli ieslēgts”, ja ms = 0 un ns = 1.
- Pāriet uz stāvokli “manuāli izslēgts”, ja ms = 0 un ns = 0.
“Gaisma ir izslēgta, kustība nav konstatēta” (id = 010)
Gaismas ir izslēgtas, kustība nav konstatēta no neviena kustības sensora un taimeris ir beidzis atpakaļskaitīšanu, tāpēc orx jābūt zemam, ms ir ieslēgts un td ir izslēgts.
- Izejas: gaismas = 0 un taimeris = 0.
- Šis stāvoklis paliek, ja ms = 1 un orx = 0.
- Pārslēdzas uz statusu “gaismas ir ieslēgtas, kustība ir konstatēta”, ja ms = 1 un orx = 1.
- Pāriet uz stāvokli “manuāli ieslēgts”, ja ms = 0 un ns = 1.
- Pāriet uz stāvokli “manuāli izslēgts”, ja ms = 0 un ns = 0.
“Manuāli ieslēgts” (id = 011)
Gaismas ir ieslēgtas, kustības detektori nav svarīgi, tāpēc ms tiek izslēgts un ieslēgts ns.
- Izejas: gaismas = 1 un taimeris = 0.
- Šis stāvoklis paliek, ja ms = 0 un ns = 1.
- Pāriet uz stāvokli “manuāli izslēgts”, ja ms = 0 un ns = 0.
- Pāreja uz stāvokli “gaismas ir izslēgtas, kustība nav konstatēta, ja ms = 1.
“Manuāli izslēgts” (id = 100)
Gaismas ir izslēgtas, kustības detektori nav svarīgi, tāpēc ms tiek izslēgts un ns ir izslēgts.
- Izejas: gaismas = 0 un taimeris = 0.
- Šis stāvoklis paliek, ja ms = 0 un ns = 0.
- Pāriet uz stāvokli “manuāli ieslēgts”, ja ms = 0 un ns = 1.
- Pāreja uz stāvokli “gaismas ir izslēgtas, kustība nav konstatēta, ja ms = 1.
Lejupvērstie skaitītāji norāda:
“Seg 10” (id = 1010)
Septiņu segmentu displejā ir redzams 10.
- Izejas: bin = “1010” un td = 0.
- Pārslēdzas uz stāvokli “seg 9”, ja taimeris = 1.
- Pārslēdzas uz “tukšs 2”, ja taimeris = 0.
“Seg 9” (id = 1001)
Septiņu segmentu displejā redzams 9.
- Izejas: bin = “1001” un td = 0.
- Pārslēdzas uz stāvokli “seg 8”, ja taimeris = 1.
- Pārslēdzas uz “tukšs 2”, ja taimeris = 0.
(Apzīmējumi "Seg 8" līdz "Seg 2" tiek izlaisti, jo tiem ir tāds pats modelis kā "Seg 10" un "Seg 9", un tie nav nepieciešami paskaidrojumam)
“Seg 1” (id = 0001)
Septiņu segmentu displejā redzams 1.
- Rezultāti: bin = “0001” un td = 0.
- Pāriet uz stāvokli “tukšs 2” nākamajā pulksteņa augšupejošajā malā (ievade nav nepieciešama).
“Tukšs 2” (id = 1111)
Septiņu segmentu displejā redzams 0. Otra tukša stāvokļa mērķis ir tāds, ka drošībai ir atsevišķs stāvoklis, kad td = 1.
- Izejas: bin = “1111” un td = 1.
- Pāriet uz stāvokli “tukšs 1” nākamajā pulksteņa augšupejošajā malā (ievade nav nepieciešama).
“Tukšs 1” (id = 0000)
Septiņu segmentu displejā tiek rādīts 0. Šis ir stāvoklis, kādā sistēma paliek, kad galvenā stāvokļa mašīna ir stāvoklī “iedegas, kustība nav konstatēta”.
- Izejas: bin = “0000” un td = 0.
- Pāriet uz stāvokli “seg 10”, ja taimeris = 1.
3. darbība: norādiet mašīnas patiesības tabulas, ierosmes vienādojumus un izvades vienādojumus
Nākamais solis ir izveidot patiesības tabulas abām stāvokļa mašīnām un ierosmes vienādojumus un izvades vienādojumus katrai fsm. Katram fsm ierosmes vienādojumam ir jābūt vienādojumiem katram nākamajam stāvokļa kodētajam bitam pašreizējā stāvokļa un tā ievades signālu izteiksmē. Katram fsm izejas vienādojumam ir jābūt vienādojumiem katram izejas signālam pašreizējā stāvokļa izteiksmē. Visas četras vienādojumu kopas var izdarīt no attēlotajām patiesības tabulām. (qn ir nākamais stāvokļa kodētais bits katrai valsts mašīnai, un q ir pašreizējais stāvoklis)
(000) ekvivalents q (2) 'q (1)' q (0) 'un (0000) ekvivalents q (3)' q (2) 'q (1)' q (0) '
(piem., (0101) ir q (3) 'q (2) q (1)' q (0) un (110) ir q (2) q (1) q (0) ')
Galvenās fsm ierosmes vienādojumi:
- qn (2) = (ms) '(ns)
- qn (1) = (ms) '(ns)' + (ms) (orx) '[(td) (001) + (010)] + (ms) [(011) + (100)]
- qn (0) = (ms) '(ns)' + (ms) (orx) '[(000) + (td)' (001)]
Galvenās fsm izvades vienādojumi:
- gaismas = (000) + (001) + (100)
- taimeris = (001)
Uzbudinājuma vienādojumi lejupvērstam skaitītājam fsm:
- qn (3) = t [(0000) + (1010) + (1001) + (0001)]
- qn (2) = t [(1000) + (0111) + (0110) + (0101) + (0001)]
- qn (1) = t [(0000) + (1000) + (0111) + (0100) + (0011) + (0001)]
- qn (0) = t [(1010) + (1000) + (0110) + (0100) + (0010) + (0001)]
Izejas vienādojumi lejupvērstam skaitītājam fsm:
- td = (1111)
- tvertne (3) = (1010) + (1001) + (1000) + (1111) + (0000)
- tvertne (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
- tvertne (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
- bin (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)
4. solis: iesaiņojums, apakšmoduļi un ierobežojumi
Kā paskaidrots jau 1. darbībā, šie moduļi ir nepieciešami šim projektam, un tie visi ir saistīti ar iesaiņojuma moduli ar nosaukumu "final_proj.vhd". Ierobežojumu fails ar nosaukumu "Basys3_Master.xdc" tiek izmantots, lai saistītu visas iesaiņojuma ieejas un izejas ar slēdžiem, septiņiem segmentiem un ieejas/izejas portiem Basys 3 panelī. Galvenajam slēdzim jābūt slēdzim uz tāfeles, kas atrodas vistuvāk vadu ieslēgšanas pusei, parastais/manuālais slēdzis ir otrais tuvākais, un trīs slēdži, kas attēlo trīs kustības sensorus, ir trīs slēdži, kas atrodas tieši blakus parastajam/manuālajam slēdzim. Viss kods (Būla vienādojumi, moduļu deklarācijas utt.) Jau ir ierakstīts failos, tāpēc jums nekas cits nav jāraksta, lai tas darbotos.
5. darbība: LED I/O porti
Pēdējais šī projekta solis ir izmantot LED, lai parādītu, vai (gaismas) patiešām ieslēdzas vai izslēdzas. Elektroinstalācija ir parādīta abos attēlos. Pārliecinieties, vai sērijveidā ir rezistors ar gaismas diodi (vismaz 330 omi), lai LED neizdegtu, un pārliecinieties, ka garā spraudīte ir savienota ar to pašu pamatnes mātes uzliku, kā parādīts sarkanais vads (augšā labākā) un īsākā tapa ir savienota ar zemi, tāda pati mātītes galviņa, kā parādīts melnais vads (augšējā, otrā no kreisās).
Ieteicams:
Arduino brīdinājuma sistēma par automašīnas novietošanu atpakaļgaitā Soli pa solim: 4 soļi
Arduino brīdinājuma sistēma par automašīnas novietošanu atpakaļgaitā Soli pa solim: Šajā projektā es izveidošu vienkāršu Arduino automašīnas atpakaļgaitas stāvvietas sensora shēmu, izmantojot Arduino UNO un ultraskaņas sensoru HC-SR04. Šo uz Arduino bāzēto automašīnas reverso brīdinājuma sistēmu var izmantot autonomai navigācijai, robotu diapazonam un citiem diapazoniem
Soli pa solim datora veidošana: 9 soļi
Soli pa solim datora veidošana: Piegādes: Aparatūra: mātesplateCPU & CPU dzesētājs PSU (barošanas bloks) Krātuve (HDD/SSD) RAMGPU (nav nepieciešams) Korpuss Instrumenti: skrūvgriezis ESD rokassprādze/matermālā pasta ar aplikatoru
Trīs skaļruņu shēmas -- Soli pa solim apmācība: 3 soļi
Trīs skaļruņu shēmas || Soli pa solim apmācība: Skaļruņu ķēde pastiprina no vides saņemtos audio signālus uz MIC un nosūta to skaļrunim, no kura tiek radīts pastiprināts audio. Šeit es parādīšu trīs dažādus veidus, kā izveidot šo skaļruņu shēmu, izmantojot:
Arduino Halloween Edition - zombiju uznirstošais ekrāns (soļi ar attēliem): 6 soļi
Arduino Helovīna izdevums - zombiju uznirstošais ekrāns (soļi ar attēliem): Vai vēlaties Helovīnā nobiedēt savus draugus un radīt kliedzošu troksni? Vai arī vienkārši gribi uztaisīt labu palaidnību? Šis zombiju uznirstošais ekrāns to var izdarīt! Šajā pamācībā es iemācīšu jums, kā viegli izveidot izlecošus zombijus, izmantojot Arduino. HC-SR0
Akustiskā levitācija ar Arduino Uno soli pa solim (8 soļi): 8 soļi
Akustiskā levitācija ar Arduino Uno soli pa solim (8 soļi): ultraskaņas skaņas pārveidotāji L298N līdzstrāvas adaptera strāvas padeve ar vīriešu līdzstrāvas tapu Arduino UNOBreadboard un analogie porti koda konvertēšanai (C ++)