Мазмұны:
- 1 -қадам: Қажетті бағдарламалық қамтамасыз ету мен аппараттық құрал
- 2 -қадам: кодтар (Vivado)
- 3 -қадам: Олардың қалай бірігетінін түсіну (VHDL компоненттерінің схемалары)
- 4 -қадам: код (Arduino)
- 5 -қадам: Біздің компоненттер қалай үйлеседі
- 6 -қадам: демонстрация
- 7 -қадам: тестілеудің уақыты келді
Бейне: Қозғалыс сенсоры/қарсы басқарылатын шамдар: 7 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Бұл жоба Cal Poly, San Luis Obispo (CPE 133) сандық дизайн курсының соңғы жобасы ретінде құрылды.
Біз әлемдегі табиғи ресурстарды сақтауға көмектескіміз келеді. Біздің жоба электр энергиясын үнемдеуге бағытталған. Электр энергиясын үнемдеу арқылы біз электр энергиясын өндіруге пайдаланылатын табиғи ресурстарды үнемдей аламыз. 2018 жылдың басында біз табиғи ресурстарды керемет мөлшерде тұтынамыз. Біз қоршаған ортаға әсерімізді білгіміз келеді және табиғи ресурстарды сақтауға өз үлесімізді қосқымыз келеді. Электрониканы энергияны үнемдеу үшін әр түрлі әдістермен қолдануға болады, бұл қоршаған ортаға және біздің экономикалық жағдайымызға көмектеседі.*Бұл модель бізге қол жетімді компоненттерді қолдану арқылы жасалған.
Біздің шабытымыз не болды? Адамдар көбінесе мерекелік шамдарын сөндіруді ұмытады және оларды түнде қалдырып, энергияны жоғалтады. Іс жүзінде бұл жоба электр энергиясын үнемдеуге мүмкіндік береді, себебі «мерекелік шамдар» адамдар жақын жерде болғанда ғана жанатын болады, осылайша ешкім жоқ кезде энергияны үнемдейді. Сонымен қатар, біз, мысалы, таңғы 3 -те анықталған қозғалысқа байланысты шамдар қосылмайтындығына көз жеткізу үшін белгілі бір уақыттан кейін сөніп қалуы үшін таймерді жасағымыз келді.
Бұл дизайнды сәндік, практикалық немесе екеуіне де қарамастан барлық шамдарға қолдануға болады. Егер сіз үстел шамының бір уақытта 6 сағат жұмыс істеуін қаласаңыз. Есептегішті 21, 600 секундқа қою керек (6 сағат x 3, 600 секунд/сағат). Есептегіш белсенді өсіп жатқанда, қозғалыс сенсоры жарықты басқарады. Осылайша, уақыт өте келе ол өшкен сайын, қозғалыс сенсорының алдында қолыңызды сермеуіңіз керек, ол қайтадан қосылады. Егер сіз жұмыс үстелінде ұйықтап қалсаңыз және 7 сағаттан кейін оянсаңыз, сіздің қозғалысыңыз қосылмайды.
1 -қадам: Қажетті бағдарламалық қамтамасыз ету мен аппараттық құрал
Бағдарламалық қамтамасыз ету:
- Vivado 2016.2 (немесе соңғы нұсқасын) мына жерден табуға болады
- Arduino IDE 1.8.3 (немесе соңғы нұсқасын) мына жерден табуға болады
Жабдық:
- 1 Базис 3 тақта
- 1 Arduino Uno
- 2 Тақта тақтасы
- HC-SR04 ультрадыбыстық диапазонды сенсор
- 9 Аталық-еркек сымдары
- 1 жарық диоды
- 1100Ω резистор
2 -қадам: кодтар (Vivado)
Ақырлы күй машинасы (жоғарыдағы күй диаграммасын қараңыз):
Жарық диоды соңғы күйдегі машинаны қажет етті. Жарықдиодты шамның қосулы және сөндірулі екі күйі бар. Жарық диодты, есептегіш пен сенсордың күйін тек екі кіріс қана басқарады. Тек сенсор қозғалысты анықтаған кезде және санауыш нөлден отыз секундқа дейін санағанда, жарық диодты жарық диодты қосуға болады. Кез келген жағдайда жарық диоды өшеді.
Файл атауы: LEDDES
Есептегіш:
Есептегіш қозғалыс сенсоры жарықдиодты қосатын уақытты шектеуге мүмкіндік береді. Оның мәні Basys 3 тақтасының жеті сегментті дисплейінде бастапқы код арқылы көрсетіледі («sseg_dec»). Қалпына келтіру қосқышы төмен болғанда (мән: '0'), санауыш секунд сайын 0 -ден 30 -ға дейін көбейе бастайды. 30 -ға жеткенде ол сол санға қатып қалады. Ол 0 -ден Reset қосқышы «1» -ге ауысқанша және «1» -ге ауысқанға дейін қайта қосылмайды, егер санауыш жүріп жатқанда Reset «1» -ге айналса, санауыш қандай мәнге жеткенде қатып қалады. Қалпына келтіру «0» мәніне оралғанда, санауыш 0 -ден 30 -ға дейін қайта қосылады. Бұл іске қосу үшін сағат сигналы қажет, оның коды төменде берілген («clk_div2»).
Файл атауы: FinalCounter
ҰСЫНЫЛҒАН ФАЙЛДАР:
Жеті сегменттің дисплейі:
Бұл код жеті сегментті дисплейде ондық мәндерді көрсетуге мүмкіндік береді. Бір қосалқы модуль 8-биттік екілік кіріс пен 4-биттік екілік кодты ондық арасындағы декодер қызметін атқарады. Екіншісі оның сигналын белгілі бір жылдамдықпен жаңарту үшін бөледі.
Файл атауы: sseg_dec
Сағат сигналы:
Бұл код есептегішті 1 секундқа арттыруға мүмкіндік береді. Ол кіріс жиілігін баяу жиілікке бөледі. Біз max_count: integer: = (3000000) «» тұрақты max_count: integer: = (50000000) «өзгерту арқылы 1 секунд уақытты беруге бейімделдік.
Файл атауы: clk_div2
Берілген файлдар: sseg_dec, clk_div2 *Бұл бастапқы файлдарды профессор Брайан Мили ұсынды.
3 -қадам: Олардың қалай бірігетінін түсіну (VHDL компоненттерінің схемалары)
Негізгі файл («MainProjectDES») бұрын талқыланған барлық ішкі файлдарды қамтиды. Олар жоғарыда көрсетілген тәсілмен қосылған. Әр түрлі компоненттер бір элементтен екіншісіне сигнал жіберу үшін порт карталарының көмегімен өзара байланысты.
Сіз байқағандай, FinalCounter 5 биттік шығуды қамтамасыз етеді, ал sseg_dec 8 биттік енгізуді қажет етеді. Орнын толтыру үшін біз екі компонентті қосатын сигналды «000» мен басталатын есептегіштен 5 биттік шығуды қосатын етіп орнатамыз. Осылайша 8 биттік кірісті қамтамасыз етеді.
Шектеулер:
Бұл кодтарды Basys 3 тақтасында іске қосу үшін шектеулер файлы қажет болды, олар әр сигналға қайда бару керектігін және бөлшектер қалай қосылғанын айтады.
4 -қадам: код (Arduino)
Біз Arduino Uno -ны қозғалыс сенсоры арқылы қозғалысты анықтау үшін және жарық диодты жарықтандыратын сигнал беретін шығуды қамтамасыз ету үшін бағдарламаладық. Сонымен қатар, қозғалысты анықтау үшін сенсорды пайдалану қашықтағы өзгерістерді үнемі іздейтін ілмектерді қажет етеді. Негізінде, жарық диодты жарықтандыратын «жоғары» сигналды шығару үшін бір мезгілде жұмыс істейтін таймер қажет, ал жаңа қозғалыс анықталғаннан кейін таймерді қалпына келтіру қажет, оны Vivado -да білім ауқымына сәйкес енгізу мүмкін емес. сыныптың. Сонымен қатар, біз Arduino-ны қолдандық, себебі HC-SR04-ті Basys 3 тақтасымен қолдану мүмкін емес еді, өйткені тақта тек 3,3В береді, ал сенсор 5В қуат көзін қажет етеді. Анықтау қозғалысын жүзеге асыру үшін бұл VHDL -дегі CAD -тан айырмашылығы нақты кодтау.
Біз сенсордан сенсордан алғаш шыққан дыбыс пен объектіге тигенде қайта шығатын дыбыс арасындағы уақытты алу үшін сенсордың кіріктірілген функциясын қолдандық. Содан кейін объект пен сенсор арасындағы қашықтықты есептеу үшін дыбыс жылдамдығы мен уақыт интервалын қолданамыз. Осыдан біз ағымдағы қашықтықты сақтап, оны қадағалап отырамыз. Біз қашықтықты әр 150 м сайын тексереміз. Біз сондай -ақ өткен уақытты бақылау үшін arduino ішінде ішкі таймерді іске қосу үшін elapsedmil кітапханасын қолдандық. Егер біз қозғалысқа сәйкес келетін қашықтықтың өзгеруін анықтасақ, таймер нөлге ысырылады және ол 3 секунд өткенше жарықты қосады. Датчик басқа қозғалысты анықтаған кезде таймер 0 қалпына келтіріледі және жарық диодты шам келесі 3 секунд ішінде «жоғары» болады. Біз төменде Arduino кодының көшірмесін тіркедік.
5 -қадам: Біздің компоненттер қалай үйлеседі
Сіз «Basys3: Pmod Pin-out Diagram*» пен Arduino Uno тақтасының фотосуретінен көріп отырғаныңыздай, біз қолданған порттарды бөліп, белгілеп қойдық.
1. LED және Basys 3 тақтасы
Жарық диоды 100Ω резистормен тізбектей қосылған. -Ақ сым резисторды Basys 3 тақтасының PWR түйреуішіне қосады. -Сары сым жарықдиодты Basys 3 тақтасының H1 түйреуішіне қосады.
2. Қозғалыс сенсоры және Arduino Uno
-Қызғылт сары сым қозғалыс сенсорының Vcc (қуатын) Arduino Uno тақтасының 5V істігіне қосады.-Ақ сым қозғалыс сенсорының түйреуішін Arduino Uno тақтасының 10 істігіне қосады. Қозғалыс сенсоры Arduino Uno тақтасының 9 түйреуішіне.-Қара сым қозғалыс сенсорының GND түйреуішін Arduino Uno тақтасының GND істігіне қосады.
[Біз қолданған сымдар компоненттерге жету үшін тым қысқа болды, сондықтан олар бір -бірімен байланысты болды]
3. Basys 3 тақтасы мен Arduino Uno
Сары сым Basys 3 тақтасының A14 штырын Arduino Uno тақтасының 6 істігіне қосады.
*Бұл диаграмма Digilent -тің «Basys 3 ™ FPGA тақтасының анықтамалық нұсқаулығынан» алынды, оны мына жерден табуға болады.
6 -қадам: демонстрация
7 -қадам: тестілеудің уақыты келді
Құттықтаймын! Сіз біздің қозғалыс сенсоры мен контроллермен басқарылатын жарық жобасының соңына жеттіңіз! Біздің Instructables жазбасын оқығаныңыз үшін көп рахмет. Енді сіз бұл жобаны өзіңіз құруға тырысатын кез келді. Егер сіз әр қадамды мұқият орындасаңыз, сізде қозғалыс сенсоры мен есептегішпен басқарылатын шам болуы керек, ол біздікіне ұқсас! Біз сізге осы жобаны құруда сәттілік тілейміз және бұл электр энергиясын, сонымен қатар табиғи ресурстарды үнемдеуге үлес қосады деп сенеміз!
Ұсынылған:
Дыбыс сенсоры мен сервисі: реактивті қозғалыс: 4 қадам
Дыбыс сенсоры мен сервисі: реактивті қозғалыс: алдымен осы тізбекті біріктіру үшін тиісті материалдарды жинау қажет
Портативті қозғалыс сенсоры: 4 қадам
Портативті қозғалыс сенсоры: Сәлеметсіз бе?
Қозғалыс белсенді шамдар қосқышы: 3 қадам
Қозғалыс белсенді шамдар қосқышы: Біз жұмыс үстелінен немесе бөлмеден шыққан кезде, көбіне сол жердегі жарықты өшіруді ұмытып кетеміз. Бұл электр энергиясының жоғалуына және электр энергиясының төлемінің өсуіне әкеледі. Бірақ, егер сіз бөлмеден шыққаннан кейін шамдар автоматты түрде өшіп қалса. Иә
Құрғақ мұзды тұманға қарсы машина - Bluetooth басқарылатын, батареямен жұмыс істейтін және 3D басып шығарылған: 22 қадам (суреттермен)
Құрғақ мұзды тұманға қарсы машина - Bluetooth басқарылатын, батареямен жұмыс істейтін және 3D басып шығарылған.: Жақында маған жергілікті шоу үшін театрлық эффектілерге арналған құрғақ мұз машинасы қажет болды. Біздің бюджет кәсіпқойға жалдауды қажет етпейді, сондықтан мен оның орнына салдым. Бұл негізінен 3D басып шығарылған, қашықтан bluetooth, батарея қуаты арқылы басқарылады
Bluetooth көмегімен басқарылатын Arduino соқтығысуға қарсы көлік: 3 қадам (суреттермен)
Bluetooth көмегімен басқарылатын Arduino соқтығысуға қарсы автокөлік: Bluetooth көмегімен басқарылатын Arduino соқтығысуға қарсы автокөлікті қалай жасауға болады