eddy_em: (Костерок)
[personal profile] eddy_em
(написал бы вчера, но почти двое суток интернета не было в поселке)

Потихоньку мои сниппеты для STM8 разрастаются. Чтобы переделать "вольтметр" в термометр на 1-wire (кстати, можно и простое термореле сделать на трехсимвольном "вольтметре" — у него свободных ног достаточно),понадобилась поддержка 1-wire. Все, что в интернете находил, было реализовано совершенно некрасиво: ногодрыгом с жуткими задержками (по сути, операция опроса термодатчика везде делалась блокирующей, что не очень хорошо для таких вещей, как динамическая индикация, опрос клавиатуры и т.п.).
Я сделал на таймере: у трехсимвольного "вольтметра" как раз второй канал compare/capture таймера TIM2 используется как аналоговый вход для измеряемого напряжения, т.е. модифицировать будет проще всего. И Вот, что получилось. Пока что код непричесанный, содержит много отладочной информации + не до конца допиленный.

Что уже реализовано:
  • опрос одного-единственного датчика с командой Skip ROM,

  • вывод температуры в тысячных долях °C,

  • сохранение ROM-кода подключенного датчика в EEPROM (т.к. я рассчитывал на STM8S003, то, несмотря на то, что у 105-го, на котором я тренируюсь, 1кБ EEPROM, датчиков максимум 14, т.к. у 003-го всего лишь 128Б),

  • поочередный опрос всех датчиков с сохраненным ROM и выдача температуры.

Что еще нужно реализовать (UPD 08.04):
  • убрать тысячные (т.к. точность DS18 ниже плинтуса, там даже округление до целых градусов — многовато, по-хорошему, надо в сторону ближайшей тройки, а то и четверки округлять), (сделано), теперь по крайней мере не так в глаза бросается; вот, например, для "устаканившихся" трех B20 и одного (четвертого) S20: 23.6, 23.5, 23.4, 23.5. А то и вообще: 23.6, 23.6, 23.4, 24.0...

  • добавить возможность удаления ROM несуществующих датчиков, (сделано)

  • перенести весь код на "вольтметр".


Потом еще хочу с DHT11/DHT22 научиться работать. Но у них совсем все уныло, т.к. только 1 датчик на линию можно вешать. Да и точность там ну совсем жуткая, даже DS18 фору даст!

А еще надо бы закончить с реализацией аппаратного 1-wire (через таймер с DMA) на STM32.

Date: 2015-04-06 10:31 pm (UTC)
From: [identity profile] vladikoms.livejournal.com
DHT11/DHT22 уже не в тренде, т.к. появился более точный (по слухам) HTU21D

Date: 2015-04-06 10:39 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
На ибее DHT11/DHT22/HTU21D стоят $1/$3.4/$4.7. Слухам верить не стоит: зачастую в реальности получается полная лажа. Ну и у всех трех одна противная особенность — I2C, т.е. кучу датчиков на одну шину не навесишь, к сожалению.

// кстати, про слухи: некоторые верят, что DS18B20 позволяет измерять температуру с точностью до десятой доли градуса! А фактически они вообще невоспроизводимые результаты дают. И никакая калибровка не поможет! ±1.5°C на интервале где-то от -10°C до +35°C — наверное, наилучшее, что из них можно выжать. Правда, если посмотреть на цену, то это и понятно...

Date: 2015-04-06 11:11 pm (UTC)
From: [identity profile] vladikoms.livejournal.com
Я раньше пытался нагуглить как у DS18B20 с точностью при температуре -40, но что-то все скромно молчат. К счастью, недавно по блату раздобыл термометры ТСМ которым буду бесконечно верить :)

Date: 2015-04-07 05:31 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Я когда искал термометры, которые работали бы в криостате от температуры в 70К и выше, сначала лелеял себя надеждой найти полупроводниковые. А потом сам поэкспериментировал с транзисторами, диодами, Холлами и понял, что ниже -50..-100 ни один "бытовой" полупроводник не работает! Увы, там только платиновые терморезисторы (дорогие, собаки, + АЦП нужен) или термопары (тоже не сказал бы, что проще и заметно дешевле) нужны.

А вот где-то от -40..-10 и до +40..+100 уже куча полупроводниковых с реальной точностью не хуже ±0.1°C на всем интервале (после калибровки).

Date: 2016-04-06 03:59 pm (UTC)
From: [identity profile] aliaksei.livejournal.com
Если кто не в курсе - DHT11 глючная херота про которую надо забыть

Date: 2016-04-06 09:34 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
Из всех гигрометров в ценовом диапазоне до трех-пяти баксов нет ни одного безглючного! У DHT11 погрешность процентов 20 — да и пофиг! Для домашнего гигрометра сойдет. А вот если нормально надо влажность измерять, чтобы не хуже процента, там уже совсем другой ценовой диапазон!

Аналогично с термометрами: хочешь ±1°C — берешь DS18B20. Хочешь ±0.1°C — покупаешь уже что-то более приличное, раз в 50 дороже.

October 2025

S M T W T F S
   1234
567 89 1011
121314 15161718
19202122232425
2627 28293031 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 28th, 2026 05:09 am
Powered by Dreamwidth Studios