Надійність датчиків температури DS18x20


11

Я використовую Max18 DS18x20 (у мене фактично є кілька варіантів) 1-дротові датчики температури для реєстрації температури в різних приміщеннях мого будинку раз на хвилину. Близько одного читання на тисячі я отримую щось зовсім нечесне. У середині послідовності, яка поступово зростає з 65F до 70F, я отримую щось на кшталт -32.1F або 15.64F.

Хтось ще мав таку проблему, чи це щось не в моєму налаштуванні? Якщо це лише відома проблема з цими речами, мені доведеться щось зробити, як взяти три читання та викинути сторонні.

Лише кілька тверджень про моє налаштування:

  • Я бігаю на 3.3V
  • Я перевіряю контрольну суму читання, як вона повертається до ардуїно, і вона відповідає (або я думаю, що це робить - у цьому коді завжди може бути помилка).
  • Вони втрачають нормальну потужність, а не паразити.
  • У мене на місці є резистор 4.7K.
  • Я використовую лише один датчик на кожній сенсорній платформі.
  • Датчик знаходиться на друкованій платі, приєднаній до ардуїно, який його читає.
  • Я бачу ту саму проблему, як читати з різних ардуїно (diecimilla, pro-mini, саморобний звичай)

Відповіді:


5

Я бачив це час від часу з DS18B20. У моєму застосуванні було досить просто відфільтрувати помилкові результати за допомогою коду.


Добре чути, що хтось інший здався чимось подібним. Яким був ваш алгоритм фільтрації?
edebill

Я б запропонував вам зробити те, що ви сказали, взяти 3 читання, 5 було б краще, 7 краще, ніж це, але якщо є помилка чогось 1/1000, то вам просто потрібно 3. Візьміть медіану. Проблема буде вирішена. якщо ви візьмете 5, це спричинить проблеми.
Кортук

Я зараз роблю 5. Я спробував просто взяти вище 2, але в останню ніч все-таки виникла помилка (у мене 3 хвилини читаються щохвилини, тому я отримую тисячі точок даних на день).
edebill

3

Якщо ви не можете знайти джерело помилкових показань, слід легко відфільтрувати їх та екстраполювати з попередніх показань або інтерполювати між показаннями, якщо важливе значення має задній огляд. Оскільки ви берете проби раз на хвилину, ви можете навіть просто скопіювати останнє читання; кімнатна температура навряд чи зміниться за одну хвилину.


3

Це може бути пов’язано з неправильним зчитуванням контролером одного або декількох бітів температурної реакції при певних умовах високої навантаження, або через електричні перешкоди, що пошкоджують один або кілька біт.

Ознайомтесь детальніше з інформаційними даними тут http://www.rentron.com/Files/ds18b20.pdf

На сторінці 5 видно, що точна двійкова послідовність для 85С:

+85°C 0000 0101 0101 0000

Аналогічно, для 25С це:

+25.0625°C 0000 0001 1001 0001

У деяких випадках, якщо контролер трохи не вистачає, ви отримаєте значення, яке є фактичною температурою, виражене в двійковому і бітовому зсуві. Часто це 1 / 2х цільове значення в С.

Іноді ви можете отримати електричні перешкоди на лінії, і контролер зчитує цілу нітку 1 секунди. У цьому випадку ви отримаєте деяке число, як 15,64, яке виражається у двійковій формі насправді дуже близьке до чисел між 65 і 70F, за винятком купа 1с на початку.


2

Для чого це варто, я трохи попрацював з DS18B20 кілька місяців тому. Я зняв коротке відео та зробив написання у своєму блозі, де є посилання на приклади та зразок коду. Сподіваюся, це може трохи допомогти! http://dailyduino.com/archives/552


2

У мене 13 з них працює в моєму будинку приблизно з чотирьох років. База даних вже важко обробляти (я відслідковував усі зразки). Але я не бачив такої поведінки. Натомість кожен раз датчик замерзає та блокує всі інші, єдиний вихід з цього (що я знайшов) - відключити напругу живлення на кілька секунд. Тож я додав до своєї плати крихітне реле, і коли мікрочуття сприймає цю поведінку, воно скидає весь ланцюг датчиків. Це трапляється кілька разів на тиждень.


Хм. Можливо, я мав би їх живити лише тоді, коли я збираюся зачитувати читання.
edebill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.