Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Контроль температуры. Подкиньте идей или алгоритмов.


Контроль температуры. Подкиньте идей или алгоритмов.

Сообщений 1 страница 16 из 16

1

Всем привет, давно не заходил.
Итак, есть темка. Она околосамоплясная с применением физики азеотропных жидкостей.
Суть: имеем жидкость А и жидкость В растворённые в жидкости С
Температуры кипения жидкостей А, В и С 60,80 и 100 соответственно.
Вопрос: как максимально "правильно" разделить их из азеотропа.
Есть идея сделать массив из 60-ти Single переменных, одна выборка в секунду.
Вновь прибывшая выборка вытесняет последнюю выборку.
Mid_temperature = [ Temperature(1) + + Tenperature(n) ] / n    то есть среднее арифметическое
Max_temperature = Temperature(1) - Temperature(60)    разница между первым и последним измерением температуры
Delta_1 = Temperature(1) - Mid_temperature    куда наклоняется левая половина температурной кривой
Delta_2 = Temperature(60) - Mid_temperature    куда наклоняется правая половина температурной кривой
Это для определения понижения или повышения температурной кривой на половине участка.
Если Temperature(1) = Temperature(60) и = Mid_temperature    мы вышли на азеотропную полку кипения. Если нет - ждём дальнейших измерений.
И так далее для остальных температурных полок.
Кто что ещё нового подкинет в алгоритм отслеживания???

0

2

Немного не ясно, так-то ещё зависит от нагревателя и его инерции нагрева.

0

3

Вот именно инерцию НЕ нагревателя а СОДЕРЖИМОГО, ну шо нагревают, я и попытался учесть...
Ну таки шо... массив из ДЕСЯТИ Single вполне справляется с возложенными задачами. Усреднялку сделал, есть мысли о первообразной... но зачем? Вроде всё и так работает...
Короче усё ужо сделано.
Будут вАпросы - напишу есличО...

0

4

+++
Добавлю пару вопросов...
Для Саши_1973:
1 - в процедуре опроса RAM DS18B20 если не совпадает контрольная сумма температура заменяется значением МИНУС 55 градусов. ЗАЧЕМ там применяется EOR 255... т.е. инверсия каждого бита... Зачем??? (это не работает, отрицательные температуры показывает не правильно!!!)
2 - как быть, если искусственно оторвать ногу от DS18B20 или убрать с него питание или убрать и питание и подтягивающий резистор??? Возникает интереснейшая ситуёвина - с датчика читаются НУЛИ и контролька СОВПАДАЕТ и никак эту ситуацию ПРОГРАММНО не поймать!!! (ну мне не удалося((( )

И для всех:
Я так понял, шо прерывания ВРЕДНЫ для 1wire девайсов. Суточный прогон двух устройств с АБСОЛЮТНО одинаковым железом с прерываниями и без показал отсутствие ошибок 1wire БЕЗ прерываний и присутствие ошибок с включенными прерываниями. Прерывания вызывались 30 раз в секунду и делали пустой декремент регистра Х (65536 раз). Опрос датчика 18В20 производился 1 раз в секунду. В программе был счётчик ошибок чтения температуры с датчика. БЕЗ прерываний за сутки ни одной ошибки!  С включенными прерываниями - ошибок больше 10000!!!  Возникает вопрос - как с энтим бороться??? Есть у кого варианты...???

0

5

-NMi- написал(а):

как быть, если искусственно оторвать ногу от DS18B20 или убрать с него питание или убрать и питание и подтягивающий резистор??? Возникает интереснейшая ситуёвина - с датчика читаются НУЛИ и контролька СОВПАДАЕТ и никак эту ситуацию ПРОГРАММНО не поймать!!!

Датчик не ответит на reset.

-NMi- написал(а):

Возникает вопрос - как с энтим бороться???

Аппаратно, подключив датчик к USART.
Библиотека для аппартаного модуля 1Wire на основе USART
Исследование Ds18b20 (датчик температуры)

0

6

Серьёзно?   Блин... реально поржал... :D

Суть не в ЭТОМ!!!
Готовое изделие в ОБЯЗАТЕЛЬНОМ ПОРЯДКЕ ПРОХОДИТ ТЕСТ НА ДОЛ...БА!!!
Иными словами от работающего контроллера отрывают датчики, замыкают их на фазу и на ноль, бьют молотком и суют в кипяток  :crazy:
Процессор должен "понимать" что что-то не так и отрабатывать эти экстренные ситуации.
Вот я и задал вопрос - как поступить, если с датчика читаются ВОСЕМЬ нулей и контролька СОВПАДАЕТ!!! (реально сами попробуйте... афигеете)

0

7

То есть хотите сказать что при отключенном датчике он ответит на reset?

0

8

Ну я не знаю шо ответить... Тута либо лыжи не едут, либо нет ответа не Reset  :mybb:

Есть у меня термостат. Мне НУЖНО, чтобы при ОБРЫВЕ датчика программа плавно выключала нагреватель. Если я имитирую короткое замыкание на +5В с датчика читаются 0FFh и контролька НЕ совпадает и программа отрабатывает ошибку. В случае обрыва датчика ВМЕСТЕ С ПОДТЯГИВАЮЩИМ РЕЗИСТОРОМ(!!!) с датчика читаются НУЛИ и контролька совпадает(!!!) иными словами датчик выдаёт НОЛЬ градусов Цельсия и программа включает ПИД регулятор на нагрев.
Собственно и вопрос.... КАК ВЫКУРИТЬ эту ситуацию???

0

9

-NMi- написал(а):

КАК ВЫКУРИТЬ эту ситуацию

Нужно в третий раз повторить про ответ на reset от датчика?  :O
До сих пор не догадались открыть справку и прочитать описание команды 1WRESET
Там написано

Reset the 1WIRE bus. The error variable ERR will return 1 if an error occurred
....
The global variable ERR is set when an error occurs.

Там есть пример

Код:
1wreset                                                   'reset the device
Print Err                                                 'print error 1 if error

Print меняете на If и отлавливаете ошибки. :)

0

10

ХоРоШо !!!
Берём даташит на DS18B20
На странице № ПЯТЬ показан пример ответа датчика с разными температурами.
Находим в таблице ответ датчика при температуре НОЛЬ ГРАДУСОВ Цельсия!!!
Видим, что датчик отвечает ГОЛЫМИ НУЛЯМИ !!!   00_00h
Вычислим CRC8 из ответа датчика и сравним её с CRC8 самого датчика. Разницы НЕ будет!!! Всё проканает!!!

Если влом паять, возьмём протеус. В моём случае и в протеусе и в железе всё работает абсолютно ОДИНАКОВО!!!
ОТКУСИМ кусачками провод от датчика или нажмём мышкой два раза ПРАВУЮ клавишу мыши чтобы откусить сигнальный провод от датчика в протеусе. Запустим симуляцию и увидим, что НИКАКИХ ошибок нет, датчик показывает температуру НОЛЬ градусов!!!

вопрос - КАК ЭТО МОЖНО ОТСЛЕДИТЬ ПРОГРАММНО???

0

11

-NMi- написал(а):

Запустим симуляцию и увидим, что НИКАКИХ ошибок нет, датчик показывает температуру НОЛЬ градусов!!!


http://sd.uploads.ru/4sVMT.png

0

12

Почему на PD5 при ОБРЫВЕ высокий уровень?????
Писал же ВЫШЕ, что ИМЕННО НИЗКИЙ уровень не вызывает ошибку!!!
У меня в ЖЕЛЕЗЕ если оторвать ногу С ПОДТЯГИВАЮЩИМ РЕЗИСТОРОМ на ноге сохраняется НИЗКИЙ уровень!!!
Где копать???

0

13

-NMi- написал(а):

Где копать???

Выше я не все написал. Читайте внимательно. Или в четвертый раз повторить? Наверное смыла нет, все равно не читаете что я пишу.

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

0

14

Спасибо за библиотеку. Попозже посмотрю её и попробую в железе.
Теперь про мою загадку.
Контроллер написан на Tiny85 в форм-факторе USB флешки. Именно так необходимо. Питается от зарядника сотового телефона. Размером с почтовую марку. Продаётся в Китае за копейки. USB бутлоадер и резисторы убраны. PB0 - красный светодиод; PB1 - ШИМ с Timer1 аппаратный на твердотельное реле 500 Гц ; PB2 - зелёный светодиод; PB3 - DS18B20; PB4 - кнопка выбора температуры по кругу с шагом в 5 градусов, она же управляет вентилятором конвекции. USART-а вроде там нет... Светодиоды поочерёдно "вымаргивают" десятки и единицы температуры, уставки и режима работы. Может это что-то даст... С датчиками так не работаю. Сначала даю команду на замер и занимаюсь другими делами, потом забираю температуру и даю следующую команду на замер.

Мне в принципе "побарабану" т.к. всё работает НО, если "выдернуть" датчик то контроллер начинает греть... ну и .....

0

15

Попробуй обращаться к датчику по id

0

16

То, что в шапке темы написано на 328Р контроллере и там всё енто дело работает наура и без косяков. Библиотека позаимствована у Саши_1973 и немного доработана лично мной. Косяки появились только на 85 тиньке.  Вот поэтому и спрашиваю.
###
Я знаю где косяк! Косяк в том, что на 328Р подтягивающий резистор припаян непосредственно на плате около контроллера а в 85 тиньке нет места для резистора на плате и естественно он припаян в проводке к датчику. Яж говорю... забейте, сам разберусь.

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Контроль температуры. Подкиньте идей или алгоритмов.