Turinys:

Temperatūros jutiklių bandymas - kuris man?: 15 žingsnių (su nuotraukomis)
Temperatūros jutiklių bandymas - kuris man?: 15 žingsnių (su nuotraukomis)

Video: Temperatūros jutiklių bandymas - kuris man?: 15 žingsnių (su nuotraukomis)

Video: Temperatūros jutiklių bandymas - kuris man?: 15 žingsnių (su nuotraukomis)
Video: TĖVAI PAPRASTAI apie patyčias ir bėgimą iš pamokų 2024, Lapkritis
Anonim
Temperatūros jutiklių bandymas - kuris man?
Temperatūros jutiklių bandymas - kuris man?

Vienas iš pirmųjų jutiklių, kuriuos nori išbandyti fizinio skaičiavimo naujokai, yra tai, kas matuoja temperatūrą. Keturi populiariausi jutikliai yra „TMP36“, turintis analoginį išėjimą ir kuriam reikalingas analoginis-skaitmeninis keitiklis, „DS18B20“, kuris naudoja vieno laido jungtį, „DHT22“arba šiek tiek pigesnis „DHT11“, kuriam reikia tik skaitmeninio kaiščio. pateikiamas drėgmės rodiklis, o galiausiai BME680, kuris naudoja I2C (su SPI taip pat kai kuriose pertraukimo plokštėse) ir suteikia temperatūrą, drėgmę, dujas (LOJ) ir atmosferos slėgį, tačiau kainuoja šiek tiek daugiau.

Noriu pamatyti, kokie tikslūs jie yra, ir atrasti visus privalumus ar trūkumus. Aš jau turiu tikslų gyvsidabrio termometrą, likusį nuo spalvoto fotografinio spausdinimo dar cheminio apdorojimo laikais, kad galėčiau juos palyginti. (Niekada nieko neišmeskite - jums to prireiks vėliau!)

Šiems bandymams naudosiu „CircuitPython“ir „Adafruit Itsybitsy M4“kūrimo plokštę. Visiems įrenginiams yra tinkamos tvarkyklės.

Prekės

Mano pradinis sąrašas:

  • Itybitsy M4 Express mikrovaldiklis
  • mikro USB kabelis - programavimui
  • TMP36
  • DS18B20
  • 4,7 K omų rezistorius
  • DHT22
  • BME680
  • Kelių metrų
  • Duonos lenta arba juostelių lenta
  • Jungiamasis laidas

1 žingsnis: grandinės

Grandinės
Grandinės

Oranžiniai laidai yra 3,3 V

Juodi laidai yra GND

Lentos apačioje yra įtampos matavimo bandymo taškai. (3.3v, GND ir TMP36 analoginis išėjimas)

Centriniai lizdai yra iš kairės į dešinę:

  • TMP36: 3.3v, analoginis signalas, GND
  • DS18B20: GND, skaitmeninis signalas, 3.3v
  • DHT22: 3.3v, signalas išeina, tuščias, GND
  • BME680: 3.3v, SDA, SCL, tuščias, GND

Galinė jungtis, skirta prijungti prie IB M4E plokštės, iš kairės į dešinę

  • 3.3v
  • TMP36 - analogas iki kaiščio A2
  • GND
  • DS18B20 skaitmeninė išvestis į D3 kaištį - žalia
  • DHT22 skaitmeninė išvestis į D2 kaištį - geltona
  • SDA - balta
  • SCL - rožinė

4,7 K omų rezistorius yra traukimas nuo signalo iki 3,3 V, norint prijungti 0 laidų DS18B20.

Lentos gale yra 2 supjaustyti takeliai:

Žemiau rausvos ir baltos vielos kairysis galas. (Po geltona viela.)

2 žingsnis: metodas

Metodas
Metodas

Kiekvienam jutikliui parašysiu trumpą scenarijų, kaip kelis kartus perskaityti temperatūrą (ir kitus elementus, jei yra) ir patikrinti temperatūrą, palyginti su mano gyvsidabrio (Hg) termometru. Aš stebėsiu, kaip temperatūra yra lygi gyvsidabrio rodmenims ir ar rodmenys yra pastovūs/nuoseklūs.

Taip pat peržiūrėsiu dokumentus, norėdamas pamatyti, ar rodmenys atitinka numatytą tikslumą ir ar galima ką nors padaryti, kad būtų patobulinta.

3 žingsnis: TMP36 - pradinis bandymas

TMP36 - pradinis bandymas
TMP36 - pradinis bandymas
TMP36 - pradinis bandymas
TMP36 - pradinis bandymas

Kairė koja yra 3.3v, dešinė - GND, o centrinė - analoginė įtampa, atspindinti temperatūrą pagal šią formulę. TempC = (milivoltai - 500) / 10

Taigi 750 milivoltų duoda 25 C temperatūrą

Atrodo, kad čia yra pora problemų. Temperatūra iš „įprasto“gyvsidabrio termometro yra daug žemesnė nei iš TMP36, o rodmenys nėra labai nuoseklūs - yra šiek tiek drebėjimo ar triukšmo.

TMP36 jutiklis siunčia įtampą, proporcingą temperatūrai. Prieš apskaičiuojant temperatūrą, tai turi perskaityti A/D keitiklis. Kelių metrų matuokliu nuskaitykime įtampą tiesiai iš jutiklio vidurinės kojos ir palyginkime ją su A/D rezultatu. Mano daugiametris rodmuo nuo vidurinės kojos yra 722 milivoltai, daug mažesnis ir labai pastovus.

Yra du dalykai, kuriuos galime išbandyti. Pakeiskite TMP36 potenciometrą ir apskaičiuodami sureguliuokite įtampą pagal faktinę mikrovaldiklio įtampą. Tada pamatysime, ar apskaičiuota įtampa yra arčiau ir ar sumažėja triukšmas/nervingumas.

Išmatuokime tikrąją įtampą, naudojamą mano mikrovaldiklyje ir A/D. Buvo manoma, kad tai yra 3.3v, bet iš tikrųjų yra tik 3.275v.

4 žingsnis: potenciometro pakeitimo rezultatai

Potenciometro keitimo rezultatai
Potenciometro keitimo rezultatai

Tai daug geriau. Rodmenys yra keli milivoltai, o triukšmas yra daug mažesnis. Tai rodo, kad triukšmas kyla iš TMP36, o ne iš A/D. Skaitiklio rodmenys visada yra pastovūs - nėra drebėjimo. (Skaitiklis gali „išlyginti“nervingumą.)

Vienas iš būdų pagerinti situaciją gali būti vidutinis rodiklis. Greitai atlikite dešimt rodmenų ir naudokite vidurkį. Keisdamas programą taip pat apskaičiuosiu standartinį nuokrypį, kad galėčiau parodyti rezultatų sklaidą. Taip pat skaičiuosiu rodmenų skaičių per 1 standartinį nuokrypį nuo vidurkio - kuo didesnis, tuo geriau.

5 žingsnis: vidutiniai rodmenys ir rezultatas

Vidutiniai rodmenys ir rezultatas
Vidutiniai rodmenys ir rezultatas

Vis dar yra daug triukšmo, o TMP36 rodmenys vis dar yra didesni nei iš gyvsidabrio termometro. Norėdami sumažinti triukšmą, tarp signalo ir GND įtraukiau 100NF kondensatorių

Tada aš ieškojau kitų sprendimų internete ir radau šiuos: https://www.doctormonk.com/2015/02/accurate-and-re… Dr Monk siūlo tarp signalo ir GND įtraukti 47 k omų rezistorių.

www.desert-home.com/2015/03/battery-operate… Nors šis vaikinas siūlo suskirstyti 15 rodmenų į eilę ir apskaičiuoti centro vidurkį 5.

Aš pakeičiau scenarijų ir grandinę, kad būtų įtraukti šie pasiūlymai, ir įtraukiau gyvsidabrio termometro rodmenis.

Pagaliau! Dabar turime pastovius rodmenis prietaiso aprašymo tikslumo diapazone.

Tai buvo gana daug pastangų, kad veiktų jutiklis, kurio gamintojo tikslumas yra tik:

Tikslumas - aukščiausias (žemiausias): ± 3 ° C (± 4 ° C) Jie kainuoja tik apie 1,50 USD (2 £)

6 žingsnis: DS18B20 - pradinis bandymas

DS18B20 - pradinis bandymas
DS18B20 - pradinis bandymas

Būkite labai atsargūs. Šis paketas atrodo labai panašus į TMP36, tačiau kojos yra atvirkščiai: 3.3v dešinėje ir GND kairėje. Išėjimo signalas yra centre. Kad šis įrenginys veiktų, mums reikia 4,7 kΩ omo rezistoriaus tarp signalo ir 3,3 V. Šis įrenginys naudoja vieno laido protokolą, ir mes turime atsisiųsti keletą tvarkyklių į „Itsybitsy M4 Express“lib aplanką.

Tai kainuoja apie $ 4 / £ 4 Techninės specifikacijos:

  • Naudojamas temperatūros diapazonas: nuo -55 iki 125 ° C (nuo -67 ° F iki +257 ° F)
  • 9-12 bitų pasirenkama skiriamoji geba
  • Naudojama 1 laido sąsaja - bendravimui reikalingas tik vienas skaitmeninis kaištis
  • Unikalus 64 bitų ID įrašytas į lustą
  • Keli jutikliai gali dalintis vienu kaiščiu
  • ± 0,5 ° C Tikslumas nuo -10 ° C iki +85 ° C
  • Temperatūros ribos signalizacijos sistema
  • Užklausos laikas yra trumpesnis nei 750 ms
  • Galima naudoti nuo 3,0 V iki 5,5 V.

Pagrindinė šio jutiklio problema yra ta, kad jis naudoja „Dallas 1-Wire“sąsają ir ne visi mikrovaldikliai turi tinkamą tvarkyklę. Mums pasisekė, yra „Itsybitsy M4 Express“vairuotojas.

7 žingsnis: DS18B20 veikia gerai

DS18B20 veikia gerai
DS18B20 veikia gerai

Tai rodo puikų rezultatą.

Pastovus rodmenų rinkinys be jokio papildomo darbo ir skaičiavimo pridėtinių išlaidų. Rodmenys yra tikėtini ± 0,5 ° C tikslumo diapazone, palyginti su mano gyvsidabrio termometru.

Taip pat yra neperšlampama versija, kurios kaina yra apie 10 USD, kurią anksčiau naudojau vienodai sėkmingai.

8 žingsnis: DHT22 ir DHT11

DHT22 ir DHT11
DHT22 ir DHT11

DHT22 naudoja termistorių temperatūrai gauti ir kainuoja apie 10 USD / 10 svarų ir yra tikslesnis ir brangesnis mažesnio DHT11 brolis. Jis taip pat naudoja vieno laido sąsają, tačiau nėra suderinamas su Dalaso protokolu, naudojamu su DS18B20. Jis jaučia drėgmę ir temperatūrą. Šiems įrenginiams kartais reikia traukimo varžos tarp 3,3 V ir signalo kaiščio. Šis paketas jau yra įdiegtas.

  • Žema kaina
  • Nuo 3 iki 5 V maitinimo ir įvesties/išvesties
  • 2,5 mA maksimalus dabartinis naudojimas konversijos metu (prašant duomenų)
  • Tinka 0–100% drėgmės rodmenims 2–5% tikslumu
  • Tinka nuo -40 iki 80 ° C temperatūros rodmenims ± 0,5 ° C tikslumui
  • Ne daugiau kaip 0,5 Hz mėginių ėmimo dažnis (kartą per 2 sekundes)
  • Kūno dydis 27 mm x 59 mm x 13,5 mm (1,05 x 2,32 x 0,53 colio)
  • 4 kaiščiai, 0,1 colio tarpai
  • Svoris (tik DHT22): 2,4 g

Palyginti su DHT11, šis jutiklis yra tikslesnis, tikslesnis ir veikia didesniame temperatūros/drėgmės diapazone, tačiau yra didesnis ir brangesnis.

9 žingsnis: DHT22 rezultatai

DHT22 rezultatai
DHT22 rezultatai

Tai puikūs rezultatai su labai mažomis pastangomis. Rodmenys yra gana pastovūs ir atitinka numatytą toleranciją. Drėgmės rodmenys yra premija.

Galite skaityti tik kiekvieną sekundę.

10 žingsnis: DTH11 testas

DTH11 testas
DTH11 testas

Mano gyvsidabrio termometras rodė 21,9 laipsnių C. Tai gana senas DHT11, gautas iš seno projekto, o drėgmės vertė labai skiriasi nuo DHT22 rodmenų prieš kelias minutes. Tai kainuoja apie 5 USD / 5 GBP.

Jo aprašymas apima:

  • Tinka 20–80% drėgmės rodmenims 5% tikslumu
  • Tinka 0-50 ° C temperatūros rodmenims ± 2 ° C tikslumas - mažesnis nei DTH22

Atrodo, kad temperatūra vis dar yra tikslumo diapazone, tačiau aš nepasitikiu šio seno prietaiso drėgmės rodmenimis.

11 veiksmas: BME680

BME680
BME680

Šiame jutiklyje yra temperatūra, drėgmė, barometrinis slėgis ir LOJ dujų jutikliai vienoje pakuotėje, tačiau jis yra pats brangiausias iš čia išbandytų jutiklių. Tai kainuoja apie 18,50 GBP / 22 USD. Yra panašus produktas be dujų jutiklio, kuris yra šiek tiek pigesnis.

Tai aukso standarto jutiklis iš penkių. Temperatūros jutiklis yra tikslus, o su tinkamomis tvarkyklėmis labai paprasta naudoti. Šioje versijoje naudojamas I2C, tačiau „Adafruit“pertraukimo lenta taip pat gali naudoti SPI.

Šis „Bosch“jutiklis, kaip ir BME280 ir BMP280, gali išmatuoti drėgmę ± 3% tikslumu, barometrinį slėgį su ± 1 hPa absoliučiu tikslumu ir temperatūrą ± 1,0 ° C tikslumu. Kadangi slėgis kinta priklausomai nuo aukščio ir matuojami labai gerai, jį taip pat galite naudoti kaip aukščio matuoklį, kurio tikslumas yra ± 1 metras arba geresnis!

Dokumentuose teigiama, kad dujų jutikliui reikia „įdegimo laiko“.

12 žingsnis: kurį turėčiau naudoti?

Kurį turėčiau naudoti?
Kurį turėčiau naudoti?
  • TMP36 yra labai pigus, mažas ir populiarus, tačiau gana sunkiai naudojamas ir gali būti netikslus.
  • DS18B20 yra mažas, tikslus, pigus, labai paprastas naudoti ir turi vandeniui atsparią versiją.
  • DTH22 taip pat rodo drėgmę, yra vidutinės kainos ir lengvai naudojamas, tačiau gali būti per lėtas.
  • BME680 daro daug daugiau nei kiti, tačiau yra brangus.

Jei tik noriu temperatūros, aš naudoju DS18B20 ± 0,5 ° C tikslumu, bet mano mėgstamiausias yra BME680, nes jis daro daug daugiau ir gali būti naudojamas daugelyje skirtingų projektų.

Viena paskutinė mintis. Įsitikinkite, kad temperatūros jutiklis yra toli nuo mikroprocesoriaus. Kai kurios „Raspberry Pi“skrybėlės leidžia šilumai iš pagrindinės plokštės sušildyti jutiklį, o tai rodo klaidingą rodmenį.

13 žingsnis: tolesnės mintys ir eksperimentai

Tolesnės mintys ir eksperimentai
Tolesnės mintys ir eksperimentai

Ačiū gulliverrr, ChristianC231 ir pgagen už pastabas apie tai, ką iki šiol padariau. Atsiprašau už vėlavimą, bet aš atostogavau Airijoje, porą savaičių neturėdamas prieigos prie savo elektronikos rinkinio.

Štai pirmasis bandymas parodyti, kad jutikliai veikia kartu.

Parašiau scenarijų, kad paeiliui skaitytų jutiklius ir kas 20 sekundžių išspausdintų temperatūros vertes.

Aš įdėjau rinkinį į šaldytuvą valandai, kad viskas atvėstų. Aš prijungiau jį prie kompiuterio ir privertiau Mu spausdinti rezultatus. Tada išvestis buvo nukopijuota, paversta.csv failu (kableliais atskirti kintamieji), o diagramos sudarytos iš „Excel“rezultatų.

Praėjus maždaug trims minutėms nuo rinkinio išėmimo iš šaldytuvo, kol rezultatai buvo užfiksuoti, taigi per šį laikotarpį įvyko tam tikras temperatūros kilimas. Įtariu, kad keturių jutiklių šiluminė galia yra skirtinga, todėl jie įkaista skirtingu greičiu. Tikimasi, kad atšilimo greitis sumažės, kai jutikliai priartės prie kambario temperatūros. Savo gyvsidabrio termometru tai užfiksavau kaip 24,4 ° C.

Dideli temperatūrų skirtumai kreivių pradžioje gali būti susiję su skirtingais jutiklių šiluminiais pajėgumais. Man malonu matyti, kad artėjant prie kambario temperatūros linijos artėja prie pabaigos. Aš nerimauju, kad TMP36 visada yra daug didesnis nei kiti jutikliai.

Pažvelgiau į duomenų lapus ir dar kartą patikrinau aprašytą šių įrenginių tikslumą

TMP36

  • ± 2 ° C tikslumas virš temperatūros (tipas)
  • ± 0,5 ° C tiesiškumas (tip)

DS18B20

± 0,5 ° C Tikslumas nuo -10 ° C iki +85 ° C

DHT22

temperatūra ± 0,5 ° C

BME680

temperatūra ± 1,0 ° C tikslumu

14 žingsnis: visa diagrama

Pilnas grafikas
Pilnas grafikas

Dabar galite pamatyti, kad jutikliai ilgainiui išsilygino ir sutarė dėl temperatūros daugiau ar mažiau pagal aprašytą tikslumą. Jei nuo TMP36 verčių nuimama 1,7 laipsnio (tikimasi ± 2 ° C), visi jutikliai gerai sutaria.

Kai pirmą kartą atlikau šį eksperimentą, DHT22 jutiklis sukėlė problemą:

main.py išvestis:

14.9, 13.5, 10.3, 13.7

15.7, 14.6, 10.5, 14.0

16.6, 15.6, 12.0, 14.4

18.2, 16.7, 13.0, 15.0

18.8, 17.6, 14.0, 15.6

19.8, 18.4, 14.8, 16.2

21.1, 18.7, 15.5, 16.9

21.7, 19.6, 16.0, 17.5

22.4, 20.2, 16.5, 18.1

23.0, 20.7, 17.1, 18.7

DHT skaitymo klaida: („DHT jutiklis nerastas, patikrinkite laidus“,)

Atsekimas (paskutinis paskutinis skambutis):

Failas „main.py“, 64 eilutė

Failas „main.py“, 59 eilutė, „get_dht22“

NameError: vietinis kintamasis, nurodytas prieš priskiriant

Taigi pakeičiau scenarijų, kad galėčiau susidoroti su šia problema, ir iš naujo įrašiau:

DHT skaitymo klaida: („DHT jutiklis nerastas, patikrinkite laidus“,)

25.9, 22.6, -999.0, 22.6

DHT skaitymo klaida: („DHT jutiklis nerastas, patikrinkite laidus“,)

25.9, 22.8, -999.0, 22.7

25.9, 22.9, 22.1, 22.8

25.9, 22.9, 22.2, 22.9

DHT skaitymo klaida: („DHT jutiklis nerastas, patikrinkite laidus“,)

27.1, 23.0, -999.0, 23.0

DHT skaitymo klaida: („DHT jutiklis nerastas, patikrinkite laidus“,)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

DHT skaitymo klaida: („DHT jutiklis nerastas, patikrinkite laidus“,)

28.4, 23.2, -999.0, 23.3

DHT skaitymo klaida: („DHT jutiklis nerastas, patikrinkite laidus“,)

26.8, 23.1, -999.0, 23.3

26.5, 23.2, 23.0, 23.4

26.4, 23.3, 23.0, 23.5

26.4, 23.4, 23.1, 23.5

26.2, 23.3, 23.1, 23.6

Su antruoju važiavimu neturėjau jokių problemų. „Adafruit“dokumentai įspėja, kad kartais DHT jutikliai praleidžia rodmenis.

15 žingsnis: Išvados

Išvados
Išvados

Ši kreivė aiškiai rodo, kad didesnė kai kurių jutiklių šiluminė talpa padidina jų reakcijos laiką.

Visi jutikliai fiksuoja temperatūros kilimą ir kritimą.

Jie nėra labai greitai pripratę prie naujos temperatūros.

Jie nėra labai tikslūs. (Ar jie pakankamai geri oro stotims?)

Jums gali tekti kalibruoti jutiklį pagal patikimą termometrą.

Rekomenduojamas: