Talaan ng mga Nilalaman:

Pagsubok ng Mga Sensor ng Temperatura - Alin sa Akin ?: 15 Hakbang (na may Mga Larawan)
Pagsubok ng Mga Sensor ng Temperatura - Alin sa Akin ?: 15 Hakbang (na may Mga Larawan)

Video: Pagsubok ng Mga Sensor ng Temperatura - Alin sa Akin ?: 15 Hakbang (na may Mga Larawan)

Video: Pagsubok ng Mga Sensor ng Temperatura - Alin sa Akin ?: 15 Hakbang (na may Mga Larawan)
Video: ОБЫЧНЫЙ СВАРОЧНИК БОЛЬШЕ НЕ НУЖЕН! Невероятно, но факт! 2024, Nobyembre
Anonim
Pagsubok ng Mga Sensor ng Temperatura - Alin sa Akin?
Pagsubok ng Mga Sensor ng Temperatura - Alin sa Akin?

Ang isa sa mga unang sensor na nais ng mga bagong dating sa pisikal na pag-compute ay isang bagay upang masukat ang temperatura. Apat sa mga pinakatanyag na sensor ay ang TMP36, na mayroong output ng analogue at nangangailangan ng isang analogue sa digital converter, ang DS18B20, na gumagamit ng isang-wire na pagkakakonekta, ang DHT22, o ang bahagyang mas murang DHT11, na nangangailangan lamang ng isang digital pin, ngunit din nagbibigay ng isang pagbabasa ng kahalumigmigan, at panghuli ang BME680 na gumagamit ng I2C (na may SPI pati na rin sa ilang mga breakout board) at nagbibigay ng temperatura, halumigmig, gas (VOC) at presyon ng atmospera ngunit medyo kaunti ang gastos.

Nais kong makita kung gaano katumpak ang mga ito, at matuklasan ang anumang mga pakinabang o kawalan. Nagmamay-ari na ako ng isang tumpak na thermometer ng mercury, naiwan mula sa kulay na pag-print ng larawan pabalik sa mga araw ng pagproseso ng kemikal, upang ihambing ang mga ito laban. (Huwag kailanman magtapon ng anumang bagay - kakailanganin mo ito sa paglaon!)

Gagamitin ko ang CircuitPython at isang Adafruit Itsybitsy M4 development board para sa mga pagsubok na ito. Ang mga naaangkop na driver ay magagamit para sa lahat ng mga aparato.

Mga gamit

Ang aking paunang listahan:

  • Itsybitsy M4 Express microcontroller
  • micro USB cable - para sa programa
  • TMP36
  • DS18B20
  • 4.7K Ohm risistor
  • DHT22
  • BME680
  • Multi-meter
  • Breadboard o strip board
  • Nag-uugnay sa kawad

Hakbang 1: Mga Circuits

Circuits
Circuits

Ang mga orange na wire ay 3.3 V

Ang mga itim na wire ay GND

Sa ilalim ng board ay ang mga puntos ng pagsubok para sa pagsukat ng mga voltages. (3.3v, GND at TMP36 analogue output)

Ang mga gitnang socket ay, kaliwa hanggang kanan:

  • TMP36: 3.3v, analogue signal out, GND
  • DS18B20: GND, digital signal out, 3.3v
  • DHT22: 3.3v, signal out, walang laman, GND
  • BME680: 3.3v, SDA, SCL, walang laman, GND

Ang likurang konektor, para sa koneksyon sa board ng IB M4E, kaliwa hanggang kanan

  • 3.3v
  • TMP36 - analogue upang i-pin ang A2
  • GND
  • Digital ang DS18B20 upang i-pin ang D3 - berde
  • DHT22 digital upang i-pin ang D2 - dilaw
  • SDA - puti
  • SCL - kulay rosas

Ang 4.7K Ohm resistor ay isang pullup mula sa signal hanggang 3.3v para sa 0ne-wire na koneksyon sa DS18B20.

Mayroong 2 mga cut track sa likod ng board:

Sa ibaba ng kaliwang dulo ng parehong kulay rosas at puting mga wire. (Sa ilalim ng dilaw na kawad.)

Hakbang 2: Pamamaraan

Pamamaraan
Pamamaraan

Para sa bawat sensor magsusulat ako ng isang maikling script upang mabasa ang temperatura (at iba pang mga item kung magagamit) nang maraming beses at suriin ang temperatura laban sa aking thermometer ng mercury (Hg). Hahanapin ko kung gaano kalapit ang temperatura kumpara sa pagbabasa ng mercury at kung ang pagbabasa ay matatag / pare-pareho.

Titingnan ko din ang dokumentasyon upang makita kung ang mga pagbasa ay umaangkop sa loob ng inaasahang kawastuhan at kung may anumang maaaring magawa upang makapagbuti.

Hakbang 3: TMP36 - Paunang Pagsubok

TMP36 - Paunang Pagsubok
TMP36 - Paunang Pagsubok
TMP36 - Paunang Pagsubok
TMP36 - Paunang Pagsubok

Ang kaliwang binti ay 3.3v, ang kanang binti ay GND at ang gitnang binti ay isang boltahe ng analogue na kumakatawan sa temperatura gamit ang sumusunod na pormula. TempC = (millivolts - 500) / 10

Kaya, 750 millivolts ay nagbibigay ng temperatura na 25 C

Lumilitaw na isang pares ng mga problema dito. Ang temperatura mula sa 'normal', mercury thermometer, ay mas mababa kaysa sa TMP36 at ang mga pagbasa ay hindi masyadong pare-pareho - mayroong ilang 'jitter' o ingay.

Ang sensor ng TMP36 ay nagpapadala ng isang proporsyonal na boltahe sa temperatura. Dapat itong basahin ng converter ng A / D bago makalkula ang temperatura. Basahin natin nang direkta ang boltahe mula sa sensor middle leg na may isang multi-meter at ihambing ito sa resulta mula sa A / D. Ang pagbabasa mula sa gitnang binti kasama ang aking multi-meter ay 722 millivolts, mas mababa at isang napakatatag na pagbabasa.

Mayroong dalawang bagay na maaari nating subukan. Palitan ang isang potensyomiter para sa TMP36 at ayusin ang boltahe sa pagkalkula sa aktwal na boltahe ng microcontroller. Susubukan naming makita kung ang kinakalkula na boltahe ay mas malapit at kung ang ingay / jitter ay nabawasan.

Sukatin natin ang aktwal na boltahe na ginagamit ang aking microcontroller at ang A / D. Ito ay ipinapalagay sa 3.3v ngunit talagang 3.275v lamang.

Hakbang 4: Mga Resulta ng Pagpapalit ng Potentiometer

Mga Resulta ng Pagpapalit ng Potentiometer
Mga Resulta ng Pagpapalit ng Potentiometer

Ito ay mas mahusay. Ang mga pagbasa ay nasa loob ng isang pares ng mga millivolts na may mas kaunting ingay. Ipinapahiwatig nito na ang ingay ay mula sa TMP36 kaysa sa A / D. Ang pagbabasa sa metro ay palaging matatag - walang jitter. (Ang metro ay maaaring 'makinis' ang masasamang output.)

Ang isang paraan ng pagpapabuti ng sitwasyon ay maaaring ang pagkuha ng isang average na pagbabasa. Kumuha ng sampung pagbasa nang mabilis at gamitin ang average. Kalkulahin ko rin ang karaniwang paglihis habang binabago ko ang programa, upang magbigay ng isang pahiwatig ng pagkalat ng mga resulta. Bibilangin ko rin ang bilang ng mga pagbasa sa loob ng 1 karaniwang paglihis ng ibig sabihin - mas mataas mas mabuti.

Hakbang 5: Average na Mga Pagbasa at isang Resulta

Karaniwang Pagbasa at isang Resulta
Karaniwang Pagbasa at isang Resulta

Mayroon pa ring isang mahusay na ingay at ang pagbabasa mula sa TMP36 ay mas mataas pa rin kaysa sa mula sa mercury thermometer. Upang mabawasan ang ingay isinama ko ang isang 100NF capacitor sa pagitan ng signal at GND

Pagkatapos ay naghanap ako ng iba pang mga solusyon sa internet at nahanap ang mga ito: https://www.doctormonk.com/2015/02/accurate-and-re… iminungkahi ni Dr Monk na kasama ang isang 47 k Ohm risistor sa pagitan ng signal at GND.

www.desert-home.com/2015/03/battery-operate… Habang ang taong ito ay nagmumungkahi ng pag-uuri ng 15 na pagbasa sa pagkakasunud-sunod at pag-average sa center 5.

Binago ko ang script at ang circuit upang isama ang mga mungkahing ito at nagsama ng isang pagbabasa mula sa mercury thermometer.

Sa wakas! Ngayon mayroon kaming mga matatag na pagbabasa sa loob ng saklaw ng katumpakan ng paglalarawan ng aparato.

Ito ay lubos na maraming pagsisikap upang makakuha ng sensor na gumagana na mayroon lamang katumpakan ng isang tagagawa.

Katumpakan - Pinakamataas (Pinakababa): ± 3 ° C (± 4 ° C) Halos $ 1.50 (£ 2) lang ang gastos

Hakbang 6: DS18B20 - Paunang Pagsubok

DS18B20 - Paunang Pagsubok
DS18B20 - Paunang Pagsubok

Magingat. Ang pakete na ito ay mukhang katulad sa TMP36 ngunit ang mga binti ay baluktot na may 3.3v sa kanan at GND sa kaliwa. Ang signal out ay nasa gitna. Upang maandar ang aparatong ito kailangan namin ng 4.7 k Ohm risistor sa pagitan ng signal at 3.3v. Gumagamit ang aparatong ito ng one-wire protocol at kailangan naming mag-download ng ilang mga driver sa lib folder ng Itsybitsy M4 Express.

Nagkakahalaga ito ng humigit-kumulang na $ 4 / £ 4 Mga teknikal na pagtutukoy:

  • Magagamit na saklaw ng temperatura: -55 hanggang 125 ° C (-67 ° F hanggang + 257 ° F)
  • 9 hanggang 12 bit na mapipiling resolusyon
  • Gumagamit ng 1-Wire interface - nangangailangan lamang ng isang digital pin para sa komunikasyon
  • Natatanging 64 bit ID na sinunog sa maliit na tilad
  • Maaaring magbahagi ang isang maramihang mga sensor ng isang pin
  • ± 0.5 ° C Ganap na kawastuhan mula -10 ° C hanggang + 85 ° C
  • Sistema ng alarma na limitado sa temperatura
  • Ang oras ng pagtatanong ay mas mababa sa 750ms
  • Magagamit na may lakas na 3.0V hanggang 5.5V

Ang pangunahing problema sa sensor na ito ay ang paggamit nito ng interface ng Dallas 1-Wire at hindi lahat ng mga microcontroller ay may angkop na driver. Swerte tayo, may driver para sa Itsybitsy M4 Express.

Hakbang 7: Maayos na Paggawa ng DS18B20

Maayos na Paggawa ng DS18B20
Maayos na Paggawa ng DS18B20

Nagpapakita ito ng mahusay na resulta.

Isang matatag na hanay ng mga pagbasa nang walang anumang labis na trabaho at mga overhead ng pagkalkula. Ang mga pagbasa ay nasa loob ng inaasahang saklaw ng kawastuhan na ± 0.5 ° C kung ihahambing sa aking mercury thermometer.

Mayroon ding isang hindi tinatagusan ng tubig na bersyon sa halos $ 10 na ginamit ko sa nakaraan na may pantay na tagumpay.

Hakbang 8: DHT22 at DHT11

DHT22 at DHT11
DHT22 at DHT11

Gumagamit ang DHT22 ng isang thermistor upang makuha ang temperatura at nagkakahalaga ng $ 10 / £ 10 at ang mas tumpak at mamahaling kapatid ng mas maliit na DHT11. Gumagamit din ito ng isang one-wire interface ngunit HINDI katugma sa Dallas protocol na ginamit sa DS18B20. Nararamdaman nito ang kahalumigmigan pati na rin ang temperatura. Ang mga aparatong ito minsan ay kailangan ng isang pull up risistor sa pagitan ng 3.3 v at ang signal pin. Ang package na ito ay may naka-install na.

  • Mura
  • 3 hanggang 5V na kapangyarihan at I / O
  • 2.5mAng kasalukuyang kasalukuyang paggamit sa panahon ng pag-convert (habang humihiling ng data)
  • Mabuti para sa 0-100% na pagbabasa ng kahalumigmigan na may 2-5% kawastuhan
  • Mabuti para sa -40 hanggang 80 ° C na pagbabasa ng temperatura ± 0.5 ° C kawastuhan
  • Hindi hihigit sa 0.5 Hz na rate ng pag-sample (minsan bawat 2 segundo)
  • Laki ng katawan 27mm x 59mm x 13.5mm (1.05 "x 2.32" x 0.53 ")
  • 4 na pin, 0.1 "spacing
  • Timbang (ang DHT22 lamang): 2.4g

Kung ikukumpara sa DHT11, ang sensor na ito ay mas tumpak, mas tumpak at gumagana sa isang mas malaking saklaw ng temperatura / halumigmig, ngunit ito ay mas malaki at mas mahal.

Hakbang 9: Mga Resulta ng DHT22

Mga Resulta ng DHT22
Mga Resulta ng DHT22

Ang mga ito ay mahusay na mga resulta na may napakakaunting pagsisikap. Ang mga pagbasa ay medyo matatag at sa loob ng inaasahang pagpapaubaya. Ang pagbasa ng halumigmig ay isang bonus.

Maaari ka lamang kumuha ng mga pagbabasa bawat segundo.

Hakbang 10: Pagsubok sa DTH11

Pagsubok sa DTH11
Pagsubok sa DTH11

Ang aking mercury thermometer ay nagpakita ng 21.9 degree C. Ito ay medyo matandang DHT11 na nakuha ko mula sa isang lumang proyekto at ang halagang halumigmig ay ibang-iba sa mga pagbasa ng DHT22 mula ilang minuto na ang nakakalipas. Nagkakahalaga ito ng humigit-kumulang na $ 5 / £ 5.

Kasama sa paglalarawan nito ang:

  • Mabuti para sa 20-80% na pagbabasa ng kahalumigmigan na may 5% kawastuhan
  • Mabuti para sa 0-50 ° C na pagbabasa ng temperatura ± 2 ° C kawastuhan - mas mababa sa DTH22

Ang temperatura ay lilitaw na nasa saklaw pa rin ng kawastuhan ngunit hindi ako nagtitiwala sa pagbabasa ng halumigmig mula sa lumang aparato.

Hakbang 11: BME680

BME680
BME680

Naglalaman ang sensor na ito ng temperatura, halumigmig, presyon ng barometric, at mga kakayahan ng sensing ng VOC gas sa isang solong pakete ngunit ito ang pinakamahal ng mga sensors na sinusubukan dito. Nagkakahalaga ito ng £ 18,50 / $ 22. Mayroong isang katulad na produkto nang walang sensor ng gas na mas mura nang kaunti.

Ito ay isang standard na sensor ng ginto ng lima. Ang sensor ng temperatura ay tumpak, at may angkop na mga driver, napakadaling gamitin. Ang bersyon na ito ay gumagamit ng I2C ngunit ang Adafruit breakout board ay maaari ring gumamit ng SPI.

Tulad ng BME280 & BMP280, ang eksaktong sensor na ito mula sa Bosch ay maaaring sukatin ang kahalumigmigan na may ± 3% kawastuhan, presyon ng barometric na may ± 1 hPa ganap na kawastuhan, at temperatura na may katumpakan na ± 1.0 ° C. Dahil ang presyon ay nagbabago sa altitude, at ang mga sukat ng presyon ay napakahusay, maaari mo ring gamitin ito bilang isang altimeter na may ± 1 metro o mas mahusay na kawastuhan!

Sinasabi ng dokumentasyon na kailangan nito ng ilang 'burn-in time' para sa gas sensor.

Hakbang 12: Alin sa Isa ang Dapat Kong Gumamit?

Alin sa Isa ang Dapat Kong Gumamit?
Alin sa Isa ang Dapat Kong Gumamit?
  • Ang TMP36 ay napakamura, maliit at tanyag ngunit mahirap gamitin at maaaring hindi tumpak.
  • Ang DS18B20 ay maliit, tumpak, mura, napakadaling gamitin at may isang hindi tinatagusan ng tubig na bersyon.
  • Ang DTH22 ay nagpapahiwatig din ng kahalumigmigan, katamtaman ang presyo at madaling gamitin ngunit maaaring masyadong mabagal.
  • Ang BME680 ay gumagawa ng mas mahusay kaysa sa iba ngunit mahal.

Kung nais ko lamang ng temperatura ay gagamitin ko ang DS18B20 na may katumpakan na ± 0.5 ° C ngunit ang paborito ko ay ang BME680 sapagkat ito ay mas marami pa at maaaring magamit upang magamit sa isang malaking bilang ng iba't ibang mga proyekto.

Isang pangwakas na pag-iisip. Siguraduhing mapanatili mong malayo ang iyong sensor ng temperatura mula sa microprocessor. Ang ilang mga Raspberry Pi HAT ay pinapayagan ang init mula sa pangunahing board upang magpainit ng sensor, na nagbibigay ng maling pagbasa.

Hakbang 13: Karagdagang Mga Saloobin at Eksperimento

Karagdagang Mga Saloobin at Eksperimento
Karagdagang Mga Saloobin at Eksperimento

Salamat gulliverrr, ChristianC231 at pgagen para sa iyong mga puna sa nagawa ko sa ngayon. Humihingi ako ng paumanhin para sa pagkaantala ngunit nagbakasyon ako sa Ireland, nang walang pag-access sa aking electronics kit sa loob ng ilang linggo.

Narito ang isang unang pagtatangka upang ipakita ang mga sensor na nagtutulungan.

Sumulat ako ng isang script upang basahin ang mga sensor sa pagliko at i-print ang mga halagang temperatura sa bawat 20 segundo o higit pa.

Inilagay ko ang kit sa isang ref para sa isang oras, upang palamigin ang lahat. Isinalak ko ito sa PC at nakuha ang Mu upang i-print ang mga resulta. Pagkatapos ay kinopya ang output, ginawang isang.csv file (pinaghiwalay na mga variable na kuwit) at mga draw ng grap mula sa mga resulta sa Excel.

Tumagal ng halos tatlong minuto mula sa pagkuha ng kit sa ref bago maitala ang mga resulta, kaya't ang ilang pagtaas ng temperatura ay naganap sa agwat na ito. Pinaghihinalaan ko na ang apat na mga sensor ay may iba't ibang mga thermal capacities at sa gayon ay magpainit sa iba't ibang mga rate. Inaasahan na bababa ang rate ng pag-init habang lumalapit ang mga sensor sa temperatura ng kuwarto. Naitala ko ito bilang 24.4 ° C kasama ang aking mercury thermometer.

Ang malawak na pagkakaiba-iba ng temperatura sa simula ng mga curve ay maaaring bumaba sa iba't ibang mga thermal capacities ng mga sensor. Natutuwa akong makita na ang mga linya ay nagtatagpo patungo sa dulo habang papalapit sila sa temperatura ng kuwarto. Nag-aalala ako na ang TMP36 ay palaging mas mataas kaysa sa iba pang mga sensor.

Tiningnan ko ang mga sheet ng data upang suriin muli ang inilarawan na kawastuhan ng mga aparatong ito

TMP36

  • ± 2 ° C kawastuhan sa temperatura (type)
  • ± 0.5 ° C linearity (uri)

DS18B20

± 0.5 ° C Ganap na kawastuhan mula -10 ° C hanggang + 85 ° C

DHT22

temperatura ± 0.5 ° C

BME680

temperatura na may kawastuhan ng ± 1.0 ° C

Hakbang 14: Buong Grap

Buong Grap
Buong Grap

Maaari mo na ngayong makita na ang mga sensor sa kalaunan ay nag-level off at sumang-ayon sa temperatura nang higit pa o mas mababa sa loob ng kanilang inilarawan na kawastuhan. Kung ang 1.7 degree ay nakuha sa mga halagang TMP36 (inaasahan ang ± 2 ° C) mayroong mahusay na kasunduan sa pagitan ng lahat ng mga sensor.

Sa unang pagkakataon na pinatakbo ko ang eksperimentong ito ang DHT22 sensor ay nagdulot ng isang problema:

main.py output:

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

Nabasa ang error sa DHT: ('Hindi nahanap ang sensor ng DHT, suriin ang mga kable',)

Traceback (pinakahuling tawag sa huli):

I-file ang "main.py", linya 64, sa

I-file ang "main.py", linya 59, sa get_dht22

NameError: lokal na variable na sumangguni bago italaga

Kaya binago ko ang script upang makayanan ang problemang ito at muling simulan ang pag-record:

Nabasa ang error sa DHT: ('Hindi nahanap ang sensor ng DHT, suriin ang mga kable',)

25.9, 22.6, -999.0, 22.6

Nabasa ang error sa DHT: ('Hindi nahanap ang sensor ng DHT, suriin ang mga kable',)

25.9, 22.8, -999.0, 22.7

25.9, 22.9, 22.1, 22.8

25.9, 22.9, 22.2, 22.9

Nabasa ang error sa DHT: ('Hindi nahanap ang sensor ng DHT, suriin ang mga kable',)

27.1, 23.0, -999.0, 23.0

Nabasa ang error sa DHT: ('Hindi nahanap ang sensor ng DHT, suriin ang mga kable',)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

Nabasa ang error sa DHT: ('Hindi nahanap ang sensor ng DHT, suriin ang mga kable',)

28.4, 23.2, -999.0, 23.3

Nabasa ang error sa DHT: ('Hindi nahanap ang sensor ng DHT, suriin ang mga kable',)

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

Wala akong problema sa pangalawang pagtakbo. Nagbabala ang dokumentasyong Adafruit na kung minsan ang mga sensor ng DHT ay hindi nakakabasa ng pagbabasa.

Hakbang 15: Mga Konklusyon

Konklusyon
Konklusyon

Malinaw na ipinapakita ng curve na ito na ang mas mataas na kapasidad ng thermal ng ilang mga sensor ay nagdaragdag ng kanilang oras ng reaksyon.

Ang lahat ng mga sensor ay nagtatala ng temperatura na tumataas at bumabagsak.

Ang mga ito ay hindi masyadong mabilis upang tumira sa isang bagong temperatura.

Hindi masyadong tumpak ang mga ito. (Sapat ba ang mga ito para sa isang istasyon ng panahon?)

Maaaring kailanganin mong i-calibrate ang iyong sensor laban sa isang pinagkakatiwalaang thermometer.

Inirerekumendang: