Страница 18 из 59
Re: Всё по DS18(B/S)20.
Добавлено: Ср дек 26, 2012 20:19:16
Аlex
Да и не только схему. Хотелось бы увидеть функции чтения/записи байтов в линию. Интересуют тайминги тайм-слотов. Только не говорите: "Они нормальные и соответствуют даташиту"

Re: Всё по DS18(B/S)20.
Добавлено: Ср дек 26, 2012 22:29:45
Gudd-Head
Кстати, не понимаю: зачем использовать транзистор и лишнюю ногу, когда можно питать датчик напрямую с вывода МК — 1 мА наверняка многие потянут.
Re: Всё по DS18(B/S)20.
Добавлено: Ср дек 26, 2012 23:11:14
anton1814
хорошо, схема показана на рисунке прикрепленном, Основной принцим тестов подключены 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;
{========================}
Re: Всё по DS18(B/S)20.
Добавлено: Ср дек 26, 2012 23:14:03
anton1814
Осцилограммы приложу завтро, все оборудование на работе.
Gudd-Head писал(а):Кстати, не понимаю: зачем использовать транзистор и лишнюю ногу, когда можно питать датчик напрямую с вывода МК — 1 мА наверняка многие потянут.
в этом то и дело, ноги контроллера должно хватить на пару датчиков, но все равно не получается.
Re: Всё по DS18(B/S)20.
Добавлено: Ср дек 26, 2012 23:27:37
Аlex
А почему до 16, а не до 8 ? Бит то 8 всего
Код: Выделить всё
udelay(1);
incl(PortA,1);
incl(PortA,2);
udelay(1); <<<<<<<<<< Этого мало перед чтением ! Хотя бы 3-4 us поставьте.
1 Us - маловато.
И ещё, не вижу окончательной задержки для завершения тайм-слота.
Re: Всё по DS18(B/S)20.
Добавлено: Ср дек 26, 2012 23:37:29
anton1814
Я все 2 байта данных принимаю, задержку увеличу, но оно и так работает на нормальном питании.
"И ещё, не вижу окончательной задержки для завершения тайм-слота." была udelay(30), потом убрал.
Re: Всё по DS18(B/S)20.
Добавлено: Чт дек 27, 2012 08:25:19
Аlex
оно и так работает на нормальном питании
Но на "ненормальном" же не работает
была udelay(30), потом убрал
Почему ? Да и 30-ти то тоже маловато.
PS: Что Вы тогда хотите от девайса, если занимаетесь отсебятиной ?
Re: Всё по DS18(B/S)20.
Добавлено: Чт дек 27, 2012 08:34:24
murzila
Как я и говорил - чудес не бывает... И уверяем, что всё строго по даташиту.
Re: Всё по DS18(B/S)20.
Добавлено: Чт дек 27, 2012 09:14:22
anton1814
добрый день! с тайм словами чтения проблем нет, если датчик подключен по паразитом питанию, то я с него без ошибок считываю данные температуры и получаю 85, делал тайм слои при котором датчик отвечает какое у него питание, отвечал паразитное. Проблема в том что датчик не включается на преобразование.
Re: Всё по DS18(B/S)20.
Добавлено: Чт дек 27, 2012 09:17:06
Аlex
Ха...
А
не маловато для преобразования ?

Re: Всё по DS18(B/S)20.
Добавлено: Чт дек 27, 2012 10:55:59
murzila
Микросекунд?... Мда уж.

Re: Всё по DS18(B/S)20.
Добавлено: Чт дек 27, 2012 12:33:15
Gudd-Head
anton1814 писал(а):тайменги...соответствуют временам в даташите и в программе
Нюню

Re: Всё по DS18(B/S)20.
Добавлено: Пн янв 07, 2013 14:01:59
drakon
Попробуйте уменьшить подтягивающий резистор до 2.2К если напряжение питания 5в, до 1.2К если питание 3.3в. Еще не забывайте оставлять логическую "1" на шине перед выходом из подпрограмм инициализации шины, передачи и приема данных.
Re: Всё по DS18(B/S)20.
Добавлено: Пн янв 07, 2013 14:09:54
Аlex
Да что там уменьшать ? Он итак всё уменьшил да повырезал что можно

Нужно придерживаться тех. документации, и проблем не будет возникать... А то лезут на форум с вопросом, почему у меня не работает. Потом выясняется, что ТС отсебядины накатал, потому, что ему кажется, что так должно работать. Причём всех упорно убеждает в этом...
Re: Всё по DS18(B/S)20.
Добавлено: Ср янв 09, 2013 09:12:54
arelaw1
мужики , подскажите как будет себя вести DS1820 к критическим для него отметкам температуры т.е в реале может быть и 125 гр. делал простенький терморегулятор по этой схеме
http://www.radiosait.ru/page_281.html , и планирую его использовать в автоматике самодельного автоклава ? будет ли работать , или загнется быстро?
Re: Всё по DS18(B/S)20.
Добавлено: Ср янв 09, 2013 10:09:27
shads
А чего это он загнется?.....
Это штатные для него температуры, так что смело 125 давай ему....
Правда, если все таки большие температуры возможны, чтобы не гадать, на сколько же его там зашкалило..., то уж лучше более высокотемпературный, но тут уж я не знаю, есть ли цифровые датчики с большей температурой чем у DS1820.....
Re: Всё по DS18(B/S)20.
Добавлено: Ср янв 09, 2013 10:13:38
piligrim130
Подскажите - тоже интересно экстремальное использование DS1820.
Если приклеить датчик к железу тороидального трансформатора получится ли снимать с него показание или магнитный поток убьет его ,трансформаторы от 1 до 4 квт .
Наверное сам датчик надо прятать в железную трубу
Re: Всё по DS18(B/S)20.
Добавлено: Ср янв 09, 2013 10:19:58
shads
Убить - не убьет конечно..... но с уверенностью сказать что ему все ни по чем, тоже сложно.....
Наверное надо эксперементировать, разместить два датчика на поверхность одинаковой температуры, и к одному из них подвести сильное магнитное поле, и понаблюдать за показаниями (хотя, я склоняюсь к тому, что будет все ОК.)
Re: Всё по DS18(B/S)20.
Добавлено: Ср янв 09, 2013 10:21:14
drakon
Больше чем на +125°C лучше не нагревать, кремний все-таки. А в заявленном диапазоне будет работать долго. А какая в автоклаве может быть максимальная температура? Кратковременно я нагревал датчик до 150°C, а может и больше.
Re: Всё по DS18(B/S)20.
Добавлено: Ср янв 09, 2013 10:40:33
arelaw1
максимальная температура будет 121 градус. но кроме температуры , там еще есть один параметр -давление , оно будет максимально атмосфер около четырех .вот тоже думаю , что для датчика это тоже не очень полезный параметр