Sadržaj:
- Korak 1: Razvoj softvera
- Korak 2: Rad s dva temperaturna senzora - detalji
- Korak 3: Preliminarni rezultati
Video: Termometar za bilježenje uradi sam sa 2 senzora: 3 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Ovaj projekt je poboljšanje mog prethodnog projekta "Uradi sam termometar za bilježenje". Zapisuje mjerenja temperature na mikro SD karticu.
Promjene hardvera
Dodao sam senzor temperature DS18B20 modulu sata u realnom vremenu, gdje postoji mogućnost na štampanoj ploči za ovaj uređaj; i dodao odgovarajuću žicu sa "DS" pina RTC -a u D2 Arduina.
Promjene softvera
Zatim sam dodao i promijenio softver. Glavne promjene su:
LCD ekran prikazuje dvije temperature "In" i "Out".
Datoteke evidencije snimljene na SD kartici imaju dva temperaturna polja, "temperature In" i "temperature Out".
Zbog dužeg zapisa na SD kartici, radni međuspremnici za EEPROM su bili veći i kao rezultat toga počeli su mi se javljati problemi u sukobu memorije. Napravio sam brojne izmjene usmjerene na smanjenje upotrebe dinamičke memorije, uključujući upotrebu nizova znakova za sve nizove umjesto objekta String.
Dio softvera koji postiže temperature ima velike izmjene, od kojih se većina odnosi na identifikaciju koja je sonda "unutra", a koja "van". Ova identifikacija je uglavnom automatska. Ako se iz nekog razloga sonde prebace, to se može ispraviti isključivanjem "vanjske" sonde i ponovnim uključivanjem. Nisam lično doživeo ovaj preokret. Programer ili korisnik ne moraju upisivati adrese senzora, softver sam otkriva adrese senzora temperature.
Prema mojim testiranjima, identifikacija temperaturnih sondi i odgovor na uklanjanje i zamjenu SD kartice i dalje rade besprijekorno.
Korak 1: Razvoj softvera
Ovaj korak daje vam potpuni softver za dovršeni projekt. Sastavio sam ga koristeći Arduino IDE 1.6.12. Koristi 21, 400 bajtova programske memorije (69%) i 1,278 bajta dinamičke memorije (62%).
Stavio sam komentare u kôd u nadi da će mi biti jasno šta se dešava.
Korak 2: Rad s dva temperaturna senzora - detalji
Ovaj softver koristi biblioteku "OneWire". Ne koristi nikakve "DallasTemperature" ili slične biblioteke. Umjesto toga, naredbe i podaci sa temperaturnih senzora se izvršavaju prema skici i mogu se vidjeti i razumjeti prilično lako. Našao sam korisnu listu naredbi biblioteke OneWire na adresi
www.pjrc.com/teensy/td_libs_OneWire.html
Kada postoje dva (ili više) temperaturna senzora, postaje potrebno identificirati koji je koji.
Nazvao sam svoja dva senzora "unutra" i "van", što je tipično za poslovne jedinice koje imaju senzor u modulu ekrana koji je obično "unutra", a drugi senzor na kabelu tako da se može staviti s druge strane vanjskog zida i tako biti "van".
Uobičajen pristup identificiranju različitih sondi je otkrivanje adresa uređaja i njihovo stavljanje u softver zajedno s identifikacijskom oznakom. Svi drugi projekti koje sam vidio koriste ovaj pristup, bez obzira koriste li biblioteku DallasTemperature ili ne.
Moja namjera je bila da softver treba automatski identificirati senzore i ispravno ih rasporediti na "unutra" i "van". To je dovoljno jednostavno učiniti stavljanjem na zasebne Arduino igle. U ovom projektu svi A0 do A3 i A6 i A7 su nekorišteni, pa se jedan od njih mogao koristiti u ovom slučaju. Međutim, uspio sam postići automatsku identifikaciju sa senzorima na istoj sabirnici OneWire.
Radi ovako.
Biblioteka OneWire ima naredbu "OneWireObject.search (adresa)" gdje je "adresa" niz od 8 bajtova, a "OneWireObject" naziv instance prethodno stvorenog objekta OneWire. Može imati bilo koje ime koje želite. Moj se zove "ds". Kad izdate ovu naredbu "pretraživanje", biblioteka OneWire vrši određenu signalizaciju na jednožilnoj sabirnici. Ako pronađe senzor koji reagira, vraća logičku vrijednost "TRUE" i popunjava "address" niz sa 8 -bajtnim jedinstvenim identifikatorom senzora. Ovaj identifikator uključuje šifru porodice (na početku) i čekovni iznos (na kraju). Između je 6 bajtova koji jedinstveno identifikuju senzor u njegovoj porodici.
Svaki rezultat (adresa i povrat TRUE) dobiva se svaki put kada se ova naredba da, prolazeći kroz sve uređaje na sabirnici OneWire. Kad se svaki uređaj odazove, sljedeći put kada se izda "pretraživanje", povratak je "FALSE", što znači da je svaki uređaj na sabirnici već odgovorio. Ako se "pretraživanje" ponovo izda, prvi uređaj će ponovno odgovoriti - i tako u nedogled. Uređaji uvijek reagiraju istim redoslijedom. Redoslijed odgovora temelji se na identifikatorima uređaja na sabirnici OneWire. Čini se da je to binarno pretraživanje koje počinje od najmanje bitnih bitova identifikatora uređaja. Protokol koji se koristi za pronalaženje ovih identifikatora je prilično složen i opisan je na stranicama 51 - 54 dokumenta "Knjiga standarda iButton" koji je pdf dokument na https://pdfserv.maximintegrated.com/en/an/AN937.pd …
Testirao sam ovaj proces pretraživanja sa 1 do 11 senzora na jednoj sabirnici i otkrio da je redoslijed odgovora za dati skup uređaja uvijek isti, ali kada sam dodao novi uređaj na kraj sabirnice, nije bilo načina Mogao sam predvidjeti gdje će se u redoslijedu pretraživanja pojaviti. Na primjer, 11. senzor koji sam dodao došao je na poziciju br. 5; a prvi senzor koji sam stavio u autobus bio je uvijek zadnji u redoslijedu pretraživanja.
U ovom projektu sa dva senzora, jedan od njih je lemljen na modulu RTC; drugi je priključen pomoću muškog zaglavlja na ploči i ženskog zaglavlja na kablu. Lako se može odvojiti.
Kada se senzor na kablu ("out" senzor) odvoji, naredba "search" proizvodi naizmjenične povratne vrijednosti "TRUE" i "FALSE".
Kada je senzor na kablu priključen, naredba "search" proizvodi trostepeni ciklus, sa dva "TRUE" i jednim "FALSE" povratom.
Moja procedura je da izdajem 1, 2 ili 3 naredbe za "pretraživanje", sve dok se ne vrati FALSE rezultat. Zatim izdajem još 2 naredbe "traži". Ako drugi ne uspije (tj. FALSE) znam da postoji samo jedan senzor na sabirnici i da je to "in" senzor. Identitet uređaja se snima i dodjeljuje senzoru "in".
Kasnije, ako su prvi i drugi povrat tačni, znam da postoje dva senzora u sabirnici. Provjeravam koji od njih ima identitet jednak "in" senzoru, a drugom dodjeljujem senzor "out".
Druga sporedna stvar je da se prikupljanje rezultata s dva senzora vrši slanjem "pokretanja konverzije" takozvanom naredbom "preskoči ROM". Imamo mogućnost slanja naredbi na jedan uređaj (koristeći njegov jedinstveni identifikator) ili na sve uređaje na sabirnici (preskočite ROM). Kod izgleda ovako:
ds.reset (); //
// šalje naredbu "skip ROM" (naredna naredba radi na oba senzora) ds.write (0xCC); // Preskoči naredbu ROM -a ds.write (0x44, 0); // pokretanje konverzije u obje sonde temperature_state = wait_convert; // idite na stanje odgode
Kada prođe potrebno vrijeme odgode, temperature se primaju sa svakog senzora ponaosob. Evo koda za drugi senzor (tj. OUT senzor).
if (flag2) {
present = ds.reset (); ds.select (DS18B20_addr_out); ds.write (0xBE); // Čitanje Scratchpada "out" podataka sonde [0] = ds.read (); data [1] = ds.read (); temperature_out = (podaci [1] << 8) + podaci [0]; temperatura_izlaz = (6 * temperatura_izlaz) + temperatura_izlaz / 4; // pomnožimo sa 6.25} else {// nije flag2 - tj. vanjski senzor nije povezan temperature_out = 30000; // popravlja na 300,00 C ako senzor temperature ne radi} // kraj if (flag2)
Većinu ovog softvera razradio sam u samostalnoj skici u kojoj su bili samo senzori temperature, bez komplikacija s podrškom za LCD, RTC i SD karticu. Ova skica razvoja nalazi se u donjoj datoteci.
Korak 3: Preliminarni rezultati
Ovaj grafikon je kombinacija prva dva neradna čitanja.
Preporučuje se:
Uradi sam infracrveni termometar za COVID-19 s MicroPythonom: 8 koraka
Uradi sam infracrveni termometar za COVID-19 s MicroPythonom: Zbog izbijanja koronavirusne bolesti (COVID-19), kadrovska služba kompanije mora mjeriti i registrirati temperaturu svakog radnika. Ovo je dosadan i dugotrajan zadatak za HR. Tako sam napravio ovaj projekt: radnik je pritisnuo dugme, ovo u
Sobni termometar uradi sam koristeći OLED modul: 7 koraka (sa slikama)
Uradi sam sobni termometar pomoću OLED modula: Naučimo kako izgraditi sobni termometar pomoću senzora DS18B20 i OLED modula. Mi koristimo Piksey Pico kao glavnu ploču, ali skica je kompatibilna i sa Arduino UNO i Nano pločama pa ih možete koristiti i
Koristite pametni telefon kao beskontaktni termometar / prijenosni termometar: 8 koraka (sa slikama)
Koristite pametni telefon kao beskontaktni termometar / prijenosni termometar: Mjerenje tjelesne temperature beskontaktnim / beskontaktnim poput termo pištolja. Napravio sam ovaj projekt jer je Thermo Gun sada jako skup, pa moram pronaći alternativu za izradu DIY -a. A svrha je napraviti s niskobudžetnom verzijom.SuppliesMLX90614Ardu
Alarmni sistem za parkiranje vozila pomoću PIR senzora- Uradi sam: 7 koraka (sa slikama)
Alarmni sistem za parkiranje vozila pomoću PIR senzora- Uradi sam: Jeste li ikada imali problema prilikom parkiranja vozila poput automobila, kamiona, motornog ili bilo kojeg drugog, tada ću vam u ovom uputstvu pokazati kako riješiti ovaj problem pomoću jednostavnog alarma za parkiranje vozila sistem koji koristi PIR senzor. U ovom sistemu koji
Nadogradite "uradi sam" lonac za zalijevanje sa WiFi -em u alarmni uređaj za otkrivanje kretnji za otkrivanje pokreta "Uradi sam": 17 koraka
Nadogradite "uradi sam" lonac za zalijevanje sa WiFi -jem u aparat za alarme za otkrivanje kretnji za otkrivanje pokreta "Uradi sam": U ovom članku pokazat ćemo vam kako nadograditi svoj lonac za samolijevanje s vlastitim WiFi -jem u DIY lonac za samolijevanje s WiFi -jem i alarmom za detekciju kretanja. niste pročitali članak o tome kako izgraditi lonac za samostalno zalijevanje s WiFi -jem, možete fin