Talaan ng mga Nilalaman:
- Hakbang 1: Pag-unlad ng Software
- Hakbang 2: Paggawa Sa Dalawang Mga Sensor ng Temperatura - Mga Detalye
- Hakbang 3: Paunang Mga Resulta
Video: Thermometer sa Pag-log ng DIY Na May 2 Mga Sensor: 3 Mga Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:12
Ang proyektong ito ay isang pagpapahusay ng aking nakaraang proyekto na "DIY Logging Thermometer". Ini-log nito ang mga pagsukat ng tempearature sa isang micro SD card.
Nagbabago ang hardware
Nagdagdag ako ng sensor ng temperatura ng DS18B20 sa module ng real time na orasan, kung saan mayroong probisyon sa naka-print na circuit board para sa aparatong ito; at idinagdag ang naaangkop na kawad mula sa "DS" na pin ng RTC sa D2 ng Arduino.
Pagbabago ng software
Pagkatapos ay idinagdag ko at binago ang software. Ang mga pangunahing pagbabago ay:
Ipinapakita ng LCD display ang dalawang temperatura na "In" at "Out".
Ang mga log file na naitala sa SD card ay may dalawang mga patlang ng temperatura, "temperatura In" at "temperatura Out".
Dahil sa mas mahabang tala sa SD card, ang mga nagtatrabaho buffer para sa EEPROM ay mas malaki at bilang isang resulta nito nagsimula akong magkaroon ng mga problema sa salungatan sa memorya. Gumawa ako ng isang bilang ng mga pagbabago na naglalayong bawasan ang paggamit ng pabago-bagong memorya, kasama ang paggamit ng mga character arrays para sa lahat ng mga string sa halip na String object.
Ang bahagi ng software na nakakakuha ng temperatura ay may pangunahing pagbabago, na ang karamihan ay dapat gawin sa pagkilala sa aling probe na "nasa" at alin ang "lumabas". Ang pagkakakilanlan na ito ay kadalasang awtomatiko. Kung sa ilang kadahilanan ang mga probe ay inililipat, maaari itong maitama sa pamamagitan ng pag-unplug ng "out" na pagsisiyasat at pagkatapos ay i-plug ito muli. Hindi ko naranasan ang pagbabaliktad na ito sa aking sarili. Ang programmer o gumagamit ay hindi kailangang mag-type sa mga address ng sensor, nadiskubre ng software ang mga address ng sensor ng temperatura nang mag-isa.
Ayon sa nagawa kong pagsubok, ang pagkakakilanlan ng mga probe ng temperatura, at ang tugon sa pagtanggal at pagpapalit ng SD card, ay gumagana pa rin ng maayos.
Hakbang 1: Pag-unlad ng Software
Binibigyan ka ng hakbang na ito ng buong software para sa nakumpletong proyekto. Pinagsama ko ito gamit ang Arduino IDE 1.6.12. Gumagamit ito ng 21, 400 bytes ng program memory (69%) at 1, 278 bytes ng pabuong memorya (62%).
Naglagay ako ng mga komento sa code sa pag-asang malilinaw nito ang nangyayari.
Hakbang 2: Paggawa Sa Dalawang Mga Sensor ng Temperatura - Mga Detalye
Gumagamit ang software na ito ng librong "OneWire". Hindi ito gumagamit ng anumang "DallasTemperature" o mga katulad na aklatan. Sa halip ang mga utos sa at data mula sa mga sensor ng temperatura ay ginagawa ng sketch at maaaring makita at madaling maunawaan. Natagpuan ko ang isang kapaki-pakinabang na listahan ng mga utos ng library ng OneWire sa
www.pjrc.com/teensy/td_libs_OneWire.html
Kapag mayroong dalawa (o higit pang) mga sensor ng temperatura, kinakailangan upang makilala kung alin ang alin.
Tinawag ko ang aking dalawang sensor na "in" at "out", na tipikal ng mga komersyal na unit na mayroong sensor sa display module na karaniwang "nasa loob", at ang iba pang sensor sa isang cable upang mailagay ito sa kabilang panig ng isang panlabas na pader at sa gayon ay "labas".
Ang karaniwang diskarte sa pagkilala ng iba't ibang mga probe ay upang matuklasan ang mga address ng aparato at ilagay ang mga ito sa software kasama ang isang tatak ng pagkilala. Ang lahat ng iba pang mga proyekto na nakita ko ay gumagamit ng pamamaraang ito, kung ginagamit nila o hindi ang library ng DallasTemperature o hindi.
Nilayon ko na ang software ay dapat na awtomatikong makilala ang mga sensor at wastong ilalaan ang mga ito sa "in" at "out". Ito ay sapat na madaling gawin sa pamamagitan ng paglalagay sa kanila sa magkakahiwalay na mga pin ng Arduino. Sa proyektong ito, ang A0 hanggang A3 at A6 at A7 lahat ay hindi nagamit, kaya't ang isa sa mga ito ay maaaring magamit sa kasong ito. Gayunpaman nagtagumpay ako sa pagkakaroon ng awtomatikong pagkakakilanlan na gawain sa mga sensor pareho sa iisang OneWire bus.
Gumagana ito ng ganito.
Ang silid-aklatan ng OneWire ay may isang utos na "OneWireObject.search (address)" kung saan ang "address" ay isang hanay ng 8 bytes at ang "OneWireObject" ay ang pangalan ng isang halimbawa ng isang bagay na OneWire na dating nilikha. Maaari itong magkaroon ng anumang pangalan na gusto mo. Ang minahan ay tinawag na "ds". Kapag naisyu mo ang utos na "paghahanap" na ito, ang library ng OneWire ay gumagawa ng ilang senyas sa isang wire bus. Kung nakakahanap ito ng isang tumutugon na sensor, nagbabalik ito ng isang "TUNAY" na halaga ng boolean at pinunan ang "address" na array na may 8 byte na natatanging pagkakakilanlan ng sensor. Ang identifier na ito ay nagsasama ng isang code ng pamilya (sa simula) at isang check sum (sa dulo). Sa pagitan ay 6 na byte na natatanging makilala ang sensor sa loob ng pamilya nito.
Ang isang resulta (address at return TRUE) ay nakuha sa tuwing ibibigay ang utos na ito, pagbibisikleta sa lahat ng mga aparato sa OneWire bus. Kapag tumugon na ang bawat aparato, sa susunod na maglabas ng "paghahanap", ang pagbalik ay "MALI", na nagpapahiwatig na ang bawat aparato sa bus ay tumugon na. Kung ang "paghahanap" ay naibigay muli, ang unang aparato ay tumutugon muli - at iba pa nang walang katiyakan. Palaging tumutugon ang mga aparato sa parehong pagkakasunud-sunod. Ang pagkakasunud-sunod ng mga tugon ay batay sa mga pagkakakilanlan ng mga aparato sa OneWire bus. Lumilitaw na isang paghahanap sa binary na nagsisimula mula sa hindi gaanong makabuluhang mga piraso ng mga pagkakakilanlan ng aparato. Ang protokol na ginamit upang hanapin ang mga pagkakakilanlan na ito ay medyo kumplikado, at inilalarawan sa mga pahina 51 - 54 ng dokumentong "Aklat ng Mga Pamantayan sa iButton" na isang dokumentong pdf sa https://pdfserv.maximintegrated.com/en/an/AN937.pd …
Sinubukan ko ang proseso ng paghahanap na ito mula sa 1 hanggang 11 na mga sensor sa isang solong bus, at natagpuan ang order ng tugon para sa isang naibigay na hanay ng mga aparato ay laging pareho, ngunit kapag nagdagdag ako ng isang bagong aparato sa dulo ng bus, walang paraan Mahuhulaan ko kung saan lilitaw ang order ng paghahanap. Halimbawa, ang ika-11 na sensor na idinagdag ko ay dumating sa posisyon na No.5; at ang unang sensor na inilagay ko sa bus ay ang huli sa huli sa order ng paghahanap.
Sa proyektong ito na may dalawang sensor, ang isa sa kanila ay na-solder sa lugar sa module ng RTC; ang isa pa ay naka-plug in gamit ang isang male header sa board at isang babaeng header sa cable. Madali itong maalis.
Kapag ang sensor sa cable (ang "out" sensor) ay hiwalay, ang utos na "paghahanap" ay gumagawa ng alternating "TRUE" at "FALSE" na babalik.
Kapag ang sensor sa cable ay nakakabit, ang utos na "paghahanap" ay gumagawa ng isang 3-yugto na ikot, na may dalawang "TUNAY" at isang "MALI" na nagbabalik.
Ang aking pamamaraan ay upang mag-isyu ng mga utos na "paghahanap" ng 1, 2 o 3, hanggang sa ibalik ang isang MALI na resulta. Pagkatapos ay naglalabas ako ng 2 pang mga "paghahanap" na utos. Kung ang pangalawa ay nabigo (ibig sabihin FALSE) Alam kong may isang sensor lamang sa bus at ito ang "in" sensor. Ang pagkakakilanlan ng aparato ay naitala at inilalaan sa sensor na "in".
Sa ibang oras, kung pareho ang una at pangalawang pagbabalik ay TUNAY, alam kong may dalawang sensor sa bus. Sinusuri ko kung alin sa kanila ang may pagkakakilanlang katumbas ng "in" sensor, at inilalaan ang isa pa bilang "out" sensor.
Ang iba pang menor de edad na punto ay ang pagtitipon ng mga resulta mula sa dalawang sensor ay ginagawa sa pamamagitan ng pagpapadala ng "simulan ang conversion" ng kung ano ang kilala bilang isang "laktawan ang ROM" na utos. Mayroon kaming pagpipilian na magpadala ng mga utos sa isang solong aparato (gamit ang natatanging pagkakakilanlan nito) o sa lahat ng mga aparato sa bus (laktawan ang ROM). Ganito ang code:
ds.reset (); //
// send "skip ROM" command (kaya't ang susunod na utos ay gumagana sa parehong mga sensor) ds.write (0xCC); // Skip ROM command ds.write (0x44, 0); // start conversion in both probes temperatura_state = wait_convert; // pumunta sa pagkaantala ng estado
Kapag ang kinakailangang oras ng pagkaantala ay lumipas, ang mga temperatura ay natatanggap mula sa bawat sensor nang paisa-isa. Narito ang code para sa pangalawang sensor (ie ang OUT sensor).
kung (flag2) {
kasalukuyan = ds.reset (); ds.select (DS18B20_addr_out); ds.write (0xBE); // Basahin ang Scratchpad ng "out" data ng pagsisiyasat [0] = ds.read (); data [1] = ds.read (); temperatura_out = (data [1] << 8) + data [0]; temperatura_out = (6 * temperatura_out) + temperatura_out / 4; // multiply by 6.25} else {// not flag2 - ie Out sensor not connected temperatura_out = 30000; // fix at 300.00 C if temp sensor not working} // end of if (flag2)
Ginawa ko ang halos lahat ng software na ito sa isang sketch na may stand na nag-iisa ang mga sensor ng temperatura dito, nang walang mga komplikasyon ng suporta sa LCD, RTC at SD card. Ang sketch ng pagbuo na ito ay nasa file sa ibaba.
Hakbang 3: Paunang Mga Resulta
Ang tsart na ito ay isang kumbinasyon ng unang dalawang bahagi-araw ng mga pagbabasa.
Inirerekumendang:
Gumamit ng Smartphone Bilang Hindi Makipag-ugnay sa Thermometer / Portable Thermometer: 8 Hakbang (na may Mga Larawan)
Gumamit ng Smartphone Bilang Hindi Makipag-ugnay sa Thermometer / Portable Thermometer: Pagsukat sa temperatura ng katawan sa hindi contact / contactless tulad ng isang thermo gun. Nilikha ko ang proyektong ito sapagkat ang Thermo Gun ngayon ay napakamahal, kaya dapat kumuha ako ng kahalili upang makagawa ng DIY. At ang layunin ay gumawa ng may mababang bersyon ng badyet. Mga SuportaMLX90614Ardu
HeadBot - isang Robot na Nagbabago ng Sarili para sa Pag-aaral at Pag-abot sa STEM: 7 Mga Hakbang (na may Mga Larawan)
HeadBot - isang Self-Balancing Robot para sa STEM Learning and Outreach: Headbot - isang dalawang talampakan ang taas, self-balancing robot - ay ang ideya ng South Eugene Robotics Team (SERT, FRC 2521), isang mapagkumpitensyang pangkat ng robotics ng high school sa UNA Kompetisyon ng Robotics, mula sa Eugene, Oregon. Ang sikat na robot sa pag-abot na ito ay ginagawang
Pag-iniksyon sa Keyboard / Awtomatikong I-type ang Iyong Password Sa Isang Pag-click !: 4 Mga Hakbang (na may Mga Larawan)
Pag-iniksyon sa Keyboard / Awtomatikong I-type ang Iyong Password Sa Isang Pag-click !: Mahirap ang mga password … at ang pag-alala sa isang ligtas ay mas mahirap pa! Bukod dito kung mayroon kang kasama, nagbabagong password ay magtatagal ito upang mai-type. Ngunit huwag matakot sa aking mga kaibigan, mayroon akong solusyon dito! Lumikha ako ng isang maliit na awtomatikong pag-type ng makina na
Roomblock: isang Platform para sa Pag-aaral ng Pag-navigate sa ROS Sa Roomba, Raspberry Pi at RPLIDAR: 9 Mga Hakbang (na may Mga Larawan)
Roomblock: isang Platform para sa Pag-aaral ng Pag-navigate sa ROS Sa Roomba, Raspberry Pi at RPLIDAR: Ano ito? &Quot; Roomblock " ay isang robot platform na binubuo ng isang Roomba, isang Raspberry Pi 2, isang laser sensor (RPLIDAR) at isang mobile baterya. Ang mounting frame ay maaaring gawin ng mga 3D printer. Pinapayagan ang sistema ng nabigasyon ng ROS na gumawa ng isang mapa ng mga silid at gamitin ang
Arduino Obstacle Pag-iwas sa Robot (Bersyon ng Pag-upgrade): 7 Mga Hakbang (na may Mga Larawan)
Arduino Obstacle Avoiding Robot (Upgrade Version): Ang post na ito ay unang nai-publish sa website na ito https://truesains22.blogspot.com/2018/01/arduino-obstacle-avoiding-robotupgrade.html Sagabal Pag-iwas sa Robot. Ito ay simple ngunit ilang tampok at