Съдържание:

Тестване на температурни сензори - кой за мен?: 15 стъпки (със снимки)
Тестване на температурни сензори - кой за мен?: 15 стъпки (със снимки)

Видео: Тестване на температурни сензори - кой за мен?: 15 стъпки (със снимки)

Видео: Тестване на температурни сензори - кой за мен?: 15 стъпки (със снимки)
Видео: Мнението ми за iPhone 15 Pro MAX - искрено РЕВЮ 2024, Юли
Anonim
Тестване на температурни сензори - кой за мен?
Тестване на температурни сензори - кой за мен?

Един от първите сензори, които новодошлите във физическите изчисления искат да изпробват, е нещо за измерване на температурата. Четири от най-популярните сензори са TMP36, който има аналогов изход и се нуждае от аналогово-цифров преобразувател, DS18B20, който използва едножична връзка, DHT22 или малко по-евтиния DHT11, който просто се нуждае от цифров щифт, но също така осигурява отчитане на влажността и накрая BME680, който използва I2C (със SPI също на някои пробивни дъски) и дава температура, влажност, газ (VOC) и атмосферно налягане, но струва малко повече.

Искам да видя колко са точни и да открия всички предимства или недостатъци. Вече притежавам точен живачен термометър, останал от цветния фотографски печат в дните на химическа обработка, за да ги сравня. (Никога не изхвърляйте нищо - ще ви трябва по -късно!)

Ще използвам CircuitPython и платка за разработка Adafruit Itsybitsy M4 за тези тестове. Налични са подходящи драйвери за всички устройства.

Консумативи

Първоначалният ми списък:

  • Микроконтролер Itsybitsy M4 Express
  • микро USB кабел - за програмиране
  • TMP36
  • DS18B20
  • Резистор 4.7K Ohm
  • DHT22
  • BME680
  • Мултиметър
  • Платка или дъска за ленти
  • Свързващ проводник

Стъпка 1: Вериги

Вериги
Вериги

Оранжевите проводници са 3.3 V

Черните проводници са GND

В долната част на платката има тестови точки за измерване на напрежения. (3.3v, GND и TMP36 аналогов изход)

Централните гнезда са отляво надясно:

  • TMP36: 3.3v, изход за аналогов сигнал, GND
  • DS18B20: GND, изход за цифров сигнал, 3.3v
  • DHT22: 3.3v, изходен сигнал, празен, GND
  • BME680: 3.3v, SDA, SCL, празен, GND

Задният конектор, за свързване към платката IB M4E, отляво надясно

  • 3.3v
  • TMP36 - аналогов изход към щифт A2
  • GND
  • DS18B20 цифров изход към извод D3 - зелен
  • DHT22 цифров изход към извод D2 - жълт
  • SDA - бял
  • SCL - розов

Резисторът 4.7K Ohm е издърпване от сигнал до 3.3v за 0-проводна връзка на DS18B20.

На гърба на дъската има 2 изрязани писти:

Под левия край на розовия и белия проводник. (Под жълтия проводник.)

Стъпка 2: Метод

Метод
Метод

За всеки сензор ще напиша кратък скрипт за отчитане на температурата (и други елементи, ако има такива) няколко пъти и проверка на температурата спрямо моя живачен (Hg) термометър. Ще гледам да видя колко близо температурата се сравнява с показанията на живака и дали показанията са стабилни/постоянни.

Ще разгледам и документацията, за да видя дали показанията отговарят на очакваната точност и дали може да се направи нещо за подобрения.

Стъпка 3: TMP36 - Първоначална пробна версия

TMP36 - Първоначално изпитание
TMP36 - Първоначално изпитание
TMP36 - Първоначално изпитание
TMP36 - Първоначално изпитание

Левият крак е 3.3v, десният крак е GND, а централният крак е аналогово напрежение, представляващо температурата, използвайки следната формула. TempC = (миливолта - 500) / 10

И така, 750 миливолта дава температура 25 ° С

Явно тук има няколко проблема. Температурата от „нормалния“живачен термометър е много по -ниска, отколкото от TMP36 и показанията не са много последователни - има известно „трептене“или шум.

Сензорът TMP36 изпраща напрежение, пропорционално на температурата. Това трябва да се прочете от АЦП преди да се изчисли температурата. Нека да прочетем напрежението директно от средния крак на сензора с мултиметър и да го сравним с резултата от A/D. Отчитането от централния крак с моя мултиметър е 722 миливолта, много по-ниско и много стабилно отчитане.

Има две неща, които можем да опитаме. Заменете потенциометъра за TMP36 и регулирайте напрежението в изчислението спрямо действителното напрежение на микроконтролера. След това ще видим дали изчисленото напрежение е по -близо и дали шумът/трептенето е намален.

Нека измерим действителното напрежение, използвано от микроконтролера и A/D. Това се предполагаше на 3.3v, но всъщност е само 3.275v.

Стъпка 4: Резултати от заместването на потенциометъра

Резултати от подмяна на потенциометър
Резултати от подмяна на потенциометър

Това е много по -добре. Показанията са в рамките на няколко миливолта с много по -малко шум. Това предполага, че шумът идва от TMP36, а не от A/D. Показанията на глюкомера винаги са стабилни - без трептене. (Измервателният уред може да „изглажда“изнервения изход.)

Един от начините за подобряване на ситуацията може да бъде средното четене. Вземете десет показания бързо и използвайте средната стойност. Ще изчисля и стандартното отклонение, докато сменям програмата, за да дам индикация за разпространението на резултатите. Ще преброя и броя на показанията в рамките на 1 стандартно отклонение от средната стойност - колкото по -високо, толкова по -добре.

Стъпка 5: Средни показания и резултат

Средни показания и резултат
Средни показания и резултат

Все още има много шум и показанията от TMP36 са все още по -високи, отколкото от живачния термометър. За да намаля шума, включих 100NF кондензатор между сигнала и GND

След това потърсих други решения в интернет и намерих тези: https://www.doctormonk.com/2015/02/accurate-and-re… Д-р Монк предлага да се включи 47 k Ohm резистор между сигнала и GND.

www.desert-home.com/2015/03/battery-operate… Докато този човек предлага да сортира 15 показания в ред и да осредни центъра 5.

Промених скрипта и веригата, за да включа тези предложения и включих показания от живачния термометър.

Най-накрая! Сега имаме постоянни показания в диапазона на точност на описанието на устройството.

Това беше доста усилие, за да накарате сензора да работи, който има само точност на производителя:

Точност - най -висока (най -ниска): ± 3 ° C (± 4 ° C) Те струват само около $ 1,50 (£ 2)

Стъпка 6: DS18B20 - Първоначално тестване

DS18B20 - Първоначално тестване
DS18B20 - Първоначално тестване

Бъди много внимателен. Този пакет изглежда много подобен на TMP36, но краката са обратното с 3.3v отдясно и GND отляво. Изходният сигнал е в центъра. За да работи това устройство, се нуждаем от 4,7 k Ohm резистор между сигнал и 3,3v. Това устройство използва едножичен протокол и трябва да изтеглим няколко драйвера в папката lib на Itsybitsy M4 Express.

Това струва около $ 4 / £ 4 Технически характеристики:

  • Използваем температурен диапазон: -55 до 125 ° C (-67 ° F до +257 ° F)
  • 9 до 12 битова избираема разделителна способност
  • Използва 1 -Wire интерфейс - изисква само един цифров щифт за комуникация
  • Уникален 64 -битов идентификатор, изгорен в чип
  • Няколко сензора могат да споделят един щифт
  • ± 0,5 ° C Точност от -10 ° C до +85 ° C
  • Алармена система за ограничаване на температурата
  • Времето за заявка е по -малко от 750 мс
  • Използва се с мощност 3.0V до 5.5V

Основният проблем с този сензор е, че той използва Dallas 1-Wire интерфейс и не всички микроконтролери имат подходящ драйвер. Имаме късмет, има драйвер за Itsybitsy M4 Express.

Стъпка 7: DS18B20 работи добре

DS18B20 работи добре
DS18B20 работи добре

Това показва страхотен резултат.

Стабилен набор от показания без допълнителна работа и режийни разходи. Показанията са в рамките на очаквания диапазон на точност от ± 0,5 ° C в сравнение с моя живачен термометър.

Има и водоустойчива версия на около 10 долара, която съм използвал в миналото с еднакъв успех.

Стъпка 8: DHT22 и DHT11

DHT22 и DHT11
DHT22 и DHT11

DHT22 използва термистор за получаване на температурата и струва около $ 10 / £ 10 и е по -точният и скъп брат на по -малкия DHT11. Той също така използва едножичен интерфейс, но НЕ е съвместим с протокола от Далас, използван с DS18B20. Той усеща влажност, както и температура. Тези устройства понякога се нуждаят от издърпващ резистор между 3.3 v и сигналния щифт. Този пакет вече има инсталиран.

  • Ниска цена
  • Захранване от 3 до 5V и I/O
  • Максимално използване на ток 2,5 mA по време на преобразуване (докато се искат данни)
  • Подходящ за 0-100% влажност с точност 2-5%
  • Добър за отчитане на температурата от -40 до 80 ° C ± 0,5 ° C
  • Не повече от 0,5 Hz честота на дискретизация (веднъж на всеки 2 секунди)
  • Размер на тялото 27 мм x 59 мм x 13,5 мм (1,05 "x 2,32" x 0,53 ")
  • 4 пина, разстояние 0,1"
  • Тегло (само DHT22): 2.4g

В сравнение с DHT11, този сензор е по -прецизен, по -точен и работи в по -голям диапазон от температура/влажност, но е по -голям и по -скъп.

Стъпка 9: Резултати от DHT22

Резултати от DHT22
Резултати от DHT22

Това са отлични резултати с много малко усилия. Показанията са доста стабилни и в рамките на очаквания толеранс. Отчитането на влажността е бонус.

Можете да отчитате само всяка секунда.

Стъпка 10: DTH11 тест

DTH11 тест
DTH11 тест

Моят живачен термометър показа 21.9 градуса С. Това е доста стар DHT11, който извлечих от стар проект и стойността на влажността е много различна от показанията на DHT22 от преди няколко минути. Струва около $ 5 / £ 5.

Описанието му включва:

  • Подходящ за 20-80% влажност с точност 5%
  • Добър за отчитане на температурата 0-50 ° C ± 2 ° C точност - по -малко от DTH22

Изглежда, че температурата все още е в диапазона на точност, но не вярвам на показанията за влажност от това старо устройство.

Стъпка 11: BME680

BME680
BME680

Този сензор съдържа способности за чувствителност на температура, влажност, барометрично налягане и VOC газ в един пакет, но е най -скъпият от сензорите, тествани тук. Струва около £ 18.50 / $ 22. Има подобен продукт без сензор за газ, който е малко по -евтин.

Това е сензор за златен стандарт от петте. Температурният сензор е точен и с подходящи драйвери, много лесен за използване. Тази версия използва I2C, но платката Adafruit може да използва и SPI.

Подобно на BME280 и BMP280, този прецизен сензор от Bosch може да измерва влажност с ± 3% точност, барометрично налягане с абсолютна точност ± 1 hPa и температура с точност ± 1,0 ° C. Тъй като налягането се променя с надморската височина и измерванията на налягането са толкова добри, можете да го използвате и като висотомер с ± 1 метър или по -добра точност!

В документацията се казва, че се нуждае от известно време за изгаряне на сензора за газ.

Стъпка 12: Коя да използвам?

Кое трябва да използвам?
Кое трябва да използвам?
  • TMP36 е много евтин, малък и популярен, но доста труден за използване и може да е неточен.
  • DS18B20 е малък, точен, евтин, много лесен за използване и има водоустойчива версия.
  • DTH22 също показва влажност, има умерени цени и е лесен за използване, но може да е твърде бавен.
  • BME680 прави много повече от останалите, но е скъп.

Ако просто искам температура, бих използвал DS18B20 с точност ± 0,5 ° C, но любимият ми е BME680, защото прави много повече и може да се използва в голям брой различни проекти.

Една последна мисъл. Уверете се, че държите температурния сензор далеч от микропроцесора. Някои Raspberry Pi HATs позволяват топлината от основната платка да затопли сензора, като дава фалшиво отчитане.

Стъпка 13: Допълнителни мисли и експерименти

Допълнителни мисли и експерименти
Допълнителни мисли и експерименти

Благодаря ви gulliverrr, ChristianC231 и pgagen за вашите коментари относно това, което направих досега. Съжалявам за забавянето, но бях на почивка в Ирландия, без достъп до комплекта за електроника от няколко седмици.

Ето първи опит да покажем, че сензорите работят заедно.

Написах скрипт за четене на сензорите на свой ред и отпечатване на температурните стойности на всеки 20 секунди.

Прибрах комплекта в хладилник за един час, за да се охлади всичко. Включих го в компютъра и накарах Му да отпечата резултатите. След това изходът беше копиран, превърнат в.csv файл (променливи, разделени със запетая) и графиките се извличат от резултатите в Excel.

Изтеглянето на комплекта от хладилника отне около три минути, преди да бъдат записани резултатите, така че в този интервал имаше известно повишаване на температурата. Подозирам, че четирите сензора имат различен топлинен капацитет и така ще се затоплят с различна скорост. Очаква се скоростта на затопляне да намалее с приближаването на сензорите до стайна температура. Записах това като 24,4 ° C с моя живачен термометър.

Големите разлики в температурата в началото на кривите могат да се дължат на различните топлинни мощности на сензорите. Радвам се да видя, че линиите се сближават към края, когато се доближат до стайната температура. Притеснявам се, че TMP36 винаги е много по -висок от другите сензори.

Погледнах листа с данни, за да проверя отново описаната точност на тези устройства

TMP36

  • ± 2 ° C точност над температурата (тип)
  • ± 0.5 ° C линейност (тип)

DS18B20

± 0,5 ° C Точност от -10 ° C до +85 ° C

DHT22

температура ± 0,5 ° C

BME680

температура с точност ± 1.0 ° C

Стъпка 14: Пълна графика

Пълна графика
Пълна графика

Сега можете да видите, че сензорите в крайна сметка се изравниха и постигнаха съгласие за температурата горе -долу в рамките на описаната от тях точност. Ако се свалят 1,7 градуса от стойностите на TMP36 (очаква се ± 2 ° C), има добро съгласие между всички сензори.

Първият път, когато проведох този експеримент, сензорът DHT22 предизвика проблем:

main.py изход:

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: ('DHT сензорът не е намерен, проверете окабеляването',)

Проследяване (последното последно обаждане):

Файл "main.py", ред 64, в

Файл "main.py", ред 59, в get_dht22

NameError: локална променлива, посочена преди присвояване

Затова промених скрипта, за да се справя с този проблем и рестартирах записа:

Грешка при четене на DHT: ('DHT сензорът не е намерен, проверете окабеляването',)

25.9, 22.6, -999.0, 22.6

Грешка при четене на DHT: ('DHT сензорът не е намерен, проверете окабеляването',)

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: ('DHT сензорът не е намерен, проверете окабеляването',)

27.1, 23.0, -999.0, 23.0

Грешка при четене на DHT: ('DHT сензорът не е намерен, проверете окабеляването',)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

Грешка при четене на DHT: ('DHT сензорът не е намерен, проверете окабеляването',)

28.4, 23.2, -999.0, 23.3

Грешка при четене на DHT: ('DHT сензорът не е намерен, проверете окабеляването',)

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

Нямах проблем с второто бягане. Документацията на Adafruit предупреждава, че понякога сензорите за DHT пропускат показанията.

Стъпка 15: Заключения

Изводи
Изводи

Тази крива ясно показва, че по -високият термичен капацитет на някои сензори увеличава времето за реакция.

Всички сензори регистрират покачване и понижаване на температурите.

Те не се установяват много бързо на нова температура.

Те не са много точни. (Достатъчно добри ли са за метеорологична станция?)

Може да се наложи да калибрирате сензора си срещу надежден термометър.

Препоръчано: