Всё по DS18(B/S)20.
Да и не только схему. Хотелось бы увидеть функции чтения/записи байтов в линию. Интересуют тайминги тайм-слотов. Только не говорите: "Они нормальные и соответствуют даташиту" 
- Реклама
Кстати, не понимаю: зачем использовать транзистор и лишнюю ногу, когда можно питать датчик напрямую с вывода МК — 1 мА наверняка многие потянут.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 8
- Зарегистрирован: Вт дек 25, 2012 23:12:22
хорошо, схема показана на рисунке прикрепленном, Основной принцим тестов подключены 2 датчика, но поразному типу питания D1 по паразитному, D2 по обычному. контоллер мега32, кварц 16 Мгц. Программа написана в E-lab на паскале(кто нибудь еще в нем програмки пишет?).
Спойлер
Код: Выделить всё
{=======================}
procedure reset_otvet;
begin
excl(PortA,1);
excl(PortA,2);
udelay(480);
incl(PortA,1);
incl(PortA,2);
udelay(480);
end;
{========================}
procedure out_com(com:word);
var i,q : byte;
begin
case com of
$CC: H_com:=H_SkipRom; |
$44: H_com:=H_Convert; |
$BE: H_com:=H_Read_Scr; |
endcase;
i:=1;
while i<=8 do
q:=H_com[i];
if q=0 then excl(PortA,1);
excl(PortA,2);
udelay(65);
incl(PortA,1);
incl(PortA,2);
udelay(2);
elsif q=6 then excl(PortA,1);
excl(PortA,2);
udelay(2);
incl(PortA,1);
incl(PortA,2);
udelay(65);
endif;
inc(i);
endwhile;
end;
{========================}
procedure read_byte;
var i:byte;
w:byte;
begin
i:=1;
while (i<=16) and (i>=1) do
excl(PortA,1);
excl(PortA,2);
udelay(1);
incl(PortA,1);
incl(PortA,2);
udelay(1);
w:=pinA and %00000100;
if w=0 then SetBit(Ttek_voda,i,False);
else SetBit(Ttek_voda,i,True);
endif;
w:=pinA and %00000010;
if w=0 then SetBit(Ttek_maslo,i,False);
else SetBit(Ttek_maslo,i,True);
endif;
inc(i);
endwhile;
Ttek_maslo:=Ttek_maslo shra 5;
Ttek_voda:=Ttek_voda shra 5;
end;
{========================}
procedure opros;
begin
PushAllRegs;
DisableInts;
reset_otvet;
out_com($CC);
out_com($44);
udelay(900);
reset_otvet;
out_com($CC);
out_com($BE);
read_byte;
EnableInts;
PopAllRegs;
end;
{========================}- Вложения
-
- IMAG0148.jpg
- Схема подключения датчиков на макете.
- (151.89 КБ) 456 скачиваний
- Сообщения: 8
- Зарегистрирован: Вт дек 25, 2012 23:12:22
Осцилограммы приложу завтро, все оборудование на работе.
в этом то и дело, ноги контроллера должно хватить на пару датчиков, но все равно не получается.Gudd-Head писал(а):Кстати, не понимаю: зачем использовать транзистор и лишнюю ногу, когда можно питать датчик напрямую с вывода МК — 1 мА наверняка многие потянут.
А почему до 16, а не до 8 ? Бит то 8 всегоКод: Выделить всё
while (i<=16) and (i>=1) do
Код: Выделить всё
udelay(1); incl(PortA,1); incl(PortA,2); udelay(1); <<<<<<<<<< Этого мало перед чтением ! Хотя бы 3-4 us поставьте.
1 Us - маловато.
И ещё, не вижу окончательной задержки для завершения тайм-слота.
- Реклама
- Сообщения: 8
- Зарегистрирован: Вт дек 25, 2012 23:12:22
Я все 2 байта данных принимаю, задержку увеличу, но оно и так работает на нормальном питании.
"И ещё, не вижу окончательной задержки для завершения тайм-слота." была udelay(30), потом убрал.
"И ещё, не вижу окончательной задержки для завершения тайм-слота." была udelay(30), потом убрал.
Но на "ненормальном" же не работаетоно и так работает на нормальном питании
Почему ? Да и 30-ти то тоже маловато.была udelay(30), потом убрал
PS: Что Вы тогда хотите от девайса, если занимаетесь отсебятиной ?
- Сообщения: 436
- Зарегистрирован: Сб апр 10, 2010 16:46:26
- Сообщения: 8
- Зарегистрирован: Вт дек 25, 2012 23:12:22
добрый день! с тайм словами чтения проблем нет, если датчик подключен по паразитом питанию, то я с него без ошибок считываю данные температуры и получаю 85, делал тайм слои при котором датчик отвечает какое у него питание, отвечал паразитное. Проблема в том что датчик не включается на преобразование.
- Сообщения: 436
- Зарегистрирован: Сб апр 10, 2010 16:46:26
Нюнюanton1814 писал(а):тайменги...соответствуют временам в даташите и в программе
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Попробуйте уменьшить подтягивающий резистор до 2.2К если напряжение питания 5в, до 1.2К если питание 3.3в. Еще не забывайте оставлять логическую "1" на шине перед выходом из подпрограмм инициализации шины, передачи и приема данных.
Да что там уменьшать ? Он итак всё уменьшил да повырезал что можно 
Нужно придерживаться тех. документации, и проблем не будет возникать... А то лезут на форум с вопросом, почему у меня не работает. Потом выясняется, что ТС отсебядины накатал, потому, что ему кажется, что так должно работать. Причём всех упорно убеждает в этом...
Нужно придерживаться тех. документации, и проблем не будет возникать... А то лезут на форум с вопросом, почему у меня не работает. Потом выясняется, что ТС отсебядины накатал, потому, что ему кажется, что так должно работать. Причём всех упорно убеждает в этом...
мужики , подскажите как будет себя вести DS1820 к критическим для него отметкам температуры т.е в реале может быть и 125 гр. делал простенький терморегулятор по этой схеме http://www.radiosait.ru/page_281.html , и планирую его использовать в автоматике самодельного автоклава ? будет ли работать , или загнется быстро?
- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
А чего это он загнется?.....
Это штатные для него температуры, так что смело 125 давай ему....
Правда, если все таки большие температуры возможны, чтобы не гадать, на сколько же его там зашкалило..., то уж лучше более высокотемпературный, но тут уж я не знаю, есть ли цифровые датчики с большей температурой чем у DS1820.....
Это штатные для него температуры, так что смело 125 давай ему....
Правда, если все таки большие температуры возможны, чтобы не гадать, на сколько же его там зашкалило..., то уж лучше более высокотемпературный, но тут уж я не знаю, есть ли цифровые датчики с большей температурой чем у DS1820.....
- Сообщения: 2448
- Зарегистрирован: Пт дек 03, 2010 10:52:25
Подскажите - тоже интересно экстремальное использование DS1820.
Если приклеить датчик к железу тороидального трансформатора получится ли снимать с него показание или магнитный поток убьет его ,трансформаторы от 1 до 4 квт .
Наверное сам датчик надо прятать в железную трубу
Если приклеить датчик к железу тороидального трансформатора получится ли снимать с него показание или магнитный поток убьет его ,трансформаторы от 1 до 4 квт .
Наверное сам датчик надо прятать в железную трубу
- Сообщения: 882
- Зарегистрирован: Ср фев 22, 2012 01:25:21
Убить - не убьет конечно..... но с уверенностью сказать что ему все ни по чем, тоже сложно.....
Наверное надо эксперементировать, разместить два датчика на поверхность одинаковой температуры, и к одному из них подвести сильное магнитное поле, и понаблюдать за показаниями (хотя, я склоняюсь к тому, что будет все ОК.)
Наверное надо эксперементировать, разместить два датчика на поверхность одинаковой температуры, и к одному из них подвести сильное магнитное поле, и понаблюдать за показаниями (хотя, я склоняюсь к тому, что будет все ОК.)
Больше чем на +125°C лучше не нагревать, кремний все-таки. А в заявленном диапазоне будет работать долго. А какая в автоклаве может быть максимальная температура? Кратковременно я нагревал датчик до 150°C, а может и больше.
максимальная температура будет 121 градус. но кроме температуры , там еще есть один параметр -давление , оно будет максимально атмосфер около четырех .вот тоже думаю , что для датчика это тоже не очень полезный параметр



