કોડ શોધો

પાઠ 7/31-2 : રીડ સ્વિચનો ઉપયોગ કરીને ચુંબકીય ક્ષેત્ર શોધવું | સનફાઉન્ડર કિટ

પાઠ 7/31-2 : રીડ સ્વિચનો ઉપયોગ કરીને ચુંબકીય ક્ષેત્ર શોધવું | સનફાઉન્ડર કિટ

ચુંબકીય ક્ષેત્ર શોધવું એ Arduino પર ડિજિટલ ઇનપુટ્સ સાથે શરૂઆત કરવાની સૌથી સરળ અને સૌથી સંતોષકારક રીતોમાંની એક છે. આ પ્રોજેક્ટમાં તમે રીડ સ્વિચ — એક નાનકડી કાચમાં બંધ સ્વિચ જે ચુંબક નજીક આવે ત્યારે તેના સંપર્કો બંધ કરે છે — નો ઉપયોગ કરીને ચુંબકીય ક્ષેત્ર ડિટેક્ટર બનાવશો. કારણ કે રીડ સ્વિચ બરાબર પુશ બટન જેવી જ વર્તે છે (તે ક્યાં તો ખુલ્લી હોય છે અથવા બંધ), તે digitalRead() ફંક્શનનો પરફેક્ટ પરિચય છે, અને તે તમને એ પણ શીખવે છે કે પુલ-ડાઉન રેઝિસ્ટર કેમ મહત્વનું છે અને Arduinoનું બિલ્ટ-ઇન ઇનપુટ પુલ-અપ તેને સંપૂર્ણપણે કેવી રીતે બદલી શકે છે.

reed_switch

એકવાર આ કામ કરવા લાગે, પછી એ જ સર્કિટ ઘણા વાસ્તવિક-જગતના બિલ્ડ્સનું હૃદય બની જાય છે. અહીં થોડા વ્યવહારુ વિચારો છે જે તમે અજમાવી શકો છો:

  • દરવાજા અને બારીનો એલાર્મ — રીડ સ્વિચને ફ્રેમ પર અને નાનું ચુંબક દરવાજા પર લગાવો; ચુંબક દૂર જાય તે ક્ષણે Arduino "ખુલ્લું" રિપોર્ટ કરે છે.
  • નોન-કોન્ટેક્ટ ટેકોમીટર — ફરતા વ્હીલ પર ચુંબક ગુંદો અને RPM માપવા માટે પલ્સ ગણો.
  • પાણી અથવા ગેસ મીટર રીડર — ઘણા યુટિલિટી મીટરમાં ચુંબકીય પલ્સ આઉટપુટ હોય છે જે રીડ સ્વિચ પકડી શકે અને લોગ કરી શકે.
  • લેપટોપ ઢાંકણ / એન્ક્લોઝર સેન્સર — ઢાંકણ બંધ હોય ત્યારે શોધો જેથી સ્લીપ અથવા સ્ટેટસ LED ટ્રિગર થાય.
  • સાયકલ સ્પીડોમીટર — સ્પોક પર ચુંબક અને ફોર્ક પર રીડ સ્વિચ તમને દરેક વ્હીલ ફરવા દીઠ એક પલ્સ આપે છે.
  • ટેમ્પર ડિટેક્શન — એન્ક્લોઝરની અંદર ચુંબક અને રીડ સ્વિચની જોડી છુપાવો જેથી તમે જાણી શકો કે તે ખોલવામાં આવ્યું છે કે નહીં.

રીડ સ્વિચ કેવી રીતે કામ કરે છે

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

રીડ સ્વિચ એ નાનકડી કાચની કેપ્સ્યુલ છે જેમાં બે પાતળા ફેરોમેગ્નેટિક બ્લેડ હોય છે (વિડિયોમાં 12:38 પર). ચુંબકીય ક્ષેત્રની હાજરીમાં બ્લેડ એકબીજા તરફ આકર્ષાય છે અને સ્પર્શે છે, જેથી સર્કિટ બંધ થાય છે. ચુંબક દૂર કરો તો બ્લેડ અલગ થઈ જાય છે, જેથી સર્કિટ ફરી ખુલી જાય છે. આખું સિદ્ધાંત આ જ છે — તે એક સ્વિચ છે જેમાં કોઈ ફરતું બટન નથી, આંગળીના દબાવવાથી ઘસારો નથી, અને તમે જે વસ્તુને સેન્સ કરી રહ્યા છો તેની સાથે ભૌતિક સંપર્કની જરૂર નથી.

તમે મલ્ટીમીટરને કન્ટિન્યુટી મોડમાં રાખીને આ વર્તન ચકાસી શકો છો (વિડિયોમાં 13:59 પર): નજીકમાં ચુંબક ન હોય ત્યારે મીટર ખુલ્લું સર્કિટ દર્શાવે છે, અને જેવું ચુંબક નજીક આવે છે ત્યાં જ બઝર વાગે છે અને મીટર બંધ સર્કિટ વાંચે છે. કારણ કે સ્વિચ વિદ્યુતીય રીતે પુશ બટન સાથે સમાન છે, Arduino કોડ અને વાયરિંગ અન્ય કોઈપણ ડિજિટલ ઇનપુટ જેવા જ છે.

ડિજિટલ ઇનપુટ્સ અને પુલ રેઝિસ્ટર્સ સમજાવ્યા

Arduino ડિજિટલ પિનને HIGH અથવા LOW તરીકે વાંચે છે. 5 V બોર્ડ પર, આશરે 2.2 Vથી ઉપરનું કંઈપણ HIGH ગણાય છે અને આશરે 1.5 Vથી નીચેનું કંઈપણ LOW ગણાય છે (વિડિયોમાં 01:49 પર). સમસ્યા એ છે કે પિન અને 5 V વચ્ચે સીધી જોડાયેલી સ્વિચ, સ્વિચ ખુલ્લી હોય ત્યારે પિનને ફ્લોટિંગ છોડી દે છે — તે કંઈપણ સાથે જોડાયેલી નથી, તેથી તે નોઇઝ પકડે છે અને રેન્ડમ મૂલ્યો રિપોર્ટ કરે છે.

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
INPUT_PULLUP સાથે પુશ બટન

તેથી જ રેઝિસ્ટરનો ઉપયોગ થાય છે. બે ગોઠવણીઓ સમાન રીતે સારી રીતે કામ કરે છે:

  • પુલ-ડાઉન: પિનથી ગ્રાઉન્ડ સુધી 10 kΩ રેઝિસ્ટર. જ્યારે સ્વિચ ખુલ્લી હોય ત્યારે પિન LOW વાંચે છે અને જ્યારે સ્વિચ પિનને 5 V સાથે જોડે છે ત્યારે HIGH વાંચે છે.
  • પુલ-અપ: પિનથી 5 V સુધી 10 kΩ રેઝિસ્ટર. જ્યારે સ્વિચ ખુલ્લી હોય ત્યારે પિન HIGH વાંચે છે અને જ્યારે સ્વિચ પિનને ગ્રાઉન્ડ સાથે જોડે છે ત્યારે LOW વાંચે છે.

Arduino માં એક આંતરિક પુલ-અપ રેઝિસ્ટર પણ છે જેને INPUT_PULLUP વડે સોફ્ટવેરમાં સક્રિય કરી શકાય છે (વિડિયોમાં 19:52 પર). આ બાહ્ય રેઝિસ્ટરની જરૂરિયાતને સંપૂર્ણપણે દૂર કરે છે — પિન નિષ્ક્રિય સ્થિતિમાં HIGH રહે છે, અને સ્વિચને ગ્રાઉન્ડ સાથે બંધ કરવાથી તે LOW થાય છે. ટ્રેડ-ઓફ એ છે કે લોજિક ઉલટાવાયેલું છે: દબાવવામાં આવે (અથવા ચુંબક હાજર હોય) ત્યારે હવે 1 ને બદલે 0 વાંચે છે.

હાર્ડવેર અને ઘટકો

  • Arduino Uno (અથવા કોઈપણ સુસંગત બોર્ડ)
  • રીડ સ્વિચ મોડ્યુલ અથવા નગ્ન રીડ સ્વિચ
  • 10 kΩ રેઝિસ્ટર (ફક્ત પુલ-ડાઉન આવૃત્તિ માટે જરૂરી)
  • બ્રેડબોર્ડ અને જમ્પર વાયર
  • પરીક્ષણ માટે નાનું ચુંબક
  • પ્રોગ્રામિંગ અને પાવર માટે USB કેબલ

વાયરિંગ માર્ગદર્શિકા

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

રીડ સ્વિચ પુશ બટનની જેમ જ વાયર કરવામાં આવે છે. રીડ સ્વિચનો એક પગ 5 V પર જાય છે, બીજો પગ Arduino પિન 2 અને 10 kΩ રેઝિસ્ટરના એક છેડા પર જાય છે. રેઝિસ્ટરનો બીજો છેડો ગ્રાઉન્ડ પર જાય છે (વિડિયોમાં 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 ms સુધી વધારી શકો છો, પરંતુ નોંધ લો કે આ શોધને પણ ધીમી કરે છે (વિડિયોમાં 12:01 પર).

લાઇવ પ્રોજેક્ટ ડેમોન્સ્ટ્રેશન

સ્કેચ અપલોડ કર્યા પછી, Serial Monitor ખોલો અને બોડ રેટ 9600 પર સેટ કરો. નજીકમાં ચુંબક ન હોય ત્યારે વિન્ડો શૂન્યથી ભરાઈ જાય છે. નાનું ચુંબક કાચની કેપ્સ્યુલની નજીક લાવો અને આઉટપુટ તરત જ એકમાં બદલાઈ જાય છે; ચુંબક દૂર ખેંચો અને તે શૂન્ય પર પાછું આવે છે (વિડિયોમાં 17:04 પર). પ્રતિસાદ તાત્કાલિક છે અને જ્યારે ચુંબક સ્વિચથી એક-બે સેન્ટિમીટર દૂર રાખવામાં આવે ત્યારે પણ કામ કરે છે.

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

જો તમે તેના બદલે પુલ-અપ આવૃત્તિ બનાવી હોય, તો લોજિક ઉલટાવાયેલું છે: મોનિટર આરામમાં 1 અને ચુંબક હાજર હોય ત્યારે 0 દર્શાવે છે (વિડિયોમાં 22:13 પર). કોઈપણ રીતે, તમારી પાસે હવે વિશ્વસનીય, સંપર્કરહિત ચુંબકીય ક્ષેત્ર ડિટેક્ટર છે જેની કિંમત લગભગ કંઈ જ નથી અને તેને આ લેખની ટોચ પર સૂચિબદ્ધ કોઈપણ પ્રોજેક્ટ વિચારોમાં મૂકી શકાય છે.

આ જ ડિજિટલ-રીડ પાઠનું પુશ-બટન સંસ્કરણ અલગથી પાઠ 7/31: ડિજિટલ રીડ પુશ બટન, ચુંબકીય ક્ષેત્ર શોધવું SunFounder Kit | Robojax માં આવરી લેવામાં આવ્યું છે.

આ વિડિયોના સંબંધિત પ્રોજેક્ટ્સ

પ્રકરણો

  • [00:00] પરિચય: બે ડિજિટલ રીડ ઉદાહરણો
  • [01:33] ડિજિટલ રીડ અને HIGH/LOW નો અર્થ શું છે
  • [02:46] પુશ બટન સ્વિચ કેવી રીતે કામ કરે છે
  • [03:25] પુલ-અપ અને પુલ-ડાઉન રેઝિસ્ટરનો સિદ્ધાંત
  • [05:18] બ્રેડબોર્ડ પર પુશ બટનનું વાયરિંગ
  • [08:21] બટન સ્કેચ ખોલવું અને સમજાવવું
  • [10:55] બટન ઉદાહરણ અપલોડ કરવું અને પરીક્ષણ કરવું
  • [12:38] રીડ સ્વિચનો પરિચય અને મલ્ટિમીટર વડે તેનું પરીક્ષણ
  • [14:40] રીડ સ્વિચને પિન 2 સાથે વાયરિંગ
  • [16:46] ચુંબક વડે રીડ સ્વિચનું પરીક્ષણ
  • [17:19] રીડ સ્વિચ સ્કેચ સમજાવવું
  • [19:45] બાહ્ય રેઝિસ્ટર વગર INPUT_PULLUP નો ઉપયોગ

છબીઓ

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
ભાષા: 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);       
}

સંસાધનો અને સંદર્ભો

ફાઇલો📁

Arduino લાઇબ્રેરીઓ (zip)

વપરાશકર્તાનું માર્ગદર્શિકા