Orodha ya maudhui:

Thermometer ya Kuingilia DIY na Sensorer 2: Hatua 3 (na Picha)
Thermometer ya Kuingilia DIY na Sensorer 2: Hatua 3 (na Picha)

Video: Thermometer ya Kuingilia DIY na Sensorer 2: Hatua 3 (na Picha)

Video: Thermometer ya Kuingilia DIY na Sensorer 2: Hatua 3 (na Picha)
Video: Использование Melexis MLX90614 Инфракрасный термометр с Arduino 2024, Julai
Anonim
Thermometer ya Kuingilia DIY na Sensorer 2
Thermometer ya Kuingilia DIY na Sensorer 2
Thermometer ya Kuingilia DIY na Sensorer 2
Thermometer ya Kuingilia DIY na Sensorer 2

Mradi huu ni uboreshaji wa mradi wangu uliopita "Kipima-joto cha Magogo ya DIY". Ni kumbukumbu ya vipimo tempearature kwa kadi ndogo SD.

Mabadiliko ya vifaa

Niliongeza sensorer ya joto ya DS18B20 kwa moduli ya saa halisi, ambapo kuna kifungu kwenye bodi ya mzunguko iliyochapishwa kwa kifaa hiki; na akaongeza waya inayofaa kutoka kwa pini ya "DS" ya RTC hadi D2 ya Arduino.

Programu hubadilika

Kisha nikaongeza na kurekebisha programu. Mabadiliko kuu ni:

Uonyesho wa LCD unaonyesha joto mbili "Katika" na "Nje".

Faili za kumbukumbu zilizorekodiwa kwenye kadi ya SD zina sehemu mbili za joto, "joto ndani" na "joto nje".

Kwa sababu ya rekodi ndefu kwenye kadi ya SD, bafa za kufanya kazi za EEPROM zilikuwa kubwa na kama matokeo ya hii nilianza kuwa na shida za mzozo wa kumbukumbu. Nilifanya mabadiliko kadhaa ambayo yalilenga kupunguza matumizi ya kumbukumbu yenye nguvu, pamoja na kutumia safu za wahusika kwa kamba zote badala ya kitu cha Kamba.

Sehemu ya programu inayopata joto ina marekebisho makubwa, mengi ambayo yanahusiana na kutambua ni uchunguzi gani "uko" na ni "nje". Kitambulisho hiki ni cha moja kwa moja. Ikiwa kwa sababu fulani uchunguzi umebadilishwa, inaweza kusahihishwa kwa kuchomoa uchunguzi wa "nje" na kuifunga tena. Sijaona mabadiliko haya mwenyewe. Programu au mtumiaji haitaji kuchapa anwani za sensorer, programu hugundua anwani za sensorer ya joto yenyewe.

Kulingana na upimaji ambao nimefanya, kitambulisho cha uchunguzi wa joto, na majibu ya kuondolewa na uingizwaji wa kadi ya SD, bado hufanya kazi bila mshono.

Hatua ya 1: Maendeleo ya Programu

Hatua hii inakupa programu kamili ya mradi uliokamilika. Niliiandaa kwa kutumia Arduino IDE 1.6.12. Inatumia kaiti 21, 400 za kumbukumbu ya programu (69%) na 1, 278 ka ya kumbukumbu ya nguvu (62%).

Nimeweka maoni kwenye nambari hiyo kwa matumaini ambayo itaweka wazi kile kinachoendelea.

Hatua ya 2: Kufanya kazi na Sensorer mbili za Joto - Maelezo

Programu hii hutumia maktaba ya "OneWire". Haitumii yoyote "DallasTemperature" au maktaba sawa. Badala yake amri na data kutoka kwa sensorer ya joto hufanywa na mchoro na inaweza kuonekana na kueleweka kwa urahisi kabisa. Nilipata orodha muhimu ya amri za maktaba ya OneWire katika

www.pjrc.com/teensy/td_libs_OneWire.html

Wakati kuna sensorer mbili (au zaidi) za joto, inakuwa muhimu kutambua ni ipi.

Niliita sensorer zangu mbili "in" na "out", ambayo ni mfano wa vitengo vya biashara ambavyo vina sensa kwenye moduli ya onyesho ambayo kawaida huwa "ndani", na sensa nyingine kwenye kebo ili iweze kuwekwa upande wa pili ya ukuta wa nje na hivyo kuwa "nje".

Njia ya kawaida ya kutambua uchunguzi tofauti ni kugundua anwani za kifaa na kuziweka kwenye programu pamoja na lebo ya kutambua. Miradi mingine yote ambayo nimeona hutumia njia hii, ikiwa watatumia maktaba ya Joto la Dallas au la.

Nia yangu ilikuwa kwamba programu inapaswa kutambua sensorer moja kwa moja na kuitenga kwa usahihi "ndani" na "nje". Hii ni rahisi kutosha kwa kuziweka kwenye pini tofauti za Arduino. Katika mradi huu, A0 hadi A3 na A6 na A7 zote hazijatumika, kwa hivyo moja ya haya ingeweza kutumika katika kesi hii. Walakini nilifanikiwa kuwa na kitambulisho cha moja kwa moja na sensorer zote kwenye basi moja la OneWire.

Inafanya kazi kama hii.

Maktaba ya OneWire ina amri "OneWireObject.search (anwani)" ambapo "anwani" ni safu ya ka 8 na "OneWireObject" ni jina la mfano wa kitu cha OneWire ambacho kiliundwa hapo awali. Inaweza kuwa na jina lolote unalopenda. Yangu inaitwa "ds". Unapotoa amri hii ya "utaftaji", maktaba ya OneWire hufanya ishara kwenye basi moja ya waya. Ikiwa inapata kitambuzi kinachojibu, inarudisha thamani ya boolean ya "KWELI" na inajaza safu ya "anwani" na kitambulisho cha kipekee cha baiti 8. Kitambulisho hiki kinajumuisha nambari ya familia (mwanzoni) na jumla ya hundi (mwishoni). Katikati kuna ka 6 ambazo hutambua kihisihisi ndani ya familia yake.

Matokeo moja (anwani na kurudi KWELI) hupatikana kila wakati amri hii inapewa, baiskeli kupitia vifaa vyote kwenye basi ya OneWire. Mara tu kila kifaa kikijibu, wakati mwingine "utaftaji" utakapotolewa, kurudi ni "UONGO", ikionyesha kila kifaa kwenye basi kimejibu tayari. Ikiwa "utaftaji" umetolewa tena, kifaa cha kwanza hujibu tena - na kadhalika kwa muda usiojulikana. Vifaa hujibu kila wakati kwa mpangilio sawa. Utaratibu wa majibu unategemea vitambulisho vya vifaa kwenye basi ya OneWire. Inaonekana kama utaftaji wa kibinadamu ukianza na vipande muhimu vya vitambulisho vya kifaa. Itifaki inayotumika kupata vitambulisho hivi ni ngumu sana, na imeelezewa katika ukurasa wa 51 - 54 wa hati "Kitabu cha Viwango vya iButton" ambayo ni hati ya pdf katika https://pdfserv.maximintegrated.com/en/an/AN937.pd …

Nilijaribu mchakato huu wa utaftaji kutoka sensorer 1 hadi 11 kwenye basi moja, na nikapata agizo la majibu ya seti ya vifaa kila wakati ilikuwa sawa, lakini nilipoongeza kifaa kipya mwishoni mwa basi, hakukuwa na njia Ningeweza kutabiri ni wapi katika mpangilio wa utaftaji itaonekana. Kwa mfano, sensa ya 11 niliyoongeza ilikuja katika nafasi Na.5; na sensa ya kwanza niliyoiweka kwenye basi ilikuwa ya mwisho kwa utaratibu wa utaftaji.

Katika mradi huu na sensorer mbili, moja yao imeuzwa mahali kwenye moduli ya RTC; hiyo nyingine imechomekwa kwa kutumia kichwa cha kiume ubaoni na kichwa cha kike kwenye kebo. Inaweza kutengwa kwa urahisi.

Wakati sensorer kwenye kebo (sensorer ya "nje") imetengwa, amri ya "utaftaji" hutoa "TRUE" inayobadilishana na "UONGO".

Wakati sensorer kwenye kebo imeshikamana, amri ya "utaftaji" hutoa mzunguko wa hatua tatu, na mbili "KWELI" na moja "UONGO" inarudi.

Utaratibu wangu ni kutoa amri 1, 2 au 3 za "utaftaji", hadi matokeo ya UONGO itakaporejeshwa. Kisha ninatoa amri 2 zaidi za "utaftaji". Ikiwa ya pili inashindwa (yaani UONGO) najua kuna sensa moja tu kwenye basi na kwamba ni sensa ya "in". Kitambulisho cha kifaa kimerekodiwa na kutengwa kwa kihisi cha "in".

Baadaye, ikiwa kurudi kwa kwanza na kwa pili ni KWELI, najua kuna sensorer mbili kwenye basi. Ninaangalia ni yupi kati yao aliye na kitambulisho sawa na sensa ya "ndani", na kumtenga nyingine kama sensa ya "nje".

Jambo lingine dogo ni kwamba ukusanyaji wa matokeo kutoka kwa sensorer mbili hufanywa kwa kutuma "mwanzo wa uongofu" na kile kinachojulikana kama amri ya "ruka ROM". Tuna chaguo la kutuma amri kwa kifaa kimoja (kutumia kitambulisho chake cha kipekee) au kwa vifaa vyote kwenye basi (ruka ROM). Nambari inaonekana kama hii:

ds.reset (); //

// tuma amri ya "ruka ROM" (kwa hivyo amri inayofuata inafanya kazi katika sensorer zote) ds.write (0xCC); // Ruka amri ya ROM ds.write (0x44, 0); // kuanza ubadilishaji katika hali zote mbili joto_state = subiri_badilisha; // nenda kuchelewesha hali

Wakati wa kuchelewesha unaohitajika umepita, joto hupokelewa kutoka kwa kila sensorer mmoja mmoja. Hapa kuna nambari ya sensa ya pili (yaani sensa ya OUT).

ikiwa (bendera2) {

sasa = ds.setet (); chagua (DS18B20_addr_out); andika (0xBE); // Soma Scratchpad ya data ya uchunguzi wa "nje" [0] = ds.read (); data [1] = ds.read (); joto_out = (data [1] << 8) + data [0]; joto_out = (6 * joto_out) + joto_out / 4; // kuzidisha kwa 6.25} mwingine {// sio bendera2 - yaani sensorer ya nje haijaunganishwa joto_out = 30000; // rekebisha saa 300.00 C ikiwa sensor ya muda haifanyi kazi} // mwisho wa ikiwa (bendera2)

Nilifanya kazi zaidi ya programu hii kwa mchoro wa kusimama pekee ambao ulikuwa na sensorer za joto ndani yake, bila shida za msaada wa LCD, RTC na kadi ya SD. Mchoro huu wa maendeleo uko kwenye faili hapa chini.

Hatua ya 3: Matokeo ya Awali

Matokeo ya Awali
Matokeo ya Awali

Chati hii ni mchanganyiko wa siku mbili za kwanza za usomaji.

Ilipendekeza: