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

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

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

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

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

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

Сообщение 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 скачиваний
Родился
Сообщения: 8
Зарегистрирован: Вт дек 25, 2012 23:12:22

Сообщение anton1814 »

Осцилограммы приложу завтро, все оборудование на работе.
Gudd-Head писал(а):Кстати, не понимаю: зачем использовать транзистор и лишнюю ногу, когда можно питать датчик напрямую с вывода МК — 1 мА наверняка многие потянут.
в этом то и дело, ноги контроллера должно хватить на пару датчиков, но все равно не получается.
Реклама
Эиком - электронные компоненты и радиодетали
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение А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 - маловато.

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

Сообщение anton1814 »

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

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

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

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

Сообщение murzila »

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

Сообщение anton1814 »

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

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

Ха...
А

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

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

Сообщение murzila »

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

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

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

Сообщение drakon »

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

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

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

Сообщение arelaw1 »

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

Сообщение shads »

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

Сообщение piligrim130 »

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

Сообщение shads »

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

Сообщение drakon »

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

Сообщение arelaw1 »

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

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