Konoplj2010 писал(а):
Tad писал(а)Ну хорошо, если Вам так нужны
Ответов: 16884
Рейтинг: 1239
|
|||
Konoplj2010 писал(а): Tad писал(а)Ну хорошо, если Вам так нужны |
|||
карма: 25 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Konoplj2010, первая ласточка -- чтение номера единственного подключённого датчика с подсчётом контрольной суммы (если совпадает, то ответ прочитан правильно).
INI файл содержит начальную информацию для работы программы. При запуске программа его читает и выставляет соответствующие параметры, а иначе откуда ей узнать, какой датчик где установлен.... На картинке возможный вид программы, номинальные температуры в одну линию, меньше/больше допуска синий/красный цвет, при щелчке по полоске можно вызвать окошко с дополнительной информацией "что, где, когда"..... id_ds18b20.jpg ПримерКонтроля.jpg Определил номера датчиков, поставил на линию, начну тренироваться с группой (Бирки привязывал ниточкой и оказалось, что самая трудоёмкая часть работы -- вставить нитку в иголку ) 5шт_с_номерами.jpg |
|||
карма: 19 |
| ||
файлы: 4 | definition_sensor_number.rar [46.4KB] [493], id_ds18b20.jpg [77.5KB] [818], ПримерКонтроля.jpg [64.2KB] [798], 5шт_с_номерами.jpg [45.5KB] [786] |
Ответов: 16884
Рейтинг: 1239
|
|||
Леонид писал(а): что самая трудоёмкая часть работы -- вставить нитку в иголку |
|||
карма: 25 |
|
Ответов: 70
Рейтинг: 0
|
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Konoplj2010, на картинке работа с группой их 5 шт датчиков. Один из группы не работает, пока не знаю почему, остальные откликаются и на температуру реагируют.
Цикл следующий: RESET --> CC --> 44 --> 1 секунда --> Reset --> 55 --> АДРЕС --> BE --> чтение 2 байт температуры. Но в этом цикле ожидание 1 секунда для каждого измерения Хотел после ожидания конвертации температуры для ускорения процесса опросить все датчики по их адресам: RESET --> CC --> 44 --> 1 секунда --> цикл --> 55 --> АДРЕС --> BE --> чтение 2 байт температуры, фигушки, какой бы адрес не выставлял в ответ получаю температуру первого из опроса. Может есть какая тонкость ускользнувшая от меня, уж очень не хочется тратить время на ожидание для каждого датчика Группа.jpg |
|||
карма: 19 |
| ||
файлы: 1 | Группа.jpg [44.1KB] [865] |
Ответов: 70
Рейтинг: 0
|
|||
Леонид писал(а): RESET --> CC --> 44 --> 1 секунда --> цикл --> 55 --> АДРЕС --> BE --> чтение 2 байт температуры между задержкой и началом 55 нужно вставлять RESET иначе на каждый последующий запрос будит откликаться тот датчик который первый получил свой адрес, так как после того как остальные датчики не нашли свой адрес в шине просто отключаются от неё до того момента пока мастер не скажет RESET. ------------ Дoбавленo в 07.09: Я имею в виду RESET --> CC --> 44 --> 1 секунда --> цикл --> ... это правильно и на эту команду все датчики одновременно выполнили преобразование но в цикле перед каждым обращением к другому датчику нужно сказать RESET. Сама команда RESET не стирает значение замера температуры, она всего лишь обнуляет команды пришедшие к датчику. |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Konoplj2010 писал(а): ..Сама команда RESET не стирает значение замера температуры..Как часто надо выполнять замеры, через пять секунд, минуту...раз в сутки? (До кучи можно регулятор на каждую точку сделать с выходом через другой СОМ-порт Нужен?) |
|||
карма: 19 |
|
Ответов: 70
Рейтинг: 0
|
|||
Леонид писал(а): Зашоренность, блин! Раз ПЕРЕУСТАНОВКА -- всё на ноль сбрасывается, даже и мысли не было попробоватьСогласен, давайте напишем коллективную жалобу на фирму Dallas Semiconductor. Леонид писал(а): Как часто надо выполнять замеры, через пять секунд, минуту...раз в сутки?Один замер в 2-3 секунды, не реже. Так эта задержка будит таймером выставляться или мы упираемся в производительность машины? Леонид писал(а): До кучи можно регулятор на каждую точку сделать с выходом через другой СОМ-порт Нужен?Нет не нужен. С регулятором я и сам пока ещё ничего не знаю, клиент тоже. |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Konoplj2010, приложены три схемы и три *.ехе: сама программа (осталось график пригладить), схемка для считывания номера датчика -- уже выкладывал, и схемка для написания *.ini файла -- для примера *.ini файл для моих датчиков. 1wire.rar
Номер порта и интервал можно менять на ходу, подробную информацию об отдельном датчике по щелчку на "градуснике" или выбором в выпадающем списке. На картинке несколько минут с рядышком лежащим паяльником Почти_всё.jpg |
|||
карма: 19 |
| ||
файлы: 2 | Почти_всё.jpg [113.6KB] [740], 1wire.rar [113.5KB] [697] |
Ответов: 70
Рейтинг: 0
|
|||
Леонид писал(а): Ого как оно! Хорошо я попробую вечером (если дети дадут подойти к компьютеру) ------------ Дoбавленo в 07.03: И ещё один из датчиков как я понимаю показывает постоянно 0 ? Это может быть из за пробоя выходного транзистора датчика. То есть в линию постоянно выдаёт логический 0. |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Konoplj2010 писал(а): ..из за пробоя выходного транзистора датчика..Кстати об адресах: те адреса, которые у вас записаны для действующей программы, для моей, наверное, надо по битам переворачивать Прочитайте тему http://forum.hiasm.net/forum.html?q=3&t=65678, обратив внимание на картинку "Всё наоборот" |
|||
карма: 19 |
|
Ответов: 70
Рейтинг: 0
|
|||
Леонид писал(а): Ого Вы там ещё одну тему создали... С CRC я думаю можно было и не заморачиватся. Датчики установим один раз и забудим. |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Konoplj2010, нет, не забудем, и датчик, и "мастер" проверяют адрес на соответствие CRC во избежание ошибок
|
|||
карма: 19 |
|
Ответов: 70
Рейтинг: 0
|
|||
Леонид писал(а): Работает! Но уж слишком запутано... Я не могу разобраться как оно работает. |
|||
карма: 0 |
|
Ответов: 8926
Рейтинг: 823
|
|||
Konoplj2010, работа программы опирается на *.INI файл. При запуске он читается и создаётся столько термометров сколько записей в файле. Места установки выводятся в выпадающий список. Кроме того создаются массивы адресов, минимальных и максимальных допусков температур. Записи одного датчика имеют одинаковый индекс. Запускается таймер (интервал можно установить в поле ввода) и через каждое установленное время делает запуск цикла измерения: зажигается светодиод, СОМ порт на скорости 9600 формирует для всех RESET и по получении ответа от датчиков выдаёт
на скорости 115200 команду на конвертацию температуры и включает свой таймер на ожидание 1000 мсек, после чего начинается опрос датчиков по списку адресов, полученные ответы передаются на термометры для отрисовки показаний и их цвета. Одновременно заполняется строка списка в которой отражается время записи в формате ЧАСЫ и ДЕСЯТИЧНЫЕ доли часов и все показания термометров. СОМ порт отключается и светодиод гаснет. При выборе датчика в выпадающем списке или щелчку по термометру выпадает окошко-сообщение с последним измерением температуры, там же можно "заказать" график время/показания этого датчика. Процесс повторяется по срабатыванию таймера. Его период не должен быть меньше ОДНОЙ секунды на ожидание конвертации температур ПЛЮС немного на выполнение запросов и ответов, т. е. не менее 1.1--1.2 сек. Надо чётко и без ошибок создать INI файл с помощью программы для этого назначенной! |
|||
карма: 19 |
|