Мазмұны:

DIY датчиктері бар термометр 2 сенсормен: 3 қадаммен (суреттермен)
DIY датчиктері бар термометр 2 сенсормен: 3 қадаммен (суреттермен)

Бейне: DIY датчиктері бар термометр 2 сенсормен: 3 қадаммен (суреттермен)

Бейне: DIY датчиктері бар термометр 2 сенсормен: 3 қадаммен (суреттермен)
Бейне: ❄ Mini refrigerator Kemin KM-20L-A, 20L | из Китая 🏔 2024, Шілде
Anonim
DIY датчиктері бар термометр
DIY датчиктері бар термометр
DIY датчиктері бар термометр
DIY датчиктері бар термометр

Бұл жоба - менің бұрынғы «DIY каротаж термометрі» жобасын жетілдіру. Ол температураны micro SD картасына тіркейді.

Аппараттық құралдардың өзгеруі

Мен нақты уақыт модуліне DS18B20 температура сенсорын қостым, онда бұл құрылғы үшін баспа тақтасында ереже бар; және Arduino D2 -ге RTC «DS» түйреуішінен тиісті сымды қосты.

Бағдарламалық қамтамасыз етудің өзгеруі

Содан кейін мен бағдарламалық қамтамасыз етуді қостым және өзгерттім. Негізгі өзгерістер:

СКД дисплейі екі температураны көрсетеді «Кіріс» және «Шығу».

SD картасына жазылған журнал файлдарында екі температуралық өріс бар: «Температура Кіреді» және «Температура Шығады».

SD картасындағы жазудың ұзағырақ болуына байланысты, EEPROM жұмыс буферлері үлкен болды, соның салдарынан менде жад мәселесі туындады. Мен динамикалық жадты пайдалануды азайтуға бағытталған бірқатар өзгертулер енгіздім, соның ішінде String объектісінің орнына барлық жолдар үшін таңбалар массивін қолдану.

Бағдарламалық қамтамасыз етудің температураны алатын бөлігінде үлкен модификациялар бар, олардың көпшілігі қай зондтың «кіргенін» және қайсысының «өшкенін» анықтауға байланысты. Бұл сәйкестендіру негізінен автоматты. Егер қандай да бір себептермен зондтар ауыстырылса, оны «шығатын» зондты ажырату арқылы түзетуге болады, содан кейін оны қайтадан қосыңыз. Мен бұл өзгерісті өз басымнан өткізген жоқпын. Бағдарламашыға немесе пайдаланушыға сенсордың мекен -жайын енгізудің қажеті жоқ, бағдарламалық жасақтама температура сенсорының адрестерін өздігінен табады.

Мен жүргізген тестілеуге сәйкес, температура өлшегіштерін анықтау және SD картасын алып тастауға және ауыстыруға жауап беру әлі де үздіксіз жұмыс істейді.

1 -қадам: Бағдарламалық қамтамасыз етуді әзірлеу

Бұл қадам аяқталған жобаның толық бағдарламалық жасақтамасын береді. Мен оны Arduino IDE 1.6.12 көмегімен құрастырдым. Ол 21, 400 байт бағдарламалық жады (69%) мен 1 278 байт динамикалық жадты (62%) қолданады.

Мен кодқа түсініктеме бердім, ол не болып жатқанын анық көрсетеді.

2 -қадам: Екі температура сенсорымен жұмыс - Мәліметтер

Бұл бағдарламалық қамтамасыз ету «OneWire» кітапханасын пайдаланады. Ол «DallasTemperature» немесе ұқсас кітапханаларды пайдаланбайды. Оның орнына температура датчиктерінің командалары мен деректері эскиз арқылы орындалады және оларды оңай көруге және түсінуге болады. OneWire кітапхана командаларының пайдалы тізімін таптым

www.pjrc.com/teensy/td_libs_OneWire.html

Екі (немесе одан да көп) температура сенсоры болғанда, олардың қайсысы екенін анықтау қажет болады.

Мен екі сенсорымды «кірістірілген» және «шығыс» деп атадым, бұл дисплей модулінде сенсоры бар коммерциялық қондырғыларға тән, ол әдетте «ішінде», ал басқа сенсорды кабельде екінші жағына қоюға болады. сыртқы қабырға, сондықтан «сыртта» болады.

Әр түрлі зондтарды анықтаудың әдеттегі әдісі - құрылғы адрестерін табу және оларды сәйкестендіру белгісімен бірге бағдарламалық жасақтамаға енгізу. Мен көрген барлық басқа жобалар DallasTemperature кітапханасын қолданса да, пайдаланбаса да осы тәсілді қолданады.

Менің мақсатым - бағдарламалық қамтамасыз ету датчиктерді автоматты түрде анықтап, оларды «кіру» және «шығару» үшін дұрыс бөлуі керек еді. Оларды бөлек Arduino түйреуіштеріне қою арқылы жасауға болады. Бұл жобада A0 -дан A3 -ке және A6 мен A7 -ге дейін қолданылмайды, сондықтан олардың біреуін бұл жағдайда қолдануға болар еді. Бірақ мен бір OneWire шинасында сенсорлармен автоматты түрде сәйкестендіру жұмысына қол жеткіздім.

Бұл осылай жұмыс істейді.

OneWire кітапханасында «OneWireObject.search (address)» пәрмені бар, онда «адрес» - 8 байтты массив, ал «OneWireObject» - бұрын жасалған OneWire нысанының данасының атауы. Сізге ұнайтын кез келген атау болуы мүмкін. Менікі «ds» деп аталады. Сіз бұл «іздеу» пәрменін берген кезде, OneWire кітапханасы бір сымды шинада сигнал береді. Егер ол жауап беретін сенсорды тапса, ол «TRUE» логикалық мәнін қайтарады және сенсордың 8 байтты бірегей идентификаторымен «мекенжай» массивін толтырады. Бұл идентификаторға отбасы коды (басында) және чек сомасы (соңында) кіреді. Арасында сенсорды өз отбасында бірегей анықтайтын 6 байт бар.

OneWire шинасындағы барлық құрылғыларды велосипедпен айналдыру кезінде бұл нәтиже берілген сайын бір нәтиже (РОСТ және қайтару) алынады. Әр құрылғы жауап бергеннен кейін, келесі жолы «іздеу» шығарылғанда, қайтару «ЖАЛҒАН» болып табылады, бұл автобустағы барлық құрылғылардың жауап бергенін көрсетеді. Егер «іздеу» қайтадан шығарылса, бірінші құрылғы қайтадан жауап береді - осылайша шексіз. Құрылғылар әрқашан бір ретпен жауап береді. Жауап беру тәртібі OneWire шинасындағы құрылғылардың идентификаторларына негізделген. Бұл құрылғы идентификаторларының ең маңызды биттерінен басталатын екілік іздеу болып көрінеді. Бұл идентификаторларды табу үшін қолданылатын хаттама өте күрделі және https://pdfserv.maximintegrated.com/kz/an/AN937.pd мекенжайындағы pdf құжаты болып табылатын «iButton стандарттар кітабы» құжатының 51-54 беттерінде сипатталған. …

Мен бұл іздеу процесін бір автобуста 1 -ден 11 -ге дейін датчиктермен сынап көрдім және берілген құрылғылар жиынтығына жауап беру тәртібі әрқашан бірдей болатынын білдім, бірақ автобустың соңына жаңа құрылғыны қосқанда ешқандай мүмкіндік болмады. Мен іздеу тәртібінде қай жерде пайда болатынын болжай аламын. Мысалы, мен қосқан 11 -ші сенсор No5 позицияда келді; мен автобусқа қойған бірінші сенсор - іздеу ретіндегі соңғысы.

Екі сенсоры бар бұл жобада олардың бірі RTC модулінде дәнекерленген; екіншісі тақтадағы еркек үстелі мен кабельдегі әйел тақырыбы арқылы қосылады. Оны оңай ажыратуға болады.

Кабельдегі сенсор («шығатын» сенсор) ажыратылған кезде, «іздеу» пәрмені ауыспалы «TRUE» және «FALSE» қайтарады.

Кабельдегі сенсор қосылған кезде «іздеу» пәрмені 3 сатылы циклді шығарады, екі «ДҰРЫС» және бір «ЖАЛҒАН» қайтарады.

Менің процедурам - ЖАЛҒАН нәтиже қайтарылғанша 1, 2 немесе 3 «іздеу» пәрмендерін шығару. Содан кейін мен тағы 2 «іздеу» пәрменін шығарамын. Егер екіншісі істен шықса (яғни ЖАЛҒАН), мен автобуста тек бір сенсор бар екенін және оның «кіретін» сенсор екенін білемін. Құрылғының сәйкестігі жазылады және «кіру» сенсорына бөлінеді.

Кейінірек, егер бірінші және екінші қайтару ШЫНДЫҚ болса, автобуста екі сенсор бар екенін білемін. Мен олардың қайсысының «кіру» сенсорына сәйкес келетін сәйкестігі бар екенін тексеремін, ал екіншісін «шығу» сенсоры ретінде бөлемін.

Тағы бір маңызды мәселе - екі сенсордың нәтижелерін жинау «ROM -ды өткізіп жіберу» пәрмені бойынша «конверсияны бастау» жіберу арқылы жүзеге асады. Бізде пәрмендерді бір құрылғыға (оның бірегей идентификаторы арқылы) немесе шинадағы барлық құрылғыларға жіберу мүмкіндігі бар (ROM -ды өткізіп жіберу). Код келесідей көрінеді:

ds.reset (); //

// «skip ROM» пәрменін жіберіңіз (сондықтан келесі пәрмен екі сенсорда да жұмыс істейді) ds.write (0xCC); // ROM командасын өткізіп жіберу ds.write (0x44, 0); // екі зондта да конверсияны бастау temperatur_state = wait_convert; // кешіктіру күйіне өтіңіз

Қажетті кідіріс уақыты өткенде, температуралар әр сенсордан жеке қабылданады. Міне екінші сенсордың коды (яғни OUT сенсоры).

if (flag2) {

қазіргі = ds.reset (); ds.select (DS18B20_addr_out); ds.write (0xBE); // Scratchpad «out» зондтық деректерін оқу [0] = ds.read (); деректер [1] = ds.read (); temperature_out = (деректер [1] << 8) + деректер [0]; температура_шығуы = (6 * температура_шығуы) + температура_шығу / 4; // 6.25 -ке көбейту} басқа {// жалауша2 емес - яғни сенсор қосылмаған temperatur_out = 30000; // температура сенсоры жұмыс істемесе 300.00 C температурада түзету} // if if (flag2)

Мен бұл бағдарламалық жасақтаманың көп бөлігін СКД, RTC және SD карталарын қолдаудың асқынуынсыз температура сенсорлары бар дербес эскизде жасадым. Бұл даму эскизі төмендегі файлда.

3 -қадам: Алдын ала нәтижелер

Алдын ала нәтижелер
Алдын ала нәтижелер

Бұл диаграмма оқудың алғашқы екі күндік күндерінің жиынтығы.

Ұсынылған: