Всё по DS18(B/S)20.

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Да и не только схему. Хотелось бы увидеть функции чтения/записи байтов в линию. Интересуют тайминги тайм-слотов. Только не говорите: "Они нормальные и соответствуют даташиту" :))
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Всё по DS18(B/S)20.

Сообщение Gudd-Head »

Кстати, не понимаю: зачем использовать транзистор и лишнюю ногу, когда можно питать датчик напрямую с вывода МК — 1 мА наверняка многие потянут.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
anton1814
Родился
Сообщения: 8
Зарегистрирован: Вт дек 25, 2012 23:12:22

Re: Всё по DS18(B/S)20.

Сообщение 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;
{========================}
Вложения
IMAG0148.jpg
Схема подключения датчиков на макете.
(151.89 КБ) 456 скачиваний
anton1814
Родился
Сообщения: 8
Зарегистрирован: Вт дек 25, 2012 23:12:22

Re: Всё по DS18(B/S)20.

Сообщение anton1814 »

Осцилограммы приложу завтро, все оборудование на работе.
Gudd-Head писал(а):Кстати, не понимаю: зачем использовать транзистор и лишнюю ногу, когда можно питать датчик напрямую с вывода МК — 1 мА наверняка многие потянут.

в этом то и дело, ноги контроллера должно хватить на пару датчиков, но все равно не получается.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Код: Выделить всё

  while (i<=16) and (i>=1) do
А почему до 16, а не до 8 ? Бит то 8 всего :)

Код: Выделить всё

     udelay(1);
     incl(PortA,1);
     incl(PortA,2);
     udelay(1);         <<<<<<<<<<  Этого мало перед чтением ! Хотя бы 3-4 us поставьте.

1 Us - маловато.

И ещё, не вижу окончательной задержки для завершения тайм-слота.
anton1814
Родился
Сообщения: 8
Зарегистрирован: Вт дек 25, 2012 23:12:22

Re: Всё по DS18(B/S)20.

Сообщение anton1814 »

Я все 2 байта данных принимаю, задержку увеличу, но оно и так работает на нормальном питании.
"И ещё, не вижу окончательной задержки для завершения тайм-слота." была udelay(30), потом убрал.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

оно и так работает на нормальном питании
Но на "ненормальном" же не работает :)
была udelay(30), потом убрал
Почему ? Да и 30-ти то тоже маловато.

PS: Что Вы тогда хотите от девайса, если занимаетесь отсебятиной ?
murzila
Мучитель микросхем
Сообщения: 436
Зарегистрирован: Сб апр 10, 2010 16:46:26

Re: Всё по DS18(B/S)20.

Сообщение murzila »

Как я и говорил - чудес не бывает... И уверяем, что всё строго по даташиту.
anton1814
Родился
Сообщения: 8
Зарегистрирован: Вт дек 25, 2012 23:12:22

Re: Всё по DS18(B/S)20.

Сообщение anton1814 »

добрый день! с тайм словами чтения проблем нет, если датчик подключен по паразитом питанию, то я с него без ошибок считываю данные температуры и получаю 85, делал тайм слои при котором датчик отвечает какое у него питание, отвечал паразитное. Проблема в том что датчик не включается на преобразование.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Ха...
А

Код: Выделить всё

 udelay(900);
не маловато для преобразования ? :)
murzila
Мучитель микросхем
Сообщения: 436
Зарегистрирован: Сб апр 10, 2010 16:46:26

Re: Всё по DS18(B/S)20.

Сообщение murzila »

Микросекунд?... Мда уж.
Изображение
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Всё по DS18(B/S)20.

Сообщение Gudd-Head »

anton1814 писал(а):тайменги...соответствуют временам в даташите и в программе

Нюню :))
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Re: Всё по DS18(B/S)20.

Сообщение drakon »

Попробуйте уменьшить подтягивающий резистор до 2.2К если напряжение питания 5в, до 1.2К если питание 3.3в. Еще не забывайте оставлять логическую "1" на шине перед выходом из подпрограмм инициализации шины, передачи и приема данных.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Всё по DS18(B/S)20.

Сообщение Аlex »

Да что там уменьшать ? Он итак всё уменьшил да повырезал что можно :)))
Нужно придерживаться тех. документации, и проблем не будет возникать... А то лезут на форум с вопросом, почему у меня не работает. Потом выясняется, что ТС отсебядины накатал, потому, что ему кажется, что так должно работать. Причём всех упорно убеждает в этом...
arelaw1
Родился
Сообщения: 15
Зарегистрирован: Сб авг 02, 2008 19:07:36
Откуда: Вологодская обл

Re: Всё по DS18(B/S)20.

Сообщение arelaw1 »

мужики , подскажите как будет себя вести DS1820 к критическим для него отметкам температуры т.е в реале может быть и 125 гр. делал простенький терморегулятор по этой схеме http://www.radiosait.ru/page_281.html , и планирую его использовать в автоматике самодельного автоклава ? будет ли работать , или загнется быстро?
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Всё по DS18(B/S)20.

Сообщение shads »

А чего это он загнется?.....
Это штатные для него температуры, так что смело 125 давай ему....
Правда, если все таки большие температуры возможны, чтобы не гадать, на сколько же его там зашкалило..., то уж лучше более высокотемпературный, но тут уж я не знаю, есть ли цифровые датчики с большей температурой чем у DS1820.....
piligrim130
Поставщик валерьянки для Кота
Сообщения: 2392
Зарегистрирован: Пт дек 03, 2010 10:52:25

Re: Всё по DS18(B/S)20.

Сообщение piligrim130 »

Подскажите - тоже интересно экстремальное использование DS1820.
Если приклеить датчик к железу тороидального трансформатора получится ли снимать с него показание или магнитный поток убьет его ,трансформаторы от 1 до 4 квт .
Наверное сам датчик надо прятать в железную трубу
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Всё по DS18(B/S)20.

Сообщение shads »

Убить - не убьет конечно..... но с уверенностью сказать что ему все ни по чем, тоже сложно.....
Наверное надо эксперементировать, разместить два датчика на поверхность одинаковой температуры, и к одному из них подвести сильное магнитное поле, и понаблюдать за показаниями (хотя, я склоняюсь к тому, что будет все ОК.)
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Re: Всё по DS18(B/S)20.

Сообщение drakon »

Больше чем на +125°C лучше не нагревать, кремний все-таки. А в заявленном диапазоне будет работать долго. А какая в автоклаве может быть максимальная температура? Кратковременно я нагревал датчик до 150°C, а может и больше.
arelaw1
Родился
Сообщения: 15
Зарегистрирован: Сб авг 02, 2008 19:07:36
Откуда: Вологодская обл

Re: Всё по DS18(B/S)20.

Сообщение arelaw1 »

максимальная температура будет 121 градус. но кроме температуры , там еще есть один параметр -давление , оно будет максимально атмосфер около четырех .вот тоже думаю , что для датчика это тоже не очень полезный параметр
Ответить

Вернуться в «Периферия»