Термодатчик LM75A
- Войдите на сайт для отправки комментариев
Как-то просто так купил в китае несколько датчиков температуры LM75A. Это такая штучка в корпусе sop8. Вот ссылка на него http://www.ebay.com/itm/3PCS-NEW-LM75A-LM75AD-NXP-SOP-8-I2C-IIC-Digital-Temperature-Sensor-IC-/221948619187?hash=item33ad2b29b3:g:bKgAAOSwgyxWUq43
Зачем купил, сам не знаю. Недавно дошли руки. Оказывается интересная штука. Измеряет температуру от -55 до 125 градусов С, связь по I2C, да еще у него есть вывод, который можно запрограммировать на реакцию на изменение температуры. Т.е. можно сделать какой-нибудь термостат без всяких ардуин. Если все же с ними общаться по I2C, то можно подключить до восьми датчиков.
Я уже немного поигрался с ними, и еще раз убедился что в программировании я почти ноль, но....хочу все-таки разобраться. Надеюсь на помощь ...... может кто что-то и подскажет.
Для опытов начал делать платки, чтобы припаять к ним датчики, обозначить адреса... Буду экспереминтировать с двумя датчиками. Платки делал по Лазерно- Ацетоново-Алкогольной технологии, т.е. без применения какого-либо нагревания.... Покажу
Печатаем плату на глянцевом журнале. Намазываем плату смесью ацетона и спирта и прижимаем к ней бумагу струбциной
Ждем 40 мин, вытаскиваем, подсушиваем и замачиваем в воде
Снимаем бумагу
Обрабатываем в парах ацетона
Травим, и получаем 3 платки для установки термодатчиков
Распилю, спаяяю покажу. Потом начну опыты по изучению I2C и датчика, как с него считывать, как его программировать.
Ну вот...сделал платку, с горем пополам. Немного коряво. Трудно такое делать руками, которые большую часть жизни держали топор и долото :). Но... она работает!
Вот фотка работы скетча
Это только начало. Считывается всего 1 байт и показывается только целая часть температуры. А вообще может показывать с точностью до 0.125 градуса С, может показывать отрицательную температуру. Может работать термостатом, может контролировать диапазон температур. И это при всем при том, что стоит копейки.
Планирую поставить в отсек аккумуляторов, для контроля температуры при быстрой зарядке.
подпишусь на тему.
с год назад себе десяток взял. они очень дешего обошлись. брал чтоб повторить немецкий проект слежения за токами и напряжениями солнечных панелей, сайт был на микросд на w5100 + UNO. пока микрухи дошли, переделал на ds18b20 (их хоть можно далеко вынести) . а потом и инет закрыли.
температура с lm75a отображается с десятыми долями если интересно http://www.a-d-k.de/20111229_180325-solda.htm
черкните если что, можно ли их в параллель садить , назначая им разные адреса?
..........
черкните если что, можно ли их в параллель садить , назначая им разные адреса?
Да, можно....до восьми штук. Адрес можно задать ножками А0, А1, А2..Подтягивать можно каждую из них или к 5в или к земле, тем самым получить 8 адресов. Пишут, что висячими в воздухе их оставлять нельзя. А по поводу дальности связи по I2C я не знаю...пока. Будем изучать.
P.S. За ссылочку спасибо. Как понял там какая-то библиотека. Пошел читать, пробовать
P.P.S Прочитал описание интерфейса I2C, пишут что длина линии до двух метров. Но еще прочитал статью про автомобильный процессор, там автор статьи пишет, что один из датчиков прекрасно работает по проводам длиной 7 метров, смотанным в бухту.
Найду длинные провода, попробую соединиться по ним и посмотреть как работает.
P.P.P.S Теперь у меня два датчика, стоят рядом в макетке. Запустил скетчик для двух датчиков. Порадовало, что показания с датчиков градус в градус. Про десятые градуса ни чего сказать не могу. Десятые пока считывать не научился.
Просьба к спецам - подскажите, пожалуйста, правильно ли я делаю, что подтягиваю пины датчиков А0, А1, А2 к +5в или к земле напрямую без резисторов?
Просьба к спецам - подскажите, пожалуйста, правильно ли я делаю, что подтягиваю пины датчиков А0, А1, А2 к +5в или к земле напрямую без резисторов?
А чего им будет то? )))).
А чего им будет то? )))).
Спасиб....вроде ничего не делается,...работают пока :) Были сомнения, может на ток потребления как влияют?
Написал скетч, снимаю показания с двух датчиков. В даташите написано, что температура хранится в двухбайтовом регистре. В скетче вроде написано считывать 2 байта, но читается всего один байт. Голова уже лопается, не могу понять, что не так делаю. Может кто подскажет? С первого датчика вывожу в десятичном, со второго - в бинарном.
P.S. Подключил датчик проводами 2 пары, выдраные из витой пары. Длина линии 5 метров. Датчик работает без проблем.
Joiner, в 16/ 32 строке ты говоришь, что будешь читать 2 байта. Но читаешь в 19 / 35 строке только один байт. Нужно читать примерно так:
float c= (( (Wire.read() <<8) | Wire.read() ) >>5) * 0.125 ; расшифровка -счатать старший первый байт, подвинуть его на 8 бит влево сложить его с вторым байтом, итог сдвинуть на 5 бит вправо, умножить на 0,125 и записать в переменную с. Всё это я прочёл в даташите сейчас, 7 страница. Мог в чём то и ошибиться, но общая идея должна быть верной.
Joiner, в 16/ 32 строке ты говоришь, что будешь читать 2 байта. Но читаешь в 19 / 35 строке только один байт. ....................
Так меня учил Джереми Блюм......или я его так понял :)
dimax, спасибо. Изучаю даташит. Пытаюсь что-то понять. Понемногу продвигаюсь......с огромным трудом.
Нашел еще старинную библиотеку от 2011года, переделал ее на современные условия, она теперь работает, но неправильно. Показывает температуру с десятыми долями, но абсолютно неправильно.
P.S. Методом тыка запустил с библиотекой. Показывает изменения с шагом 0.5 градуса. В положительной части все нормально, в отрицательной прикольно....Выставил датчик в форточку...Показания опустились до 0, потом -1.5, потом -1.0, потом -2.5, потом -2.0 Короче, сикось на кось :(
Метод тыка не подходит.
Joiner, а то что я предложил -какие результаты даёт?
Joiner, а то что я предложил -какие результаты даёт?
Пока не пробовал...Библиотеку добивал. Вечером попробую. Только таких инструкций <<8) | Wire.read() ) >>5 ; я вообще не понимаю что они делают, это пока выше моего понимания. Но попробую разобраться.
Спасибо.
Вести с полей
Joiner, а то что я предложил -какие результаты даёт?
dimax, еще раз спасибо!!!!!!!!!!!!!!! Попробовал, получилось. Теперь выдает с точностью 0.125
Теперь видно, что показания, рядом стоящих датчиков, немного отличаются (на 0.625).
Остается решить задачу вывода отрицательной температуры.
dimax, подскажите.
Я тут гранит науки несколько дней грыз безрезультатно :(, а Вы - одной строчкой мимоходом!!!!!!
Joiner, а что не так с выводом отрицательной температуры? По идее та строчка должна корректно выводить отрицательные значения..
Joiner, а что не так с выводом отрицательной температуры? По идее та строчка должна корректно выводить отрицательные значения..
Сегодня попробую отрицательную, но там вроде по другому считается. В даташите на той странице, которую Вы указали, две формулы. Если старший байт не 1, то считается иначе. Мне так кажется.
Сегодня попробую.
Joiner, никакой разницы. Единственно "слабое" место -в момент когда 11 байтовое значение двигается на 5 байт вправо. Тут знак может потеряться, но насколько я понимаю компилятор СИ понимает эти ситуации, и корректно заполняет всю освободившуюся левую сторону int'а единицами.
Joiner, никакой разницы..........................
Я сильно удивился!!!.....Но оно работает!!!! Смотрел библиотеку, там такое наворочено, и работает коряво! А здесь одна строчка!
dimax, тысячекратное спасибо за помощь!
А вот фото
Joiner, эта строчка не является чем-то уникальным, в каких то вариациях она уже встречалась мне, и аналогичными выражениями уже пользовался, поэтому на неё ушло 3 минуты. Гораздо интереснее сделать что-то , что ещё не делал. Вот например как можно сделать не используя тип float. Скетч сразу может похудеть на пару килобайт.
... Вот например как можно сделать не используя тип float. Скетч сразу может похудеть на пару килобайт..
.....
dimax, спасибо! Переписал, работает!
Есть еще в этом датчике выход OS, который по схеме в даташите подтянут к +питания через резистор. В регистрах записаны 80 градусов и 75 градусов по умолчанию. Т.Е. напряжение на OS будет +5в пока температура не достигнет 80 градусов. При достижении 80 градусов, напряжение на OS упадет в 0. При последующем увеличение температуры состояние вывода изменяться не будет. Но при снижении температуры ниже 75 градусов OS снова переключится в состояние +5. В регистры можно записать свои значения температуры, что я и сделал. Работает прекрасно. Вроде бы на основе этого датчика можно сделать термостат без применения микроконтроллера, НО.....
при выключении питания содержание регистров вновь становятся 80 и 75 градусов. Т.Е. энергонезависимой памяти нет. Немного обидно.
В целом впечатление хорошее. Много где можно применить, и точность приемлимая, примерно 2 градуса. У меня на улице один датчик показывает сейчас -0.5 градуса, другой +1.37 градуса, а спиртовой градусник за окном примерно +1.5 градуса. (второй датчик гораздо ближе к истине)
Огорчили энергозависимые регистры.
Joiner, точность +/- 2 градуса приемлимая?)) У DS18B20 точность +/- 0,5 -и мне казалось, что это многовато. У обычного медицинского ртутного градусника -точность 0,1.
Joiner, точность +/- 2 градуса приемлимая?)) У DS18B20 точность +/- 0,5 -и мне казалось, что это многовато. У обычного медицинского ртутного градусника -точность 0,1.
УПС.
Я с другими датчиками не сталкивался пока. Поэтому мне трудно судить. И правильно ли я понимаю, что такое точность? Точностью можно назвать шаг вывода температуры, у LM75A она 0.125 градуса.
В последнем сообщении под точностью я имел в виду как совпадают показания датчиков с реальной температурой.
Постараюсь в ближайшее время поэксперементировать с другими датчиками, после этого смогу сделать вывод.
P.S. Посмотрел на ебее DS18B20, 5шт примерно 300р. Понравилось, что всего 3 ноги, и удобно в колбочку прятать. Закажу, попробую.
Точность - максимально допустимое отклонение отображаемой температуры от фактической. К разрешающей способности отношения не имеет. DS-ки, из тех, что попадались в этот диапазон укладывались. В подавляющем большинстве бытовых применений 0,5 градуса вполне приемлемо.
Кстати, если проверяете, то лучше это делать на ненагреваемой поверхности (деревянный стол), ограничив датчики какими либо стенками (для исключения локальных сквозняков). Сверка на улице не учитывает много дестабилизирующих факторов (даже на расстоянии пары сантиметров между датчиками).
Joiner, Бывают датчики уже в "колбочке" :) Чуток подороже правда.
Точность -это максимально допустимое расхождение от реального значения. А разрешение - это минимальный шаг измерения данной величины. У DS18B20 точность +/- 0,5 гр, а разрешение 0,0625 гр.
Всем спасибо. Буду ждать DS18B20. После получения продолжу, ну и субъективно сравню :)
Joiner, думаю можно значение с LM75 сравнить с обычным градусником, а потом разницу программно прибавлять/вычитать. Должно получится хорошо.
Joiner, думаю можно значение с LM75 сравнить с обычным градусником, а потом разницу программно прибавлять/вычитать. Должно получится хорошо.
Я думал об этом... Но есть еще вариант. У меня подключены 2 экземпляра. Один из них показывает довольно точно. Остается проверить это во всем диапазоне измеряемых температур. Пока планирую для измерения температуры на улице, т.е от -40 до 35.
А если индивидуально оттарировать каждый датчик, результаты в массив, насколько стабильны будут показания?
А если индивидуально оттарировать каждый датчик, результаты в массив, насколько стабильны будут показания?
Пришла, заказанная ранее, такая штука
http://www.ebay.com/itm/231572306016?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT
Шла очень долго, но порадовала. Сравнивал с показаниями двух уличных спиртовых, двух медицинских ртутных....показывает очень точно, в пределах 0.1 градуса. И ЖК дисплей есть и ардуинки не надо......Заказалеще два :)
Пришли остальные, заказанные. Удивила копеечная цена. У нас комплект батареек стоит немного дешевле. Имею в виду батарейки которые стоят внутри термометров и пришли вместе с ними. Наконец собрал их вместе и сравнил показания. Нулевую температуру показывают одинаково, но +_ около нуля разница достигает около одного градуса. Комнатная температура на фотке
Один из них - кандидат на разборку. Хочется посмотреть, что там внутри. Может какая-нибудь маленькая ардуинка? :)
P.S. Открыл, посмотрел.....Зелененькая плата, на ней черный шлепок, а впереди ЖК индикатор...
Собрал....работает.
Я такой покупал году в 2012-м. Какое-то время он у меня висел на стенке, потом случился ремонт в квартире и в неразберихе он потерялся. Нашелся только в конце прошлого года, когда я полез что-то искать в одной из коробок с барахлом. Удивление мое вызвал тот факт, что приборчик продолжал работать и исправно показывал температуру. Сейчас опять висит на стенке. Батарейку я ему не менял. Впечатляет "запас хода".
Давно юзаю такие где попало.
Только у них есть два варианта:
у одного время измерения (обновления показаний) секунд 5, а у другого раз в минуту.
Ваш какой, если не секрет?
похоже на " быстрый " https://www.youtube.com/watch?v=jrUmbl6Qius
http://www.ebay.com/itm/311388382784
Снял со стенки, вынес на балкон. По ощущениям, где-то раз в минуту происходит изменение показаний на экране. Так бы и не знал. :)
У моих обновление через несколько секунд.
Печатаем плату на глянцевом журнале.
А принципиальную схему нарисуете? а то не понял
Нарисуют . Ещё через 2 года :)
Чего непонятного- конденсатор по питанию, резистор подтяжки на выходе. Всё согласно даташиту.
спасибо
типа вот так?
я просто эту схему сразу незаметил, и ещё, кондер на 100нанофарад а вольт сколько?
Попробуйте сами догадаться- ведь он стоит параллельно источнику питания :-))
А что, в источнике питания те же самые вольты? Ж8( )
Попробуйте сами догадаться- ведь он стоит параллельно источнику питания :-))
ну как сказать, то что он стоит паралельно источнику питания мне это если чесно ничего не даёт, а конденсатор на 3.3V и 100nF я не нашёл.
Открою страшную тайну- напряжение должно быть выше напряжения источника питания- неважно на сколько выше. Хоть в сто раз.
Открою страшную тайну- напряжение должно быть выше напряжения источника питания- неважно на сколько выше. Хоть в сто раз.
Вот теперь спасибо, я ж не знал, начинающий так сказать...
Ну да, то есть если весы на 120 кг, то взвешивать на них 119 - уже нельзя.
PS. Мне кажется, что даже если есть заученное наизусть, при полном отсутствии здравого смысла это не поможет.
Ты о чём?