ഡിജിറ്റൽ തെർമോമീറ്റർ DS18B20, ARDUINO UNO

ആർഡ്വിനോ ഉപയോഗിച്ച് താപനില അളക്കുന്നതിൽ രസകരവും പുതിയതുമായത് എന്താണെന്ന് തോന്നുന്നു? നൂറുകണക്കിന് ലേഖനങ്ങൾ എഴുതിയിട്ടുണ്ട്, പതിനായിരക്കണക്കിന് മെഗാബൈറ്റ് വലുപ്പം, കുറച്ച് കുറവായിരിക്കാം, കുറച്ച് കൂടുതൽ സ്കെച്ചുകൾ ... ഇതാ എന്റെ ലേഖനം. എന്തിനായി? സത്യം പറഞ്ഞാൽ, താപനില അളക്കുന്നത് വരെ ഈ ചോദ്യം "മുകളിലേക്കും താഴേക്കും ചവച്ചരച്ചതാണ്" എന്ന് ഞാനും കരുതി. പിന്നെ അത് മെച്ചപ്പെട്ടു. ചിലത് പ്രവർത്തിക്കുന്നില്ല, എന്തെങ്കിലും ശരിയായി പ്രവർത്തിക്കുന്നില്ല, ധാരാളം ചോദ്യങ്ങൾ ഉയർന്നുവരുന്നു, അതിനുള്ള ഉത്തരങ്ങൾ ഇന്റർനെറ്റിന്റെ പകുതി തടസ്സപ്പെടുത്തിക്കൊണ്ട് "സ്ക്രാച്ച് ഔട്ട്" ചെയ്യണം, റഷ്യൻ ഭാഷയിൽ മാത്രമല്ല. ഈ വിഭവത്തെക്കുറിച്ചുള്ള എന്റെ മുൻ ലേഖനങ്ങളിൽ നിന്ന് വ്യത്യസ്തമായി ഈ ലേഖനം കൂടുതൽ പ്രായോഗികമാണ്, പക്ഷേ നമുക്ക് ആദ്യം മുതൽ ആരംഭിക്കാം. എന്തുകൊണ്ടാണ്, വാസ്തവത്തിൽ, തെർമോമീറ്ററുകൾ വിൽക്കുമ്പോൾ - ഓരോ രുചിക്കും ബജറ്റിനും പുതിയ എന്തെങ്കിലും ഉപയോഗിച്ച് താപനില അളക്കുന്നത്? എന്നാൽ വസ്തുത, പലപ്പോഴും താപനില അളക്കുക മാത്രമല്ല, ലഭിച്ച ഡാറ്റയെ അടിസ്ഥാനമാക്കി, മാറ്റങ്ങൾ ട്രാക്കുചെയ്യുന്നതിന് എന്തെങ്കിലും ചെയ്യണം, അല്ലെങ്കിൽ ലളിതമായി രേഖപ്പെടുത്തണം. എന്നിവയുമായി ബന്ധിപ്പിച്ചുകൊണ്ട് , ഒരു റിലേ യൂണിറ്റുള്ള ഒരു താപനില സെൻസർ, ഞങ്ങൾക്ക് ഏറ്റവും ലളിതമായ തെർമോസ്റ്റാറ്റ് ലഭിക്കും, കൂടാതെ ഈ തെർമോസ്റ്റാറ്റിന് നിരവധി പോയിന്റുകളിൽ (സോണുകൾ) താപനില ട്രാക്കുചെയ്യാനും ഒരു നിശ്ചിത അൽഗോരിതം അനുസരിച്ച് പ്രവർത്തിക്കാനും കഴിയുമെങ്കിൽ, ഞങ്ങൾക്ക് ഗുരുതരമായ ഒരു ഉപകരണം ലഭിക്കും, അതിന്റെ വ്യാവസായിക അനലോഗ് ചെലവ് വരും. ഒരു നല്ല ലാപ്‌ടോപ്പിന്റെ വിലയുമായി താരതമ്യപ്പെടുത്താവുന്നതാണ്. എന്നിരുന്നാലും, ഈ ലേഖനത്തിന്റെ ഉദ്ദേശ്യം സങ്കീർണ്ണമായ സങ്കീർണ്ണമായ ഉപകരണങ്ങൾ സൃഷ്ടിക്കുകയല്ല. തുടക്കക്കാരന് ലളിതമായ, ഫീൽഡ് തെളിയിക്കപ്പെട്ട താപനില അളക്കാനുള്ള പരിഹാരം വാഗ്ദാനം ചെയ്യുക എന്നതാണ് ലക്ഷ്യം. കൂടാതെ, മുൻ ലേഖനങ്ങൾ പോലെ, ഇതും ഭാഗങ്ങൾ ഉൾക്കൊള്ളുന്നു. അവ ഓരോന്നും സ്വന്തം പ്രശ്നം പരിഹരിക്കും. ഭാഗങ്ങൾ വർദ്ധിച്ചുവരുന്ന ബുദ്ധിമുട്ടിലേക്ക് പോകും.

ഒന്നാം ഭാഗം. ഏറ്റവും ലളിതവും എന്നാൽ ഉപയോഗപ്രദവുമാണ്

അതിനാൽ, വാക്കുകളിൽ നിന്ന് പ്രവൃത്തികളിലേക്ക്! ഈ പ്രോജക്റ്റ് നടപ്പിലാക്കാൻ, ആദ്യ ഘട്ടത്തിൽ, ഞങ്ങൾക്ക് ഒരു ഡിജിറ്റൽ ടെമ്പറേച്ചർ സെൻസർ DS18B20, ARDUINO UNO, 4.7 kOhm റെസിസ്റ്റർ ആവശ്യമാണ് (പവർ ശരിക്കും പ്രശ്നമല്ല, 0.125 മുതൽ 2 W വരെ പൂർണ്ണമായും അനുയോജ്യമാണ്, പക്ഷേ കൃത്യത പ്രധാനമാണ്, കൂടുതൽ കൃത്യതയുള്ളതാണ് നല്ലത്. ), ഒരു കഷണം എ 3-വയർ വയർ (കൂടാതെ പരീക്ഷണ ഘട്ടത്തിൽ വ്യക്തിഗത വയറിംഗും പ്രവർത്തിക്കും), കൂടാതെ ബോർഡിനായി കുറച്ച് പിന്നുകളും. അവ കൂടാതെ ഇത് സാധ്യമാണെങ്കിലും, ശ്രദ്ധാപൂർവം, തീർച്ചയായും. ഈ സെൻസറിന്റെ തിരഞ്ഞെടുപ്പ് ആകസ്മികമല്ല. 0.5 ° C ശ്രേണിയുടെ പ്രധാന ഭാഗത്ത് കൃത്യതയോടെ -55 ° C മുതൽ + 125 ° C വരെയുള്ള പരിധിയിലെ താപനില നിരീക്ഷിക്കാൻ ഇതിന് കഴിയും എന്നതാണ് വസ്തുത, ഇത് ഗാർഹിക ചൂടാക്കലും വൈവിധ്യമാർന്നതും നിയന്ത്രിക്കാൻ പര്യാപ്തമാണ്. ഫ്രീസിങ്, റഫ്രിജറേഷൻ യൂണിറ്റുകൾ, അതുപോലെ ബത്ത്, saunas , ഹരിതഗൃഹങ്ങൾ, ഇൻകുബേറ്ററുകൾ, നഴ്സറികൾ തുടങ്ങിയവ. ARDUINO UNO ഇവിടെ സൗജന്യമായി വാങ്ങാൻ കഴിയുമെന്ന് ഞാൻ നിങ്ങളെ ഓർമ്മിപ്പിക്കുന്നു:അല്ലെങ്കിൽ ഇവിടെ: , താപനില സെൻസർ DS18B20 - , വ്യക്തിപരമായി എനിക്ക് ഇത് ഉണ്ടെങ്കിലും: എന്റെ പ്രയോജനം - ഒരു കേബിളിന്റെ വലുപ്പവുമായി താരതമ്യപ്പെടുത്താവുന്ന ചെറിയ വലുപ്പങ്ങൾ. പോരായ്മകൾ - ഒരു ബോർഡിന്റെ അഭാവം, ചില സാഹചര്യങ്ങളിൽ ഇത് ഇൻസ്റ്റാളേഷന്റെ എളുപ്പത്തെയും സെൻസറിന്റെ പ്രവർത്തനക്ഷമതയെയും പ്രതികൂലമായി ബാധിക്കുന്നു. കൂടാതെ, സെൻസർ ഒരു റെസിസ്റ്റർ നിർമ്മിച്ചിരിക്കുന്നു, കൂടുതൽ റെസിസ്റ്ററുകൾ സോൾഡർ ചെയ്യേണ്ടതില്ല, എന്നാൽ ഒരു "ചെയിനിൽ" നിരവധി സെൻസറുകൾ ബന്ധിപ്പിക്കുന്നതിനുള്ള കഴിവ് അപ്രത്യക്ഷമാകുന്നു. ആർഡ്വിനോയുമായുള്ള സെൻസറിന്റെ കണക്ഷൻ ചിത്രത്തിൽ കാണാൻ കഴിയും. 1 കൂടാതെ പട്ടിക 1 ൽ സൂചിപ്പിച്ചിരിക്കുന്നു. താപനില സെൻസറിലെ കോൺടാക്റ്റുകൾ നിർണ്ണയിക്കാൻ എളുപ്പമാണ്. നിങ്ങൾ അത് എടുക്കേണ്ടതുണ്ട്, അങ്ങനെ നിങ്ങൾ അക്കങ്ങളുള്ള സ്ലൈസിലേക്ക് നോക്കുന്നു, കാലുകൾ താഴെയായിരുന്നു. ഇടതുവശത്തെ പിൻ GND ആയിരിക്കും, മധ്യ പിൻ DQ ആയിരിക്കും, വലത്തെ പിൻ VDD ആയിരിക്കും.

പട്ടിക 1.

Arduino Uno പിൻ ചെയ്യുക

കുറിപ്പ്

5V, 4.7 kΩ റെസിസ്റ്ററിന്റെ ഒരു കാലും സോൾഡർ ചെയ്തിരിക്കുന്നു.




ചിത്രം 1. ഒരു തെർമൽ സെൻസർ ബന്ധിപ്പിക്കുന്നു.

രണ്ട് റെസിസ്റ്ററുകൾ ഉപയോഗിച്ചതായി ചിത്രം കാണിക്കുന്നു. "4K7" എന്ന് ഞാൻ കണ്ടെത്തിയ റെസിസ്റ്ററിന് യഥാർത്ഥത്തിൽ ഒരു ഉയർന്ന പിശക് ഉണ്ടായിരുന്നു എന്നതാണ് ഇതിന് കാരണം, അത് എനിക്ക് രണ്ടാമത്തെ റെസിസ്റ്റർ ഉപയോഗിച്ച് നഷ്ടപരിഹാരം നൽകേണ്ടി വന്നു. ഈ അസംബ്ലിയുടെ മൊത്തം പ്രതിരോധം 4.695 kOhm ആയിരുന്നു, അത് തികച്ചും സ്വീകാര്യമാണെന്ന് ഞാൻ കരുതുന്നു. സെൻസർ വയറുകളിലേക്ക് (കേബിൾ കട്ട്) നേരിട്ട് ലയിപ്പിച്ചിട്ടില്ലെന്നും കണക്റ്ററിലേക്ക് ചേർത്തിട്ടുണ്ടെന്നും ചിത്രത്തിൽ കാണാം. പരീക്ഷണത്തിന്റെ വികാസത്തിന്റെ കാരണങ്ങളാൽ ഇത് ചെയ്തു. ഈ സെൻസറുകൾ സോൾഡർ ചെയ്യുന്നത് വളരെ ഉത്തമമാണ്. സ്കെച്ചും തികച്ചും ഒതുക്കമുള്ളതായി മാറി:


കമന്റുകളുള്ള കോഡിന്റെ 14 വരികൾ മാത്രം. ഏതൊരു പുതിയ വ്യക്തിക്കും അത് മനസ്സിലാക്കാൻ കഴിയും. തൽഫലമായി, പ്രോഗ്രാം ഇതുപോലുള്ള ഒന്ന് നിർമ്മിക്കും:



ചിത്രം 2. ഒരു സെൻസറുമായി പ്രവർത്തിക്കുന്നതിന്റെ ഫലം.



രണ്ടാം ഭാഗം. അല്പം സങ്കീർണ്ണമായ.

മറ്റൊരു സെൻസർ ചേർത്ത് ഞങ്ങൾ ഈ ഭാഗം സങ്കീർണ്ണമാക്കും. വീടിനകത്തും പുറത്തും താപനില അളക്കേണ്ടതുണ്ടെന്ന് കരുതുക. ഇത് ചെയ്യുന്നതിന്, ഒരു സെൻസർ "ഒരു ചെയിനിൽ" സോൾഡർ ചെയ്യുക. ഒരു സമാന്തര കണക്ഷനുമായി വളരെ സാമ്യമുണ്ട്. ഞാൻ എന്താണ് ഉദ്ദേശിക്കുന്നതെന്ന് ഇലക്ട്രിക്കൽ വിദഗ്ധർക്ക് അറിയാം. എന്നാൽ ഒരു വ്യത്യാസമുണ്ട്: ഈ സാഹചര്യത്തിൽ, സെൻട്രൽ വയറിൽ നിന്നുള്ള നിഗമനങ്ങൾ കഴിയുന്നത്ര ചെറുതായിരിക്കണം.



ചിത്രം 3. രണ്ട് സെൻസറുകളുള്ള ബോർഡ്.



സ്കെച്ച് 3 വരികൾ മാത്രം വളർന്നു. ഇപ്പോൾ ഇതിന് 17 വരികളുണ്ട്:


ഈ സ്കെച്ചിന്റെ ഫലങ്ങൾ ചിത്രം 4-ൽ കാണാം.



ചിത്രം 4. രണ്ട് സെൻസറുകൾ ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്നു.



ഭാഗം മൂന്ന്. ഫൈനൽ.

ഇപ്പോൾ ഞങ്ങൾ ഒരു എൽഇഡി ആർഡ്വിനോയിലേക്ക് ബന്ധിപ്പിക്കും, അത് ഒരു നിശ്ചിത താപനില എത്തുമ്പോൾ പ്രകാശിക്കും. അത്തരമൊരു "ത്രെഷോൾഡ് സിഗ്നലിംഗ് ഉപകരണം". ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾക്ക് ഒരു പരമ്പരാഗത എൽഇഡിയും കറന്റ്-ലിമിറ്റിംഗ് റെസിസ്റ്ററും ആവശ്യമാണ്. ഞാൻ ഒരു 100 ohm ഭുജം കണ്ടു, അത് 7th Arduino പിന്നുമായി ബന്ധിപ്പിച്ചുകൊണ്ട് ഞാൻ അത് ഉപയോഗിച്ചു. LED- ന്റെ (ആനോഡ്) നീളമുള്ള കാൽ ഞങ്ങൾ റെസിസ്റ്ററിലേക്ക് സോൾഡർ ചെയ്യുന്നു, കൂടാതെ ഷോർട്ട് ലെഗ് (കാഥോഡ്) Arduino- യുടെ GND പിന്നുമായി ബന്ധിപ്പിക്കുന്നു. ഇത് ചിത്രം 5 പോലെയായിരിക്കണം.




സ്കെച്ചും അൽപ്പം വളർന്നു:


ഒരു കമ്പ്യൂട്ടറിൽ ഈ പ്രോഗ്രാമിന്റെ പ്രവർത്തനം ചിത്രം 4-ൽ കാണിച്ചിരിക്കുന്നതുപോലെ കൃത്യമായി പ്രദർശിപ്പിച്ചിരിക്കുന്നു. സ്വാഭാവികമായും, sensors.getTempCByIndex(1) വേരിയബിൾ വളരെ വിശാലമായ ശ്രേണിയിൽ പ്രവർത്തിപ്പിക്കാൻ കഴിയും, കൂടാതെ LED നിയന്ത്രിക്കുന്നത് സാധ്യമായ എല്ലാറ്റിന്റെയും ഏറ്റവും ലളിതമായ ഉദാഹരണം മാത്രമാണ്.

ഈ ലേഖനത്തിന്റെ അവസാനം ഒരു ഘട്ടം കൂടി. ഈ ഉപകരണങ്ങളുടെ നിരവധി "മാലകൾ" ഒരു ആർഡ്വിനോയിലേക്ക് എങ്ങനെ ബന്ധിപ്പിക്കാമെന്ന് ഇപ്പോൾ ഞാൻ നിങ്ങളോട് പറയും. "മാല" യുടെ നീളം അനന്തമായിരിക്കില്ല എന്നതാണ് വസ്തുത, മാത്രമല്ല, അത് വളരെ പരിമിതമാണ്. അനുയോജ്യമായ സാഹചര്യങ്ങളിൽ - 300 മീറ്റർ, എന്നാൽ "അനുയോജ്യമായ" അവസ്ഥകൾ സൃഷ്ടിക്കുന്നത് വളരെ ചെലവേറിയതാണ്. യഥാർത്ഥ സാഹചര്യങ്ങളിൽ - 10 മീറ്റർ കവിയാൻ ശുപാർശ ചെയ്തിട്ടില്ല. ഒരു സാധാരണ "റൂം" തെർമോമീറ്ററിന്, ഇത് ആവശ്യത്തിലധികം ആണ്, എന്നാൽ നമ്മൾ കൂടുതൽ ഗുരുതരമായ ഉപകരണങ്ങളെക്കുറിച്ചാണ് സംസാരിക്കുന്നതെങ്കിൽ, ഇത് വിനാശകരമായി ചെറുതാണ്. മാത്രമല്ല, സ്ഥിരമായ പ്രവർത്തനത്തിന്, സെൻസറുകൾ ബസ് കണ്ടക്ടർമാർക്ക് കഴിയുന്നത്ര അടുത്ത് സ്ഥിതിചെയ്യേണ്ടത് ആവശ്യമാണ് - ഒരു "മാല". തീർച്ചയായും, വഴിതിരിച്ചുവിടാനും സാധ്യതയുണ്ട്, എന്നാൽ ഈ കേസിൽ കൃത്യതയും ശബ്ദ പ്രതിരോധവും വളരെ കുറവായിരിക്കും. അതിനാൽ, മതിയായ കൃത്യതയും ശബ്ദ പ്രതിരോധവും നിലനിർത്തിക്കൊണ്ട്, ധാരാളം പോയിന്റുകളിൽ നിന്ന് വിവരങ്ങൾ ശേഖരിക്കുന്നതിനായി ഞങ്ങൾ നിരവധി "മാലകൾ" കൃത്യമായി ബന്ധിപ്പിക്കുന്നു. പട്ടിക 2 അനുസരിച്ച് കോൺടാക്റ്റുകൾ ചേർക്കുക:

Arduino Uno പിൻ ചെയ്യുക

കുറിപ്പ്

5V, 4.7 kΩ റെസിസ്റ്ററുകളുടെ ഒരു കാലും സോൾഡർ ചെയ്യുന്നു.

ഡിജിറ്റൽ ഇൻപുട്ട്, 4.7 kΩ റെസിസ്റ്ററിന്റെ രണ്ടാമത്തെ ലെഗ് സോൾഡർ ചെയ്യുന്നു.

ഡിജിറ്റൽ ഇൻപുട്ട്, 4.7 kΩ റെസിസ്റ്ററിന്റെ രണ്ടാമത്തെ ലെഗ് സോൾഡർ ചെയ്യുന്നു.



മേശയിൽ നിന്ന് കാണാൻ കഴിയുന്നതുപോലെ, സങ്കീർണ്ണമായ ഒന്നും തന്നെയില്ല, കൃത്യമായി ഒരേ ബസ്, വ്യത്യസ്ത ഡിജിറ്റൽ വെള്ളത്തിൽ മാത്രം. സോൾഡറിംഗിന്റെ സൗകര്യത്തിന്റെയും വേഗതയുടെയും കാരണങ്ങളാൽ മാത്രം ഞാൻ 9-ാമത്തെ കോൺടാക്റ്റിലേക്ക് സോൾഡർ ചെയ്തില്ല.
സ്കെച്ച്:


സ്കെച്ചിന് അനാവശ്യ അഭിപ്രായങ്ങൾ ആവശ്യമായി വരാൻ സാധ്യതയില്ല.

സ്കെച്ചിന്റെ ഫലം ഇതുപോലെ കാണപ്പെടുന്നു:



ചിത്രം 6. രണ്ട് സെൻസർ ലൈനുകളുടെ ഒരേസമയം പ്രവർത്തനം.



രണ്ട് വരികൾ ബന്ധിപ്പിച്ചിരിക്കുന്ന ബോർഡ് ഇതുപോലെ കാണപ്പെടുന്നു:



ചിത്രം 7. രണ്ട് ബസുകളുള്ള ബോർഡ്.



കൃത്യത മെച്ചപ്പെടുത്തുന്നതിനായി 4.7 kΩ റെസിസ്റ്ററും സംയോജിതമാക്കിയിട്ടുണ്ടെന്ന് ചിത്രത്തിൽ നിന്ന് കാണാൻ കഴിയും.

ലേഖനത്തിൽ ചർച്ച ചെയ്ത സ്കെച്ചുകൾ എഴുതാൻ ഉപയോഗിക്കുന്ന ലൈബ്രറികൾ ഇവിടെയുണ്ട്:



പവൽ സെർജീവ് തയ്യാറാക്കിയ അവലോകനം