1

Тема: Три цифровых датчика температуры DS18B20, подключенных к разным канал

Здравствуйте,
Только начал изучение CANNY 5 NANO.
Задача следующая: 3 датчика DS18B20 подключены к разным каналам контроллера. На один канал посадить нельзя, датчики разнесены далеко друг от друга и потом невозможно будет найти где какой.
Вопрос в следующем:
Я прописываю установки канала (предположим 17-го) в виде
17 - Рег. Уст. канала Dallas,
далее после считывания температуры, в ходе выполнения цикла, мне достаточно изменить константу  записав
16 - Рег. Уст. канала Dallas
и данные я буду считывать со второго датчика?

Спасибо.

2

Re: Три цифровых датчика температуры DS18B20, подключенных к разным канал

Да, так и произойдет. Полностью цикл работы вашей диаграммы будет выглядеть так:

1. Включаете драйвер Dallas
2. Устанавливаете новый № канала и посылаете единичный импульс в Регистр начала передачи Dallas
3. Дожидаетесь появления 1 в регистре готовности данных Dallas и обрабатываете их
повторяете с п.2

3

Re: Три цифровых датчика температуры DS18B20, подключенных к разным канал

Константин, спасибо! Обязательно так и сделаю. Но пока не получается считать данные даже с одного датчика. Перепробовал много вариантов. Не посмотрите, в чем ошибка?

Идея в следующем: Датчик опрашивается раз в 3 сек. Если температура ниже 25 град светодиод на 4 порту мигает раз в 1,5сек, если выше, раз  в 4 сек.
При разных вариантах диаграммы результат один - светодиод мигает раз в 1,5 сек, похоже на входе триггера данных нет.
Спасибо!

Вложений в сообщении

Иконка вложения Отработка подключения датчика температуры.png 61.61 кб, скачивался 222 раз, последний раз 2016-11-10 

4

Re: Три цифровых датчика температуры DS18B20, подключенных к разным канал

Используйте на выходе блока №1 "Генератор ШИМ" блок детектор переднего фронта, чтобы запросы на получение данных от термодатчиков отправлялись отднократно, раз в 3 секунды. В противном случае запрос датчикам будет отправляться на каждом цикле выполнения диаграммы, пока на выходе блока №1 будет сохраняться значение 1 (в течении 600мс).
Подобная задача рассматривалась в теме: http://forum.canny.ru/viewtopic.php?id=187

5

Re: Три цифровых датчика температуры DS18B20, подключенных к разным канал

Константин, Денис, здравствуйте!

Спасибо за предыдущие ответы. С датчиком научился работать. Но вот с двумя не получается. По логике работы я должен последовательно опросить два порта, например 16 и 17, к которым подключены два датчика DS18B20. Включаю драйвер Dallas, устанавливаю номер порта 17, опрашиваю и  обрабатываю данные (Для облегчения чтения убрал блоки не относящиеся к вопросу) . Далее прописываю новый номер порта для Dallas. Записываю номер 16 в Регистр установки канала Dallas. Программа указывает на повторное упоминание регистра установки канала и сообщает об ошибке.
И еще одна особенность, которая мне непонятна. Как я говорил, с одним датчиком все заработало. Но стоит физически подключить второй датчик температуры на другой порт, как контроллер перестает видеть оба датчика.
Пожалуйста, помогите, я зациклился.

Вложений в сообщении

Иконка вложения Отработка подключения датчика температуры 2.png 85.43 кб, скачивался 194 раз, последний раз 2016-12-08 

6

Re: Три цифровых датчика температуры DS18B20, подключенных к разным канал

smamchur пишет:

...По логике работы я должен последовательно опросить два порта, например 16 и 17, к которым подключены два датчика DS18B20. Включаю драйвер Dallas, устанавливаю номер порта 17, опрашиваю и  обрабатываю данные (Для облегчения чтения убрал блоки не относящиеся к вопросу) . Далее прописываю новый номер порта для Dallas. Записываю номер 16 в Регистр установки канала Dallas. Программа указывает на повторное упоминание регистра установки канала и сообщает об ошибке...

Вы не совсем верно поняли принцип языка CFD. Краткие сведения о нем можно найти тут.
За 1 цикл выполнения диаграммы выполняются все блоки, присутствующие на диаграмме. От расположения блоков, за исключением циклов, их порядок выполнения не зависит. Один и тот же регистр записи не может присутствовать на диаграмме дважды - это ошибка.
При выполнении пользовательского алгоритма можно определить, какие именно данные на данном цикле выполнения диаграммы будут использованы для обработки тем или иным функциональным блоком или какие результаты будут переданы для отображения в тот или иной регистр записи.
Т.е. отправкой запросов на получение от датчиков данных о измеренной температуре должны заниматься одни и те же блоки. Блоки 4 и 5 из приведенного выше примера должны быть убраны.

Во вложении пример диаграммы для работы с 2мя датчиками DS18B20, подключенными к 2 разным каналам контроллера.
Функциональная диаграмма:
http://forum.canny.ru/files/c5nano_ds18b20x2_2channel_prev.png

smamchur пишет:

...И еще одна особенность, которая мне непонятна. Как я говорил, с одним датчиком все заработало. Но стоит физически подключить второй датчик температуры на другой порт, как контроллер перестает видеть оба датчика...

Приведите принципиальную схему подключения датчиков к контроллеру (нарисуйте хоть от руки и сфотографируйте).

Вложений в сообщении

Иконка вложения c5nano_ds18b20x2_2channel_store.cfd 3.79 кб, скачивался 449 раз, последний раз 2016-12-08