7-сабақ/31-2 : магнит өрісін геркон қосқышы арқылы анықтау | SunFounder жинағы
Магниттік өрісті анықтау — Arduino-да цифрлық кірістерді бастаудың ең қарапайым және ең қанағаттандырарлық жолдарының бірі. Бұл жобада сіз герконды қосқышты — магнит жақындаған сайын контактілерін жабатын кішкентай шыны капсулаға салынған қосқышты пайдаланып, магниттік өріс детекторын жасайсыз. Герконды қосқыш басу түймесі сияқты әрекет ететіндіктен (ол не ашық, не жабық), ол digitalRead() функциясымен танысу үшін тамаша мүмкіндік болып табылады, сонымен қатар төмен тарту резисторының неге маңызды екенін және Arduino-ның кірістірілген кіріс тартуын оны толығымен қалай алмастыра алатынын үйретеді.
Бұл жұмыс істегеннен кейін, дәл осы схема көптеген нақты әзірлемелердің негізіне айналады. Міне, сіз көріп көруге болатын бірнеше практикалық идеялар:
- Есік және терезе дабылы — герконды қосқышты жақтауға, ал кішкентай магнитті есікке орнатыңыз; магнит алыстаған сәтте Arduino "ашық" деп хабарлайды.
- Байланыссыз тахометр — айналмалы дөңгелекке магнитті жабыстырып, айналым санын өлшеу үшін импульстарды санаңыз.
- Су немесе газ есептегішін оқу құрылғысы — көптеген коммуналдық есептегіштерде герконды қосқыш қабылдап, тіркей алатын магниттік импульс шығысы бар.
- Ноутбук қақпағы / корпус сенсоры — ұйқы режимін немесе күй LED шамын іске қосу үшін қақпақтың жабылғанын анықтаңыз.
- Велосипед спидометрі — спицадағы магнит пен шанышқыдағы герконды қосқыш сізге дөңгелектің әр айналымы үшін бір импульс береді.
- Бұзу әрекетін анықтау — магнит пен герконды қосқыш жұбын корпустың ішіне жасырыңыз, осылайша оның ашылып-ашылмағанын біле аласыз.
Герконды қосқыш қалай жұмыс істейді
Герконды қосқыш — екі жұқа ферромагниттік қалақшасы бар кішкентай шыны капсула (бейнеде 12:38-де). Магниттік өріс болған кезде қалақшалар бір-біріне тартылып, түйіседі де, тізбекті жабады. Магнитті алып тастасаңыз, қалақшалар ажырап, тізбекті қайта ашады. Бұл — бүкіл принцип — бұл қозғалмалы түймесі жоқ, саусақпен басудан тозбайтын және сіз анықтайтын нысанмен физикалық байланысты қажет етпейтін қосқыш.
Бұл әрекетті мультиметрдің үздіксіздік режимінде тексере аласыз (бейнеде 13:59-да): жақын жерде магнит болмаса, құрылғы ашық тізбекті көрсетеді, ал магнит жақындаған бойда дыбыс шығады және құрылғы жабық тізбекті көрсетеді. Қосқыш электрлік жағынан басу түймесімен бірдей болғандықтан, Arduino коды мен сымдары кез келген басқа цифрлық кіріспен бірдей.
Цифрлық кірістер және тарту резисторлары түсіндірілген
Arduino цифрлық түйреуішті HIGH немесе LOW ретінде оқиды. 5 V тақтада шамамен 2.2 V-тан жоғары кез келген нәрсе HIGH, ал шамамен 1.5 V-тан төмен кез келген нәрсе LOW ретінде қабылданады (бейнеде 01:49-да). Мәселе мынада: түйреуіш пен 5 V арасына тікелей қосылған қосқыш қосқыш ашық кезде түйреуішті қалқымалы күйде қалдырады — ол ештеңеге қосылмаған, сондықтан кедергілерді қабылдап, кездейсоқ мәндерді хабарлайды.
Сондықтан резистор қолданылады. Екі орналасу да бірдей жақсы жұмыс істейді:
- Төмен тарту: пиннен жерге дейін 10 кΩ резистор. Қосқыш ашық кезде пин LOW оқиды, ал қосқыш пинді 5 V-қа қосқанда HIGH оқиды.
- Жоғары тарту: пиннен 5 V-қа дейін 10 кΩ резистор. Қосқыш ашық кезде пин HIGH оқиды, ал қосқыш пинді жерге қосқанда LOW оқиды.
Arduino-да сондай-ақ INPUT_PULLUP арқылы бағдарламалық жасақтамада қосылуы мүмкін ішкі жоғары тарту резисторы бар (бейнеде 19:52). Бұл сыртқы резисторға деген қажеттілікті толығымен жояды — пин HIGH күйінде бос тұрады, ал қосқышты жерге жабу оны LOW-ға тартады. Кемшілігі — логика инверттелген: басылған (немесе магнит бар) кезде енді 1 орнына 0 оқылады.
Аппараттық қамтамасыз ету және компоненттер
- Arduino Uno (немесе кез келген үйлесімді плата)
- Рид қосқышы модулі немесе жалаң рид қосқышы
- 10 кΩ резистор (тек төмен тарту нұсқасы үшін қажет)
- Протоборд және қосқыш сымдар
- Сынақ үшін кішкентай магнит
- Бағдарламалау және қуат беру үшін USB кабелі
Сымдарды жалғау нұсқаулығы
Рид қосқышы дәл басу түймесі сияқты жалғанады. Рид қосқышының бір аяғы 5 V-қа, екінші аяғы Arduino 2-пиніне және 10 кΩ резистордың бір ұшына барады. Резистордың екінші ұшы жерге барады (бейнеде 14:40). Бұл төмен тарту конфигурациясы, сондықтан магнит жоқ кезде пин LOW, ал магнит қосқышты жапқанда HIGH оқиды.
Протобордта рид қосқышын екі аяғы әртүрлі қатарларда орналасатындай етіп қойыңыз, резисторды бір аяғымен бір қатардан жер рельсіне дейін жалғаңыз, екінші аяқтан 5 V рельсіне қызыл сым жүргізіңіз және рид қосқышы мен резистордың түйіскен жерінен 2-пинге жасыл сым жүргізіңіз (бейнеде 15:53). Қара жерге, қызыл 5 V-қа, жасыл 2-пинге барады — SunFounder жинағында барлық жерде қолданылатын дәл сол түс конвенциясы.
Егер резисторды өткізіп жіберуді қаласаңыз, рид қосқышының бір аяғын 2-пинге, ал екінші аяғын тікелей жерге жалғаңыз, содан кейін төменде сипатталғандай кодта INPUT_PULLUP қосыңыз.
Кодты түсіндіру
Скетч әдейі шағын. Өзгертуді қалайтын барлық нәрсе файлдың жоғарғы жағындағы екі жерде орналасқан.
int reedPin = 2;//the pin reed switch is connected to
void setup() {
Serial.begin(9600);
pinMode(reedPin, INPUT);
}
reedPin — егер рид қосқышын басқа цифрлық пинге жалғасаңыз, бұл санды өзгертіңіз. Uno-дағы кез келген цифрлық пин жарайды; 2-пин мұнда тек протобордта қолайлы болғандықтан қолданылады.
Serial.begin(9600) — сериялық монитор жылдамдығын орнатады. Егер бұл мәнді өзгертсеңіз, Serial Monitor терезесіндегі бод жылдамдығының ашылмалы мәзірін де өзгертуіңіз керек, әйтпесе қоқыс таңбаларды көресіз (бейнеде 11:25).
pinMode(reedPin, INPUT) — пинді жоғары кедергілі кіріс ретінде конфигурациялайды, осылайша ол рид қосқышы мен резистор орнатқан кернеуді сезе алады. Егер оның орнына ішкі жоғары тартуды қолдансаңыз, бұл жолды pinMode(reedPin, INPUT_PULLUP); етіп өзгертіңіз және көрсеткіштер инверттелетінін есте сақтаңыз.
Цикл жай ғана пинді оқып, нәтижені басып шығарады:
void loop() {
Serial.println(digitalRead(reedPin));
delay(10);
}
digitalRead(reedPin) пин HIGH болғанда 1, LOW болғанда 0 қайтарады. Мән тікелей Serial.println() ішіне берілетіндіктен, аралық айнымалы қажет емес — көрсеткіш тікелей басып шығарылады. Төмен тарту сымдарымен 0 "магнит өрісі жоқ" және 1 "магнит анықталды" дегенді білдіреді (бейнеде 18:31).
delay(10) көрсеткіштің қаншалықты жиі басып шығарылатынын басқарады. Он миллисекунд магнит жақындаған сәтте мәннің өзгергенін көретіндей жеткілікті жылдам. Егер тыныш дисплейді қаласаңыз, оны 200 мс-қа дейін көтеруге болады, бірақ бұл анықтауды да баяулататынын ескеріңіз (бейнеде 12:01).
Жобаның тікелей көрсетілімі
Скетчті жүктегеннен кейін Serial Monitor-ды ашып, бод жылдамдығын 9600 етіп орнатыңыз. Жақын жерде магнит жоқ кезде терезе нөлдерге толады. Кішкентай магнитті шыны капсулаға жақындатыңыз, шығыс бірден бірліктерге ауысады; магнитті алып кетіңіз, ол нөлге оралады (бейнеде 17:04). Жауап лезде және магнит қосқыштан бір-екі сантиметр қашықтықта ұсталғанда да жұмыс істейді.
Егер оның орнына жоғары тарту нұсқасын жасасаңыз, логика керісінше: монитор тыныш күйде 1, ал магнит бар кезде 0 көрсетеді (бейнеде 22:13). Қалай болғанда да, енді сізде дерлік тегін және осы мақаланың жоғарғы жағында келтірілген кез келген жоба идеясына қосуға болатын сенімді, байланыссыз магнит өрісін анықтағыш бар.
Осы цифрлық оқу сабағының батырмалы нұсқасы 7/31 сабақ: Сандық оқу батырмасы, магнит өрісін анықтау SunFounder Kit | Robojax бөлімінде жеке қарастырылған.
Осы бейнеден байланысты жобалар
Тараулар
- [00:00] Кіріспе: екі сандық оқу мысалы
- [01:33] Сандық оқу және HIGH/LOW дегеніміз не
- [02:46] Батырма қосқышы қалай жұмыс істейді
- [03:25] Тарту және түсіру резисторының теориясы
- [05:18] Батырманы breadboard-та қосу
- [08:21] Батырма скетчін ашу және түсіндіру
- [10:55] Батырма мысалын жүктеу және тексеру
- [12:38] Рид қосқышымен танысу және оны мультиметрмен тексеру
- [14:40] Рид қосқышын 2-ші пинге қосу
- [16:46] Рид қосқышын магнитпен тексеру
- [17:19] Рид қосқышы скетчін түсіндіру
- [19:45] Сыртқы резисторсыз INPUT_PULLUP пайдалану
Суреттер
/*
* Lesson 7/31-2: Digital read, working with reed switch
Download and resource page https://robojax.com/RJT590
watch video tutorial https://www.youtube.com/watch?v=yyJrqFKn-X4
* written/updated by Ahmad Shamshiri www.Robojax.com
* Dec 12, 2022
*
*/
int reedPin = 2;//the pin reed switch is connected to
void setup() {
Serial.begin(9600);
pinMode(reedPin, INPUT);
}
void loop() {
Serial.println(digitalRead(reedPin));
delay(10);
}
Common Course Links
Common Course Files
Сізге қажет болуы мүмкін нәрселер
-
АмазонкаBuy reed switch from Amazonamzn.to
-
Амазонка
-
АмазонкаSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Амазонка
-
Амазонка
-
Амазонка
-
Амазонка
-
eBayBuy reed switch from eBayebay.us
-
AliExpressBuy reed switch from AliExpresss.click.aliexpress.com
Ресурстар мен сілтемелер
-
ҚұжаттамаDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
СыртқыPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Файлдар📁
Arduino кітапханалары (zip)
-
SunFounder 3-і-1 Smart Car оқу жинағының бастапқы коды
3in1-kit-main-v2.zip12.80 MB
Пайдаланушының нұсқаулығы
-
SunFounder 3-в-1 Arduino Smart Car құрастыру нұсқаулығыБұл құжат SunFounder 3-в-1 Arduino Smart Car құрастыруды қадам бойынша көрсетеді
SunFounder_car_assembly_manual.pdf1.20 MB