Всем привет!
Если кто работал с DS18x20, давайте поговорим о глюках этого устройства.
Я столкнулся, буквально в первый раз использования этого девайса серии B7, с таким глюком: на след. день работы подал питание и обнаружил, что один из датчиков отдает мне температуру с враньем в +60 с чем-то градусов. В доке про это ничего не сказано. Проверил софт - все нормально. Начал искать.
В доке одним предложением упомянуто, что датчики калиброваны для достижения точности в +-0,5 гр. С. Размышлял так: датчик цифровой и, если калиброван, значит, где-то должны храниться калибровочные коэффициенты. Раз кристалл работает с EEPROM, значит, там и должны храниться. Но в доке про это не найдете ни слова!
Позвонил в Rainbow, рассказал о своей проблеме и свое предположение. Неохотно, но все же мне рассказали, что серию B7 особо коснулась проблема "слетания" EEPROM при подаче питания, что у меня и произошло на второй день эксплуатации датчиков! В целом, все было замечательно, но только вот это….

Мне сказали, что об этом коротко написано на www.1wire.org и пояснили, что по запросу Даллас может выслать один Application Note, где говорится об этой проблеме и даются коэффициенты (2 байта), чтобы возможно было восстановить точность до +-2 гр. С.
Зашел на www.1wire.org, прочитал о проблемке и о том, что AN247 раньше был здесь в свободном доступе, а теперь Даллас высылает его только по запросу (?!!). Написал в Даллас, прислали AN247. Там говорится о 2 калибровочных регистрах TRIM1 и TRIM2, о командах, позволяющих их читать, писать и копировать в EEPROM. Хотя в доке про эту часть – ни слова! Там же написали о естественном логическом соображении следить за EEPROM при перезагрузке и, если слетело, – перезаписывать.
Физически количество перезаписей EEPROM – весьма большое. И сам факт, что при повышенных температурах EEPROM не продержится долго, заставляет документировать пользовательский программный доступ к калибровочным коэффициентам (да и сам процесс калибровки тоже). Но нехороший момент в том, что вы, решив использовать привлекательный датчик DS18B20 в своем устройстве, можете даже не узнать, что же с ним случилось (и недоумевать о причинах последствий, к которым это может привести), т.к. на сайте Максима вы об этом нигде не прочитаете. (Переживают люди за имидж свой что ль?)
Далее написал в Даллас с вопросом о том, как можно откалибровать их датчик, чтобы получить исходную точность. Ответили, что калибруются они по одной точке (я сначала думал, что по двум, и никак не мог понять уравнения для TRIM1, TRIM2) Про уравнение - что-то короткое и мало понятное.
Пришлось самому проводить полный курс измерений, подставляя последовательные значения для TRIM1 и TRIM2 и анализировать это в EXCEL’e. Таким образом удалось восстановить исходную точность и узнать, что же все-таки нужно делать с интегральными датчиками с цифровым выходом, чтобы они были привлекательными не только на словах, но и на деле....