Përmbajtje:
- Hapi 1: Zhvillimi i softuerit
- Hapi 2: Puna me dy sensorë të temperaturës - detaje
- Hapi 3: Rezultatet paraprake
Video: Termometër regjistrimi DIY me 2 sensorë: 3 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:16
Ky projekt është një përmirësim i projektit tim të mëparshëm "Termometri i prerjes DIY". Ai regjistron matjet e temperaturës në një kartë mikro SD.
Ndryshimet e harduerit
Shtova një sensor të temperaturës DS18B20 në modulin e orës në kohë reale, ku ka dispozitë në tabelën e qarkut të shtypur për këtë pajisje; dhe shtoi telin e duhur nga kunja "DS" e RTC në D2 të Arduino.
Ndryshimet e softuerit
Pastaj shtova dhe ndryshova softuerin. Ndryshimet kryesore janë:
Ekrani LCD tregon dy temperatura "In" dhe "Out".
Skedarët e regjistrit të regjistruar në kartën SD kanë dy fusha të temperaturës, "temperatura brenda" dhe "temperatura jashtë".
Për shkak të regjistrimit më të gjatë në kartën SD, tamponët e punës për EEPROM ishin më të mëdhenj dhe si rezultat i kësaj fillova të kem probleme të konfliktit të kujtesës. Kam bërë një numër ndryshimesh që synojnë zvogëlimin e përdorimit të kujtesës dinamike, duke përfshirë përdorimin e vargjeve të karaktereve për të gjitha vargjet në vend të objektit String.
Pjesa e softuerit që merr temperaturat ka modifikime të mëdha, shumica e të cilave kanë të bëjnë me identifikimin se cila sondë është "brenda" dhe cila është "jashtë". Ky identifikim është kryesisht automatik. Nëse për ndonjë arsye sondat ndërrohen, mund të korrigjohet duke shkëputur sondën "jashtë" dhe pastaj duke e lidhur përsëri. Unë nuk e kam përjetuar këtë përmbysje vetë. Programuesi ose përdoruesi nuk kanë nevojë të shkruajnë adresat e sensorit, programi zbulon adresat e sensorit të temperaturës në vetvete.
Sipas testimit që kam bërë, identifikimi i sondave të temperaturës dhe përgjigja ndaj heqjes dhe zëvendësimit të kartës SD, ende funksionojnë pa probleme.
Hapi 1: Zhvillimi i softuerit
Ky hap ju jep softuerin e plotë për projektin e përfunduar. Unë e përpilova duke përdorur Arduino IDE 1.6.12. Përdor 21, 400 bajt memorie programi (69%) dhe 1, 278 bajt memorie dinamike (62%).
Unë kam vënë komente në kod me shpresën se do ta bëjnë të qartë se çfarë po ndodh.
Hapi 2: Puna me dy sensorë të temperaturës - detaje
Ky program përdor bibliotekën "OneWire". Nuk përdor asnjë "DallasTemperature" ose biblioteka të ngjashme. Në vend të kësaj komandat dhe të dhënat nga sensorët e temperaturës bëhen nga skica dhe mund të shihen dhe kuptohen fare lehtë. Kam gjetur një listë të dobishme të komandave të bibliotekës OneWire në
www.pjrc.com/teensy/td_libs_OneWire.html
Kur ka dy (ose më shumë) sensorë të temperaturës, bëhet e nevojshme të identifikohet se cili është cili.
I thirra dy sensorët e mi "brenda" dhe "jashtë", që është tipike për njësitë tregtare që kanë një sensor në modulin e ekranit i cili normalisht është "brenda", dhe sensorin tjetër në një kabllo në mënyrë që të mund të vendoset në anën tjetër të një muri të jashtëm dhe kështu të jetë "jashtë".
Qasja e zakonshme për identifikimin e sondave të ndryshme është zbulimi i adresave të pajisjes dhe vendosja e tyre në softuer së bashku me një etiketë identifikuese. Të gjitha projektet e tjera që kam parë përdorin këtë qasje, pavarësisht nëse përdorin apo jo bibliotekën DallasTemperature apo jo.
Synimi im ishte që programi kompjuterik duhet të identifikojë automatikisht sensorët dhe t'i ndajë ato në mënyrë "në" dhe "jashtë". Kjo është mjaft e lehtë për tu bërë duke i vendosur në kunja të veçanta Arduino. Në këtë projekt, A0 në A3 dhe A6 dhe A7 janë të gjithë të papërdorur, kështu që një nga këto mund të ishte përdorur në këtë rast. Sidoqoftë, unë arrita të punoja me identifikimin automatik me sensorët të dy në të njëjtin autobus OneWire.
Punon kështu.
Biblioteka OneWire ka një komandë "OneWireObject.search (adresa)" ku "adresa" është një grup prej 8 bajtësh dhe "OneWireObject" është emri i një shembulli të objektit OneWire që është krijuar më parë. Mund të ketë çdo emër që ju pëlqen. I imi quhet "ds". Kur lëshoni këtë komandë "kërkimi", biblioteka OneWire bën disa sinjalizime në autobusin me një tel. Nëse gjen një sensor që përgjigjet, ai kthen një vlerë boolean "TRUE" dhe plotëson grupin "adresa" me identifikuesin unik 8 bajt të sensorit. Ky identifikues përfshin një kod familjar (në fillim) dhe një shumë kontrolli (në fund). Në mes janë 6 bajtë që identifikojnë në mënyrë unike sensorin brenda familjes së tij.
Një rezultat (adresa dhe kthimi TRUE) merret sa herë që jepet kjo komandë, duke qarkulluar nëpër të gjitha pajisjet në autobusin OneWire. Pasi çdo pajisje të jetë përgjigjur, herën tjetër kur lëshohet "kërkimi", kthimi është "FALSE", duke treguar se çdo pajisje në autobus është përgjigjur tashmë. Nëse "kërkimi" lëshohet përsëri, pajisja e parë përgjigjet përsëri - dhe kështu me radhë për një kohë të pacaktuar. Pajisjet gjithmonë përgjigjen në të njëjtën mënyrë. Rendi i përgjigjeve bazohet në identifikuesit e pajisjeve në autobusin OneWire. Duket se është një kërkim binar duke filluar nga pjesët më pak të rëndësishme të identifikuesve të pajisjes. Protokolli i përdorur për të gjetur këta identifikues është mjaft kompleks dhe përshkruhet në faqet 51 - 54 të dokumentit "Libri i Standardeve të iButton", i cili është një dokument pdf në https://pdfserv.maximintegrated.com/en/an/AN937.pd …
E testova këtë proces kërkimi me 1 deri në 11 sensorë në një autobus të vetëm dhe zbulova se urdhri i përgjigjes për një grup të caktuar pajisjesh ishte gjithmonë i njëjtë, por kur shtova një pajisje të re në fund të autobusit, nuk kishte asnjë mënyrë Mund të parashikoja se ku do të shfaqet në rendin e kërkimit. Për shembull, sensori i 11 -të që shtova erdhi në pozicionin Nr.5; dhe sensori i parë që vura në autobus ishte larg i fundit në rendin e kërkimit.
Në këtë projekt me dy sensorë, njëri prej tyre është ngjitur në vend në modulin RTC; tjetra lidhet duke përdorur një kokë mashkullore në tabelë dhe një kokë femre në kabllo. Mund të shkëputet lehtësisht.
Kur sensori në kabllo (sensori "jashtë" është shkëputur, komanda "kërko" prodhon kthime alternative "TRUE" dhe "FALSE".
Kur sensori në kabllo është i bashkangjitur, komanda "kërko" prodhon një cikël me 3 faza, me dy "TRUE" dhe një "FALSE".
Procedura ime është të lëshoj 1, 2 ose 3 komanda "kërkimi", derisa të kthehet një rezultat FALSE. Pastaj lëshoj 2 komanda të tjera "kërkimi". Nëse e dyta dështon (dmth FALSE) e di që ka vetëm një sensor në autobus dhe se ai është sensori "in". Identiteti i pajisjes regjistrohet dhe i ndahet sensorit "in".
Në një kohë të mëvonshme, nëse kthimet e para dhe të dyta janë të VUERTETA, e di që ka dy sensorë në autobus. Unë kontrolloj se cili prej tyre ka një identitet të barabartë me sensorin "in" dhe e ndaj tjetrin si sensor "jashtë".
Pika tjetër e vogël është se mbledhja e rezultateve nga dy sensorët bëhet duke dërguar "konvertimin e fillimit" me atë që njihet si një komandë "kapërce ROM". Ne kemi mundësinë e dërgimit të komandave në një pajisje të vetme (duke përdorur identifikuesin e saj unik) ose në të gjitha pajisjet në autobus (kaloni ROM). Kodi duket kështu:
ds.reset (); //
// dërgoni komandën "kapërce ROM" (kështu që komanda tjetër punon në të dy sensorët) ds.write (0xCC); // Kalo komandën ROM ds.write (0x44, 0); // filloni konvertimin në të dy sondat temperature_state = prisni_konvertimin; // shkoni në gjendjen e vonuar
Kur të ketë kaluar koha e kërkuar e vonesës, temperaturat merren nga secili sensor individualisht. Këtu është kodi për sensorin e dytë (p.sh. sensori OUT).
nëse (flamuri2) {
prezent = ds.reset (); ds.zgjidh (DS18B20_addr_out); ds.shkruaj (0xBE); // Lexoni Scratchpad të të dhënave të sondës "jashtë" [0] = ds.read (); të dhënat [1] = ds.read (); temperature_out = (të dhëna [1] << 8) + të dhëna [0]; temperatura_out = (6 * temperatura_ jashtë) + temperatura_përtej / 4; // shumëzoni me 6.25} tjetër {// jo flag2 - dmth Sensori jashtë nuk është i lidhur temperatura_out = 30000; // rregulloni në 300.00 C nëse sensori i temperaturës nuk punon} // fundi i if (flag2)
Kam përpunuar shumicën e këtij programi në një skicë të pavarur që sapo kishte sensorë të temperaturës në të, pa ndërlikimet e mbështetjes së kartave LCD, RTC dhe SD. Ky skicë e zhvillimit është në skedarin më poshtë.
Hapi 3: Rezultatet paraprake
Kjo tabelë është një kombinim i dy ditëve të para të leximit.
Recommended:
Përdorni telefonin inteligjent si termometër pa kontakt / termometër portativ: 8 hapa (me fotografi)
Përdorni telefonin inteligjent si termometër pa kontakt / termometër portativ: Matni temperaturën e trupit me jo-kontakt / pa kontakt si një armë termo. Unë e krijova këtë projekt sepse Thermo Gun tani është shumë i shtrenjtë, kështu që duhet të marr alternativë për të bërë DIY. Dhe qëllimi është të bëni me një version të ulët buxhetor. FurnizimetMLX90614Ardu
ARUPI - një njësi regjistrimi e automatizuar me kosto të ulët/njësi regjistrimi autonome (ARU) për ekologët e panoramës: 8 hapa (me fotografi)
ARUPI - një njësi regjistrimi e automatizuar me kosto të ulët/njësi regjistrimi autonome (ARU) për ekologët Soundscape: Ky udhëzues është shkruar nga Anthony Turner. Projekti u zhvillua me shumë ndihmë nga Shed in School of Computing, University of Kent (z. Daniel Knox ishte një ndihmë e madhe!). Ai do t'ju tregojë se si të ndërtoni një Ud të Regjistrimit të Automatizuar
Regjistrimi modern i kasetave kasetë të cilësisë së mirë me skedarë MP3: 8 hapa (me fotografi)
Regjistrimi modern i kasetave kasetë të cilësisë së mirë me skedarë MP3: Me kaseta kasetë të cilësisë së mirë që shfaqen në pop-kulturë tani më shumë se kurrë, shumë njerëz dëshirojnë të krijojnë versionet e tyre. Në këtë tutorial, unë do t'ju udhëzoj se si (nëse keni një magnetofon) të regjistroni kasetat tuaja kasetë me teknologji moderne
Regjistrimi i të dhënave në distancë me saktësi të lartë duke përdorur multimetër/Arduino/pfodApp: 10 hapa (me fotografi)
Regjistrimi i të dhënave në distancë me saktësi të lartë duke përdorur multimetër/Arduino/pfodApp: Përditësuar më 26 Prill 2017 Qarku dhe bordi i rishikuar për përdorim me matësa USB 4000ZC. Asnjë kodim Android nuk kërkohet Ky udhëzues ju tregon sesi keni qasje në një gamë të gjerë të matjeve me saktësi të lartë nga Arduino juaj dhe gjithashtu i dërgoni ato nga distanca për prerje dhe
Regjistrimi i një kënge në një iPad: 11 hapa (me fotografi)
Regjistrimi i një kënge në një IPad: Një mikesha ime kohët e fundit pyeti se si mund të regjistronte disa nga këngët e saj vetëm me një kitarë dhe një iPad. E pyeta nëse kishte ndonjë pajisje tjetër regjistruese si mikrofon dhe ndërfaqe regjistrimi. Fatkeqësisht, përgjigjja ishte jo, dhe ajo nuk është