Satura rādītājs:
- 1. solis: programmatūras izstrāde
- 2. darbība. Darbs ar diviem temperatūras sensoriem - informācija
- 3. darbība: provizoriskie rezultāti
Video: DIY mežizstrādes termometrs ar 2 sensoriem: 3 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:53
Šis projekts ir mana iepriekšējā projekta "DIY mežizstrādes termometrs" uzlabojums. Temperatūras mērījumus reģistrē micro SD kartē.
Aparatūras izmaiņas
Es pievienoju DS18B20 temperatūras sensoru reālā laika pulksteņa modulim, kur šīs ierīces iespiedshēmas plates ir paredzētas; un pievienoja atbilstošo vadu no RTC "DS" tapas Arduino D2.
Programmatūras izmaiņas
Tad es pievienoju un pārveidoju programmatūru. Galvenās izmaiņas ir šādas:
LCD displejā ir redzamas divas temperatūras "In" un "Out".
Žurnāla failiem, kas ierakstīti SD kartē, ir divi temperatūras lauki - "temperatūra iekšā" un "temperatūra ārā".
Ilgāka ieraksta dēļ SD kartē EEPROM darba buferi bija lielāki, un tāpēc man sākās atmiņas konfliktu problēmas. Es veicu vairākas izmaiņas, kuru mērķis bija samazināt dinamiskās atmiņas izmantošanu, ieskaitot rakstzīmju masīvu izmantošanu visām virknēm, nevis String objektu.
Programmatūras daļai, kas iegūst temperatūru, ir būtiskas izmaiņas, no kurām lielākā daļa ir saistīta ar to, lai noteiktu, kura zonde ir "iekšā" un kura - "ārā". Šī identifikācija lielākoties notiek automātiski. Ja kāda iemesla dēļ zondes tiek pārslēgtas, to var labot, atvienojot zondi no izejas un pēc tam atkal pievienojot to. Pati neesmu piedzīvojusi šo apgriezienu. Programmētājam vai lietotājam nav jāievada sensoru adreses, programmatūra pati atklāj temperatūras sensoru adreses.
Saskaņā ar manis veikto pārbaudi temperatūras zondes identificēšana un reakcija uz SD kartes izņemšanu un nomaiņu joprojām darbojas nevainojami.
1. solis: programmatūras izstrāde
Šis solis sniedz jums pilnu programmatūru pabeigtajam projektam. Es to apkopoju, izmantojot Arduino IDE 1.6.12. Tas izmanto 21 400 baitu programmas atmiņas (69%) un 1 278 baitus dinamiskās atmiņas (62%).
Esmu ievietojis komentārus kodā, cerot, ka tas skaidri parādīs notiekošo.
2. darbība. Darbs ar diviem temperatūras sensoriem - informācija
Šī programmatūra izmanto bibliotēku "OneWire". Tas neizmanto nekādas "DallasTemperature" vai līdzīgas bibliotēkas. Tā vietā komandas un dati no temperatūras sensoriem tiek izpildīti ar skici, un tos var redzēt un saprast diezgan viegli. Es atradu noderīgu OneWire bibliotēkas komandu sarakstu vietnē
www.pjrc.com/teensy/td_libs_OneWire.html
Ja ir divi (vai vairāki) temperatūras sensori, kļūst nepieciešams noteikt, kurš no tiem ir.
Es nosaucu savus divus sensorus "iekšā" un "ārā", kas ir raksturīgi komerciālām vienībām, kurām displeja modulī ir sensors, kas parasti ir "iekšpusē", un otru sensoru uz kabeļa, lai to varētu novietot otrā pusē. no ārējās sienas un tādējādi būt "ārpusē".
Parastā pieeja dažādu zondu identificēšanai ir atklāt ierīču adreses un ievietot tās programmatūrā kopā ar identifikācijas etiķeti. Visi citi projekti, kurus esmu redzējis, izmanto šo pieeju neatkarīgi no tā, vai viņi izmanto DallasTemperature bibliotēku vai nē.
Mans nolūks bija, lai programmatūra automātiski identificētu sensorus un pareizi tos sadalītu "iekšā" un "ārā". To ir pietiekami viegli izdarīt, novietojot tos uz atsevišķām Arduino tapām. Šajā projektā A0 līdz A3 un A6 un A7 ir neizmantoti, tāpēc šajā gadījumā varēja izmantot vienu no tiem. Tomēr man izdevās panākt, lai automātiskā identifikācija darbotos ar sensoriem vienā un tajā pašā OneWire kopnē.
Tas darbojas šādi.
OneWire bibliotēkai ir komanda "OneWireObject.search (adrese)", kur "adrese" ir 8 baitu masīvs, un "OneWireObject" ir iepriekš izveidotā OneWire objekta instances nosaukums. Tam var būt jebkurš vārds, kas jums patīk. Manējo sauc par "ds". Izsniedzot šo komandu "meklēt", OneWire bibliotēka signalizē vienā vadu kopnē. Ja tas atrod reaģējošu sensoru, tas atgriež “TRUE” Būla vērtību un aizpilda “adrešu” masīvu ar 8 baitu unikālo sensora identifikatoru. Šis identifikators ietver ģimenes kodu (sākumā) un pārbaudes summu (beigās). Starp tiem ir 6 baiti, kas unikāli identificē sensoru savā ģimenē.
Katru reizi, kad tiek dota šī komanda, tiek iegūts viens rezultāts (adrese un atgriešanās TRUE), pārvietojoties pa visām OneWire kopnes ierīcēm. Kad katra ierīce ir reaģējusi, nākamreiz, kad tiek izsniegta "meklēšana", atdeve ir "FALSE", norādot, ka katra kopnes ierīce jau ir atbildējusi. Ja "meklēšana" tiek izdota vēlreiz, pirmā ierīce atkal reaģē - un tā bezgalīgi. Ierīces vienmēr reaģē tādā pašā secībā. Atbilžu secība ir balstīta uz OneWire kopnes ierīču identifikatoriem. Šķiet, ka tā ir bināra meklēšana, kas sākas no vismazāk nozīmīgajiem ierīces identifikatoru bitiem. Šo identifikatoru atrašanai izmantotais protokols ir diezgan sarežģīts, un tas ir aprakstīts dokumenta "Book of iButton Standards" 51. - 54. lpp., Kas ir pdf dokuments vietnē https://pdfserv.maximintegrated.com/en/an/AN937.pd …
Es pārbaudīju šo meklēšanas procesu ar 1 līdz 11 sensoriem vienā kopnē un atklāju, ka atbildes secība noteiktam ierīču komplektam vienmēr bija vienāda, taču, pievienojot kopnes galam jaunu ierīci, nebija nekādas iespējas Es varētu paredzēt, kur meklēšanas secībā tas parādīsies. Piemēram, 11. sensors, ko es pievienoju, nonāca 5. vietā; un pirmais sensors, ko ievietoju autobusā, vienmēr bija pēdējais meklēšanas secībā.
Šajā projektā ar diviem sensoriem viens no tiem ir pielodēts RTC modulī; otra ir pievienota, izmantojot vīriešu galveni uz tāfeles un sieviešu galveni uz kabeļa. To var viegli atvienot.
Kad sensors uz kabeļa ("ārējais" sensors) ir atvienots, komanda "meklēt" rada pārmaiņus "TRUE" un "FALSE".
Kad sensors uz kabeļa ir pievienots, komanda "meklēt" rada 3 pakāpju ciklu ar diviem "TRUE" un vienu "FALSE".
Mana procedūra ir izdot 1, 2 vai 3 "meklēšanas" komandas, līdz tiek atgriezts FALSE rezultāts. Tad es izdodu vēl 2 "meklēšanas" komandas. Ja otrais neizdodas (ti, FALSE), es zinu, ka kopnē ir tikai viens sensors un ka tas ir "in" sensors. Ierīces identitāte tiek ierakstīta un piešķirta "in" sensoram.
Vēlāk, ja gan pirmā, gan otrā atgriešanās ir PATIESA, es zinu, ka autobusā ir divi sensori. Es pārbaudu, kura no tiem identitāte ir vienāda ar "in" sensoru, un otru piešķiru kā "out" sensoru.
Otrs mazsvarīgais ir tas, ka rezultātu apkopošana no diviem sensoriem tiek veikta, nosūtot “sākt konvertēšanu” ar komandu, kas pazīstama kā “izlaist ROM”. Mums ir iespēja nosūtīt komandas uz vienu ierīci (izmantojot tās unikālo identifikatoru) vai uz visām kopnes ierīcēm (izlaist ROM). Kods izskatās šādi:
ds.reset (); //
// nosūtīt komandu "izlaist ROM" (tātad nākamā komanda darbojas abos sensoros) ds.write (0xCC); // Izlaist ROM komandu ds.write (0x44, 0); // sākt konversiju abās zondēs temperatūra_state = gaidīt_konvertēt; // pāriet uz aizkavēšanās stāvokli
Kad vajadzīgais aizkaves laiks ir pagājis, temperatūra tiek saņemta no katra sensora atsevišķi. Šeit ir otrā sensora kods (ti, OUT sensors).
ja (karogs2) {
klāt = ds.reset (); ds.select (DS18B20_addr_out); ds.write (0xBE); // Lasīt zibatmiņas bloka "out" datu datus [0] = ds.read (); dati [1] = ds.read (); temperatūra_izturība = (dati [1] << 8) + dati [0]; Temperatūra_ (= 6 * Temperatūra) + Temperatūra / 4; // reizināt ar 6,25} cits {// nav karodziņš2 - ti, izejas sensors nav pievienots temperatūra_izrāde = 30000; // noteikt pie 300,00 C, ja temperatūras sensors nedarbojas} // if (beigas 2) beigas
Lielāko daļu šīs programmatūras es izstrādāju atsevišķā skicē, kurā bija tikai temperatūras sensori, bez LCD, RTC un SD karšu atbalsta sarežģījumiem. Šī izstrādes skice ir zemāk esošajā failā.
3. darbība: provizoriskie rezultāti
Šī diagramma ir divu pirmo rādījumu daļu kombinācija.
Ieteicams:
Arduino balstīts bezkontakta infrasarkanais termometrs - Uz IR balstīts termometrs, izmantojot Arduino: 4 soļi
Arduino balstīts bezkontakta infrasarkanais termometrs | Uz IR balstīts termometrs, izmantojot Arduino: Sveiki puiši, šajā instrukcijā mēs izgatavosim bezkontakta termometru, izmantojot arduino. Tā kā dažreiz šķidruma/cietās vielas temperatūra ir pārāk augsta vai zema, un tad ir grūti ar to sazināties un izlasīt temperatūra tādā situācijā
Paklājs ar sensoriem/ RF sakari ar Arduino Micro: 4 soļi (ar attēliem)
Paklājs ar sensoriem/ RF sakari ar Arduino Micro: Es nesen pabeidzu instalāciju Vienlīdz daudzveidīga, kas ir izgatavota no virknes lampu, kas reaģē uz sensoriem, kas novietoti paklājā zem lampām. Lūk, kā es izveidoju paklāju ar spiediena sensoriem. Ceru, ka jums tas noderēs
DIY cimdu kontrolieris ar e-tekstila sensoriem: 14 soļi (ar attēliem)
DIY cimdu kontrolieris ar e-tekstila sensoriem: šī pamācība ir soli pa solim apmācība par to, kā izveidot datu cimdu ar eTextile sensoriem. Projekts ir sadarbība starp Reičelu Freiru un Artjomu Maksimu. Reičela ir cimdu tekstila un eTekstila sensoru dizainere, bet Artijs izstrādā apli
Termometrs ar relatīvo temperatūras krāsu 2 collu TFT displejā un vairākiem sensoriem: 5 soļi
Termometrs ar relatīvo temperatūras krāsu 2 collu TFT displejā un vairākiem sensoriem: esmu izveidojis displeju, kurā parādīti vairāku temperatūras sensoru mērījumi. Forši ir tas, ka vērtību krāsa mainās līdz ar temperatūru: > 75 grādi pēc Celsija = RED > 60 > 75 = Oranžs > 40 < 60 = DZELTENS > 30 < 40
DIY magnētiskais galda hokejs ar kartonu, RGB gaismām un sensoriem: 11 soļi (ar attēliem)
DIY magnētiskais galda hokejs ar kartonu, RGB gaismām un sensoriem: jums noteikti jāspēlē gaisa hokejs! Maksājiet dažus $ $ dolārus $$ spēļu zonai un sāciet gūt vārtus, lai pārspētu savus draugus. Vai tas nav ļoti atkarīgs? Jūs noteikti domājāt mājās turēt vienu galdu, bet hei! Vai esat kādreiz domājuši to pagatavot pats? Mēs