Чтение температуры с DS18B20 (продолжение)

Сопряжение термодатчика DS1820 с Flowcode

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение milcin68 (Александр) » 20 мар 2020, 16:31

600 и 540 мкс они уже настроены здесь

график 2.JPG
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: milcin68
Имя: Александр
(Мичуринск)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение milcin68 (Александр) » 21 мар 2020, 01:15

А может такое быть что партия датчиков бракованная,
я уже ASM файл через мп лаб скомпилировал , выкинул прерывание (правда в asm оно почему то осталось, закомментировал его)перебросил датчик на RA0
что крутить уже не знаю, выкинул опрос шины оставил только три макроса на индекаторе горит 005 градуса
в протеусе такое можно сэмулировать если резистор подтяжки поставить на 470 ом
резистор ставил 10 к но он то должен от 4.7 к работать.
Ник: milcin68
Имя: Александр
(Мичуринск)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение milcin68 (Александр) » 23 мар 2020, 10:15

В общем весь ответ в моей проблеме решен тут http://flowcode.info/forum/viewtopic.php?p=23658#p23658 это правит что бы использовать любой порт.
И вторая тут http://flowcode.info/forum/viewtopic.php?p=23787#p23787 это правит работу для 4 мГц.
Вот уже исправленный файл
FC5_PIC_One_Wire.rar
может есть и еще какие исправления, но мне пока они не понятны.
Да и когда ты начинающий тяжело в этом разобраться.
Проверял в железе на 4мГц и 20 Мгц не меняя в FC5_PIC_One_Wire. больше ни чего.
У вас нет доступа для просмотра вложений в этом сообщении.
Ник: milcin68
Имя: Александр
(Мичуринск)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение Dim_Dim (Dim_Dim) » 14 янв 2021, 19:25

Доброго времени.
Суть вопроса, 7segm индикатор подключен через сдвиговые регистры 74HC595. При измерении температуры датчиком DS18B20, индикатор тухнет на время опроса датчика. Можно ли как то избавится от этого моргания?
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Dim_Dim
Имя: Dim_Dim
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение Taska (Максим) » 14 янв 2021, 19:42

Зачем же его каждую секунду измерять?
Время конверсии 750мс вот и тухнет.
Убери эту задержку в макросе DS1820_start_conversion
Код: выделить все
while (in == 0)
   {
      in = oo_rx_byte();
      delay_ms(4);
      counter++;
      if (counter == 0xFF)      // Security: if the conversion is not completed
         return 1;            // after > 1 sec -> break.
   }

И сделай так при tik1 = 0 запускай DS1820_start_conversion, а при tik1 = 500 считывай температуру.
Аватар пользователя
Ник: Taska
Имя: Максим
(Кривой Рог)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение Dim_Dim (Dim_Dim) » 14 янв 2021, 20:00

Спасибо, получилось.))
Taska писал(а):Зачем же его каждую секунду измерять?
tik1 >= 500 это в примере для форума, чтобы было видно что тухнет. А так, время измерения будет 1 раз в примерно 30 сек. Но все равно, при стандартном макросе, раз в 30 сек моргало бы.
Taska писал(а):Время конверсии 750мс вот и тухнет. Убери эту задержку в макросе DS1820_start_conversion
Можно в двух словах, в каких случаях это надо делать, в каких нет?
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: Dim_Dim
Имя: Dim_Dim
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение Enigm (Enigm) » 15 янв 2021, 07:44

Если прога простая и задержки не важны, то можно и не убирать.
А если прога нужна на пролете, что бы ни где не задерживалась, тогда задержку через таймер , и убрать задержку с макроса.
Главное помнить, что после старта конверсии надо выждать минимум 750 мс, и потом читать данные.
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение Dim_Dim (Dim_Dim) » 15 янв 2021, 08:13

То есть после макроса DS1820_start_conversion, в любом случае должна быть задержка в 750 мс минимум и она реализуется через прерывания, если нужно на пролете, правильно понял?

Почему вопрос задаю, в моем примере я убрал задержку из макроса DS1820_start_conversion и всё, больше нигде никаких пауз не добавлял и работает.
Аватар пользователя
Ник: Dim_Dim
Имя: Dim_Dim
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение Taska (Максим) » 15 янв 2021, 08:25

В железе может быть бредовые показания
Аватар пользователя
Ник: Taska
Имя: Максим
(Кривой Рог)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Чтение температуры с DS18B20 (продолжение)

Сообщение Enigm (Enigm) » 15 янв 2021, 11:52

Правильно поняли.
Если после старта не выдержать время и сразу читать, то будут бредовые показания.
А так заводите прерывание по таймеру.
Пусть будет например на 100 герц.
В прерывание переменную увеличиваете на еденицу.
Значит за секунду у нас переменная будет равна 100.
Например переменная будет Time и при инициализации присваиваем ей 0
Еще нам понадобится переменная блокировки , чтобы повторн не стартовать постоянно, пусть будет Blok инициализации присваиваем ей 0
Допустим нам нужно опрашивать датчик 1 раз в 10 секунд.
В майне пишем.
Cтавим первое условие , Time>900 and blok=0 тут 9 секунд, но с временем ожидания в 1 секунду , будет 10 сек.
Если выражение верное то запускаем конверцию и пишем blok =1.
Это мы запустили конверсию через 9 секунд и заблокировали что бы больше сюда не попадать
Второе условие
Time>1000. тут к прошедшему времени мы добовляем время конверсии при наших данных это 100 = 1 секунде.
Если условие верное , то читаем данные отключаем блок blok=0 и обнуляем таймер Time =0.
Как то так.
Может можно и проще, но это первое что на ум пришло.
Аватар пользователя
Ник: Enigm
Имя: Enigm
(Сочи)
Гуру
Гуру
Информация о пользователе
Вернуться наверх

Пред.След.

Вернуться в Flowcode + DS1820

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей