STM32 DS18B20 подключение датчика температуры

Поділитися
Вставка
  • Опубліковано 23 лис 2024
  • STM32CUBE DS18B20 подключение датчика температуры.Считываем значение температуры.
    Сам проект drive.google.c...
    То что я использую или использовал в своих видео :
    STM32F103C8T6 отладочная плата alipromo.com/re...
    STM8 отладочная плата alipromo.com/re...
    ESP8266 отладочная плата alipromo.com/re...
    Программатор STM32&STM8 alipromo.com/re...
    Логический анализатор alipromo.com/re...
    Проводки для логического анализатора alipromo.com/re...
    NEOWAY M590 GSM\GPRS модуль alipromo.com/re...
    Блютуз модуль alipromo.com/re...
    Дисплей ST7735S alipromo.com/re...
    Проводки alipromo.com/re...
    Датчик движения alipromo.com/re...
    BME280 крутой датчик alipromo.com/re...
    DC-DC step-down alipromo.com/re...
    Бумага для ЛУТ alipromo.com/re...
    DS18B20 alipromo.com/re...
    материалы по данной теме
    mycontroller.ru...

КОМЕНТАРІ • 113

  • @AleksandrArtroom
    @AleksandrArtroom 7 років тому +2

    Тоже использую эти модули на МК STM32F103, но решил подключить внутренний температурный сенсор и вывести на LCD экран температуру.
    Ещё запитал устройство от аккумуляторов и заряжаю его от солнечных панелей.
    Подробные изыскания записал на видео и выложил на канале, там же есть ссылка на проект в Кейл студии.

    • @AleksandrArtroom
      @AleksandrArtroom 7 років тому

      Сейчас пытаюсь подключить датчик температуры 18B20, как у автора, но решил железным способом реализовать через usart 1-wire.
      Но как то не очень выходит, пока добился, что отдаёт показания датчик, только во время отладки.
      Если есть у кого какие советы пишите.

  • @oleholeynikov8659
    @oleholeynikov8659 4 роки тому

    с моим уровнем нужно немного поломать голову)) Думаю, что в таких видео лучше предупредить, что нужны базовые знания с по-битовыми операциями и наименованиями регистров. В остальном отличное видео. Предполагаю, что это самое ресурсоэкономное исполнение. Спасибо за видео! Лайк!

    • @ElectroHobby1
      @ElectroHobby1  4 роки тому

      ua-cam.com/video/miBf5bqynyo/v-deo.html
      ua-cam.com/video/uVVhgYG-n2I/v-deo.html на любой вкус.

  • @andrii_diyvideo
    @andrii_diyvideo 7 років тому

    Спасибо тебе добрый человек, за 15 минут запустил датчик.

    • @ElectroHobby1
      @ElectroHobby1  7 років тому

      Самый простой пример .Поэтому только по одному на каждую ногу)

    • @andrii_diyvideo
      @andrii_diyvideo 7 років тому

      Я их и хотел использовать на разных ногах, 2-3 штуки. Пример очень помог.

  • @SIM31r
    @SIM31r 6 років тому

    В защиту "ногодрыга" скажу что так можно точнее формировать интервалы, чем при использовании UART, где интервалы грубее. Иногда при изменении емкости кабеля, изменении температуры, отсыревании, связь пропадает. Причина не хватает каких-то микросекунд для передачи данных, уровень сигнала нарастает, но немного дольше, чем нужно и данные пропадают полностью. У нас так в бассейне было, кабель 50 метров в стене в штробе, некоторое время работал, а потом перестал отвечать датчик температуры воды DS18b20. Пришлось корректировать сигнал RC цепочкой на стороне датчика, нарушив его герметичность...

    • @ElectroHobby1
      @ElectroHobby1  6 років тому

      Сечение кабеля?Лог уровни 3.3В или 5В были?

  • @zhbr9642
    @zhbr9642 4 роки тому

    4096 это максимальное значение для 12бит, соответственно при изменении разрядности измерения это значение нужно будет уменьшать.

  • @bayramgoktepe9472
    @bayramgoktepe9472 7 років тому

    Merhaba Programınız çalışıyor. Fantastik. Ben stm32f030f4p6 için programı dönüştürdü. Herşey için teşekkürler.

  • @ДенисКутепов-ъ6у
    @ДенисКутепов-ъ6у 3 роки тому

    Спасибо огромное за ваш труд!!!

    • @ElectroHobby1
      @ElectroHobby1  3 роки тому

      На канале есть еще два видео для ds18b20 и stm32 с множественным подключением.

  • @Valentin1999ua
    @Valentin1999ua 7 років тому

    Отличный урок, благодарю.

  • @panigo63
    @panigo63 8 років тому

    Здравствуйте. Благодарю за Вашу работу. Подскажите как Вы настроили отображение кириллицы в комментариях?

  • @TheOmarsogratlinskiy
    @TheOmarsogratlinskiy 8 років тому

    такая же конфигурация. Если делать замеры раз в секунду, то в течении 4х часов очень много выбросов до 50

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      Если делать рас в 2 секунды?

    • @TheOmarsogratlinskiy
      @TheOmarsogratlinskiy 8 років тому

      ElectroHobby картина практически не меняется, 9 датчиков на шине, раз в секунду спрашиваю все. пробовал каждую секунду опрашивать по одному датчику( период опроса одного датчика 9сек.) разница небольшая

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      Как я понял вы используете стороннюю библиотеку, а не код из этого примера.Ну тогда надо искать какую-то зависимость.Например изменить количество датчиков до одного проверить что все ОК?Уменьшить длину линии проверить с парой - тройкой датчиков может напряжение в конце линии проседает.Вообще нужны эксперименты.Мне интересна схема подключения и длинна линии?В таких случаях выручает осциллограф и логический анализатор.Погрешность в одних и тех же датчиках?

    • @TheOmarsogratlinskiy
      @TheOmarsogratlinskiy 8 років тому

      ElectroHobby погрешность сыпется по всем датчикам, длина линии около двух метров, провод экранирован, все датчики на конце линии, там же и подтяжка к 3.3В, экспериментов делали много. в итоге сделали фильтрацию цифровую.

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      Не знаю как устроена библиотека но как вариант если команда преобразования отправляется сразу всем датчикам то может проседать напряжение.

  • @BarVados
    @BarVados 5 місяців тому

    Подскажите пожалуйста, почему нельзя использовать внутреннюю подтяжку ноги у микроконтроллера, а вместо этого все используют подтяжку ставя резистор?

    • @ElectroHobby1
      @ElectroHobby1  5 місяців тому

      Резистор внутри мк имеет очень малую мощность. А так можно использовать если сопротивление устраивает.

    • @BarVados
      @BarVados 5 місяців тому

      @@ElectroHobby1 спасибо

  • @yura.kuznetsov
    @yura.kuznetsov 7 років тому

    здравствуйте! видео было весьма познавательным, спасибо. если я правильно понимаю у вас датчик подключен к внешнему питанию, а что если сделать "паразитное питание", там вроде другая обработка(и этот алгоритм не сработает) или я ошибаюсь?!

    • @ElectroHobby1
      @ElectroHobby1  7 років тому

      Датчик питается от самой платы с мк.+ - 3.3в и одна из ножек мк.Паразитное питание здесь не работает.

    • @yura.kuznetsov
      @yura.kuznetsov 7 років тому +1

      А видео будет с "паразитным" подключением DS18B20?думаю ни одному мне это будет интересно + я еще в интернете пока не нашел, кто по полочкам раскладывает подключение с "паразитным" питанием

  • @andrewtitoff6167
    @andrewtitoff6167 Рік тому

    а где ссылка на статью?

  • @kahlok8339
    @kahlok8339 7 років тому +3

    can you make an English version? appreciate it

  • @ivanrusev2270
    @ivanrusev2270 Рік тому

    У меня ещё один вопрос.Как конвертировать с дробным числом?

    • @ivanrusev2270
      @ivanrusev2270 Рік тому

      А почему вы не ответили?

  • @egorkomogortsev3700
    @egorkomogortsev3700 8 років тому

    Доброго времени суток! А зачем использовали таймер? В Hal же есть встроенные задержки HAL_Delay.

    • @ElectroHobby1
      @ElectroHobby1  8 років тому +1

      Можно но код можно переделать немного и он не тупо в while() будет ждать. То же самое и HAL_Delay() можно переделать под себя и если время не прошло заниматься чем-то полезным.

    • @NBulkin
      @NBulkin 8 років тому +2

      Таймер использован, т.к. HAL_Delay даёт задержку в миллисекундах. А для работы с Onewire требуются задержки в микросекундах.

  • @МихаилТ-г8д
    @МихаилТ-г8д 8 років тому

    Почему-то переменная temp нулю постоянно равна. Проект залил не меняя скачанный по ссылке. Открываю в STMStudio

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      Что возвращает функция ds_reset_pulse()?

  • @АнонимАнаномный
    @АнонимАнаномный 8 років тому

    скажите пожалуйста как быть если будет использоваться длинная линия с датчиками? там нужно использовать схему на двух транзисторах. ее можно привязать к этой библиотеке?

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      Данный код не предусматривает подключение большого количества датчиков. А какое расстояние между датчиками?

    • @АнонимАнаномный
      @АнонимАнаномный 8 років тому

      метров до 100

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      Ну тогда может STM8+NRF24+DS18B20+ два провода питания? На ста метрах при раздаче 3В с одной стороны на другой ничего не окажется)

    • @АнонимАнаномный
      @АнонимАнаномный 8 років тому

      та почему? у датчиков же ток маленький

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      Ну как бы 1- wire и на 300 метрах может работать, ну я видел у людей проблемы были с 2-мя датчиками проседало напряжение,тогда уже применяли транзисторы подтягивали шину к питанию на время преобразования....ну вообще надо пробовать.

  • @ivanrusev2270
    @ivanrusev2270 2 роки тому

    А как же измерить отрицательную температуру.У вас есть пример?

    • @ElectroHobby1
      @ElectroHobby1  2 роки тому

      У меня было пару видео на эту тему,там точно должно быть и для отрицательных температур.Для последнего видео есть исходники там должно показывать отрицательную.

    • @ivanrusev2270
      @ivanrusev2270 2 роки тому

      @@ElectroHobby1 А сылку можете дать.

    • @ElectroHobby1
      @ElectroHobby1  2 роки тому

      @@ivanrusev2270 ua-cam.com/video/HAeRa_5kW5U/v-deo.html

  • @alekseychernyavskiy393
    @alekseychernyavskiy393 3 роки тому

    Сорри моих знаний не хватило на 4 минуты не выдержал, зайду попозже

    • @ElectroHobby1
      @ElectroHobby1  3 роки тому

      Если цель подключить датчик то скачайте прошивку и вставьте ваш кусок кода.

  • @obuhovmi
    @obuhovmi 8 років тому

    А как считывать температуру, если несколько датчиков подключено к одной шине?

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      В этом видео рассмотрен сам принцип снятия показаний для одного датчика.Для нескольких на одном и том же проводе приведенный код не подходит.Само проще наЙти и использовать библиотеку.С данным кодом максимум можно подвесить пару датчиков на разные выводы мк отредактировав код.

  • @Nidvoraich
    @Nidvoraich 4 роки тому

    Скажите, пожалуйста, как Вы через стлинк данные выводили?
    С помощью SWO?

    • @ElectroHobby1
      @ElectroHobby1  4 роки тому

      Да.Постоянно этим пользуюсь.В последней версии кейл после обновления,не удалось на f4 запустить.

    • @Nidvoraich
      @Nidvoraich 4 роки тому

      @@ElectroHobby1 но Вы же не модифицировали сам стлинк? И к блюпилу от стлинка тоже всего 4 провода подключено.
      По идее - для использования SWO нужен пятый провод

    • @ElectroHobby1
      @ElectroHobby1  4 роки тому

      @@Nidvoraich модифицировал китайский stlink.Если не сможете сами в любой мастерской за копейки припаяют только объяснить откуда куда.

    • @Nidvoraich
      @Nidvoraich 4 роки тому

      @@ElectroHobby1 да я припаял к 31 ноге, но толку - ноль :)
      Но у меня на свистке не оригинальный стм, а клон камня. Может, в этом дело

    • @ElectroHobby1
      @ElectroHobby1  4 роки тому

      @@Nidvoraich У меня тоже клон.На 5.27 Keil нормально все работало на 5.29 не настроил.Можно просто весь вывод в UART перенаправить.Тоже норм работает на скорости 2000000бод.Конечно SWO не грузит проц.

  • @Jensiru
    @Jensiru 8 років тому

    Не пойму почему датчик стал возвращать "2" в ф-ции ds_reset_pulse(). Датчик в целом почти не перемещался, код не менялся, кроме как с переключения дисплея ILI9341 на LCD1602 и всё. Ну и порт не "B", а - "A". Пин тот же.
    Что может быть?
    84МГц на АПБ2, с предделителем = 34 и ARR = 19999.

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      1.проверить настройку вывода(открытый коллектор)
      2.проверить подтягивающий резистор

    • @Jensiru
      @Jensiru 8 років тому

      1. Можно подробнее, не понял(
      2. Целый, проверил.

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      1.Нога микроконтроллера ответственная за прием передачу с ds18b20 должна быть настроена в CUBE или в проекте изменить как открытый коллерктор.
      2.Если резистор исправен то на DQ относительно GND должно быть в примерно 3.3в при вкл. питании.Если нет выключаем питания меряем сопротивление между GND и DQ ? и линией 3.3 в относительно DQ?

    • @Jensiru
      @Jensiru 8 років тому

      1. Да, стоит open drain.
      2. Между gnd и dq 0.85 в.
      3. между 3.3в и dq = 12 и 22 МОм. в зависимости как щупы прикладывать. В одну сторону 12, в другую 22.
      Между gnd и dq в одну сторону 11 МОм, в другую бесконечность, т.е. 1.

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      Не должно так быть до обмена данными (0.85в) отсоедини линию данных DQ от мк и померяй относительно земли на DQ сколько?

  • @Jensiru
    @Jensiru 8 років тому

    Пробую запустить это чудо на STM32F4-discovery и как результат:
    Температура : 1 градус постоянно
    Знак: 45 или 47, забыл, ну в общем минус. И данные никак не обновляются.
    Что может быть? Датчик один, подключенный через резистор, всё верно. Но вот что-то не так.
    Хотел узнать, а как написать код не на регистрах, а через HAL? Как сдвинуть на 9 битов и т.д.?

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

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

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      Что возвращает ds_reset_pulse()

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      Вообщем могу помочь портировать проект на F4 c HAL функциями если не получится F4 у меня есть

    • @Jensiru
      @Jensiru 8 років тому

      На STM32F4-discovery подключил его к 3в, резистор параллельно DQ и VDD. Так: naprisar.at.ua/Termlcd/DS18B20-TO-92.jpg ну только на 3 вольта.
      ds_reset_pulse() возвращает 1, т.е. датчик не обнаружен.
      Проверял так:
      uint8_t xxxx;
      //цикл
      xxxx = ds_reset_pulse(1

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      1.ЗАДЕРЖКИ 2.КАК НАСТРОЕНА НОГА МК?

  • @728239
    @728239 8 років тому +1

    Зачем это таймерный изврат если можно использовать аппаратный UART аки белый человек?
    we.easyelectronics.ru/STM32/esche-raz-o-stm32-i-ds18b20-podpravleno.html

    • @ElectroHobby1
      @ElectroHobby1  8 років тому

      Читал знаю.

    • @andrii_diyvideo
      @andrii_diyvideo 7 років тому

      А зачем этот изврат, с двумя пинами на один датчик. И уарт привязан к определенным пинам, а тут можно использовать любой свободный.

    • @728239
      @728239 7 років тому

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

    • @728239
      @728239 7 років тому

      То сарказм был про "идиотские аппаратные интерфейсы" если что)

  • @EveusLab
    @EveusLab 5 років тому

    Не работает.

    • @ElectroHobby1
      @ElectroHobby1  5 років тому

      Не может не работать!!!Почитайте кометы там у кого-то тоже были проблемы.Я писал что проверить.Также у меня есть пример для множественного подключения датчиков.По нему было 2 видео, можете его опробовать.

    • @EveusLab
      @EveusLab 5 років тому

      @@ElectroHobby1 импульсы от стм есть, датчик не отвечает.

    • @ElectroHobby1
      @ElectroHobby1  5 років тому

      @@EveusLab Проект мой изменяли или используете как есть?

    • @EveusLab
      @EveusLab 5 років тому

      @@ElectroHobby1 как есть попробовал, тишина. Попробовал пересобрать, куб ругается на библиотеки. Сейчас делаю новый проект в кубе и попробую собрать все заново.