Tafuta Msimbo

Somo la 7/31-2 : kutambua uwanja wa sumaku kwa kutumia swichi ya reed | Seti ya SunFounder

Somo la 7/31-2 : kutambua uwanja wa sumaku kwa kutumia swichi ya reed | Seti ya SunFounder

Kugundua uwanja wa sumaku ni mojawapo ya njia rahisi na zenye kuridhisha zaidi za kuanza na pembejeo za kidijitali kwenye Arduino. Katika mradi huu utaunda kigunduzi cha uwanja wa sumaku kwa kutumia swichi ya reed — swichi ndogo iliyofungwa kwenye glasi ambayo hufunga mawasiliano yake kila sumaku inapokaribia. Kwa kuwa swichi ya reed inafanya kazi kama kitufe cha kubonyeza (ama imefunguliwa au imefungwa), ni utangulizi mzuri wa kazi ya digitalRead(), na pia inakufundisha kwa nini kipinga cha pull-down ni muhimu na jinsi pull-up ya pembejeo iliyojengwa ndani ya Arduino inaweza kuichukua nafasi kabisa.

reed_switch

Mara baada ya hii kufanya kazi, mzunguko huo huo unakuwa moyo wa miradi mingi ya ulimwengu wa kweli. Hapa kuna mawazo machache ya kivitendo unaweza kujaribu:

  • Kengele ya mlango na dirisha — weka swichi ya reed kwenye fremu na sumaku ndogo kwenye mlango; Arduino inaripoti "wazi" mara sumaku inapoondoka.
  • Kipima mwendo bila mguso — gundi sumaku kwenye gurudumu linalozunguka na uhesabu mapigo kupima RPM.
  • Kisoma mita ya maji au gesi — mita nyingi za huduma zina pato la pigo la sumaku ambalo swichi ya reed inaweza kuchukua na kurekodi.
  • Kihisi cha kifuniko cha kompyuta mpakato / kiboksi — gundua kifuniko kinapofungwa ili kuanzisha usingizi au LED ya hali.
  • Kipima mwendo cha baiskeli — sumaku kwenye spoki na swichi ya reed kwenye uma inakupa pigo moja kwa kila mzunguko wa gurudumu.
  • Kugundua uharibifu — ficha jozi ya sumaku na swichi ya reed ndani ya kiboksi ili ujue kama kimefunguliwa.

Jinsi Swichi ya Reed Inavyofanya Kazi

lesson-7-reading-reed-with-magnet-multimeter

Swichi ya reed ni kapsuli ndogo ya glasi iliyo na visu viwili nyembamba vya ferromagnetic (kwenye video saa 12:38). Mbele ya uwanja wa sumaku visu huvutiwa na kugusana, kufunga mzunguko. Ondoa sumaku na visu hurukaruka na kutengana, kufungua mzunguko tena. Hiyo ndiyo kanuni yote — ni swichi isiyo na kitufe kinachosogea, isiyo na uchakavu wa kubonyezwa kwa vidole, na haihitaji mguso wa kimwili na kitu unachokigundua.

Unaweza kuthibitisha tabia hii kwa multimeter katika hali ya mwendelezo (kwenye video saa 13:59): bila sumaku karibu mita inaonyesha mzunguko wazi, na mara sumaku inapokaribia kipaza sauti hulia na mita inasoma mzunguko funge. Kwa kuwa swichi ni sawa kielektroniki na kitufe cha kubonyeza, msimbo wa Arduino na uunganishaji ni sawa na pembejeo nyingine yoyote ya kidijitali.

Pembejeo za Kidijitali na Vipinga vya Pull Vimeelezwa

Arduino inasoma pini ya kidijitali kama HIGH au LOW. Kwenye bodi ya 5 V, kitu chochote juu ya takriban 2.2 V kinachukuliwa kama HIGH na kitu chochote chini ya takriban 1.5 V kama LOW (kwenye video saa 01:49). Tatizo ni kwamba swichi iliyounganishwa moja kwa moja kati ya pini na 5 V huacha pini ikielea wakati swichi imefunguliwa — haijaunganishwa na kitu chochote, kwa hivyo inachukua kelele na kuripoti thamani za nasibu.

why_use_resistor_switch-1
why_use_resistor_switch-2
why_use_resistor_switch-3
why_use_resistor_switch-4
why_use_resistor_switch-5
why_use_resistor_switch-6
why_use_resistor_switch-7
why_use_resistor_switch-8
kitufe cha kubonyeza na INPUT_PULLUP

Ndiyo sababu kipinga kinatumika. Mipangilio miwili inafanya kazi kwa usawa:

  • Pull-down: kipinga 10 kΩ kutoka kwa pini hadi ardhini. Pini husoma LOW wakati swichi imefunguliwa na HIGH wakati swichi inaunganisha pini na 5 V.
  • Pull-up: kipinga 10 kΩ kutoka kwa pini hadi 5 V. Pini husoma HIGH wakati swichi imefunguliwa na LOW wakati swichi inaunganisha pini na ardhi.

Arduino pia ina kipinga cha ndani cha pull-up ambacho kinaweza kuwezeshwa katika programu kwa INPUT_PULLUP (kwenye video saa 19:52). Hii inaondoa kabisa hitaji la kipinga cha nje — pini hukaa HIGH, na kufunga swichi hadi ardhini huifanya kuwa LOW. Hasara ni kwamba mantiki inageuzwa: kushinikizwa (au sumaku ikiwepo) sasa husoma 0 badala ya 1.

Vifaa na Vipengele

  • Arduino Uno (au bodi yoyote inayolingana)
  • Moduli ya swichi ya reed au swichi ya reed tupu
  • Kipinga 10 kΩ (kinahitajika tu kwa toleo la pull-down)
  • Ubao wa mkate na waya za kuruka
  • Sumaku ndogo kwa majaribio
  • Kebo ya USB kwa programu na nishati

Mwongozo wa Kuunganisha

lesson-7-reading-reed-schematic
lesson-7-reading-reed-wiring

Swichi ya reed imeunganishwa kama kitufe cha kushinikiza. Mguu mmoja wa swichi ya reed huenda hadi 5 V, mguu mwingine huenda hadi pini 2 ya Arduino na hadi mwisho mmoja wa kipinga 10 kΩ. Mwisho mwingine wa kipinga huenda ardhini (kwenye video saa 14:40). Hii ni usanidi wa pull-down, kwa hivyo pini husoma LOW bila sumaku iliyopo na HIGH wakati sumaku inafunga swichi.

Kwenye ubao wa mkate, weka swichi ya reed ili miguu yake miwili ikae kwenye safu tofauti, unganisha kipinga kutoka safu moja na mguu mmoja hadi reli ya ardhi, pitisha waya nyekundu kutoka mguu mwingine hadi reli ya 5 V, na waya ya kijani kutoka makutano ya swichi ya reed na kipinga hadi pini 2 (kwenye video saa 15:53). Nyeusi huenda ardhini, nyekundu huenda 5 V, kijani huenda pini 2 — mkataba huo wa rangi uliotumika katika seti ya SunFounder.

Ikiwa unapendelea kuruka kipinga, unganisha mguu mmoja wa swichi ya reed hadi pini 2 na mguu mwingine moja kwa moja hadi ardhini, kisha washa INPUT_PULLUP kwenye msimbo kama ilivyoelezwa hapa chini.

Maelezo ya Msimbo

Sketch ni ndogo kwa makusudi. Kila kitu utakachotaka kubadilisha kinapatikana katika sehemu mbili juu ya faili.

int reedPin = 2;//the pin reed switch is connected to 

void setup() {
  Serial.begin(9600);
  pinMode(reedPin, INPUT);
}

reedPin — badilisha nambari hii ikiwa uliunganisha swichi ya reed kwenye pini tofauti ya kidijitali. Pini yoyote ya kidijitali kwenye Uno inafanya kazi; pini 2 inatumika hapa kwa sababu ni rahisi kwenye ubao wa mkate.

Serial.begin(9600) — huweka kasi ya kifuatiliaji cha serial. Ikiwa utabadilisha thamani hii lazima pia ubadilishe kasi ya baud kwenye menyu ya kushuka ya Dirisha la Kifuatiliaji cha Serial, vinginevyo utaona herufi za uharibifu (kwenye video saa 11:25).

pinMode(reedPin, INPUT) — husanidi pini kama ingizo la kipinga cha juu ili iweze kuhisi voltage iliyowekwa na swichi ya reed na kipinga. Ikiwa unatumia pull-up ya ndani badala yake, badilisha mstari huu kuwa pinMode(reedPin, INPUT_PULLUP); na kumbuka kwamba usomaji utageuzwa.

Loop husoma tu pini na kuchapisha matokeo:

void loop() {
  Serial.println(digitalRead(reedPin));
  delay(10);       
}

digitalRead(reedPin) hurudisha 1 wakati pini ni HIGH na 0 wakati ni LOW. Kwa sababu thamani inapitishwa moja kwa moja kwenye Serial.println(), hakuna haja ya kigezo cha kati — usomaji huchapishwa moja kwa moja. Kwa uunganishaji wa pull-down, 0 inamaanisha "hakuna uwanja wa sumaku" na 1 inamaanisha "sumaku imegunduliwa" (kwenye video saa 18:31).

delay(10) hudhibiti ni mara ngapi usomaji huchapishwa. Millisekunde kumi ni haraka vya kutosha kwamba utaona thamani ikibadilika mara moja sumaku inapokaribia. Ikiwa unapendelea onyesho tulivu unaweza kuipandisha hadi 200 ms, lakini kumbuka kwamba hii hupunguza kasi ya ugunduzi pia (kwenye video saa 12:01).

Onyesho la Mradi wa Moja kwa Moja

Baada ya kupakia sketch, fungua Kifuatiliaji cha Serial na weka kasi ya baud kuwa 9600. Bila sumaku karibu dirisha hujaa sufuri. Lete sumaku ndogo karibu na kibonge cha kioo na matokeo hubadilika mara moja kuwa moja; vuta sumaku mbali na hurudi kwa sufuri (kwenye video saa 17:04). Mwitikio ni wa papo hapo na hufanya kazi hata sumaku inaposhikiliwa sentimita moja au mbili kutoka kwa swichi.

lesson-7-reading-reed-wiring-on-breadboard

Ikiwa ulijenga toleo la pull-up badala yake, mantiki imegeuzwa: kifuatiliaji huonyesha 1 wakati wa mapumziko na 0 wakati sumaku ipo (kwenye video saa 22:13). Kwa njia yoyote, sasa una kigunduzi cha uwanja wa sumaku cha kuaminika, kisichogusa ambacho kinagharimu karibu kitu na kinaweza kuwekwa katika mawazo yoyote ya mradi yaliyoorodheshwa juu ya makala hii.

Toleo la kitufe cha kubonyeza la somo hili la kusoma kidijitali limeelezwa kando katika Somo 7/31: Kusoma Kidijitali Kitufe cha Kubonyeza, kutambua uwanja wa sumaku SunFounder Kit | Robojax.

Miradi inayohusiana kutoka kwa video hii

Sura

  • [00:00] Utangulizi: mifano miwili ya kusoma kidijitali
  • [01:33] Maana ya kusoma kidijitali na HIGH/LOW
  • [02:46] Jinsi kitufe cha kubonyeza kinavyofanya kazi
  • [03:25] Nadharia ya kipingamizi cha pull-up na pull-down
  • [05:18] Kuunganisha kitufe cha kubonyeza kwenye ubao wa mkate
  • [08:21] Kufungua na kuelezea msimbo wa kitufe
  • [10:55] Kupakia na kujaribu mfano wa kitufe
  • [12:38] Kutambulisha swichi ya reed na kuijaribu kwa multimeter
  • [14:40] Kuunganisha swichi ya reed kwenye pini 2
  • [16:46] Kujaribu swichi ya reed kwa sumaku
  • [17:19] Kuelezea msimbo wa swichi ya reed
  • [19:45] Kutumia INPUT_PULLUP bila kipingamizi cha nje

Bilder

reed_switch
reed_switch
push button with INPUT_PULLUP
push button with INPUT_PULLUP
why_use_resistor_switch-1
why_use_resistor_switch-1
why_use_resistor_switch-2
why_use_resistor_switch-2
why_use_resistor_switch-3
why_use_resistor_switch-3
why_use_resistor_switch-4
why_use_resistor_switch-4
why_use_resistor_switch-5
why_use_resistor_switch-5
why_use_resistor_switch-6
why_use_resistor_switch-6
why_use_resistor_switch-7
why_use_resistor_switch-7
why_use_resistor_switch-8
why_use_resistor_switch-8
lesson-7-reading-reed-with-magnet-multimeter
lesson-7-reading-reed-with-magnet-multimeter
lesson-7-reading-push-button-schematic
lesson-7-reading-push-button-schematic
lesson-7-reading-push-button-wiring
lesson-7-reading-push-button-wiring
lesson-7-reading-reed-schematic
lesson-7-reading-reed-schematic
lesson-7-reading-reed-wiring
lesson-7-reading-reed-wiring
lesson-7-reading-reed-wiring-on-breadboard
lesson-7-reading-reed-wiring-on-breadboard
932-Lesson 7/31-2: Digital read, working with reed switch
Språk: C++
/*
 * 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);       
}

Resurser och referenser

Filer📁

Arduino-bibliotek (zip)

Användarhandbok