Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

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

Ср янв 11, 2017 22:05:18

Zhuk72 писал(а):При 9-битной конфигурации младшие 3 бита всегда в нуле.
в свойствах датчика протеуса можно настроить дискретность уставки его температуры

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

Ср янв 11, 2017 22:24:51

ARV писал(а):в свойствах датчика протеуса можно настроить дискретность уставки его температуры

Zhuk72 писал(а):Я уже проверил в Протеусе при шаге датчика 0.0625*С.


Может выразился не очень, но я имел в виду именно шаг установки температуры.

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

Ср янв 11, 2017 22:57:58

Zhuk72 писал(а):Я уже проверил в Протеусе при шаге датчика 0.0625*С.
При 9-битной конфигурации младшие 3 бита всегда в нуле.
Выход изменяется (начиная с бита 3), когда прирост достигает 0.5*С, т.е. через каждые 8 шагов.


Согласен, вполне логично.Благодарю за ответ!

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

Вт янв 24, 2017 20:12:27

Здраствуйте. Подскажите пожалуйста с преобразованием температуры)
Код:
       
                data[0] = w1_read();//читаем два байта с температурой
      data[1] = w1_read();
                                          //загоняем в двух байтную переменную
      temp = data[1];
      temp = temp<<8;
      temp |= data[0];  /// далее идет преобразование в переменную инт без точки
      
        d1=temp>>1;        //сдвиг вправо 1 части
        d2=temp>>3;     //сдвиг другой
        d3=d1+d2;       // сложение за результатом без точки

Возращаю функцией значение d3 и записываю его в инт.


z=temp_18b20(); // зэт интовая переменная в которой храню преобразование температуры   
     
          p=z>>15 ;//двигаю чтобы проверить знак температуры)
         if (p!=0)
         {
         z=z&(~((1<<11)|(1<<12)|(1<<13)|(1<<14)|(1<<15)));/а здесь попытался инвертировать биты знака чтобы потом работать с чистым числом  но не выходит ) не могу понять почему)
          }


либо я не понял что-то со знаком.

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

Вт янв 24, 2017 20:21:04

Tenken писал(а):Подскажите пожалуйста с преобразованием температуры
прочтите здесь: viewtopic.php?p=2971952#p2971952 и делайте правильно

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

Вс янв 29, 2017 16:00:05

ещевозник вопрос на счет контрольной суммы. Ибо переодически в индикации вылазиет какая-то хрень ) нашел на форуме такой код:
Код:
   uint8_t
    _crc_ibutton_update(uint8_t crc, uint8_t data)
    {
   uint8_t i;

   crc = crc ^ data;
   for (i = 0; i < 8; i++)
   {
       if (crc & 0x01)
           crc = (crc >> 1) ^ 0x8C;
       else
           crc >>= 1;
   }

   return crc;
    }
написано код рабочий только вот тут нихрена не понял.Я так понял это функцию тоже надо зацикливать на кол-во байт в дс 18б20 и потом сравнивать с последним?

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

Вс янв 29, 2017 18:39:03

Tenken писал(а):и потом сравнивать с последним?
не надо сравнивать, надо "зацикливать" ВСЕ данные - если все верно, то в итоге будет НОЛЬ.
но вот код показанной вами функции не проверял я, поэтому не гарантирую его корректность. лучше всего взять гарантированно верный код - из avr-libc (входит в комплект avr-gcc модуль util/crc16.h) или реализовать алгоритм самостоятельно по апноуту производителя.

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

Вс янв 29, 2017 19:43:44

Я вот такую функцию делал. Не хочу сказать что именно так и надо делать и что она оптимальна, но проблем не было. Сначала хотел на асме сделать, но решил что сделаю "потом".
Спойлер
Код:
#define dlinaBit 64   
#define defPolinomObr ((uint8_t)0b10001100)
Код:
//функция подсчета CRC8 для DS18B20
//*****************************************************************
uint8_t get_CRC8(uint8_t * pAddrr){   

uint8_t CRC8=0;
   
//----------

uint8_t NumerBit=0;      //номер текущего бита

   while ( NumerBit<(dlinaBit+8) ){
      uint8_t BitRead,BitHi;
      
      if (               //прочитаем значение бита
         (pAddrr[NumerBit>>3]) &   (0x01<<(NumerBit&0x07))   ) BitRead=0x80;   else BitRead=0; 
         
         
      if (!(NumerBit<dlinaBit)) BitRead=0;
      
      //---------
      if (CRC8&0x01) BitHi=1;else BitHi=0;                              //выдвигаемый бит
      
      CRC8>>=1;
      CRC8+=BitRead;
      
      if (BitHi)   CRC8=CRC8 ^ (uint8_t)defPolinomObr;;
      //---------         
   NumerBit++;   
   } //while
   
   
   return CRC8;   
   
}

Tenken писал(а): Ибо переодически в индикации вылазиет какая-то хрень
А вот периодической хрени быть не должно, у меня есть устройство с DS, кабель метров 15 был (сейчас укоротил), никаких проблем не было. Контрольная сумма "на всякий случай", но не для борьбы с помехами. Если у Вас постоянные ошибки, надо что-то пересмотреть.

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

Вс янв 29, 2017 20:16:39

Спасибо большое значит буду думать что не так дальше)

Нужна прошивка для подключения датчиков температуры ds18b20

Чт мар 30, 2017 09:08:08

Здравствуйте!
Нужен пример для AtmelStudio 4 на С++ для работы с датчиком температуры ds18b20 с выводом на LCD 1602+atmega32a
Очень жду помощи...

Re: Нужна прошивка для подключения датчиков температуры ds18

Чт мар 30, 2017 09:40:50

Воспользуйтесь поиском - примеров ПОЛНО, правда, не на С++, а на просто Си. На плюсах, на сколько мне известно, такой ерундой никто не заморачивался.

Re: Нужна прошивка для подключения датчиков температуры ds18

Чт мар 30, 2017 14:45:57

Может на форуме есть примеры рабочие???

Re: Нужна прошивка для подключения датчиков температуры ds18

Чт мар 30, 2017 14:53:34

https://www.google.ru/search?num=100&ne ... nxpvSRnI7w

как-то так , инфы море.

Re: Нужна прошивка для подключения датчиков температуры ds18

Чт мар 30, 2017 20:54:16

Ваша ссылка мне не помогла. Зависает
Третий пример из интернета пробую и ноль...
Помогите разобраться...

Re: Нужна прошивка для подключения датчиков температуры ds18

Чт мар 30, 2017 22:02:57

http://radiokot.ru/lab/controller/18
http://radiokot.ru/lab/controller/19/
http://radiokot.ru/circuit/digital/measure/135/
http://radiokot.ru/circuit/digital/measure/46/
http://radiokot.ru/circuit/digital/home/24/
http://radiokot.ru/circuit/digital/home/26/
http://radiokot.ru/circuit/digital/home/41/
http://radiokot.ru/circuit/digital/home/61/
http://radiokot.ru/circuit/digital/home/69/

И это только на этом сайте, да и то мне уже влом стало копипастить ссылки... Вам не стыдно?

Добавлено after 1 minute 23 seconds:
Re: Нужна прошивка для подключения датчиков температуры ds18b20
Я правда в списке ссылок с разбегу залимонил несколько проектов на PIC... они вам не подойдут... но еще есть минимум 50 (!!!) проектов термометров на Радиокоте - дерзайте!

Re: Нужна прошивка для подключения датчиков температуры ds18

Чт мар 30, 2017 22:41:45

ARV, я полагаю человеку надо такое решение https://www.chipdip.ru/product/sth0014ur , хотел-бы собрать сам - разобрался-бы как работает и слепил-бы.

Re: Нужна прошивка для подключения датчиков температуры ds18

Пт мар 31, 2017 04:49:53

Не судите строго, я только учусь...
С LCD без проблем подключил, ножками на вход/выход научился управлять. Сделал часики. С прерываниями разобрался. С шаговиками разобрался. А вот датчик температуры меня в ступор ввел. Мучаюсь и не пойму ничего вроде должно работать а не хочет...
Толи код кривой, то ли я как-то не так...
Купил для пробы датчик вот тут http://jewelfox.ru/lot.php?id=8439.
Может что не так подключаю (тоже в интернете смотрел)... диод при подключение питания должен же гореть, а у меня не горит...

Re: Нужна прошивка для подключения датчиков температуры ds18

Пт мар 31, 2017 07:46:37

Выводы проинициализируй...

Re: Нужна прошивка для подключения датчиков температуры ds18

Пт мар 31, 2017 08:26:50

acckyiboxxx писал(а):я полагаю человеку надо такое решение
именно такое решение есть среди показанных мной ссылок: http://radiokot.ru/circuit/digital/home/61/ - кстати, это моя разработка (основа), там и ссылка на мой вариант есть.
Изображение

Re: Нужна прошивка для подключения датчиков температуры ds18

Пт мар 31, 2017 08:43:17

Ну и я свои "пять копеек" вставлю. Вот сайтик с довольно разжеванным обучением. А вот статья про сам датчик, а здесь и термометр, как раз по всем вашим требованиям)
Ответить