Свежие обсуждения
Микроконтроллеры

датчики DS18B20

1 9 21

У меня тинька 2313. Боюсь только, что придется ее менять. В ходе экспериментов выяснилось, что кусок кода отвечающий за датчики отъедат от тиньковской памяти >70%. И это без какой-либо ее обработки, только считывание температуры! А еще переслать по модбасу надо...

DIKLER, а где это датчики по 46 руб? Может там и все остально подешевле Я брал в Платане

 

gan, Сергей К, спасибо, но с пиками я вообще дела не имел Хотелось бы, конечно, применительно к avr-кам

 

Прораб счастья: кусок кода отвечающий за датчики отъедат от тиньковской памяти >70%.
На асме должен поместиться. Алгоритм описан в даташите на датчик. http://invent-systems.narod.ru/_pdf/DS18B20_RU.pdf

 

На сайте maxima есть APPLICATION NOTE 2420 "1-Wire Communication with a Microchip PICmicro Microcontroller"
Достаточно подробно и понятно расписано. Использовал для DS1990 и DS1821.

 

Прораб счастья: а где это датчики по 46 руб? Может там и все остально подешевле Я брал в Платане
Ну платан это тоже чип-дип только вид с боку Я последнее время покупаю тут http://comlark.ru/ , единственное лучше позвонить и уточнить наличие.

 

smg123, Sun525: Спасибо, эти доки у меня есть. Я думал, может уже у кого-нить есть рабочий код в точности (ну или очень) подходящий к моей задаче.

Мне не лень самому разобраться. Проблема в другом: моя работа не связана с электроникой. После работы совсем немного времени остается на изучение. В выходные можно выкроить пару-тройку часов на это. И при условии, что опыта у меня мало, я буду разбираться с этими датчиками пару месяцев! Отсюда и желание разбираться с уже готовым и работающем устройством

DIKLER: Я последнее время покупаю тут
Спасибо! Посмотрю.

 

Прораб счастья: кусок кода отвечающий за датчики отъедат от тиньковской памяти >70%
ОЗУ или ПЗУ? Если ОЗУ, то она освободится после отработки функции. Да и слишком много это.... или там (МК) памяти так мало?

Собственно физическая работа предельно проста:
Настриваем ногу на вход: получаем в линии +5В.
Записываем в ногу "0" и настраиваем на выход - притягиваем линию к 0В (т.е. получаем лог. "0" в линии).
Чтение - линия отпущена (нога на входе, естественно), смотрим логический уровень на этом входе (ноге)
P.S. Линия подтягивается к +5В с помощью сопротивления 4,7к

Все управляется одной ногой. Дальше просто смотрим на картинки с таймингами и переключаем ногу вход/выход
Удачи

 

Сергей К: Настриваем ногу на вход...
Насколько я понял - речь не совсем об этом. Процедуры работы с одним устройством на шине просты и известны. Человеку нужен хотя бы кусок кода, осуществляющий поиск подключённых к шине устройств, запись в память их ID номеров и уже потом чтение данных со всех из найденных.

 

Сергей К:
Все управляется одной ногой
Только нога должна быть с ОС.

smg123:
поиск подключённых к шине устройств
Вроде бы, в протоколе 1-Wire существует команда последовательной выдачи ID от датчиков. Но лично я не видел, что бы кто-то с нею разобрался и применял на практике. Ну, можете ответить хотя бы на самый первый вопрос, как понять, какой именно датчик ответил?
Поэтому используют обычную команду "считать ID". На неё отвечают все 1-Wire устройства на шине, поэтому использовать её можно только по очереди подключая датчики. Практическая реализация, видел только два пути:
1. Тупо, на стороннем девайсе считать ID датчика и вставить в программу (наиболее распространён).
2. Усложнять программу, вводя в неё алгоритмы считывания, но, опять-таки, необходимо последовательно, по очереди, подключать по одному датчику.
Тут недавно, как-раз делал програмку для холодильника (правда для DS18S20). Выбрал второй пункт (кстати, тайминги организовал по прерываниям таймера, чего, в распространённых программах не встречал), так программа разрослась, "мама не горюй".

 

Gregory: Только нога должна быть с ОС
не обязательно. В моем примере я указал: в нормальном состоянии нога находится "на вход" (линия отпущенна), когда нужно притянуть линию к "0" переключаем ее на выход, при этом в защелку этой ноги должно быть занесенно лог. "0". Т.е. управляем линией переключением ноги на вход/выход а не подаем на нее 0/1.

Gregory: тайминги организовал по прерываниям таймера
не вижу смысла. Только таймер потерять. У меня все задерржки командами вроди delay_us(15) (задержка в 15 мкс).

Gregory: Вроде бы, в протоколе 1-Wire существует команда последовательной выдачи ID от датчиков
можно подключить один датчик к линии и спросить у него свой номер. Затем, по очереди, подключать остальные и сохранять эти номера.