Мазмуну:

Кыймыл сенсору/эсептегич жарыктар: 7 кадам
Кыймыл сенсору/эсептегич жарыктар: 7 кадам

Video: Кыймыл сенсору/эсептегич жарыктар: 7 кадам

Video: Кыймыл сенсору/эсептегич жарыктар: 7 кадам
Video: Часы G-Shock до 250 долларов-15 лучших часов Casio G до 250 доллар... 2024, Июль
Anonim
Кыймыл сенсору/эсептегич жарыктар
Кыймыл сенсору/эсептегич жарыктар

Бул долбоор Сан Полис, Сан Луис Обисподогу Санариптик Дизайн курсунун акыркы долбоору катары түзүлгөн (CPE 133).

Эмне үчүн биз муну кылып жатабыз? Биз дүйнөдөгү жаратылыш ресурстарын сактоого жардам бергибиз келет. Биздин долбоор электр энергиясын үнөмдөөгө багытталган. Электр энергиясын үнөмдөө менен биз электр энергиясын өндүрүү үчүн колдонулган жаратылыш ресурстарын үнөмдөй алабыз. Биз 2018 -жылы баштаганда, жаратылыш ресурстары укмуштуудай ылдамдыкта керектелүүдө. Биз айлана -чөйрөгө тийгизген таасирибизди сезип, жаратылыш ресурстарын сактоого өз салымыбызды кошкубуз келет. Электрониканы энергияны үнөмдөө үчүн ар кандай жолдор менен ишке ашырса болот, бул айлана -чөйрөгө жана экономикалык абалыбызга жардам берет.*Бул модель бизге жеткиликтүү компоненттерди колдонуу менен түзүлгөн.

Биздин дем эмне болгон? Адамдар көбүнчө майрамдык жарыгын өчүрүүнү унутушат жана энергияны түнү бою таштап коюшат. Чындыгында, бул долбоор электр энергиясын үнөмдөйт, анткени "майрамдык чырактар" адамдар жанында болгондо гана жанат, ошондуктан эч ким жок болгондо энергияны үнөмдөйт. Мындан тышкары, биз таймерди ойлоп чыккыбыз келди, андыктан жарыктар белгилүү бир убакыттан кийин толугу менен өчүп калышы үчүн, мисалы, саат 3тө аныкталган кыймылга байланыштуу күйгүзүлбөйт.

Бул дизайнды декоративдүү, практикалык же экөө тең жарыктын бардык түрлөрү үчүн колдонсо болот. Эгерде сиз үстөлүңүздүн жарыгы бир эле учурда 6 саат иштешин кааласаңыз. Сиз эсептегичти 21, 600 секундга коюуңуз керек (6 саат x 3, 600 секунд/саат). Эсептегич активдүү түрдө көбөйүп жатканда, кыймыл сенсору жарыкты башкармак. Ошентип, бул убакыт аралыгында өчкөн сайын, жөн гана кыймыл сенсорунун алдында колуңузду булгалаңыз жана ал кайра күйөт. Эгерде сиз үстөлүңүздө уктап калсаңыз жана 7 сааттан кийин ойгонсоңуз, анда кыймылыңыз күйбөйт.

1 -кадам: Керектүү Программалык камсыздоо жана Аппараттык

Керектүү Программалык жана Аппараттык
Керектүү Программалык жана Аппараттык
Керектүү Программалык жана Аппараттык
Керектүү Программалык жана Аппараттык
Керектүү Программалык жана Аппараттык
Керектүү Программалык жана Аппараттык
Керектүү Программалык жана Аппараттык
Керектүү Программалык жана Аппараттык

Программалык камсыздоо:

  • Vivado 2016.2 (же акыркы версиясын) бул жерден тапса болот
  • Arduino IDE 1.8.3 (же акыркы версиясын) бул жерден тапса болот

Аппараттык:

  • 1 Basys 3 тактасы
  • 1 Arduino Uno
  • 2 Breadboards
  • 1 УЗИ Ranging сенсор HC-SR04
  • 9 Эркек-эркек зымдары
  • 1 LED
  • 1100Ω резистор

2 -кадам: Коддор (Vivado)

Коддор (Vivado)
Коддор (Vivado)

Чектүү абал машинасы (жогорудагы мамлекеттик диаграмманы караңыз):

LED чектүү мамлекеттик машинаны талап кылды. Жарык диодунда күйүүчү жана өчүрүлүүчү эки гана абал бар. Жарык диоддун, эсептегичтин жана сенсордун абалын эки гана киргизүү көзөмөлдөйт. Жарык диодду күйгүзүү керек болгон убакыт - бул сенсор кыймылды аныктаганда жана эсептегич нөлдөн отуз секундга чейин санаганда. Башка учурларда LED өчөт.

Файлдын аты: LEDDES

Эсептегич:

Эсептегич бизге кыймыл сенсору LEDди иштете турган убакыттын узактыгын чектөөгө мүмкүндүк берет. Анын мааниси Basys 3 Boardтун жети сегмент дисплейинде булак коду аркылуу көрсөтүлөт ("sseg_dec"). Кайра коюу которгучу ылдый болгондо (маани: '0'), эсептегич ар бир секундда 0дон 30га чейин көбөйө баштайт. 30га жеткенде ал ошол санга тоңуп калат. Ал баштапкы абалга келтирүү которгучу "1" жана кайра "1" ге которулмайынча, 0дөн баштап кайра башталбайт. Эгерде эсептегич бара жатканда Reset "1" болуп калса, эсептегич жеткен баасында тоңуп калат. Кайра коюу "0" ге кайтып келгенде, эсептегич 0дон 30га чейин кайра башталат. Бул ишке саат сигналын колдонууну талап кылат, анын коду төмөндө келтирилген ("clk_div2").

Файлдын аты: FinalCounter

СУНУШТАЛГАН ФАЙЛДАР:

Жети сегменттин дисплейи:

Бул код жети сегменттин дисплейине ондук маанилерди көрсөтүүгө мүмкүнчүлүк берет. Бир субмодуль 8-бит бинардык киргизүү менен 4-бит бинардык коддуу ондуктун ортосунда декодердин милдетин аткарат. Экинчиси анын сигналын белгилүү бир ылдамдыкта жаңыртуу үчүн саат сигналын бөлөт.

Файлдын аты: sseg_dec

Саат сигналы:

Бул код эсептегичти 1 секундага көбөйтүүгө мүмкүндүк берет. Бул киргизүү жыштыгын жайыраак жыштыкка бөлөт. Биз max_count: integer: = (3000000)”дегенди“sabit max_count: integer: = (50000000)”деп өзгөртүү менен 1 секунддук мөөнөткө ылайыкташтырдык.

Файлдын аты: clk_div2

Берилген файлдар: sseg_dec, clk_div2 *Бул булак файлдары профессор Брайан Миалы тарабынан берилген.

3 -кадам: Кантип алар биригерин түшүнүү (VHDL компоненттеринин схемалары)

Алардын кантип биригерин түшүнүү (VHDL компоненттеринин схемалары)
Алардын кантип биригерин түшүнүү (VHDL компоненттеринин схемалары)

Негизги файл ("MainProjectDES") мурда талкууланган бардык субфайлдарды камтыйт. Алар жогоруда көрсөтүлгөн тартипте туташкан. Ар түрдүү компоненттер бир картадан башка элементтерге сигнал жөнөтүү үчүн бири -бири менен байланышкан.

Байкагандай, FinalCounter 5-бит чыгарууну камсыз кылат, ал эми sseg_dec 8-биттик киргизүүнү талап кылат. Ордун толтуруу үчүн, биз эки компонентти туташтырган сигналды "000" менен баштоого жана эсептегичтен 5-бит чыгарууну кошууга койдук. Ошентип, 8-бит киргизүү камсыз кылат.

Чектөөлөр:

Бул коддорду Basys 3 тактасында иштетүү үчүн, чектөөлөр файлы талап кылынып, ар бир сигнал кайда баруу керектигин жана тетиктер кантип туташканын айтып берди.

4 -кадам: Код (Arduino)

Биз Arduino Uno кыймылын аныктоо үчүн кыймылдаткычты колдонууну жана LEDди күйгүзүүгө сигнал берген чыгууну камсыздоону программаладык. Кошумча катары, сенсордун жардамы менен кыймылды аныктоо үчүн дайыма аралыктын өзгөрүүсүн издеп турган циклдер керек. Негизи, бул LEDдин жарыгы үчүн "жогорку" сигналын чыгаруу үчүн бир убакта иштеген таймерди талап кылат, ал эми жаңы кыймыл табылганда таймерди баштапкы абалга келтирүү керек, муну Vivadoдо билимдин чегинде ишке ашыруу дээрлик мүмкүн эмес. класстын. Мындан тышкары, биз Arduino колдондук, анткени HC-SR04 менен Basys 3 тактасы колдонулушу мүмкүн эмес, анткени такта 3.3В гана берет, ал эми сенсор 5В электр менен камсыздоону талап кылат. Аныктоо кыймылын ишке ашыруу үчүн, бул VHDLдеги CADдан айырмаланып, чыныгы коддоо.

Биз сенсорго алгач чыгарылган үн менен объектти сүзгөндө кайра артка кайткан үндүн ортосундагы убакытты алуу үчүн сенсордун импульстук функциясын колдондук. Андан кийин объект менен сенсордун ортосундагы аралыкты эсептөө үчүн үн ылдамдыгын жана убакыт интервалын колдонобуз. Ушундан улам, биз азыркы аралыкты сактайбыз жана ага көз салып турабыз. Ар бир 150 м аралыкты текшерип турабыз. Биз ошондой эле өткөн убакытты көзөмөлдөө үчүн arduino ичиндеги таймерди иштетүү үчүн elapsedmil китепканасын колдондук. Эгерде биз кыймылга туура келген аралыктын өзгөрүшүн байкасак, таймер нөлгө кайтарылат жана ал 3 секунд өткөнчө жарыкты күйгүзүп турат. Сенсор башка кыймылды аныктаганда, таймер 0гө кайтарылат жана LED жарыгы үчүн сигнал кийинки 3 секундда "бийик" болот. Биз төмөндө биздин Arduino кодунун көчүрмөсүн тиркеп койдук.

5 -кадам: Биздин компоненттерибиз бири -бирине кантип туура келет

Биздин компоненттерибиз бири -бирине кантип туура келет!
Биздин компоненттерибиз бири -бирине кантип туура келет!
Биздин компоненттерибиз бири -бирине кантип туура келет!
Биздин компоненттерибиз бири -бирине кантип туура келет!
Биздин компоненттерибиз бири -бирине кантип туура келет!
Биздин компоненттерибиз бири -бирине кантип туура келет!

"Basys3: Pmod Pin-out Diagram*" жана Arduino Uno тактасынын сүрөтүндө көрүнүп тургандай, биз колдонгон портторду белгилеп, белгилеп койдук.

1. LED жана Basys 3 Board

LED 100Ω каршылыгы менен катар туташкан. -Ак зым резисторду Basys 3 тактасынын PWR -ге туташтырат. -Сары зым LEDди Basys 3 тактасынын H1 пинине туташтырат.

2. Кыймыл сенсору жана Arduino Uno

-Апельсин зым кыймыл сенсорунун Vcc (күчүн) Arduino Uno тактасынын 5V пинине туташтырат. Кыймыл сенсору Arduino Uno тактасынын 9-пинине. -Кара зым кыймыл сенсорунун пинди GND менен Arduino Uno тактасынын GND пинине туташтырат.

[Биз колдонгон зымдар компоненттерге жетүү үчүн өтө кыска болгондуктан, алар бири -бири менен байланышта болгон]

3. Basys 3 Board жана Arduino Uno

Сары жип Basys 3 тактасынын A14 пинин Arduino Uno тактасынын 6 пинине туташтырат.

*Бул диаграмма Digilentтин "Basys 3 ™ FPGA Board Reference Manual" китебинен алынган, аны бул жерден тапса болот.

6 -кадам: Демонстрация

7 -кадам: Сыноо убактысы

Куттуктайм! Сиз биздин кыймыл сенсорубуздун жана эсептегичтин көзөмөлүндөгү жарык долбоорунун аягына чыктыңыз! Instructables постубузду окуп чыкканыңыз үчүн чоң рахмат. Эми бул долбоорду өзүңүз курууга аракет кылуу убактысы келди. Эгерде сиз ар бир кадамды кылдаттык менен аткарсаңыз, анда биздикине окшош иштеген кыймыл сенсору жана контролердун жарыгы болушу керек! Биз сизге бул долбоорду курууда ийгилик каалайбыз жана бул электр энергиясын жана жаратылыш ресурстарын үнөмдөөгө салым кошот деп ишенебиз!

Сунушталууда: