Daftar Isi:

L I G H T S: 5 Langkah
L I G H T S: 5 Langkah

Video: L I G H T S: 5 Langkah

Video: L I G H T S: 5 Langkah
Video: 5 Lights portrait photographers should know... 2024, November
Anonim
L I G H T S
L I G H T S

Tujuan dari tugas akhir ini adalah untuk membuat sesuatu yang akan fokus pada keberlanjutan dan menerapkan konsep desain digital, dan untuk melakukan ini, saya memutuskan untuk merancang sistem hemat daya yang terukur menggunakan vhdl dan dibuat untuk Basys 3 Board (Seri Pasal-7 35T). Skalabel karena sejumlah sensor dapat ditempatkan di ruangan dan sejumlah sistem ini dapat diletakkan di sekitar gedung atau rumah. Apa yang akan dilakukan sistem ini, secara teoritis menghemat ribuan dolar dalam bangunan komersial dan mengurangi persentase besar konsumsi energi di komunitas perumahan yang lebih kecil dengan menerapkan sistem terhubung dari lampu yang dikontrol secara aktif dan pasif, detektor gerakan, pengatur waktu yang ditampilkan pada layar tujuh segmen, dan saklar kontrol. Contoh ini berkaitan dengan sistem tunggal dengan tiga detektor gerakan, sakelar utama, sakelar manual/normal, empat tampilan tujuh segmen, dan satu lampu yang dikontrol sistem.

Misalnya, di ruangan yang dipilih, beberapa detektor gerakan akan ditempatkan di sekitarnya (contoh desain ini memiliki tiga), dan masing-masing akan mengirim sinyal (1) jika mendeteksi gerakan, dan (0) jika tidak. Jika setidaknya satu dari detektor gerakan mendeteksi gerakan, lampu akan menyala jika belum menyala dan tetap menyala jika sudah menyala. Setiap saat semua detektor gerakan tidak mendeteksi apa pun, penghitung waktu mulai menghitung mundur untuk jangka waktu tertentu (dapat disesuaikan dalam kode), dan lampu tetap menyala saat penghitung waktu menghitung mundur. Setelah penghitung waktu selesai menghitung mundur, penghitung waktu berhenti, dan lampu mati. Jika setidaknya satu detektor gerakan mendeteksi gerakan saat pengatur waktu menghitung mundur, pengatur waktu berhenti dan diatur ulang. Dan jika setidaknya satu detektor gerakan mendeteksi gerakan saat lampu mati, lampu langsung menyala.

Sistem ini memiliki dua mode, satu dengan timer seperti yang disebutkan di atas, dan yang kedua di mana ada sakelar yang mengontrol lampu secara manual (mengabaikan sensor). Ada sakelar utama yang memungkinkan pengguna untuk memilih mode mana yang ingin mereka gunakan berdasarkan mana yang mereka rasa akan menghemat lebih banyak energi secara keseluruhan. Mantan. Ruangan seperti lorong bisa mendapatkan keuntungan dari mode pengatur waktu pasif- pengguna tidak yakin kapan orang akan lewat, tetapi menyalakan dan mematikan lampu setiap kali mereka masuk dan keluar akan menjadi ketidaknyamanan, sedangkan ruangan seperti itu sebagai kamar tidur dengan single user akan lebih baik dioperasikan secara manual. Dan sakelar utama akan membantu dalam kasus seperti jika orang yang tinggal di kamar tidur akan pergi untuk waktu yang lama, maka sakelar utama dapat dimatikan, dan mode pengatur waktu akan bekerja untuk menghemat energi dengan lebih efisien.

Jadi dalam sistem ini, ada dua mesin keadaan, satu adalah mesin keadaan utama, dan satu lagi untuk penghitung waktu mundur. Mesin status utama memiliki lima status yang didefinisikan sebagai berikut: 1. "lampu menyala, gerakan terdeteksi" (id = 000), 2. "lampu menyala, tidak ada gerakan yang terdeteksi" (id = 001), 3. "lampu mati, tidak ada gerakan terdeteksi" (id = 010), 4. "diaktifkan secara manual" (id = 011), dan 5. "dimatikan secara manual" (id = 100). Mesin status utama ini memiliki empat input: sakelar master (ms), sakelar manual/normal (ns), sinyal yang tinggi ketika setidaknya satu sakelar mendeteksi gerakan, dan sebaliknya rendah (orx), dan sinyal yang tinggi setelah penghitung waktu selesai, dan rendah jika tidak (td). Mesin negara utama memiliki dua output: lampu (lampu) dan sinyal yang menunjukkan kapan harus menyalakan penghitung waktu mundur (timer) atau (t) (keduanya digunakan secara bergantian).

Mesin status kedua, penghitung waktu mundur, memiliki 12 status: 10 di antaranya memiliki id yang terkait dengan nomor yang ditampilkan oleh tujuh segmen- “seg 10” (id = 1010), “seg 9” (id = 1001), […], “seg 2” (id = 0010), “seg 1” (id = 0001), dan dua status lainnya sama-sama menampilkan nol, mewakili timer mati- jadi ada "blank 1" kosong pertama (id = 1111) dan yang kedua kosong "kosong 2" (id = 0000). Penghitung waktu mundur memiliki satu masukan: penghitung waktu (t), dan tiga keluaran: angka yang ditampilkan dalam biner dengan empat bit (bin) dan sinyal yang menunjukkan penghitung waktu selesai (td).

Langkah 1: Diagram Kotak Hitam

Diagram Kotak Hitam
Diagram Kotak Hitam

Ini adalah gambaran umum tentang bagaimana seluruh sistem seharusnya beroperasi, dan dijelaskan dengan diagram kotak hitam.

  • Jam digunakan untuk mencatat mesin keadaan utama dan dekoder tujuh segmen; jam yang lebih lambat diperlukan untuk pencacah bawah, jadi ada modul pembagi jam yang mengambil input jam dan mengeluarkan jam yang lebih lambat untuk pencacah bawah.
  • Variabel perantara (orx) di pembungkus terikat ke sensor gerak dan akan tinggi jika setidaknya salah satu sensor mendeteksi sesuatu, dan rendah sebaliknya; persamaan boolean untuk itu hanya orx = s(2) atau s(1) atau s(0).
  • Kontrol fsm utama di mana keadaan umum sistem berada, tergantung pada input (orx, ms, ns, td) dan output keadaan saat ini (sm) ditampilkan disederhanakan dengan dua sinyal yang digunakan untuk (timer dan lampu).

    • (timer) adalah sinyal pembungkus yang dikirim ke counter bawah fsm sebagai inputnya dan dikendalikan oleh status utama fsm saat ini. Ini menunjukkan kapan harus menyalakan timer.
    • (Lampu) adalah sinyal pembungkus yang digunakan untuk mengontrol led dan dikendalikan oleh status fsm utama saat ini.
  • Penghitung turun fsm mengontrol apa yang ditampilkan oleh tujuh segmen tergantung pada input (pengatur waktu) dan keluaran status saat ini (sd) yang ditampilkan disederhanakan dengan dua sinyal yang digunakan untuk (td dan bin).

    • (td) adalah sinyal pembungkus yang dikirim ke fsm utama sebagai inputnya dan dikendalikan oleh status fsm counter bawah saat ini. Ini berfungsi sebagai sinyal umpan balik yang menunjukkan kapan timer selesai.
    • (bin) adalah sinyal pembungkus empat bit yang digabungkan dengan empat bit nol ("0000" & bin) dan gabungan delapan bit dikirim ke (q), sinyal pembungkus delapan bit, yang pada gilirannya dikirim ke tujuh dekoder segmen di bawah (ALU_VAL).
  • Modul tujuh segmen sama dengan yang ada di Polylearn; input utamanya mengambil nomor 8 bit (bin) ke (ALU_VAL) untuk ditampilkan pada empat tampilan tujuh segmen yang berbeda menggunakan output (SEGMENTS) ke sinyal pembungkus (seg) dan (DISP_EN) ke pembungkus (disp_en).

    • Karena dua atau lebih tampilan tujuh segmen tidak dapat menampilkan angka yang berbeda pada saat yang sama, jam diperlukan untuk menggilir empat seg, menampilkan angka yang sesuai pada satu waktu untuk setiap seg yang dihidupkan satu per satu, dan bersepeda cukup cepat membuat ssegs muncul sekaligus.
    • (tanda dan valid) konstan sepanjang program ini, jadi (tanda) disetel rendah secara permanen dan (valid) disetel tinggi secara permanen.
    • (ALU_VAL) mengambil sinyal pembungkus (q) sebagai input, yang mewakili nomor yang akan ditampilkan pada tampilan tujuh segmen dalam biner.
    • Output (SEGMENTS) dikirim ke sinyal pembungkus delapan bit (seg) dan (DISP_EN) ke sinyal pembungkus empat bit (disp_en).
  • Ada juga modul D flip flop yang tidak secara eksplisit ditampilkan dalam diagram tetapi diperlukan untuk dua mesin status sebagai submodul dan membantu status transisi secara sinkron.

    • (3) di antaranya diperlukan untuk fsm utama karena 2^(3) = 8 > 5 status untuk penyandian
    • (4) di antaranya diperlukan untuk penghitung turun fsm karena 2^4 = 16 > 12 status untuk penyandian

Langkah 2: Mesin Negara

Mesin Negara
Mesin Negara

Untuk mendesain dua mesin status dengan benar, status individual perlu didefinisikan dengan jelas, dengan outputnya dan status transisinya berdasarkan kemungkinan input yang berbeda.

Fsm utama menyatakan:

“Lampu menyala, gerakan terdeteksi” (id = 000)

Lampu menyala, setidaknya salah satu detektor gerakan mendeteksi gerakan, jadi orx harus tinggi dan ms dihidupkan.

  • Output: lampu = 1 dan timer = 0
  • Tetap seperti ini ketika ms = 1 dan orx = 1.
  • Pergi ke status "lampu menyala, tidak ada gerakan yang terdeteksi" jika ms = 1 dan orx = 0.
  • Pergi ke status "diaktifkan secara manual" jika ms = 0 dan ns = 1.
  • Pergi ke status "mati secara manual" jika ms = 0 dan ns = 0.

“Lampu menyala, tidak ada gerakan yang terdeteksi” (id = 001)

Lampu menyala, tidak ada gerakan yang terdeteksi dari detektor gerakan apa pun, jadi orx harus rendah dan ms dihidupkan. Juga di awal keadaan ini, pengatur waktu yang disetel tinggi memberi tahu fsm hitung mundur untuk mulai menghitung mundur, melanjutkan menghitung mundur, dan berhenti menghitung mundur setelah fsm hitung mundur memberi tahu fsm ini bahwa penghitungan selesai.

  • Output: lampu = 1 dan timer = 1.
  • Tetap seperti ini ketika ms = 1 dan orx = 0 dan td (penghitung waktu selesai) = 0.
  • Pergi ke status "lampu menyala, gerakan terdeteksi" jika ms = 1 dan orx = 1.
  • Pergi ke negara "lampu mati, tidak ada gerakan yang terdeteksi" jika ms = 1 dan orx = 0 dan td = 1.
  • Pergi ke status "diaktifkan secara manual" jika ms = 0 dan ns = 1.
  • Pergi ke status "mati secara manual" jika ms = 0 dan ns = 0.

“Lampu mati, tidak ada gerakan yang terdeteksi” (id = 010)

Lampu mati, tidak ada gerakan yang terdeteksi dari sensor gerak apa pun dan timer selesai menghitung mundur, jadi orx harus rendah, ms dihidupkan, dan td mati.

  • Output: lampu = 0 dan timer = 0.
  • Tetap seperti ini ketika ms = 1 dan orx = 0.
  • Pergi ke status "lampu menyala, gerakan terdeteksi" jika ms = 1 dan orx = 1.
  • Pergi ke status "diaktifkan secara manual" jika ms = 0 dan ns = 1.
  • Pergi ke status "mati secara manual" jika ms = 0 dan ns = 0.

“Dinyalakan secara manual” (id = 011)

Lampu menyala, detektor gerakan tidak relevan, jadi ms dimatikan, dan ns dihidupkan.

  • Output: lampu = 1 dan timer = 0.
  • Tetap seperti ini ketika ms = 0 dan ns = 1.
  • Pergi ke status "mati secara manual" jika ms = 0 dan ns = 0.
  • Pergi ke status “lampu mati, tidak ada gerakan yang terdeteksi jika ms = 1.

“Dimatikan secara manual” (id = 100)

Lampu mati, detektor gerakan tidak relevan, jadi ms dimatikan, dan ns dimatikan.

  • Output: lampu = 0 dan timer = 0.
  • Tetap seperti ini ketika ms = 0 dan ns = 0.
  • Pergi ke status "diaktifkan secara manual" jika ms = 0 dan ns = 1.
  • Pergi ke status “lampu mati, tidak ada gerakan yang terdeteksi jika ms = 1.

Penghitung turun menyatakan:

“Seg 10” (id = 1010)

Tampilan tujuh segmen menunjukkan 10.

  • Keluaran: bin = “1010” dan td = 0.
  • Pergi ke negara "seg 9" jika timer = 1.
  • Pergi ke status "kosong 2" jika timer = 0.

“Seg 9” (id = 1001)

Tampilan tujuh segmen menunjukkan angka 9.

  • Keluaran: bin = “1001” dan td = 0.
  • Pergi ke negara "seg 8" jika timer = 1.
  • Pergi ke status "kosong 2" jika timer = 0.

(Status "Seg 8" hingga "Seg 2" dihilangkan karena mengikuti pola yang sama seperti "Seg 10" dan "Seg 9" dan tidak diperlukan untuk penjelasan)

“Seg 1” (id = 0001)

Tampilan tujuh segmen menunjukkan 1.

  • Keluaran: bin = “0001” dan td = 0.
  • Pergi ke status "kosong 2" di tepi naik berikutnya dari jam (tidak diperlukan input).

“Kosong 2” (id = 1111)

Tampilan tujuh segmen menunjukkan 0. Tujuan dari keadaan kosong kedua adalah agar ada keadaan terpisah ketika td = 1 untuk keamanan.

  • Keluaran: bin = “1111” dan td = 1.
  • Pergi ke status "kosong 1" di tepi naik berikutnya dari jam (tidak diperlukan input).

“Kosong 1” (id = 0000)

Tampilan tujuh segmen menunjukkan 0. Ini adalah keadaan sistem tetap berada saat mesin keadaan utama dalam keadaan “mematikan, tidak ada gerakan yang terdeteksi”.

  • Keluaran: bin = “0000” dan td = 0.
  • Pergi ke negara "seg 10" jika timer = 1.

Langkah 3: Nyatakan Tabel Kebenaran Mesin, Persamaan Eksitasi, dan Persamaan Output

Tabel Kebenaran Mesin Negara, Persamaan Eksitasi, dan Persamaan Output
Tabel Kebenaran Mesin Negara, Persamaan Eksitasi, dan Persamaan Output
Tabel Kebenaran Mesin Negara, Persamaan Eksitasi, dan Persamaan Output
Tabel Kebenaran Mesin Negara, Persamaan Eksitasi, dan Persamaan Output
Tabel Kebenaran Mesin Negara, Persamaan Eksitasi, dan Persamaan Output
Tabel Kebenaran Mesin Negara, Persamaan Eksitasi, dan Persamaan Output
Tabel Kebenaran Mesin Negara, Persamaan Eksitasi, dan Persamaan Output
Tabel Kebenaran Mesin Negara, Persamaan Eksitasi, dan Persamaan Output

Langkah selanjutnya adalah membuat tabel kebenaran untuk kedua state machine dan persamaan eksitasi dan persamaan output untuk masing-masing fsm. Untuk setiap persamaan eksitasi fsm, perlu ada persamaan untuk setiap bit yang dikodekan keadaan berikutnya dalam hal keadaan saat ini dan sinyal inputnya. Untuk setiap persamaan output fsm, perlu ada persamaan untuk setiap sinyal output dalam hal keadaan saat ini. Keempat set persamaan dapat ditarik dari tabel kebenaran yang digambarkan. (qn adalah bit yang disandikan keadaan berikutnya untuk setiap mesin keadaan, dan q adalah keadaan saat ini)

(000) setara dengan q(2)'q(1)'q(0)', dan (0000) setara dengan q(3)'q(2)'q(1)'q(0)'

(mis. (0101) adalah q(3)'q(2)q(1)'q(0) dan (110) adalah q(2)q(1)q(0)')

Persamaan eksitasi untuk fsm utama:

  • 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)]

Persamaan keluaran untuk fsm utama:

  • lampu = (000) + (001) + (100)
  • pengatur waktu = (001)

Persamaan eksitasi untuk down counter fsm:

  • qn(3) = t[(0000) + (1010) + (1001) + (0001)]
  • qn(2) = t[(1000) + (0011) + (0110) + (0101) + (0001)]
  • qn(1) = t[(0000) + (1000) + (0011) + (0100) + (0011) + (0001)]
  • qn(0) = t[(1010) + (1000) + (0110) + (0100) + (0010) + (0001)]

Persamaan keluaran untuk fsm penghitung turun:

  • td = (1111)
  • bin(3) = (1010) + (1001) + (1000) + (1111) + (0000)
  • bin(2) = (0011) + (0110) + (0101) + (0100) + (1111) + (0000)
  • bin(1) = (1010) + (0011) + (0110) + (0011) + (0010) + (1111) + (0000)
  • bin(0) = (1001) + (0011) + (0101) + (0011) + (0001) + (1111) + (0000)

Langkah 4: Pembungkus, Submodul, & Batasan

Seperti yang sudah dijelaskan di Langkah 1, modul-modul ini diperlukan untuk proyek ini dan semuanya diikat bersama dengan modul pembungkus berjudul "final_proj.vhd". File batasan berjudul "Basys3_Master.xdc" digunakan untuk menghubungkan semua input dan output pembungkus ke sakelar, tujuh segmen, dan port I/O pada papan Basys 3. Sakelar utama harus merupakan sakelar di papan yang paling dekat dengan sisi kabel menyala, sakelar normal/manual adalah yang terdekat kedua, dan tiga sakelar yang mewakili tiga sensor gerak adalah tiga sakelar tepat di sebelah sakelar normal/manual. Semua kode (persamaan boolean, deklarasi modul, dll) sudah ditulis dalam file, jadi Anda tidak perlu menulis apa pun untuk membuatnya berfungsi.

Langkah 5: Port I/O untuk LED

Port I/O untuk LED
Port I/O untuk LED
Port I/O untuk LED
Port I/O untuk LED

Langkah terakhir untuk proyek ini adalah menggunakan led untuk menunjukkan apakah (lampu) benar-benar hidup dan mati. Pengkabelan ditunjukkan pada dua gambar. Pastikan ada resistor yang dirangkai seri dengan led (minimal 330 ohm) agar led tidak hangus dan pastikan pin panjang led terhubung ke female header yang sama pada papan basys seperti kabel merah yang ditunjukkan (atas paling kanan) dan pin yang lebih pendek terhubung ke ground, header perempuan yang sama dengan kabel hitam yang ditunjukkan (atas, kedua dari kiri).

Direkomendasikan: