Съдържание:
- Консумативи
- Стъпка 1: Вериги
- Стъпка 2: Метод
- Стъпка 3: TMP36 - Първоначална пробна версия
- Стъпка 4: Резултати от заместването на потенциометъра
- Стъпка 5: Средни показания и резултат
- Стъпка 6: DS18B20 - Първоначално тестване
- Стъпка 7: DS18B20 работи добре
- Стъпка 8: DHT22 и DHT11
- Стъпка 9: Резултати от DHT22
- Стъпка 10: DTH11 тест
- Стъпка 11: BME680
- Стъпка 12: Коя да използвам?
- Стъпка 13: Допълнителни мисли и експерименти
- Стъпка 14: Пълна графика
- Стъпка 15: Заключения
Видео: Тестване на температурни сензори - кой за мен?: 15 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
Един от първите сензори, които новодошлите във физическите изчисления искат да изпробват, е нещо за измерване на температурата. Четири от най-популярните сензори са 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 - Първоначална пробна версия
Левият крак е 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 - Първоначално тестване
Бъди много внимателен. Този пакет изглежда много подобен на 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 работи добре
Това показва страхотен резултат.
Стабилен набор от показания без допълнителна работа и режийни разходи. Показанията са в рамките на очаквания диапазон на точност от ± 0,5 ° C в сравнение с моя живачен термометър.
Има и водоустойчива версия на около 10 долара, която съм използвал в миналото с еднакъв успех.
Стъпка 8: 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
Това са отлични резултати с много малко усилия. Показанията са доста стабилни и в рамките на очаквания толеранс. Отчитането на влажността е бонус.
Можете да отчитате само всяка секунда.
Стъпка 10: DTH11 тест
Моят живачен термометър показа 21.9 градуса С. Това е доста стар DHT11, който извлечих от стар проект и стойността на влажността е много различна от показанията на DHT22 от преди няколко минути. Струва около $ 5 / £ 5.
Описанието му включва:
- Подходящ за 20-80% влажност с точност 5%
- Добър за отчитане на температурата 0-50 ° C ± 2 ° C точност - по -малко от DTH22
Изглежда, че температурата все още е в диапазона на точност, но не вярвам на показанията за влажност от това старо устройство.
Стъпка 11: 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: Заключения
Тази крива ясно показва, че по -високият термичен капацитет на някои сензори увеличава времето за реакция.
Всички сензори регистрират покачване и понижаване на температурите.
Те не се установяват много бързо на нова температура.
Те не са много точни. (Достатъчно добри ли са за метеорологична станция?)
Може да се наложи да калибрирате сензора си срещу надежден термометър.
Препоръчано:
Множество инфрачервени температурни сензори - MLX90614: 4 стъпки
Множество инфрачервени температурни сензори - MLX90614: Това е кратко ръководство за това как да настроите множество безконтактни температурни сензори MLX90614B чрез I2C шината с Arduino uno и да покажете показанията на серийния монитор на Arduino IDE. Използвам предварително изградените платки, но ако закупите сензора b
Мрежа от температурни сензори: 6 стъпки
Мрежа от температурни сензори: Температурата и влажността са жизненоважни данни във вашата лаборатория, кухня, производствена линия, офис, роботи -убийци и дори в дома ви. Ако трябва да наблюдавате множество места или стаи или пространства, имате нужда от нещо, което е надеждно, компактно, точно и подходящо
MAX7219 LED Dot Matrix монтаж и тестване: 6 стъпки (със снимки)
MAX7219 LED Dot Matrix монтаж и тестване: Dot-Matrix дисплей е дисплейно устройство, което съдържа светодиоди, подравнени под формата на матрица.Този матричен дисплей се използва в приложения, където е необходимо да се използват символи, графики, знаци, азбуки, цифри да се показват заедно
Стенд за тестване на роботи: 8 стъпки (със снимки)
Стенд за тестване на роботи: Имах нужда от a, за да държа колелата на моя YAAR робот (вижте инструкциите за YAAR) от земята за тестване
Как да използвате Tinkercad за тестване и внедряване на вашия хардуер: 5 стъпки (със снимки)
Как да използвате Tinkercad за тестване и внедряване на вашия хардуер: Симулацията на верига е техника, при която компютърният софтуер симулира поведението на електронна схема или система. Новите проекти могат да бъдат тествани, оценявани и диагностицирани, без всъщност да се изгражда веригата или системата. Симулацията на веригата може да бъде