Obsah:
- Krok 1: Vývoj softvéru
- Krok 2: Práca s dvoma teplotnými snímačmi - detaily
- Krok 3: Predbežné výsledky
Video: Teplomer na zapisovanie do domácnosti s 2 snímačmi: 3 kroky (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
Tento projekt je vylepšením môjho predchádzajúceho projektu „DIY zapisovací teplomer“. Zaznamenáva merania teploty na kartu micro SD.
Hardvérové zmeny
Do hodinového modulu v reálnom čase som pridal teplotný senzor DS18B20, kde je na doske s plošnými spojmi toto zariadenie; a pridal príslušný vodič z kolíka „DS“RTC do D2 Arduina.
Zmeny softvéru
Potom som pridal a upravil softvér. Hlavné zmeny sú tieto:
LCD displej zobrazuje dve teploty „In“a „Out“.
Protokoly zaznamenané na SD karte majú dve teplotné polia, „teplota In“a „teplota von“.
Vzhľadom na dlhší záznam na kartu SD boli pracovné vyrovnávacie pamäte pre EEPROM väčšie a v dôsledku toho som začal mať problémy s konfliktom pamäte. Vykonal som niekoľko zmien zameraných na zníženie používania dynamickej pamäte vrátane použitia znakových polí pre všetky reťazce namiesto objektu String.
Časť softvéru, ktorá meria teploty, má zásadné úpravy, z ktorých väčšina súvisí s identifikáciou sondy, ktorá je „in“a ktorá „out“. Táto identifikácia je väčšinou automatická. Ak sa z nejakého dôvodu sondy vypnú, dá sa to napraviť odpojením „von“sondy a následným opätovným zapojením. Sám som tento zvrat nezažil. Programátor alebo užívateľ nemusí zadávať adresy senzorov, softvér sám zistí adresy senzorov teploty.
Podľa testovania, ktoré som vykonal, identifikácia teplotných sond a reakcia na vybratie a výmenu karty SD stále fungujú bez problémov.
Krok 1: Vývoj softvéru
Tento krok vám poskytne úplný softvér pre dokončený projekt. Zostavil som ho pomocou Arduino IDE 1.6.12. Využíva 21 400 bajtov programovej pamäte (69%) a 1 278 bajtov dynamickej pamäte (62%).
Vložil som do kódu pripomienky v nádeji, že budú jasné, čo sa deje.
Krok 2: Práca s dvoma teplotnými snímačmi - detaily
Tento softvér používa knižnicu „OneWire“. Nepoužíva žiadne knižnice „DallasTemperature“ani podobné knižnice. Namiesto toho sú príkazy a údaje zo snímačov teploty vykonávané pomocou náčrtu a je ich možné ľahko vidieť a porozumieť im. Užitočný zoznam príkazov knižnice OneWire som našiel na
www.pjrc.com/teensy/td_libs_OneWire.html
Keď existujú dva (alebo viac) teplotných senzorov, je potrebné identifikovať, ktorý z nich je.
Moje dva senzory som nazval „in“a „out“, čo je typické pre komerčné jednotky, ktoré majú senzor v zobrazovacom module, ktorý je bežne „vo vnútri“, a druhý senzor na kábli, aby ho bolo možné umiestniť na druhú stranu. vonkajšej steny, a tak byť „mimo“.
Obvyklým prístupom k identifikácii rôznych sond je zistiť adresy zariadení a vložiť ich do softvéru spolu s identifikačným štítkom. Všetky ostatné projekty, ktoré som videl, používajú tento prístup, bez ohľadu na to, či používajú knižnicu DallasTemperature alebo nie.
Mojím zámerom bolo, aby softvér automaticky identifikoval senzory a správne ich rozdelil na „vstup“a „výstup“. To je dosť jednoduché, keď ich umiestnite na samostatné piny Arduino. V tomto projekte sú A0 až A3 a A6 a A7 všetky nepoužité, takže jeden z nich mohol byť v tomto prípade použitý. Podarilo sa mi však dosiahnuť automatickú identifikáciu senzorov na tej istej zbernici OneWire.
Funguje to takto.
Knižnica OneWire má príkaz „OneWireObject.search (adresa)“, kde „adresa“je pole s 8 bytmi a „OneWireObject“je názov inštancie objektu OneWire, ktorý bol predtým vytvorený. Môže mať akékoľvek meno, ktoré sa vám páči. Môj sa nazýva „ds“. Keď zadáte tento príkaz „hľadať“, knižnica OneWire vykoná určitú signalizáciu na jednožilovej zbernici. Ak nájde reagujúci senzor, vráti logickú hodnotu „TRUE“a do poľa „adresa“vyplní 8 -bajtový jedinečný identifikátor senzora. Tento identifikátor obsahuje rodinný kód (na začiatku) a kontrolný súčet (na konci). Medzi nimi je 6 bajtov, ktoré jednoznačne identifikujú snímač v rámci jeho rodiny.
Pri každom zadaní tohto príkazu sa získa jeden výsledok (adresa a návrat TRUE), pričom sa cyklicky prechádza všetkými zariadeniami na zbernici OneWire. Akonáhle každé zariadenie odpovie, nabudúce sa spustí „vyhľadávanie“a vráti sa „NEPRAVDA“, čo znamená, že každé zariadenie v zbernici už odpovedalo. Ak sa „hľadanie“spustí znova, prvé zariadenie odpovie znova - a tak donekonečna. Zariadenia reagujú vždy v rovnakom poradí. Poradie odpovedí je založené na identifikátoroch zariadení na zbernici OneWire. Zdá sa, že ide o binárne vyhľadávanie začínajúce od najmenej významných bitov identifikátorov zariadenia. Protokol používaný na nájdenie týchto identifikátorov je pomerne zložitý a je popísaný na stranách 51 - 54 dokumentu „Kniha štandardov iButton“, ktorý je dokumentom pdf na adrese https://pdfserv.maximintegrated.com/en/an/AN937.pd …
Testoval som tento proces vyhľadávania s 1 až 11 senzormi na jednej zbernici a zistil som, že poradie odozvy pre danú skupinu zariadení bolo vždy rovnaké, ale keď som na koniec zbernice pridal nové zariadenie, nebolo možné Vedel som predpovedať, kde v poradí vyhľadávania sa objaví. Napríklad 11. senzor, ktorý som pridal, vstúpil na pozíciu č. 5; a prvý senzor, ktorý som vložil do autobusu, bol posledný v poradí vyhľadávania.
V tomto projekte s dvoma snímačmi je jeden z nich spájkovaný na mieste v module RTC; druhý je zapojený pomocou konektora samca na doske a zásuvky samice na kábli. Dá sa ľahko odpojiť.
Keď je snímač na kábli (snímač „von“) odpojený, príkaz „hľadať“striedavo vráti hodnoty „TRUE“a „FALSE“.
Keď je snímač na kábli pripojený, príkaz „hľadať“vytvorí 3-stupňový cyklus s dvoma „TRUE“a jedným „FALSE“.
Mojím postupom je vydávať 1, 2 alebo 3 príkazy "hľadať", kým sa nevráti FALZÍVNY výsledok. Potom vydám ďalšie 2 príkazy „hľadať“. Ak zlyhá druhý (tj FALSE), viem, že na zbernici je iba jeden snímač a že je to snímač „in“. Identita zariadenia sa zaznamená a priradí senzoru "in".
Neskôr, ak sú prvý aj druhý návrat pravdivé, viem, že v autobuse sú dva snímače. Skontrolujem, ktorý z nich má identitu rovnajúcu sa senzoru „in“, a druhému priradím senzor „out“.
Ďalším drobným bodom je, že zhromažďovanie výsledkov z týchto dvoch senzorov sa vykonáva odoslaním príkazu „začať konverziu“pomocou príkazu „preskočiť ROM“. Máme možnosť odosielať príkazy na jedno zariadenie (pomocou jeho jedinečného identifikátora) alebo na všetky zariadenia na zbernici (preskočiť ROM). Kód vyzerá takto:
ds.reset (); //
// odoslanie príkazu „preskočiť ROM“(nasledujúci príkaz teda funguje v oboch snímačoch) ds.write (0xCC); // Preskočiť príkaz ROM ds.write (0x44, 0); // spustenie konverzie v obidvoch sondách temperature_state = wait_convert; // prejdi do stavu zdržania
Po uplynutí požadovaného času oneskorenia sa teploty prijmú z každého snímača jednotlivo. Tu je kód pre druhý snímač (tj. Snímač OUT).
if (flag2) {
prítomný = ds.reset (); ds.select (DS18B20_addr_out); ds.write (0xBE); // Prečítajte si zápisník údajov sondy „von“[0] = ds.read (); údaje [1] = ds.read (); teplota_výstup = (údaje [1] << 8) + údaje [0]; teplota_out = (6 * teplota_out) + teplota_out / 4; // vynásobenie 6,25} else {// nie príznak2 - tj výstupný snímač nie je pripojený teplota_out = 30 000; // oprava na 300,00 C, ak snímač teploty nefunguje} // koniec if (flag2)
Väčšinu tohto softvéru som vypracoval v samostatnom náčrte, ktorý obsahoval iba snímače teploty, bez komplikácií s podporou LCD, RTC a SD karty. Tento náčrt vývoja je v nižšie uvedenom súbore.
Krok 3: Predbežné výsledky
Tento graf je kombináciou prvých dvoch čiastkových dní čítania.
Odporúča:
Používajte smartfón ako bezkontaktný teplomer / prenosný teplomer: 8 krokov (s obrázkami)
Používajte smartfón ako bezkontaktný teplomer / prenosný teplomer: Meranie telesnej teploty bezkontaktným / bezkontaktným teplomerom. Vytvoril som tento projekt, pretože Thermo Gun je teraz veľmi drahý, takže musím nájsť alternatívu k vlastnoručnému vyrobeniu. Cieľom je vytvoriť nízkorozpočtovú verziu. DodávkyMLX90614Ardu
Bezkontaktný infračervený teplomer na báze Arduina - IR teplomer využívajúci Arduino: 4 kroky
Bezkontaktný infračervený teplomer na báze Arduina | IR teplomer využívajúci Arduino: Ahoj chlapci, v tomto návode vyrobíme bezkontaktný teplomer pomocou arduina. Pretože niekedy je teplota kvapaliny/tuhej látky príliš vysoká alebo príliš nízka, je ťažké s ňou nadviazať kontakt a prečítať si ju. teplota potom v tomto scenári
Čítanie a zapisovanie údajov do externej EEPROM pomocou Arduina: 5 krokov
Čítanie a zapisovanie údajov do externej EEPROM pomocou Arduino: EEPROM je elektricky vymazateľná programovateľná pamäť iba na čítanie. EEPROM je veľmi dôležitá a užitočná, pretože je energeticky nezávislou formou pamäte. To znamená, že aj keď je doska vypnutá, čip EEPROM si stále zachováva program, ktorý
Vyrovnajte nárazník so snímačmi vlhkosti a ARDUINO: 4 kroky (s obrázkami)
Vychutnajte si úrodu so snímačmi vlhkosti a ARDUINO: Musím byť závislý na pokynoch medzi prácou a domácimi úlohami, aby som sa mohol bez peňazí deliť o svoje znalosti s tým, že napíšem ďalší pokyn. Teraz som sudcom, prechádzajúc mnohými inštrukciami a vždy nájsť návod
Navigujte robota so snímačmi obuvi, bez GPS, bez mapy: 13 krokov (s obrázkami)
Navigujte robota pomocou senzorov obuvi, bez GPS, bez mapy: Robot sa pohybuje po vopred naprogramovanej ceste a vysiela (cez bluetooth) svoje aktuálne informácie o pohybe do telefónu na sledovanie v reálnom čase. Arduino je predprogramované s dráhou a oblu slúži na snímanie pohybu robota. oblu prenáša pohyb a