как это посмотреть? я думаю, было бы быстрее, если бы были сразу инструкции, что нужно сделать ))
Добрый день!
-
А попробуйте пожалуйста подключить эти датчики по двухпроводной схеме. Это когда провода земли и питания соединены вместе и подключены к земле.
Я видел в природе датчики, которые работают только с паразитным питанием. -
Попробуйте пожалуйста подключать по одному датчику.
Ещё может быть проблема в датчиках с таймингами.
По owfs: у нас не owfs, а ядерный драйвер, но принцип тот же: мы используем обычный код из линукса, который там уже лет пятнадцать у всех работает.
“read failed crc check” - это как раз от него. Посмотреть в обход wb-mqtt-w1 можно через /sys/bus/w1/devices и т.д., температура в “файлах” w1_slave
В том то и дело, что те же датчики работают с Arduino без паразитного питания.
но попробую.
Попробуйте пожалуйста подключать по одному датчику.
я так и пробовал. все шесть я подключал строго по одному, по очереди каждый.
Посмотреть в обход wb-mqtt-w1 можно через /sys/bus/w1/devices и т.д., температура в “файлах” w1_slave
что искать? значение температуры из драйвера?
Ещё может быть проблема в датчиках с таймингами.
в чём она заключается и что с ней делать (если это она) и как? ))
не, так не работает вообще, датчик не определяется вовсе
вот “нездоровый” датчик
root@wirenboard-AEAY7RAZ:/sys/bus/w1/devices# cat 28-3c01d075636b/w1_slave
1e fb 55 05 7f a5 a5 66 50 : crc=50 YES
1e fb 55 05 7f a5 a5 66 50 t=-78125
вот “здоровый”
root@wirenboard-AEAY7RAZ:/sys/bus/w1/devices# cat 28-06201933c620/w1_slave
4f 01 4b 46 7f ff 0c 10 46 : crc=46 YES
4f 01 4b 46 7f ff 0c 10 46 t=20937
куда ещё можно копать? )
А на датчиках точно написано 18b20?
Именно “b”?
Хотя - нет, сигнатура чиатется верно.
на гильзах ничего не написано
вышеупомянутый ардуино-скетч выдаёт
15:12:32.596 -> ROM = 28 92 1E 75 D0 1 3C F6
15:12:32.596 -> Chip = DS18B20
15:12:33.624 -> Data = 1 65 1 55 5 7F A5 A5 66 C5 CRC=C5
15:12:33.657 -> Temperature = 22.31 Celsius, 72.16 Fahrenheit
согласно своему коду
как ещё определить? ))
Вижу в выводе ардуино
А из owfs
и
Тот же датчик на owfs что показывает?
вот выше я приводил последний пример из ардуино
15:12:32.596 -> ROM = 28 92 1E 75 D0 1 3C F6
15:12:32.596 -> Chip = DS18B20
15:12:33.624 -> Data = 1 65 1 55 5 7F A5 A5 66 C5 CRC=C5
15:12:33.657 -> Temperature = 22.31 Celsius, 72.16 Fahrenheit
повесил тот же датчик к WB
root@wirenboard-AEAY7RAZ:/sys/bus/w1/devices# cat 28-3c01d0751e92/w1_slave
[52211.384094] w1_master_driver w1_bus_master1: w1_search: max_slave_count 64 reached, will continue next search.
46 fc 55 05 7f a5 a5 66 d4 : crc=d4 YES
46 fc 55 05 7f a5 a5 66 d4 t=-59625
root@wirenboard-AEAY7RAZ:/sys/bus/w1/devices# cat 28-3c01d0751e92/w1_slave
41 fc 55 05 7f a5 a5 66 04 : crc=04 YES
41 fc 55 05 7f a5 a5 66 04 t=-59937
root@wirenboard-AEAY7RAZ:/sys/bus/w1/devices# cat 28-3c01d0751e92/w1_slave
43 fc 55 05 7f a5 a5 66 82 : crc=82 YES
43 fc 55 05 7f a5 a5 66 82 t=-59812
root@wirenboard-AEAY7RAZ:/sys/bus/w1/devices# cat 28-3c01d0751e92/w1_slave
3b fc 55 05 7f a5 a5 66 1d : crc=1d YES
3b fc 55 05 7f a5 a5 66 1d t=-60312
root@wirenboard-AEAY7RAZ:/sys/bus/w1/devices# cat 28-3c01d0751e92/w1_slave
43 fc 55 05 7f a5 a5 66 82 : crc=82 YES
43 fc 55 05 7f a5 a5 66 82 t=-59812
ну и JFI
root@wirenboard-AEAY7RAZ:/sys/bus/w1/devices# xxd -p 28-3c01d0751e92/id
28921e75d0013cf6
Ну итого:
- в линуксе и в ардуинке в data одинаковые все настройки.
- в данных в линуксе действительно валидный пакет. В этих данных действительно датчик отдаёт отрицательные значения, по даташиту.
- в ардуине отдаёт положительные
Очевидно, что датчики не настоящие. У настоящих другой id и другие значения в reserved байтах. Я бы не стал разбираться, выкинул, и купил бы нормальные датчики.
Что можно сделать:
- если ардуинка под рукой, то counterfeit_DS18B20/README.md at master · cpetrich/counterfeit_DS18B20 · GitHub для развлечения
- попробовать подключить питание от 3.3В, а не от 5В
да, пишет, что неоригинальные и т.п. )
причём про те, которые работают с WB - тоже, но там просто меньше scratchpad-байтов не ok…
в целом - понятно ) спасибо
однако, интересно почему в ардуино-то работает? )) то бишь, в чём разница при работе в линуксе? если бы разобрался в чём именно, я бы смог, возможно, подкрутить модуль ядра, например, чтобы он делал как ардуина )))))
что это может дать (теоретически)?
Возможно - температура будет “более правильной”. Но это так, для развлечения.
Тогда - подключита на линию логический анализатор, снимите обмен, сравните.
а какой тип вам написал тот скетч? По описанию у вас похоже на " Family D2: Noisy Rubbish", а там пишут про магию:
- Chips are sensitive to the way power is applied [5]. E.g. to power up from all pins attached to GND, it seems to be a good idea to leave Data and power pin floating for a bit (e.g., 100 ms) before actually applying a voltage to the power pin and Data [5].
первый скетч
3:53:22.090 -> 28-92-1E-75-D0-01-3C-F6: ROM does not follow expected pattern 28-xx-xx-xx-xx-00-00-crc. Error.
23:53:22.190 -> Scratchpad Register: 90/01/55/05/7F/A5/A5/66/B4
23:53:22.223 -> Info only: Scratchpad bytes 2,3,4 (55/05/7F): not Maxim default values 4B/46/7F.
23:53:22.322 -> Scratchpad byte 5 (0xA5): should have been 0xFF according to datasheet. Error.
23:53:22.388 -> Scratchpad byte 6 (0xA5): unexpected value. Error.
23:53:22.455 -> Scratchpad byte 7 (0x66): should have been 0x10 according to datasheet. Error.
23:53:22.554 -> 0x4E modifies alarm registers: ok.
23:53:22.588 -> 0x4E accepts 10 bit resolution: ok.
23:53:22.621 -> 0x4E preserves reserved bytes: ok.
23:53:22.654 -> 0x4E accepts 12 bit resolution: ok.
23:53:22.720 -> 0x4E preserves reserved bytes: ok.
23:53:22.753 -> Checking byte 6 upon temperature change: not necessary. Skipped.
23:53:22.820 -> --> Sensor appears to be counterfeit based on 4 deviations.
23:53:22.886 ->
23:53:22.886 -> ------------------------------------------------
второй -
23:53:29.623 -> classify_fake_DS18B20.ino version 2020/05/25
23:53:29.656 ->
23:53:29.656 -> This sketch performs a minimal test to classify
23:53:29.723 -> 1-wire sensors attached to pin 3 according to
23:53:29.756 -> https://github.com/cpetrich/counterfeit_DS18B20/
23:53:29.822 -> assuming they belong to one of the DS18B20
23:53:29.855 -> Families in circulation in 2019.
23:53:29.889 -> The script evaluates the sensors based on their
23:53:29.955 -> response to undocumented function codes.
23:53:29.988 -> Proceed at your own risk!
23:53:30.021 ->
23:53:30.021 -> Make sure power pin is connected to either Vcc or GND.
23:53:30.088 -> Hit enter to start analysis.
23:53:30.121 ->
23:53:46.348 -> 28-92-1E-75-D0-01-3C-F6: Family D2 (Clone w/o parasitic power).
да, вы правы ))
хотя
всё же про Family D1: Noisy Rubbish with Supercap
P.S. а вот те, что “работают” с WB - Family B1
JFI
00:08:40.517 -> 28-75-8C-7E-19-20-06-E2: ROM does not follow expected pattern 28-xx-xx-xx-xx-00-00-crc. Error.
00:08:40.617 -> Scratchpad Register: 50/05/4B/46/7F/FF/7F/10/FF
00:08:40.649 -> Info only: Scratchpad bytes 2,3,4 (4B/46/7F): Maxim default values.
00:08:40.716 -> Scratchpad byte 5 (0xFF): ok.
00:08:40.749 -> Scratchpad byte 6 (0x7F): unexpected value. Error.
00:08:40.815 -> Scratchpad byte 7 (0x10): ok.
00:08:40.848 -> 0x4E modifies alarm registers: ok.
00:08:40.881 -> 0x4E accepts 10 bit resolution: ok.
00:08:40.948 -> 0x4E preserves reserved bytes: no, got: FF/3F/10. Error.
00:08:41.014 -> 0x4E accepts 12 bit resolution: ok.
00:08:41.047 -> 0x4E preserves reserved bytes: no, got: FF/7F/10. Error.
00:08:41.114 -> Checking byte 6 upon temperature change: not necessary. Skipped.
00:08:41.180 -> --> Sensor appears to be counterfeit based on 4 deviations.
00:08:41.246 ->
00:08:41.246 -> ------------------------------------------------
00:08:47.816 -> classify_fake_DS18B20.ino version 2020/05/25
00:08:47.849 ->
00:08:47.849 -> This sketch performs a minimal test to classify
00:08:47.915 -> 1-wire sensors attached to pin 3 according to
00:08:47.949 -> https://github.com/cpetrich/counterfeit_DS18B20/
00:08:48.015 -> assuming they belong to one of the DS18B20
00:08:48.048 -> Families in circulation in 2019.
00:08:48.081 -> The script evaluates the sensors based on their
00:08:48.147 -> response to undocumented function codes.
00:08:48.181 -> Proceed at your own risk!
00:08:48.214 ->
00:08:48.214 -> Make sure power pin is connected to either Vcc or GND.
00:08:48.280 -> Hit enter to start analysis.
00:08:48.313 ->
00:08:50.005 -> 28-75-8C-7E-19-20-06-E2: Family B1 (Clone).
Советую попробовать датчик WB-M1W2. В свое время столкнулся с аналогичной проблемой при подключении датчиков ds18b20 к штатным портам WB. В итоге перешел на WB-M1W2, с ними проблем никаких нет, подключал разные партии датчиков, все ок. На штатных же портах периодически термодатчики зависают и постоянно с ними какие-то проблемы. На данный момент у меня 1 датчик только подключен к штатному порту, а остальные все к WB-M1W2.
спасибо за совет ))
была такая мысль, но т.к. это доп. затраты с непредсказуемым результатом, не стал развивать…
но после вашего совета, наверное, попробую )
Пока датчики валялись без дела, думал я сначала на той волне, что на базе ардуины можно сделать аналог WB-M1W2, но для множества датчиков. Однако, дальше тестов обмена по Modbus дело не зашло.
Но ушлые китайцы всё давно придумали (или искать по R4DCB08) (есть мини-версия для одного датчика (или поиск по R46CA01)).
Сегодня приехало, затестил - работает )) Теперь буду придумывать температуру чего ими мониторить (шутка) ))))))))))))
Я неспешно пилю себе “свой” шлюз на шины 1wire. Так, в качестве развлечения и чтобы программирование не забыть.
Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.