Съдържание:

5-жичен резистивен сензор за докосване: 10 стъпки
5-жичен резистивен сензор за докосване: 10 стъпки

Видео: 5-жичен резистивен сензор за докосване: 10 стъпки

Видео: 5-жичен резистивен сензор за докосване: 10 стъпки
Видео: Автомобильный генератор для генератора с самовозбуждением с использованием ДИОДА 2024, Юли
Anonim
5-жичен резистивен сензор за докосване
5-жичен резистивен сензор за докосване

Здравей Здравей!

Измина доста време, откакто работя на този сайт и изглежда, че доста се промени! Най -накрая съм готов да се върна зад волана за друг проект и мисля, че е време да променя нещата малко сам!

Имам предвид от известно време проект, базиран на 271828 „Plate and Ball“, но трябва да науча много за сензорите и теорията на управлението, преди да приключи. Мислех си, че докато науча нещо или две, може да ви взема със себе си!

За тази цел целта ми за тези уроци ще бъде нещо като хибрид между моите по -полирани уроци и запис за самия проект. Всеки отделен урок ще бъде една стъпка в това пътуване и ще включва подробности, които съм пренебрегвал в миналото, като разработка на код (вместо току -що завършен код) и грешки, които предприемам по пътя.

Много съм развълнуван за този нов проект и съм развълнуван да видя колко добре работи!

Днес просто ще получим прост 5-жичен сензорен панел, работещ с DP-32.

Да започваме!

Стъпка 1: Какво ще ви трябва

Какво ще ви трябва
Какво ще ви трябва

Тъй като този урок е за работа на един сензор, няма нищо повече, което ще ви трябва освен микроконтролер и сензорен панел.

  • Микроконтролер.

    Използвам моя DP32 с вградена дъска за хляб, защото прави прототипирането невероятно просто

  • Различни проводници и кабели.

    Можех да използвам вградения лентов кабел на сензорния панел, но ако се скъса, тогава целият панел е безполезен. Вместо това използвам 6-жичен кабел, за да намаля напрежението върху вградения кабел

  • Титулярният 5-жичен резистивен сензорен панел!

    Имах 4-жичен резистивен сензорен панел, но лентовият кабел за него се скъса

И това е!

Стъпка 2: Какво е 5-жичен резистивен сензорен панел?

Какво е 5-жичен резистивен сензорен панел?
Какво е 5-жичен резистивен сензорен панел?
Какво е 5-жичен резистивен сензорен панел?
Какво е 5-жичен резистивен сензорен панел?
Какво е 5-жичен резистивен сензорен панел?
Какво е 5-жичен резистивен сензорен панел?

Ако сте прочели моя урок за 4-жичен сензорен панел, ще сте запознати с общата идея за резистивен сензор за докосване, но 5-жичните панели и 4-жичните панели работят малко по-различно.

Харесвам този панел, защото можете да видите всички следи от проводници, което улеснява да видите какво прави какво. На първата снимка съм оцветил всяка следа по различен начин. Вероятно можете да видите, че всеки от четири проводника (розов, жълт, оранжев и лилав) отива към един от четирите ъгъла. Средният проводник (червен) отива към гъвкавия сензорен панел.

Във втората картина, ние зададохме два от четирите проводника (горе вдясно и долу вдясно) на високо напрежение (показано в червено), докато другите два (горе вляво и долу вляво) са настроени на ниско напрежение (показано в синьо). Това създава градиент на напрежение по целия панел. В този случай градиентът минава по оста X, така че по-високото напрежение представлява по-високо положение по оста X.

Когато докосваме пръста си към панела, това потиска гъвкавия сензор, свързвайки се някъде по градиента на оста X. Сензорите за напрежение на нашия микроконтролер могат да усетят това напрежение и да ви кажат къде по оста X докосва пръста ви!

На третата снимка можете да видите как конфигурацията се променя, за да ни позволи да усетим по оста Y. По този начин можем да кажем къде в 2-D пространството пръстът ни се докосва!

Стъпка 3: Окабеляване

Електрически инсталации
Електрически инсталации
Електрически инсталации
Електрически инсталации

Както вероятно можете да видите на снимките по -горе, аз съм свързал четирите си ъгъла всеки със собствен изход за цифров изход. Това ще ми позволи да ги настроя индивидуално на високо или ниско. Моят сензорен щифт се свързва към аналогов входен щифт. Хубавото на 5-жичния сензорен екран, за разлика от 4-жичния, е, че имате нужда само от един аналогов щифт, докато за 4-проводния ще са необходими 2.

Вашето окабеляване може да се различава, разбира се, но моето окабеляване е следното:

Аналог 0 (щифт 6) се свързва със сензор (среден извод)

Digital 3 се свързва с горния десен ъгъл (най-горният пин)

Digital 2 се свързва отгоре-вляво (втори най-отгоре пин)

Digital 1 се свързва с долния ляв ъгъл (втори най-долен щифт)

Digital 0 се свързва с долния десен ъгъл (най-долният щифт)

Заслужава да се отбележи отново, че използвам 6-жичен кабел за преминаване между микроконтролера и панела. Оставих горния щифт на този кабел несвързан.

Стъпка 4: Разработка на софтуер

Разработване на софтуер
Разработване на софтуер

В миналото обикновено бих пуснал завършен софтуерен файл, който да използвате, може би с кратко описание на всичко, което прави. Не ми харесва това. Искам тази поредица да е за проекти в процес на разработка и за тази цел ще включа реалното развитие на този софтуер от началото до края.

Както обикновено, ще използвам Arduino IDE с ядрото на Digilent. Всеки раздел ще включва кодов файл, екранна снимка, както и описание на допълненията и това, което се опитваме да постигнем.

За сега започвам с проста програма за мигане в стил забавяне, точно същата като тази, която ще намерите в папката Примери. Ако прочетете дългата заглавка, която написах, ще видите, че всяка стъпка в този процес ще променя програмата, за да я доближи до крайната ни цел.

Стъпка 5: Мигане на State Machine

State Machine Blink
State Machine Blink

Първият ми ход е да променя функцията на мигане от такава въз основа на "delay ()" на машина на състоянието.

За тези, които не са свикнали да превключват изявления, той работи подобно на if-израз. Тази (в оранжевата кутия) тества нашата променлива "състояние" (която започва от 0). След това се преминава към случая за сегашното ни състояние. Ще видите, че случай 0 и 2 са отговорни за включване и изключване на светодиода (съответно), докато случай 1 и 3 са отговорни за изчакване между превключвателите.

Стъпка 6: Премигване на бутона

Мигане на бутона
Мигане на бутона
Мигане на бутона
Мигане на бутона
Мигане на бутона
Мигане на бутона

След това исках бутонът да се използва за мигане на светлината. Вместо да усложнявам това, просто преместих всички състояния надолу с едно (състояние 0 става състояние 1 и т.н.). Когато правите това, внимавайте да увеличите изходните състояния, както и самото състояние (вижте снимка 3).

Изтрих и второто състояние "изчакване". Това означава, че бутонът включва светлината за една секунда и можете да натиснете бутона отново веднага след като се изключи.

Заслужава да се отбележи, че тази система автоматично премахва бутона вместо нас, защото трябва да изчакаме LED да се изключи, преди да се върнем в състояние 0, където бутонът може да задейства цикъла отново.

Стъпка 7: Серийна комуникация

Последователна комуникация
Последователна комуникация
Последователна комуникация
Последователна комуникация

Тази актуализация е много малка. Всичко, което исках да направя, е да установя последователна връзка и да изпращам съобщения. На първата снимка можете да видите, че започвам Serial във функцията setup (). Вътре в нашата машина за състояния добавих редове към състояния 1 и 3, които ще изпращат прости съобщения до компютъра чрез сериен код.

Стъпка 8: Четене на координати

Четене на координати
Четене на координати
Четене на координати
Четене на координати
Четене на координати
Четене на координати
Четене на координати
Четене на координати

Добре е, че последната стъпка беше лесна, защото тази беше ужасна.

За начало добавих променливи за нашия сензорен панел, включително някои специални променливи за времето както за сензорния панел, така и за нашия бутон. Ще видите защо след малко.

Напълно преписах държавната машина. Малко е объркващо да се погледне кода, затова включих блокова диаграма, която трябва да илюстрира какво е направено.

Неща, които трябва да се отбележат: В момента има три стъпки „чакане“. Едно за всяка конфигурация на сензорния панел, за да се оставят напреженията да се установят преди извършване на измерване, и едно, за да се даде време на бутона, за да се отстрани правилно. Тези стъпки на изчакване са причината да искам да дам на бутона и на сензорния панел техните собствени времеви променливи.

Забележка: Константата DEBOUNCE_TIME може да е малко ниска. Чувствайте се свободни да го увеличите.

Стъпка 9: Почистване

Почистване
Почистване
Почистване
Почистване
Почистване
Почистване

Стигнахме до окончателната версия на кода за този проект!

За начало добавих функция, наречена loop_diff () за изчисляване на изминалото време. Вътрешният часовник за DP32 е неподписан дълъг и, макар че е много малко вероятно, има възможност часовникът да се върти по време на изпълнение на този код*. В този случай простото изваждане на текущото време от времето, записано в btn_time или panel_time, ще ни даде нещо странно, затова написах loop_diff (), за да открия кога се появяват цикли и да се държа по съответния начин.

Направих и малко почистване. Премахнах неизползваната сега променлива "state_time". Преминах от етикета LED_BUILTIN (който е стандарт на Arduino) към етикета PIN_LED1 (който е стандартен за chipKit и DP32). Премахнах и всички съобщения чрез Serial за стартиране и приключване на процеса, което прави данните ни чрез Serial много по -чисти.

*Направих математиката преди години и мисля, че за функцията millis () ще отнеме нещо като седмица на постоянно изпълнение, преди променливата да се завърти.

Стъпка 10: Заключителни мисли

Заключителни мисли
Заключителни мисли

И това е!

Ако сте го последвали, сега трябва да имате работещ сензорен панел, свързан към вашия микроконтролер! Това беше малък проект, но е част от по -голям проект. Работя за нещо като „Плоча и топка“на 271828 и имам да извървя дълъг път, преди това да се случи. Ще се опитам да ви водя за целия процес и всяка част трябва да бъде свой собствен малък проект.

Това е процес на обучение за мен, така че не се колебайте да оставите вашите мисли и предложения в коментарите по -долу.

Благодаря, ще се видим следващия път!

Препоръчано: