STM32 DS18B20 1WIRE USART example

Поділитися
Вставка
  • Опубліковано 23 лис 2024

КОМЕНТАРІ • 152

  • @БольшаяДобраяПицца

    Показал жене антураж мастерской автора и претензии к моему одному паяльнику на столе отпали)
    Спс за сюжет!

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

      Ну мой рабочий стол появится опять в следующем видео)

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

    Спасибо за видео! А где схема подключения?

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

      В прошивке надо посмотреть к выводу ТХ или RX одного из UART.

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

    Пока я пытался подогнать библиотеку под свои нужды, обнаружилась проблема с минусовыми температурами. Вот так она выглядит при постепенном нагревании датчика, после извлечения из морозилки:
    -13,5 -13,6 -13,7 -13,8 -13,9 -12.0 -12,1 -12,2 -12,3 -12,4 -12,5 -12,6 -12,7 -12,8 -12,9 -11.0 -11,1 -11,2 -11,3 -11,4 -11,5 -11,6 -11,7 -11,8 -11,9 -10.0 -10.1 -10,2
    Значения идут "пилой", долго я понять не мог, что не так с моим , отдельным, пересчётом температуры(я сразу с точкой считал) и откуда берётся ошибка, причем не фиксированная :) Прежде чем написать коммент скачал и запустил библиотеку без изменений, дабы убедиться, что косяк не мой.

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

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

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

      ElectroHobby время секунды 2, говорю же, специально скачивал библиотеку и запускал как есть, что бы убедиться, что не сам накосячил. Может ещё кто проверит минусовые температуры просто?

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

      Датчику еще нужно время на преобразование .По моему в программе забираются старые показания и дается команда на преобразование всем датчикам.Если так то с программой все ОК. Программа позволят подключить кучу датчиков.Посмотрите как будет ситуация на других датчиках.Можете попробовать другой пример который я показывал ранее для одного датчика .Если там такая же ситуация то извеняйте)

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

      Без разницы, один датчик или два :) Я без претензий совсем, просто отписал о найденном баге, его можно и не заметить, а погрешность, при минусовых температурах, вносит большую. От задержки между преобразованиями ничего не зависит, кроме, может, самонагрева датчиков. Для себя я переделал строку, в которой считаем температуру, на: var = (sp->temp_lsb | (sp->temp_msb

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

      Я имел ввиду ua-cam.com/video/qOAInxYB7j8/v-deo.html запустить этот пример и отписаться сюда он для одного датчика и весит на много меньше .Про много датчиков хотел посмотреть как другие будут датчики показывать.Но вы видимо уже разобрались) .Оставлю все как есть под видео Ваше решение будет.

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

    Огромное спасибо! Пример запустился "из коробки", тогда как с другим примером безуспешно 4 дня потратил). Доработал st-link, по видео про SWO, Debag Prinf завёлся тоже, но есть небольшой вопрос: у тебя в видео, после вывода CRC в каждом измерении идут по порядку датчики, а у меня в каждом измерении может разное количество датчиков и они идут в разнобой, может подскажет кто, где оно спотыкаться может?
    UPD: В ST-Link Utility выводит без проблем и по порядку всё!
    Пример вывода debag printf:
    found 5 devices on 1-wire bus
    device 0 (SN: 28/0417503A3CFF/26) crcOK
    device 1 (SN: 28/0417500442FF/B4) crcOK
    device 2 (SN: 28/04175048D2FF/F1) crcOK
    device 3 (SN: 28/041750822AFF/4B) crcOK
    device 4 (SN: 28/04175089EDFF/AC) crcOK
    DS18B20 N_0 , Temp: 21.8C
    DS18B20 N_3 , Temp: 22.0C
    DS18B20 N_4 , Temp: 22.0C
    0
    DS18B20 N_2 , Temp: 22.6C
    DS18B20 N_4 , Temp: 22.1C
    1
    DS18B20 N_0 , Temp: 21.8C
    DS18B20 N_3 , Temp: 22.0C
    DS18B20 N_4 , Temp: 22.0C
    2
    DS18B20 N_0 , Temp: 21.8C
    DS18B20 N_3 , Temp: 22.0C
    DS18B20 N_4 , Temp: 22.0C

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

      Может скорость вывода отладочной информации маловата было тоже такое не помню что сделал(

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

      Жаль, ну может ещё кто-то вспомнит, пока сам пороюсь, вдруг найду чего.

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

      Совершенно случайно "починил"! Снял галку с "EXCTRC: Exception Tracing" и датчики "теряться" перестали, а так же перестало появляться сообщение в строке состояния "Trace: No Syncronization" .

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

      Я у себя в настройках все лишнее выключал)

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

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

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

    Здравствуйте, можно обновить ссылку на проект?

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

      Попробуйте еще рас и отпишитесь. Гугл обновил настойки безопасности и теперь приходится каждому доступ открывать)

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

      Спасибо, теперь работает

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

    Спасибо за видео, по stm очень мало информации на ютубе. Думаю всем будет интересен и полезен проект термостата на stm, с каким нибудь экраном, например с тем же 1602. Можете сделать такое видео?

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

      Не знаю смотря что искать.По мне информации много по stm.

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

      @@ElectroHobby1 Я имел ввиду готовых проектов мало, я не смог найти термостат на тех же 18b20 с экраном для вывода информации.

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

      Можно посмотреть Народ Стрим.Там Есть подобное на avr и stm32.Термостат это срабатывание выхода порта при определённой температуре?

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

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

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

      Вам не следует бояться "электростатической чувствительности входов контроллера") Смело подключайте. Если в контроллер ударит молния - супрессор не спасет. Купите тогда за 100руб новый контроллер и никаких аппаратных проблем с 1wire)

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

      Если же говорить серьезно, то откуда там статика, если ножка USART подтянута к источнику питания?

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

      датчик далеко, human body model , esd.
      ну и ibutton вообще напрямую. да и вредители есть - поиск по "шокер против домофона" в ютубе.

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

      Датчик далеко, понимаю. У вас ножка USART подключена к питанию через резистор 4,7 ком. Источник питания обладает малым внутренним сопротивлением, что не позволяет статике накапливаться на линии. Это если говорить про температурный датчик. Если вы посмотрите схему GPIO портов, то увидите, что производитель контроллера позаботился о защите. Но всему есть пределы.
      Если говорить про ibutton и вандализм - ставьте супрессор или варистор, но не уверен, что он спасет от десятков киловольт.

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

      Kokot mKokot, речь не про какое-то медленное накопление из-за какой-нибудь ионизации воздуха например, а речь про ESD, т.е. о разряде, который быстрый, и резистор 4,7 ком не успеет разрядить линию, а супрессор вместе с RC успеют, и на C напряжение не будет большим, и ток в ногу через диод будет не большим.
      Внутренний диод в GPIO тут разумеется учитывается, т.к. паразитная ёмкость R пропустит фронт.
      приёмник ibutton можно спасти и от очень высокомощных высоковольтных разрядов с помощью разрядника, но тоже со вспомогательными вещами.

  • @Константин-щ8ж6ю
    @Константин-щ8ж6ю 7 років тому

    Тоже не даёт скачать. Выдаёт: Этот файл нельзя открыть, так как он нарушает Условия использования.

  • @ВладЕрмаков-ж1о
    @ВладЕрмаков-ж1о 7 років тому +1

    Не слишком ли громоздкий код получается? Вроде бы действия не сложные

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

      Работа идет не с одним датчиком а с кучей.Поэтому нужно как то найти id всех датчиков,считать данные и разложить по полочкам,посчитать crc....

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

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

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

      У человека на 20 метрах до первого датчика работает на витой паре (теплица).А так можно на простом пул апе (резистором) больше добиться .У некоторых и на 10 метрахне работает .При увеличении длинны линии можно резистором поиграться в меньшую сторону в разумных пределах!!! так чтобы не спалить ножку микроконтроллера ну и теории хватает cxem.net/comp/comp53.php и www.elin.ru/files/pdf/1-Wire/app148ru_p.pdf там и 50 метров 100,200 и далее спец приспособы (т.е резистором уже нормальные фронты сигналов при большой длине не получатся )

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

      ElectroHobby сегодня попробую КСПВ 4x0,5 длинной 10 метров и резистором 4,7 кОм, 18b20 подключить....

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

      ОК ЖДУ РЕЗУЛЬТАТОВ!!!

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

      ElectroHobby сделал.... По одному на "+" и сигнальный, два на "-" т.е на GND... Показаниям, думаю можно верить.... Оба термометра одинаково роказывают.... Китайский типа метеостанция и ардуина на Нано 3.0 328 и датчик шилд 18b20, провод КСПВ 0,5 x4 . Думаю с 20 метровым можно попробовать... Но провода такой длинны у меня нет...
      Если у кого будет такой опыт... Отпишитесь...

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

      ElectroHobby провод правильней зовётся КСПВ 0,4x4

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

    А чем лучше USART от GPIO с таймером?

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

      Если и там и там можно много датчиков повесить то ничем.

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

      @@ElectroHobby1 Не с понял?

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

      @@ivanrusev2270 если на одну ногу мк можно подключить n датчиков в прошивке с таймером то разницы нет.

  • @ЕвгенийМельник-я6в
    @ЕвгенийМельник-я6в 7 років тому +1

    надо же и даже не три части по 30 минут))

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

      Я понял о Ком идет речь).На самом деле он молодец.Я тоже пытался все разжевывать но многим это просто не надо.В итоге видео получается кроче и веселее).Думаю вскоре он изменит политику)

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

    За пример спасибо. Но почему не на HAL? Вроде как скоро 2018) Пишется за полдня. Кстати от 3 вольт DS18B20 прекрасно работает. Но сопротивление подтяжки лучше уменьшить до 3,3 кОм )

    • @TheIvanDM
      @TheIvanDM 7 років тому +1

      Kokot mKokot поддерживаю!

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

      HAL Вам даст настройку периферии, для stdperiph этих примеров в сети очень много.Мне кажется HAL этому мк не нужен( для F4 там да . Stdperiph оч простая либа если разобраться.

    • @Jensiru
      @Jensiru 7 років тому +4

      И тем не менее на ХАЛе было бы интереснее всё увидеть. Многие то уже начинают учить ХАЛ, а не Stdperiph

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

      Будет еще пару желающих придется переделывать на XAЛ) пускай пишут внизу в поддержку.

    • @kokotmkokot4926
      @kokotmkokot4926 7 років тому +1

      Дело вовсе не в желающих, температурный датчик сам по себе не очень интересен. Я его использую как средство контроля( обычно шаговых двигателей) . В одном проекте использовать разные библиотеки совсем не красиво. Но Вам виднее...)

  • @vishvanathdoijad
    @vishvanathdoijad 5 років тому +1

    please upload english version

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

    кек) а что у F103 нету аппаратной поддержки работы с 1-wire?

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

      няма) из вариантов при эмуляции либо норгодрыг либо USART.

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

      Даташит открой и посмотри. А где есть аппаратный 1 wire?

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

      Oxford CNC, нигде не нашёл. SoC, FPGA и прочие ПЛИС конечно не в счёт.

    • @ЕвгенийМельник-я6в
      @ЕвгенийМельник-я6в 7 років тому

      либо таймер + ПДП

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

    STM32f103c8t6, прошиваю ничего не меняя, подключаю 4 датчика. Показания в кипящей воде 96 град. В морозилке показания ниже 0 не опускается, хотя там -36.
    4 датчика индефицируются
    found 4 devices on 1-wire bus
    device 0 (SN: 28/021491776168/66) crcOK
    device 1 (SN: 28/02119177B746/FE) crcOK
    device 2 (SN: 28/02119177BC09/DF) crcOK
    device 3 (SN: 28/021391773F05/B6) crcOK
    DS18B20 N_0 , Temp: 21.8C
    DS18B20 N_1 , Temp: 21.0C
    DS18B20 N_2 , Temp: 21.8C
    DS18B20 N_3 , Temp: 21.8C
    Подключаю 5-й датчик и вижу следующее:
    found 6 devices on 1-wire bus
    device 0 (SN: 00/000000000000/00) crcOK
    device 1 (SN: 00/000000000000/80) crcOK
    can't read cause CNC error
    device 2 (SN: 00/000000000000/40) crcOK
    can't read cause CNC error
    device 3 (SN: 00/000000000000/80) crcOK
    can't read cause CNC error
    device 4 (SN: 00/000000000000/40) crcOK
    can't read cause CNC error
    device 5 (SN: 00/000000000000/80) crcOK
    can't read cause CNC error
    Подскажите, как лечить?

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

      ua-cam.com/video/qOAInxYB7j8/v-deo.html один датчик с минусом

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

      Честно говоря не помнил есть ли там минус или нет.Скачал пример там
      структура объявлена как
      typedef struct { int8_t inCelsus;
      uint8_t frac;
      } Temperature; т.е. теоретически значения минус может принимать.но в
      readTemperature() видимо не реализовано. Есть пример для одного датчика
      там я реализовал минусовые значения точно, надо от туда взять часть.

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

      структуру изменить на
      { int16_t inCelsus;
      uint8_t frac;
      } Temperature;
      в readTemperature() добавить строчку
      t.inCelsus = (int8_t) (sp->temp_msb temp_lsb >> 4);//целая часть
      if( t.inCelsus > 1000) t.inCelsus = 4096 - t.inCelsus;
      и по идее должно пойти.

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

      а по какой причине больше 4-х датчиков не инициализируется?

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

      #define MAXDEVICES_ON_THE_BUS 6 В проекте стоит ограничение на 6.А питаете датчики от скольких вольт?

  • @ильячикалов-ю1й
    @ильячикалов-ю1й 5 років тому

    А можно консультацию получить? Прошу написать на почту ilyamus@ua.fm

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

      Контакты моей почты есть на ютуб канале.Также можете написать в ВК.

  • @logicfacts9964
    @logicfacts9964 5 років тому +1

    Это из цикла делаем самые простые вещи как можно сложнее

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

      Это не ардуино.Легче подключения библиотеки ничего нет.Здесь мы разбираемся как это работает.Это один из самых простых вариантов библиотеки для работы с ds18b20 при множественном подключении.Здесь еще не используется DMA. Вот самый простой с одним датчиком рассмотренный ранее ua-cam.com/video/qOAInxYB7j8/v-deo.html ....

    • @logicfacts9964
      @logicfacts9964 5 років тому +1

      ​@@ElectroHobby1 Видимо только разбираетесь как работает а разобраться никак не можете. У меня бумажный справочник фирмы Dallas Semiconductor за 1995 год где есть ds1820, который тоже самое как ds18b20, а тогда у микроконтроллеров флаш было не больше 2KB, а RAM 100 байта и в основном код писали на ассемблере. Как думаете сколько микроконтроллера с 1995-ом понадобится что бы собраться Ваш код, которой как за суперкомпьютера? Еще не понятно причем здесь UART вообще если Вы получаете и отправляете дату побитно? GPIO тоже самое делает. Только не говорите мне что UART разгружает процесор.

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

      Норгодрыг можно было тоже реализовать.Я вам давал ссылку на такую реализацию но там был только 1 датчик на пин.Здесь программирование на Си а ни на ASM.
      UART при том , что на нем можно легко сделать 1 WIRE.Можете сравнить этот вариант реализации с вариантом на канале "народ стрим" там норгодрыг для множественного подключения датчиков на 1 пин и там еще +HAL и CUBE . Раньше все меньше весило и работало лучше.А сейчас уже есть CUBE и HAL нажал кнопочку и вся инициализация готова и никто даже не загоняется как оно работает .Все катится в сторону ардуино.Быстрому портотипированию и памяти уже не те, тут уже особо не приходится задумываться как это вместить. Пример не мой я просто переделал его реализацию для stdperiph и разобрался как он работает. Спасибо за комментарий.

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

      @@ElectroHobby1 Легко это когда отправляешь и получаешь байты и все остальное делает периферийное устройство. А когда вместо байты идут биты это уже не аппаратное, а полная хрен. Видимо кто-то пошутил с этим UART-том и все купились, потому что думат надо а не делать как все

    • @serjkp
      @serjkp 5 років тому +1

      @@logicfacts9964 использование УАРТа плюс ДМА - самое быстрое и ресурсоэкономное решение. Ногодрыг - ужас-ужас. Требует точного контроля временных промежутков. Естественно, если устройство - простой термометр, то и ногодрыг прокатывает. Но если контроль температуры лишь одна из функций устройства, причем не основная, то стопорить ядро для ожидания таймслота или постоянно дергать прерывания от таймера будет очень накладно по времени и может сказаться на работоспособности другого времязависимого кода.

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

    Проект не скачивается ((( гугл его забанил (((

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

      Я открываю по ссылке мне ни какого предупреждения не выдает.(Что гугл пишет?

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

      пишет
      "Этот файл нельзя открыть, так как он нарушает Условия использования.
      Подробную информацию можно найти в Справочном центре Google Диска.
      "

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

      drive.google.com/open?id=0ByRQugmcYDiJOGtaSHNNWWNkQms перезалил проверь плиз!!!

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

      ElectroHobby, пока работает )

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

    Да не качает. Походу общий доступ не открыт.

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

      drive.google.com/open?id=0ByRQugmcYDiJOGtaSHNNWWNkQms проверь плиз

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

      Сейчас работает.

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

    И правда, чего это тебя на SPL понесло ? И не HAL и не CMSIS ..... Переписывать фирмовый пример наверное было лень, т.к. переменные ведь не твои ?! ;)) Видно по стилю. Я не серьезно :)) , плевать чей, главное разобрал что куда, все равно на свой вкус пример переписывать. А вот по толзе для Keil5 PACKs и midleware было бы полезно видео, особенно с Keil-RTX. Фирмовые 5 видео то есть ua-cam.com/video/4Ph0KrjwYPc/v-deo.html, но стоит отойти чуть от примеров для 429 платы и хуй победишь :( Ты вроде с ней (с толзой с зеленой кнопкой) разобрался судя по ролику. +1

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

      Я рассказывал от куда этот пример он для другой платформы мк. время потратил чтобы разобраться и запустить на стм.Для HAL тоже этот пример запилен и есть видео наверно)

  • @ІванВерьовкін
    @ІванВерьовкін 6 років тому +2

    Ненавижу Keil) еще больше ненавижу ардуино)

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

      IAR?

    • @ІванВерьовкін
      @ІванВерьовкін 6 років тому

      IAR хороша работает с коробки! но бесплатная версия 32кб иногда бывает надо больше.
      AS6 Workbench установил и сразу работай не каких настроек, + куча тем для подсветки, можно Cube MX прям в нее установить и сразу в ней начать работать) Есть дед который уроки ведет на Keil они меня так кумарят просто Keil колхозная мура)
      Я хочу сделать среду разработки под stm32 для платы STM32F103C8T6-MODUL.
      просто залил прошивку подключил USB и через среду разработки работай даже программировать не надо на языке LAD.

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

      Типа PLC тогда уже и STL туда.

    • @ІванВерьовкін
      @ІванВерьовкін 6 років тому

      STL это паскале подобный язык, а SCL типа ассемблера или наоборот вечно путаю.
      FBD или LAD это графический интерфейс и программирование толком нет просто закидываете модули соединяете и все.
      Самый главный плюс это отладка ) это язык сделан чтоб легко за очень короткое время увидеть весь процесс работы)

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

      Согласен, кейл глючит по-черному.Ваня, а как можно из IAR просматривать периферию (таймеры ADC UART)?

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

    Извините. Сами Вы понимаете, но объяснять не можете. Это ппц
    "вот тут это, тут как бы, вот тут плюсплюс, здесь у нас получается ноль, а нет, не здесь, вот тут"

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

      Исходники тоже прилагаются и там тоже расписано много.