Turinys:
- 1 žingsnis: programinės įrangos kūrimas
- 2 žingsnis: darbas su dviem temperatūros jutikliais
- 3 žingsnis: preliminarūs rezultatai
Video: „Pasidaryk pats“registravimo termometras su 2 jutikliais: 3 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Šis projektas yra mano ankstesnio projekto „Pasidaryk pats“registravimo termometras. Jis registruoja temperatūros matavimus į „micro SD“kortelę.
Techninės įrangos pakeitimai
Prie realaus laiko laikrodžio modulio pridėjau DS18B20 temperatūros jutiklį, kuriame yra šio įrenginio spausdintinės plokštės nuostata; ir pridėjo atitinkamą laidą iš „DS“RTC kaiščio prie „Arduino“D2.
Programinės įrangos pakeitimai
Tada pridėjau ir pakeičiau programinę įrangą. Pagrindiniai pakeitimai yra šie:
Skystųjų kristalų ekrane rodomos dvi temperatūros „In“ir „Out“.
Į SD kortelę įrašyti žurnalo failai turi du temperatūros laukus: „temperatūra įeina“ir „temperatūra išeina“.
Dėl ilgesnio įrašymo į SD kortelę EEPROM darbo buferiai buvo didesni ir dėl to pradėjau turėti atminties konfliktų problemų. Aš padariau keletą pakeitimų, skirtų sumažinti dinaminės atminties naudojimą, įskaitant simbolių masyvų naudojimą visoms eilutėms vietoj „String“objekto.
Programinės įrangos dalis, kuri gauna temperatūrą, turi esminių pakeitimų, kurių dauguma yra susiję su nustatymu, kuris zondas yra „įvestas“, o kuris - „išvesties“. Šis identifikavimas dažniausiai yra automatinis. Jei dėl kokių nors priežasčių zondai pasikeičia, tai galima ištaisyti atjungus „out“zondą ir vėl prijungus. Pati tokio pasikeitimo nepatyriau. Programuotojui ar vartotojui nereikia įvesti jutiklių adresų, programinė įranga pati nustato temperatūros jutiklių adresus.
Remiantis atliktais bandymais, temperatūros zondų identifikavimas ir atsakas į SD kortelės išėmimą ir pakeitimą vis dar veikia sklandžiai.
1 žingsnis: programinės įrangos kūrimas
Šis žingsnis suteikia jums visą užbaigto projekto programinę įrangą. Aš ją sukomplektuojau naudodamas „Arduino IDE 1.6.12“. Jis naudoja 21 400 baitų programos atminties (69%) ir 1 278 baitus dinaminės atminties (62%).
Į kodeksą įtraukiau komentarus, tikėdamasi, kad bus aišku, kas vyksta.
2 žingsnis: darbas su dviem temperatūros jutikliais
Ši programinė įranga naudoja „OneWire“biblioteką. Jis nenaudoja jokių „DallasTemperature“ar panašių bibliotekų. Vietoj to komandos ir duomenys iš temperatūros jutiklių atliekami pagal eskizą ir yra lengvai matomi bei suprantami. Radau naudingą „OneWire“bibliotekos komandų sąrašą adresu
www.pjrc.com/teensy/td_libs_OneWire.html
Kai yra du (ar daugiau) temperatūros jutikliai, būtina nustatyti, kuris iš jų yra.
Aš pavadinau savo du jutiklius „į vidų“ir „iš išorės“, tai būdinga komerciniams įrenginiams, kurių jutiklio įtaisas yra paprastai „viduje“, o kitą - ant kabelio, kad jį būtų galima uždėti kitoje pusėje. išorinės sienos ir taip būti „išorėje“.
Įprastas būdas nustatyti skirtingus zondus yra atrasti įrenginių adresus ir įdėti juos į programinę įrangą kartu su identifikavimo etikete. Visi kiti projektai, kuriuos mačiau, naudoja šį metodą, nesvarbu, ar jie naudoja „DallasTemperature“biblioteką, ar ne.
Mano tikslas buvo, kad programinė įranga automatiškai atpažintų jutiklius ir teisingai juos paskirstytų „į vidų“ir „išeitį“. Tai padaryti pakankamai paprasta, uždėjus juos ant atskirų „Arduino“kaiščių. Šiame projekte A0 – A3 ir A6 bei A7 yra nenaudojami, todėl šiuo atveju galėjo būti naudojamas vienas iš jų. Tačiau man pavyko automatiškai atpažinti tą patį „OneWire“magistralės jutiklį.
Tai veikia taip.
„OneWire“bibliotekoje yra komanda „OneWireObject.search (adresas)“, kur „adresas“yra 8 baitų masyvas, o „OneWireObject“yra anksčiau sukurto „OneWire“objekto egzemplioriaus pavadinimas. Jis gali turėti bet kokį jums patinkantį pavadinimą. Manasis vadinamas „ds“. Kai išleidžiate šią „paieškos“komandą, „OneWire“biblioteka signalizuoja vieną laidinę magistralę. Jei jis randa reaguojantį jutiklį, jis grąžina „TRUE“loginę vertę ir užpildo „address“masyvą 8 baitų unikaliu jutiklio identifikatoriumi. Šis identifikatorius apima šeimos kodą (pradžioje) ir čekio sumą (pabaigoje). Tarp jų yra 6 baitai, kurie unikaliai identifikuoja jutiklį savo šeimoje.
Vienas rezultatas (adresas ir grąžinimo TRUE) gaunamas kiekvieną kartą, kai duodama ši komanda, važiuojant per visus „OneWire“magistralės įrenginius. Kai kiekvienas įrenginys sureaguos, kai kitą kartą bus atlikta „paieška“, grąžinama „FALSE“, o tai reiškia, kad kiekvienas autobuso įrenginys jau atsakė. Jei „paieška“išduodama dar kartą, pirmasis įrenginys vėl reaguoja - ir taip neribotą laiką. Įrenginiai visada reaguoja ta pačia tvarka. Atsakymų tvarka yra pagrįsta „OneWire“magistralės įrenginių identifikatoriais. Atrodo, kad tai dvejetainė paieška, pradedant nuo mažiausiai reikšmingų įrenginio identifikatorių bitų. Šiems identifikatoriams surasti naudojamas protokolas yra gana sudėtingas ir aprašytas dokumento „Book of iButton Standards“, kuris yra pdf dokumentas, adresu https://pdfserv.maximintegrated.com/en/an/AN937.pd, 51–54 puslapiuose. …
Aš išbandžiau šį paieškos procesą naudodami nuo 1 iki 11 jutiklių vienoje magistralėje ir radau, kad tam tikro įrenginių rinkinio atsakymo tvarka visada buvo ta pati, tačiau kai prie magistralės galo pridėjau naują įrenginį, nebuvo jokio būdo Galėjau nuspėti, kur paieškos eilutėje jis pasirodys. Pavyzdžiui, 11 -asis mano pridėtas jutiklis buvo padėtyje Nr.5; o pirmasis jutiklis, kurį įdėjau į autobusą, buvo paskutinis paieškos eilėje.
Šiame projekte su dviem jutikliais vienas iš jų yra lituojamas RTC modulyje; kita yra prijungta prie lentos naudojant vyrišką antraštę ir ant kabelio - moterišką antraštę. Jį galima lengvai nuimti.
Kai kabelio jutiklis („išvesties“jutiklis) yra atjungtas, komanda „paieška“sukuria pakaitinius „TRUE“ir „FALSE“.
Kai prijungtas kabelio jutiklis, komanda „paieška“sukuria 3 pakopų ciklą, duodami du „TRUE“ir vienas „FALSE“.
Mano procedūra yra išduoti 1, 2 arba 3 „paieškos“komandas, kol bus pateiktas FALSE rezultatas. Tada aš duodu dar 2 „paieškos“komandas. Jei antrasis nepavyksta (ty FALSE), žinau, kad magistralėje yra tik vienas jutiklis ir kad jis yra „in“jutiklis. Įrenginio tapatybė įrašoma ir priskiriama „in“jutikliui.
Vėliau, jei ir pirmasis, ir antrasis grįžimai yra TIKRI, žinau, kad autobuse yra du jutikliai. Aš patikrinu, kuris iš jų turi tapatybę „in“jutikliui, o kitą paskiriu kaip „out“jutiklį.
Kitas nedidelis dalykas yra tai, kad rezultatų surinkimas iš dviejų jutiklių atliekamas siunčiant „pradėti konversiją“pagal vadinamąją „praleisti ROM“komandą. Mes turime galimybę siųsti komandas į vieną įrenginį (naudojant jo unikalų identifikatorių) arba į visus magistralės įrenginius (praleisti ROM). Kodas atrodo taip:
ds.reset (); //
// siųsti komandą „praleisti ROM“(taigi kita komanda veikia abiejuose jutikliuose) ds.write (0xCC); // Praleisti ROM komandą ds.write (0x44, 0); // pradėti konversiją abiejuose zonduose Temperature_state = wait_convert; // eiti į atidėjimo būseną
Pasibaigus reikiamam atidėjimo laikui, temperatūra gaunama iš kiekvieno jutiklio atskirai. Čia yra antrojo jutiklio (ty OUT jutiklio) kodas.
if (vėliava2) {
dabartis = ds.reset (); ds.select (DS18B20_addr_out); ds.write (0xBE); // Skaityti „out“zondo duomenų užrašų knygelę [0] = ds.read (); duomenys [1] = ds.read (); temperatūra_iš = (duomenys [1] << 8) + duomenys [0]; Temperatūra_ (= 6 * temperatūra) + Temperatūra / 4; // padauginkite iš 6,25} kitaip {// ne vėliava2 - ty Išėjimo jutiklis neprijungtas. Temperatūros išėjimas = 30000; // pataisyti esant 300,00 C, jei neveikia temperatūros jutiklis} // pabaiga (jei vėliava2)
Daugumą šios programinės įrangos sukūriau atskirame eskize, kuriame buvo tik temperatūros jutikliai, be LCD, RTC ir SD kortelės palaikymo komplikacijų. Šis kūrimo eskizas yra žemiau esančiame faile.
3 žingsnis: preliminarūs rezultatai
Ši diagrama yra dviejų pirmųjų parodymų dienų derinys.
Rekomenduojamas:
„Pasidaryk pats“makro objektyvas su AF (kitoks nei visi kiti „pasidaryk pats“makro objektyvai): 4 žingsniai (su nuotraukomis)
„Pasidaryk pats“makro objektyvas su AF (kitoks nei visi kiti „pasidaryk pats“makro objektyvai): mačiau daug žmonių, gaminančių makro objektyvus su standartiniu rinkiniu (paprastai 18–55 mm). Dauguma jų yra objektyvas, tiesiog prilipęs prie fotoaparato atgal arba nuimtas priekinis elementas. Abi šios galimybės turi neigiamų pusių. Objektyvui pritvirtinti
„Pasidaryk pats“kambario termometras naudojant OLED modulį: 7 žingsniai (su nuotraukomis)
„Pasidaryk pats“kambario termometras naudojant OLED modulį: Mes sužinome, kaip sukurti kambario termometrą naudojant DS18B20 jutiklį ir OLED modulį. Mes naudojame „Piksey Pico“kaip pagrindinę plokštę, tačiau eskizas taip pat suderinamas su „Arduino UNO“ir „Nano“plokštėmis, kad galėtumėte jas naudoti
„Pasidaryk pats“pirštinių valdiklis su elektroninės tekstilės jutikliais: 14 žingsnių (su paveikslėliais)
„Pasidaryk pats“pirštinių valdiklis su elektroninės tekstilės jutikliais: ši instrukcija yra žingsnis po žingsnio pamoka, kaip padaryti duomenų pirštines naudojant „eTextile“jutiklius. Projektas yra Rachelės Freire ir Artyom Maxim bendradarbiavimas. Rachelė yra pirštinių tekstilės ir „eTextile“jutiklių dizainerė, o Arty kuria ratą
Termometras su santykinės temperatūros spalva 2 colių TFT ekrane ir keliais jutikliais: 5 žingsniai
Termometras su santykinės temperatūros spalva 2 colių TFT ekrane ir keliuose jutikliuose: sukūriau ekraną, rodantį kelių temperatūros jutiklių matavimus. Įdomu tai, kad verčių spalva kinta priklausomai nuo temperatūros: > 75 laipsnių Celsijaus = RED > 60 > 75 = ORANZA > 40 < 60 = GELTONA > 30 < 40
„Pasidaryk pats“magnetinis stalo ledo ritulys su kartonu, RGB šviesomis ir jutikliais: 11 žingsnių (su paveikslėliais)
„Pasidaryk pats“magnetinis stalo ledo ritulys su kartonu, RGB žibintais ir jutikliais: tu turi žaisti „Air Hockey“! Sumokėkite kelis $ $ dolerių $$ į žaidimų zoną ir tiesiog pradėkite pelnyti įvarčius, kad įveiktumėte savo draugus. Ar tai nėra labai priklausoma? Turbūt galvojote namuose laikyti vieną stalą, bet ei! ar kada nors galvojote pasigaminti patys? Mes