ዝርዝር ሁኔታ:

DIY የምዝግብ ማስታወሻ ቴርሞሜትር በ 2 ዳሳሾች 3 ደረጃዎች (ከስዕሎች ጋር)
DIY የምዝግብ ማስታወሻ ቴርሞሜትር በ 2 ዳሳሾች 3 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: DIY የምዝግብ ማስታወሻ ቴርሞሜትር በ 2 ዳሳሾች 3 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: DIY የምዝግብ ማስታወሻ ቴርሞሜትር በ 2 ዳሳሾች 3 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: ካሲዮ ጂ-ሾክ ካርቦን ኮር GGB100-1A Mudmaster እና የ G GRB200-1A የስበት ኃ... 2024, ሀምሌ
Anonim
DIY የምዝግብ ማስታወሻ ቴርሞሜትር ከ 2 ዳሳሾች ጋር
DIY የምዝግብ ማስታወሻ ቴርሞሜትር ከ 2 ዳሳሾች ጋር
DIY የምዝግብ ማስታወሻ ቴርሞሜትር ከ 2 ዳሳሾች ጋር
DIY የምዝግብ ማስታወሻ ቴርሞሜትር ከ 2 ዳሳሾች ጋር

ይህ ፕሮጀክት የቀደመውን የእኔ ፕሮጀክት “የእራስ ምዝግብ ማስታወሻ ቴርሞሜትር” ማሻሻያ ነው። የሙቀት መጠኑን ወደ ማይክሮ ኤስዲ ካርድ ይመዘግባል።

የሃርድዌር ለውጦች

ለዚህ መሣሪያ በታተመ የወረዳ ሰሌዳ ላይ አቅርቦት በሚኖርበት በእውነተኛ ሰዓት የሰዓት ሞዱል ውስጥ የ DS18B20 የሙቀት ዳሳሽ አክዬአለሁ ፤ እና ተገቢውን ሽቦ ከ “DS” ፒን ከ RTC ወደ አርዱዲኖ D2 አክሏል።

የሶፍትዌር ለውጦች

ከዚያ ሶፍትዌሩን ጨመርኩ እና አሻሻለው። ዋናዎቹ ለውጦች የሚከተሉት ናቸው

የኤልሲዲ ማሳያ ሁለት “ኢን” እና “ውጣ” ን የሙቀት መጠን ያሳያል።

በኤስዲ ካርድ ላይ የተመዘገቡት የምዝግብ ማስታወሻ ፋይሎች ሁለት የሙቀት መስኮች አላቸው ፣ “ሙቀት ውስጥ” እና “የሙቀት ውጭ”።

በኤስዲ ካርድ ላይ ረዘም ያለ መዝገብ በመኖሩ ፣ ለ EEPROM የሚሰሩ መያዣዎች ትልቅ ስለነበሩ በዚህ ምክንያት የማስታወስ ግጭት ችግሮች መኖር ጀመርኩ። ከ String ነገር ይልቅ ለሁሉም ሕብረቁምፊዎች የቁምፊ ድርድሮችን መጠቀምን ጨምሮ ተለዋዋጭ ማህደረ ትውስታ አጠቃቀምን ለመቀነስ ያተኮሩ በርካታ ለውጦችን አድርጌአለሁ።

የሙቀት መጠኑን የሚያገኘው የሶፍትዌሩ ክፍል ዋና ማሻሻያዎች አሉት ፣ ብዙው የትኛው ምርመራ “ውስጥ” እና “ውጭ” የሚለውን ለመለየት ነው። ይህ መታወቂያ በአብዛኛው አውቶማቲክ ነው። በሆነ ምክንያት መመርመሪያዎቹ በዙሪያቸው ከተለወጡ ፣ የ “ውጭ” ምርመራን በማላቀቅ እንደገና ወደ ውስጥ በመሰካት ሊስተካከል ይችላል። እኔ ራሴ ይህንን ተገላቢጦሽ አላጋጠመኝም። ፕሮግራም አድራጊው ወይም ተጠቃሚው በአነፍናፊ አድራሻዎች ውስጥ መተየብ አያስፈልገውም ፣ ሶፍትዌሩ የሙቀት ዳሳሽ አድራሻዎችን በራሱ ያገኛል።

እኔ ባደረግሁት ሙከራ መሠረት ፣ የሙቀት መጠቆሚያዎችን መለየት ፣ እና የ SD ካርዱን ለማስወገድ እና ለመተካት የተሰጠው ምላሽ አሁንም ያለምንም ችግር ይሠራል።

ደረጃ 1 የሶፍትዌር ልማት

ይህ ደረጃ ለተጠናቀቀው ፕሮጀክት ሙሉውን ሶፍትዌር ይሰጥዎታል። እኔ Arduino IDE 1.6.12 ን በመጠቀም አጠናቅሬዋለሁ። እሱ 21 ፣ 400 ባይት የፕሮግራም ማህደረ ትውስታ (69%) እና 1 ፣ 278 ባይት ተለዋዋጭ ማህደረ ትውስታ (62%) ይጠቀማል።

ምን እየሆነ እንዳለ ግልፅ ያደርግልኛል በሚል ተስፋ በኮዱ ውስጥ አስተያየቶችን አስቀምጫለሁ።

ደረጃ 2 - በሁለት የሙቀት ዳሳሾች መስራት - ዝርዝሮች

ይህ ሶፍትዌር “OneWire” ቤተ -መጽሐፍትን ይጠቀማል። ማንኛውንም “የዳላስ ቴምፕሬቸር” ወይም ተመሳሳይ ቤተመፃህፍት አይጠቀምም። ይልቁንስ ከሙቀት ዳሳሾች የሚመጡ ትዕዛዞች እና መረጃዎች በስዕሉ ይከናወናሉ እና በቀላሉ ሊታዩ እና ሊረዱ ይችላሉ። ጠቃሚ የ OneWire ቤተ -መጽሐፍት ትዕዛዞችን በ

www.pjrc.com/teensy/td_libs_OneWire.html

ሁለት (ወይም ከዚያ በላይ) የሙቀት ዳሳሾች ሲኖሩ የትኛው የትኛው እንደሆነ ለመለየት አስፈላጊ ይሆናል።

ሁለቱን ዳሳሾቼን “ውስጥ” እና “ውጭ” ብዬ ጠራሁት ፣ ይህም በመደበኛነት “ውስጥ” በሆነው የማሳያ ሞዱል ውስጥ አነፍናፊ ያላቸው የንግድ አሃዶች እና ሌላኛው ገመድ በኬብል ላይ በሌላኛው በኩል እንዲቀመጥ የውጭ ግድግዳ እና ስለዚህ “ውጭ” ይሁኑ።

የተለያዩ መመርመሪያዎችን ለመለየት የተለመደው አቀራረብ የመሣሪያውን አድራሻዎች ማግኘት እና ከመታወቂያ መለያ ጋር በሶፍትዌሩ ውስጥ ማስገባት ነው። ያየኋቸው ሌሎች ፕሮጀክቶች ሁሉ የዳላስ ቴምፕሬተር ቤተመፃሕፍት ቢጠቀሙም ባይጠቀሙም ይህንን አካሄድ ይጠቀማሉ።

የእኔ ዓላማ ሶፍትዌሩ አነፍናፊዎችን በራስ -ሰር ለይቶ ለ “ውስጥ” እና “ወደ ውጭ” እንዲመደብላቸው ነበር። በተለዩ የአርዱዲኖ ፒኖች ላይ በማስቀመጥ ይህን ለማድረግ በቂ ነው። በዚህ ፕሮጀክት ውስጥ ከ A0 እስከ A3 እና A6 እና A7 ሁሉም ጥቅም ላይ ያልዋሉ ናቸው ፣ ስለሆነም ከእነዚህ ውስጥ አንዱ በዚህ ጉዳይ ላይ ጥቅም ላይ ሊውል ይችል ነበር። ሆኖም ሁለቱም በአንድ የ OneWire አውቶቡስ ላይ ከአነፍናፊዎቹ ጋር የራስ -ሰር የመታወቂያ ሥራ እንዲኖረኝ ተሳክቶልኛል።

እንደዚህ ይሠራል።

የ OneWire ቤተ -መጽሐፍት “OneWireObject.search (አድራሻ)” “አድራሻ” የ 8 ባይት ድርድር ያለው እና “OneWireObject” ቀደም ሲል የተፈጠረ የ OneWire ነገር ምሳሌ ስም ነው። የሚወዱትን ማንኛውንም ስም ሊኖረው ይችላል። የእኔ “ዲ” ይባላል። ይህንን “ፍለጋ” ትዕዛዝ ሲያወጡ የ OneWire ቤተ -መጽሐፍት በአንዱ ሽቦ አውቶቡስ ላይ አንዳንድ ምልክት ያደርጋል። ምላሽ ሰጪ ዳሳሽ ካገኘ ፣ “TRUE” ቡሊያን እሴት ይመልሳል እና በ “አድራሻ” ድርድር ውስጥ በ 8 ባይት ልዩ የአነፍናፊ መታወቂያ ይሞላል። ይህ መለያ የቤተሰብ ኮድ (መጀመሪያ ላይ) እና የቼክ ድምር (መጨረሻ ላይ) ያካትታል። በመካከላቸው በቤተሰብ ውስጥ ያለውን አነፍናፊ በልዩ ሁኔታ የሚለዩ 6 ባይት አሉ።

በ OneWire አውቶቡስ ላይ ባሉት መሣሪያዎች ሁሉ ብስክሌት በማሽከርከር ይህ ትዕዛዝ በተሰጠ ቁጥር አንድ ውጤት (አድራሻ እና መመለሻ TRUE) ይገኛል። አንዴ እያንዳንዱ መሣሪያ ምላሽ ከሰጠ ፣ በሚቀጥለው ጊዜ “ፍለጋ” ሲወጣ ፣ መመለሻው “ሐሰት” ነው ፣ ይህም በአውቶቡሱ ላይ ያለው እያንዳንዱ መሣሪያ አስቀድሞ ምላሽ እንደሰጠ ያመለክታል። “ፍለጋው” እንደገና ከተሰጠ ፣ የመጀመሪያው መሣሪያ እንደገና ምላሽ ይሰጣል - እና ያለገደብ። መሣሪያዎቹ ሁል ጊዜ በተመሳሳይ ቅደም ተከተል ምላሽ ይሰጣሉ። የምላሾች ቅደም ተከተል በ OneWire አውቶቡስ ላይ ባሉ መሣሪያዎች መለያዎች ላይ የተመሠረተ ነው። ከመሣሪያ ለifዎቹ ቢያንስ ጉልህ ከሆኑት ቁርጥራጮች ጀምሮ የሁለትዮሽ ፍለጋ ይመስላል። እነዚህን መለያዎች ለማግኘት ጥቅም ላይ የዋለው ፕሮቶኮል በጣም የተወሳሰበ ሲሆን በ ‹pdfserv.maximintegrated.com/en/an/AN937.pd ›ላይ የፒዲኤፍ ሰነድ በሆነው‹ ‹Button Standards› መጽሐፍ ›ሰነድ ገጽ 51 - 54 ውስጥ ተገል isል። …

ይህንን የፍለጋ ሂደት በአንድ አውቶቡስ ላይ ከ 1 እስከ 11 ዳሳሾች ሞከርኩ ፣ እና ለተወሰነ የመሳሪያዎች ስብስብ የምላሽ ትዕዛዙ ሁል ጊዜ አንድ ነው ፣ ግን በአውቶቡሱ መጨረሻ ላይ አዲስ መሣሪያ ስጨምር ፣ ምንም መንገድ የለም በፍለጋ ቅደም ተከተል የት እንደሚታይ መተንበይ እችል ነበር። ለምሳሌ እኔ የጨመርኩት 11 ኛ ዳሳሽ በቁጥር 5 ላይ ገባ። እና በአውቶቡስ ላይ ያስቀመጥኩት የመጀመሪያው ዳሳሽ በፍለጋ ቅደም ተከተል ውስጥ የመጨረሻው ነበር።

በዚህ ፕሮጀክት ውስጥ ሁለት ዳሳሾች ፣ አንደኛው በ RTC ሞዱል ላይ በቦታው ተሽጧል። ሌላኛው በቦርዱ ላይ የወንድ ራስጌን እና በኬብሉ ላይ የሴት ራስጌን በመጠቀም ተሰክቷል። በቀላሉ ሊነጣጠል ይችላል።

በኬብሉ ላይ ያለው አነፍናፊ (“ውጭ” ዳሳሽ) ሲለያይ “ፍለጋ” ትዕዛዙ ተለዋጭ “እውነት” እና “ሐሰት” ይመለሳል።

በኬብሉ ላይ ያለው ዳሳሽ ሲያያዝ የ “ፍለጋ” ትዕዛዙ ባለ 3-ደረጃ ዑደት ያወጣል ፣ ሁለት “እውነት” እና አንድ “ሐሰተኛ” ይመለሳል።

የውሸት ውጤት እስኪመለስ ድረስ የእኔ አሰራር 1 ፣ 2 ወይም 3 “ፍለጋ” ትዕዛዞችን መስጠት ነው። ከዚያ 2 ተጨማሪ “ፍለጋ” ትዕዛዞችን አወጣለሁ። ሁለተኛው ካልተሳካ (ማለትም ሐሰት) በአውቶቡሱ ላይ አንድ አነፍናፊ ብቻ እንዳለ እና እሱ “ውስጥ” ዳሳሽ መሆኑን አውቃለሁ። የመሣሪያው ማንነት ተመዝግቦ ለ "ውስጥ" ዳሳሽ ይመደባል።

በኋላ ላይ ፣ ሁለቱም የመጀመሪያ እና ሁለተኛ ተመላሾች እውነት ከሆኑ በአውቶቡሱ ላይ ሁለት ዳሳሾች እንዳሉ አውቃለሁ። ከመካከላቸው የትኛው ከ “ውስጥ” ዳሳሽ ጋር እኩል የሆነ ማንነት እንዳለው እፈትሻለሁ ፣ እና ሌላውን እንደ “ውጭ” ዳሳሽ እመድባለሁ።

ሌላው ጥቃቅን ነጥብ ከሁለቱም ዳሳሾች የውጤቶች መሰብሰብ የሚከናወነው ‹ሮም ዝለል› ትዕዛዝ ተብሎ በሚታወቀው ‹ጀምር ልወጣ› ን በመላክ ነው። ትዕዛዞችን ወደ አንድ መሣሪያ (ልዩ መለያውን በመጠቀም) ወይም በአውቶቡስ ውስጥ ላሉት ሁሉም መሳሪያዎች (ሮም ዝለል) የመላክ አማራጭ አለን። ኮዱ እንደዚህ ይመስላል

ds.reset (); //

// “መዝለል ሮም” ትዕዛዙን ይላኩ (ስለዚህ ቀጣዩ ትዕዛዝ በሁለቱም ዳሳሾች ውስጥ ይሠራል) ds.write (0xCC); // የ ROM ትዕዛዙን ይዝለሉ ds.write (0x44, 0); // በሁለቱም መመርመሪያዎች ውስጥ ልወጣ ይጀምሩ የሙቀት_state = wait_convert; // ወደ መዘግየት ሁኔታ ይሂዱ

አስፈላጊው የመዘግየት ጊዜ ሲያልፍ ፣ የሙቀት መጠኖቹ ከእያንዳንዱ ዳሳሽ ለየብቻ ይቀበላሉ። ለሁለተኛው ዳሳሽ (ማለትም የ OUT ዳሳሽ) ኮዱ እዚህ አለ።

ከሆነ (ባንዲራ 2) {

የአሁኑ = ds.reset (); ds.select (DS18B20_addr_out); ds.write (0xBE); // የ “ውጭ” የምርመራ ውሂብን (Scratchpad) ያንብቡ [0] = ds.read (); ውሂብ [1] = ds.read (); temperature_out = (ውሂብ [1] << 8) + ውሂብ [0]; የሙቀት_ውጪ = (6 * የሙቀት_ውጪ) + የሙቀት_ውጪ / 4; // በ 6.25 ማባዛት} ሌላ {// ባንዲራ አይደለም 2 - ማለትም የውጪ ዳሳሽ አልተገናኘም የሙቀት_ውጣ = 30000; // የሙቀት መጠን ዳሳሽ የማይሰራ ከሆነ በ 300.00 C ያስተካክሉ} // የ if መጨረሻ (ባንዲራ 2)

እኔ የኤልሲዲ ፣ የ RTC እና የ SD ካርድ ድጋፍ ችግሮች ሳያስከትሉ ይህንን ሶፍትዌር አብዛኞቹን በውስጡ ባለው የሙቀት ዳሳሾች ውስጥ ባለው ገለልተኛ ንድፍ ውስጥ ሰርቻለሁ። ይህ የእድገት ንድፍ ከዚህ በታች ባለው ፋይል ውስጥ አለ።

ደረጃ 3 የመጀመሪያ ውጤቶች

ቀዳሚ ውጤቶች
ቀዳሚ ውጤቶች

ይህ ገበታ የመጀመሪያዎቹ ሁለት የትርፍ ቀናት ንባቦች ጥምረት ነው።

የሚመከር: