Ребята помогите пожалуйста с DS1820

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Прорезались зубы
Аватара пользователя
Сообщения: 244
Зарегистрирован: Чт авг 13, 2015 09:58:43

Сообщение Phaeton »

Блин, DLL эта не хочет никак с VB6 дружить, не могу ее подключить к проекту...
Зато нашел вот этот исходник на VB6 для опроса "таблетки" по 1-wire, в окне программы, при считывании моего датчика вы1820 что то считывается, типа: 10F3F3608062 - не знаю что это за хрень высвечивается, но то что код программы рабочий и что то считывает с датчика, не может не радовать.
Вот исходник, не требует никаких библиотек и работает со встроенным CommonControl6.
Предвкушаю что мы наткнулись на то что надо, интуиция подсказывает что код поможет достигнуть цели.
Парни кто нибудь может мне помочь разобраться в нем, у меня уже крыша едет... :( :( :(
Статья, внизу статьи ссылка на скачивание проекта в VB6.
http://www.autobills.ru/1w_read_VB6.html
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Phaeton писал(а): DLL эта не хочет никак с 6 дружить, не могу ее подключить к проекту
Что VB пишет?
Phaeton писал(а):считывается, типа: 10F3F3608062
Это серийный номер. Используется например при выборе конкретного датчика когда их подключено больше одного.
Phaeton писал(а):кто нибудь может мне помочь разобраться в нем
Эта программа считывает серийный номер 1-Wire устройства. Думаю это и так уже ясно.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Доработал программу. Теперь она может индивидуально у каждого датчика запускать процедуру измерения температуры. Для активации этой опции в меню "Режим" нужно поставит галку в "Раздельный опрос".
Фон в таблице с датчиком из которого была считана температура, будет подсвечен зеленым цветом.
Вложения
ThermoMon_1.1.zip
(57.8 КБ) 224 скачивания
Последний раз редактировалось Мурик Чт авг 13, 2015 21:59:18, всего редактировалось 2 раза.
Прорезались зубы
Аватара пользователя
Сообщения: 244
Зарегистрирован: Чт авг 13, 2015 09:58:43

Сообщение Phaeton »

VB пишет непомню, но что ему не нравилось, завтра сообщу точно. Блин, спасибо огромное за прогу! :beer: Завтра с утрища испытывать буду. Доложу о результатах испытаний немедленно.
Если что сможете меня хотя бы пнутьв нужном направлении по работе программы на которуюя ссылку выше давал?
Немного только не пойму, если это она выдала 8-битный идентификационный номер, то почему он не сходится с серийным номером который выдает программа "DS18B20 термомониторинг"?
p/s^ терь всю ночьспать не буду, не терпется испытать систему!
Если что могу выложить схему в layuot для данного проекта, чтобы другие не мучились искать причины почему не работает=)
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Phaeton писал(а):сможете меня хотя бы пнув нужном направлении по работе программы на которую я ссылку выше давал
По ссылке заготовка программы. Она может только прочитать из датчика серийный номер.
Phaeton писал(а):почему он не сходится с серийным номером который выдает программа "DS18B20 термомониторинг"
Какой номер выдает "DS18B20 термомониторинг"?
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 244
Зарегистрирован: Чт авг 13, 2015 09:58:43

Сообщение Phaeton »

Дружище завтра все скину, как буду у себя в берлоге. Щас уже домой приехал, под руками ничего нет...
Догадка по поводу проги что номер считывает, назовем ее допустим "Прога1"

Private Sub Command1_Click()

Dim ROM(7) As Byte 'массив для чтения ПЗУ таблетки (типа тут цнас будет храниться 8 байт считанной инфы)
Call DSReset 'выдаем сброс (Как положено перед опросом даем сброс, и ждем отклика)
Call DSOutByte(&H33) 'команда на чтение ПЗУ таблетки (подпрограмма считывает байт девайса с адресом 33h)


For I% = 0 To 7 'считываем ПЗУ в массив

DSRROM(I%) = DSInByte
Next I%

End Sub

Я правильно понимаю?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Догадки не совсем правильные. Лучше скачать даташит на DS1820 и ознакомится с ним. Это необходимо если собираетесь написать с нуля программу, работающую с этим датчиком.
Phaeton писал(а):Dim ROM(7) As Byte 'массив для чтения ПЗУ таблетки (типа тут цнас будет храниться 8 байт считанной инфы)
В данном случае, в этот массив помещается серийный номер датчика, запрошенный командой "Read ROM" у которой шестнадцатеричный код 33. Если в двух словах, то датчик получив эту команду, выдаст в линию свой серийный номер - 8 байт. Но эта команда будет нормально выполнятся когда на линии только один датчик, потому что если их больше, то на нее отзовутся все датчики и данные исказятся. Если на линии больше одного датчика, необходимо использовать функцию поиска - команду "Search Rom" у которой шестнадцатеричный код F0.
Адрес девайса это и есть его серийный номер, который как обещают разработчики является уникальным.
Прорезались зубы
Аватара пользователя
Сообщения: 244
Зарегистрирован: Чт авг 13, 2015 09:58:43

Сообщение Phaeton »

День добрый. Испытания провел. Пока на 6 датчиках. Увидела 4 из 6, видимо остальные я спалил вчера, когда резюк поставил 600 Омю Работает все люксово! :beer: Спасибо!. Щас подкдлючю еще, о результатах отпишусь, тока это займет некоторое время.
По вопросу что выдает прога на VB6 - фотка №1
Что выдает ваша модернизированная программа - фотка 2.
Вложения
2.JPG
(15.94 КБ) 510 скачиваний
1.JPG
(3.75 КБ) 597 скачиваний
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Результат одинаков, но отображается по разному. Если присмотреться, видно что первые и последние две цифры совпадают, а те что между ними расположены в обратном порядке.
Прорезались зубы
Аватара пользователя
Сообщения: 244
Зарегистрирован: Чт авг 13, 2015 09:58:43

Сообщение Phaeton »

Система увидела 8 датчиков из 8, которые я подключил. Диод на окончании проводов отсутствует, и все равно все работает.
Пойду подцеплять еще дополнительные датчики.
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Диод выполняет защитную функцию, т. е. без него будет работать, но датчики и/или адаптер могут выйти из строя при наводках на линию, которые могут возникнуть при большой ее длине.
Прорезались зубы
Аватара пользователя
Сообщения: 244
Зарегистрирован: Чт авг 13, 2015 09:58:43

Сообщение Phaeton »

Ок. Спасибо за информацию.
Больше датчиков пока не подцепил, надо разбираться в схеме, она 10 лет стояла, видимо где то что то отвалилось или мыши перегрызли....
25 числа кореш - програмист приедет, с ним то уж мы точно разберемся че там, да как.
Пошел разбираться куда и чего там наподключали...
Буду держать в курсе. :beer:
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1487
Зарегистрирован: Вс май 13, 2012 00:01:54

Сообщение Ariadna-on-Line »

Прошу не пинать. Вот. Вытащил из кучи.
Вложения
Dallas.rar
(470.1 КБ) 200 скачиваний
Прорезались зубы
Аватара пользователя
Сообщения: 244
Зарегистрирован: Чт авг 13, 2015 09:58:43

Сообщение Phaeton »

Парни вопрос на засыпку. Переходник собран по указанной выше схеме, программа опроса все нормально считывает.
Решил попробовать сделать питание датчика полноценным.
Подпаял провод к датчику VDD который +5 В, воткнул датчик в адаптер. Дал питание, и чет сразу провод питания у него задымился нафиг, я сразу все вырубил. Отклюючил питание датчика, все опять заработало.
Почему такая фигня произошла? Из за схемы адаптера?
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Надеюсь напряжение было подано на питающий вывод датчика, а не на сигнальный вывод линии?
Прорезались зубы
Аватара пользователя
Сообщения: 244
Зарегистрирован: Чт авг 13, 2015 09:58:43

Сообщение Phaeton »

Так точно=)
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

Замыкания на корпус нет? С другим датчиком также? Общий провод датчика не перепутан с плюсовым?
Прорезались зубы
Аватара пользователя
Сообщения: 244
Зарегистрирован: Чт авг 13, 2015 09:58:43

Сообщение Phaeton »

Да нет все гут подключено было. Яж просто на свободную лапку подпаял провод, две другие то заняты уже были.
Родился
Сообщения: 7
Зарегистрирован: Ср сен 02, 2015 20:20:54

Сообщение alex13sh »

Всем доброго времени суток. Я пытаюсь переписать код с PureBasic на Viual Basic 6. (исходники прикреплены)
Функции: readROM (0h33), readPowerSupply (0hB4) - вроде как работают, хотя не уверен что правильно.
А вот readRAM (0hBE), getCRC, searchDevice (0hF0) - я не пойму что не так.

Я следую 2ому алгоритму, для 1ого датчика на линии. http://icmicro.narod.ru/info_ru/ds1820/ds1820.htm
У меня reset включен в функцию skipROM. Функция задержки написана циклом в пол секунды между преобразовании и чтением.

Кому не трудно, посмотрите проект на vb6.
Прикрепил: проект на vb6, исходники длл и ехе на PB и пару скриншотов

Всем кто откликнулся Благодарю
Вложения
RadioKot.rar
VB6 to PB
(187.6 КБ) 164 скачивания
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

alex13sh писал(а):А вот readRAM (0hBE), getCRC, searchDevice (0hF0) - я не пойму что не так.
Возможно этого из-за того что неправильно перевели с PB на VB.
К примеру в OW_GetCRC есть такие строки.

Код: Выделить всё

        If (Byte ! CRC) & 1
          CRC = ((CRC!$18)>>1)|$80
        Else
          CRC >> 1
        EndIf
На VB они переведены так.

Код: Выделить всё

        If (Byt Xor CRC) And 1 Then
          CRC = ((CRC Xor &H18) / 2) Or &H80
        Else
          CRC = CRC / 2
        End If
В PB это побитовые операторы, а в VB логические и из-за отличается результат.
Ответить

Вернуться в «Интеграция с ПК»