Mayroong iba't ibang mga kahalumigmigan at temperatura sensor na magagamit, tulad ng ang LM35. Ang ilan ay binuo sa mga modyul para sa tiyak na paggamit sa Arduino. Ngunit sa pangkalahatan, susukatin nila ang tuyong temperatura, iyon ay, temperatura ng hangin. Ngunit may isang kongkretong modelo na gumagana para sa sukatin ang temperatura sa mga likido at tinatawag itong DS18B20. Ang isang kakaibang kakaibang maaaring magamit para sa ilan sa iyong mas kakaibang mga proyekto sa DIY kung saan naglalaro ka rin ng ilang uri ng likido kung saan kailangan mong malaman ang parameter na ito.
Sa totoo lang ang DS18B20 ay hindi lamang sumusukat ng temperatura sa loob ng mga likido, ngunit maaari itong maging napaka kapaki-pakinabang upang masukat ang temperatura sa mahalumigmig na mga kapaligiran at nasa ilalim din ng ilang likido. Maaari mo ring gamitin ito upang masukat ang temperatura ng hangin kung ang kapaligiran ay lubos na puno ng kahalumigmigan. At tulad ng sinabi ko, ang tampok ng kakayahang isawsaw ito sa isang likido upang masukat ang temperatura nito ay isa sa mga tampok na ginagawang hindi kapani-paniwala praktikal.
Ano ang DS18B20?
Sa gayon, sa palagay ko naging malinaw na ito, ito ay isang elektronikong sensor na may kakayahang sukatin ang temperatura ng gas o likidong media. Bilang karagdagan, may mga iba't ibang mga pakete o pakete ng DS18B20, tulad ng pangunahing nakikita mo sa pangunahing imahe, o maaari rin itong isama sa ilang mga PCB, submersible probe, atbp. Para sa iyong proyekto dapat mong piliin ang pinakaangkop na format alinsunod sa gusto mo.
Halimbawa, bukod sa tipikal na TO-92, mayroon ding microSOP. Posibleng maisama kasama ang Arduino na pinakaangkop ay ang TO-92, dahil sa tatlong mga pin nito napakadaling ipasok sa breadboard para sa koneksyon.
pinout
El DS18B20 pinout madali itong makilala. Halimbawa, pagkuha bilang sanggunian sa pakete ng Dallas TO-92, na kung saan ay isa sa pinakatanyag, maaari mong makita na mayroon itong tatlong mga pin. Kung inilagay mo ito mula sa harap, iyon ay, sa bilugan na seksyon sa likod at pagtingin sa patag na mukha kung saan lilitaw ang mga inskripsiyon, ang pin sa iyong kaliwa ay 1 at ang isa sa iyong kanan ay 3. Samakatuwid, ang 1 ay para sa GND o ground, 2 ay para sa data at 3 para sa supply voltage.
Narito kailangan nating sabihin iyon, mga halagang dapat mong malaman:
- Pin 1: dapat mong ikonekta ito sa pin ng GND ng Arduino, iyon ay, sa 0v.
- Pin 2: ang pin na ito ay DQ o data, ang isa na magpapadala ng mga temperatura na sinusukat ng sensor sa Arduino sa pamamagitan ng isang partikular na protocol na kilala bilang 1-Wire at kakailanganin ng isang espesyal na silid-aklatan at pagpapaandar para sa Arduino IDE. Papayagan nito ang paggamit lamang ng isang Arduino pin upang kumonekta sa maraming mga sensor sa protokol na ito ...
- Pin 3: Maaari itong mapagana mula 3 hanggang 5,5v, upang maikonekta mo ito sa 5v na output ng Arduino.
Teknikal na katangian ng DS18B20 at datasheet
Tulad ng dati, ito ay kagiliw-giliw na malaman ang mga teknikal na katangian ng sensor upang malaman kung paano ito gumagana, upang hindi ito mapinsala, at higit sa lahat upang malaman natin kung nasaan ang mga limitasyon sa pagsukat nito, dahil kung ang mga halagang nais nating sukatin ay wala sa pagitan nila, hindi ito makakatulong sa amin at dapat kang maghanap ng ibang kahalili.
Upang magawa ito, pinakamahusay na mag-download ng a datasheet ng tagagawa, tulad ng sa Dallas na makikita mo dito. Mahahanap mo doon ang lahat ng kinakailangang impormasyon. At tandaan na kahit na ang lahat ng DS18B20 ay maaaring magkatulad, depende sa tagagawa o pakete maaari kang makahanap ng ilang mga pagbabago ...
Ngunit anuman ang mga quirks, narito ang ilan pangunahing datos ng panteknikal:
- Saklaw ng temperatura: -55 hanggang 125ºC, samakatuwid, maaari itong sukatin sa gas o likido sa napakababang at mataas din ang temperatura.
- Mga pagkakamali: ang DS18B20 ay sensitibo sa panlabas na ingay o mga kaguluhan na maaaring magbigay ng mga maling halaga sa mga sukat. Ang margin ng error ay plus minus 2ºC, bagaman sa temperatura sa pagitan ng -10ºC at 85ºC, iyon ay, kapag hindi tayo malapit sa mga limitasyon, maaari lamang itong kalahating degree.
- Paglutas: Maaari kang gumana sa maraming mga resolusyon o kaunting mga pagkakaiba-iba na maaari mong makita sa mga Arduino analog pin. Sinusuportahan ang 9-bit, 10-bit, 11-bit, at 12-bit (default). Iyon ay, maaari itong sukatin mula sa kalahati hanggang kalahating degree, mula isang isang-kapat hanggang isang-kapat ng isang degree, mula 0,125 hanggang 0,125ºC, o mula sa 0,0625ºC ayon sa pagkakabanggit. Maaari mong baguhin ang program na ito sa pamamagitan ng code ng programa.
- Supply boltahe: 3 hanggang 5,5v
- presyo: 1 hanggang 3 €
Pagsasama sa Arduino
Bagaman mayroong iba't ibang mga paraan upang ikonekta ito, ang pinakaangkop ay ang nakikita mo sa diagram na ito. Ito ay medyo simple, kasama ang GND pin sa kaukulang koneksyon ng Arduino board, pareho ang supply ng kuryente at pagkatapos ay ang data sa Arduino analog na napili mo sa iyong code ng programa sa Arduino IDE. Ngunit mahusay din na magtakda ng isang 4,7k pull-up risistor (kung ang distansya ng sensor ng pagsisiyasat ng sensor ay mas malaki, ang paglaban ay dapat na mas mababa, halimbawa, para sa 5m ng 3,3k, para sa 10 ng 2,2, XNUMXk,…) para sa data pin at sa gayon panatilihin itong laging mataas.
Para sa programa sa Arduino IDE at ang mahusay na pagsasama nito sa DS18B20 at ang partikular na partikular na protokol, inirerekumenda na i-download mo ang mga aklatan Temperatura ng Dallas y OneWire mula sa kapaligiran. At ang batayang code, maaaring ito ay tulad ng halimbawang ito na ipinapakita ko:
#include <OneWire.h> #include <DallasTemperature.h> // Pin donde se conecta el bus 1-Wire (DQ) const int pinDatosDQ = 9; // Instancia a las clases OneWire y DallasTemperature OneWire oneWireObjeto(pinDatosDQ); DallasTemperature sensorDS18B20(&oneWireObjeto); void setup() { // Iniciamos la comunicación serie a 9600 baudios Serial.begin(9600); // Iniciamos el bus 1-Wire del sensor sensorDS18B20.begin(); } void loop() { // Indicamos que tome la temperatura Serial.println("Midiendo temperatura"); sensorDS18B20.requestTemperatures(); // Lee y muestra la temperatura (recuerda que puedes conectar más de uno con 1-wire) Serial.print("La temperatura del sensor 0 es de: "); Serial.print(sensorDS18B20.getTempCByIndex(0)); Serial.println(" C"); Serial.print("La temperatura del sensor x es de: "); Serial.print(sensorDS18B20.getTempCByIndex(1)); Serial.println(" ºC"); delay(1000); }
Karagdagang impormasyon - Manwal sa Programming ng Arduino (Libreng PDF)