Обявления

Для полноценной работы рекомендуется пройти регистрацию.

Рекламные сообщения будут удаляться вместе с пользователем. Что есть реклама - буду решать я.

Термостат ∆T=0,1°C - работа над ошибками

Здесь только проекты на ATtiny

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 10 дек 2014 17:08

Мигание (незначительное изменение яркости при опросе датчика малозаметно) можно сказать что почти нет - это не напрягает, а на каких-то индикаторах может и почти незаметно будет.
строка 400
вместо ShowDisplayData(); поставить ShowDisplayData11Times();
сейчас это максимум, чего можно добиться. Если получится освободить память, сделаем вообще без моргания

Возможно попробую и посмотрю что получится, пока нет времени...
propell_ant я про мигание при опросе датчика совместно с изменением яркости при ошибке написал для сведения - чтобы была полная картина. Попробую уменьшить яркость (не 50% а ниже) как будет время вникать в код (я уже писал, что в программировании не силен, поэтому нужно больше времени для чтения и редактирования кода) :)
p/s Рад, что проект дорабатывается :drink:
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 10 дек 2014 17:24

dandiv писал(а):Мигание (незначительное изменение яркости при опросе датчика малозаметно) можно сказать что почти нет - это не напрягает, а на каких-то индикаторах может и почти незаметно будет...
Возможно попробую и посмотрю что получится, пока нет времени...
я про мигание при опросе датчика совместно с изменением яркости при ошибке написал для сведения - чтобы была полная картина. Попробую уменьшить яркость (не 50% а ниже) как будет время вникать в код
Это скорее для я общественности, народ часто задает вопросы про чуток-моргание.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 10 дек 2014 17:40

Ясно, желаю успехов! :good:

Добавлено спустя 51 минуту 42 секунды:
Сделал следующее:
#define BlinkHalfPeriod 48 //примерно 1 моргание в секунду

if (View == 0) if (ErrorDetected) if (DimmerCounter % 2 == 0)

вместо ShowDisplayData(); поставил ShowDisplayData11Times()

Заключение:
Опрос датчика почти незаметен, можно сказать идеально. При ошибке моргание яркостью примерно раз в секунду, изменение яркости очень заметно (идеально)

p/s Включаю, сдергиваю датчик (обрыв) - Е0.2 (идеально срабатывает), при подключении датчика иногда выскакивает Е0.3 (значит реагирование на ситуацию, когда получилось считать информацию с датчика без предшествующей команды "ConvertT" тоже работает идеально), при замыкании на массу Е0.4 (тоже идеально).

Похоже получилась отличная прошивка. Если внесете такие изменения в исходник, то думаю лучшего желать и не нужно. (Ну а если есть возможность оптимизировать код, то все в Ваших руках!)

p/s2 для себя я еще немного подправил код, чтобы при ошибке EEPROM в него записывалось 3 градуса и дельта 3 (у меня будет работать на обогрев погреба, чтобы при 3 градусах включался обогрев и при 6 отключался. Возможно потом кнопками подредактирую, но если произойдет сбой EEPROM, чтобы записались именно эти значения, чтобы работа термостата была в приемлемых диапазонах). Этим я хочу сказать, что при выкладывании конечного исходника было бы полезно указать в каких строчках можно изменить данные чтобы для каждого конкретного случая подправить исходник(так сказать дополнительная перестраховка для тех, кто беспокоится о том, чтобы не возникла нештатная ситуация)
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 11 дек 2014 09:59

dandiv писал(а):Похоже получилась отличная прошивка.
Сам удивляюсь.
для себя я еще немного подправил код, чтобы при ошибке EEPROM в него записывалось 3 градуса и дельта 3 (у меня будет работать на обогрев погреба, чтобы при 3 градусах включался обогрев и при 6 отключался. Возможно потом кнопками подредактирую, но если произойдет сбой EEPROM, чтобы записались именно эти значения, чтобы работа термостата была в приемлемых диапазонах). Этим я хочу сказать, что при выкладывании конечного исходника было бы полезно указать в каких строчках можно изменить данные чтобы для каждого конкретного случая подправить исходник(так сказать дополнительная перестраховка для тех, кто беспокоится о том, чтобы не возникла нештатная ситуация)
если значения температур заранее известны и годами не меняются - выносите их вообще из EEPROM прямо в программу - итоговая надежность всей системы очень повысится. Достаточно вместо строк 683-690
Код: Выделить всё
if ((eeT_LoadOn > 2250) || (eeT_LoadOn < 450))    //если в EEPROM значение > 2250 или < 450 значит он не прошился, или
  eeT_LoadOn = 1280;                             //чё-то глюкануло, поэтому запишем туда начальные значения.
if (eeDeltaT > 900)
  eeDeltaT = 10; 
 
 
T_LoadOn = eeT_LoadOn;  //читаем значение Установленной температуры из EEPROM в RAM
DeltaT = eeDeltaT;      //читаем значение Дэльты из EEPROM в RAM
оставить что-то типа этого, и больше уже кнопками не настраивать:
Код: Выделить всё
T_LoadOn = 1280;
DeltaT = 10;
//if ((eeT_LoadOn > 2250) || (eeT_LoadOn < 450))    //если в EEPROM значение > 2250 или < 450 значит он не прошился, или
//  eeT_LoadOn = 1280;                             //чё-то глюкануло, поэтому запишем туда начальные значения.
//if (eeDeltaT > 900)
//  eeDeltaT = 10; 
 
 
//T_LoadOn = eeT_LoadOn;  //читаем значение Установленной температуры из EEPROM в RAM
//DeltaT = eeDeltaT;      //читаем значение Дэльты из EEPROM в RAM
Ну, а для EEPROM, настроек по умолчанию, всякой разной частоты моргания и процента яркости - наверно придется еще одну доработку сделать - вынести все настройки в отдельный хедер и написать прямо в нем подробные коменты.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение Recov » 11 дек 2014 11:38

Спасибо огромное! Прошивка из (сообщение 51) tl_mod_002b2 работает без нареканий, отличный и достаточно безопасный функционал!
Recov
Живу тут
 
Сообщения: 161
Зарегистрирован: 26 дек 2011 16:23
Откуда: г. Находка

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение agvares » 11 дек 2014 12:30

1)Возник один вопрос, Мне нужен термостат с большой инерцией (чтоб мог выключаться через определенное время, дабы не сгорел). Ваш термостат имеет такие возможности? Если нет, что следует изменить?
2)Нужен pspice код
agvares
Пробегал мимо
 
Сообщения: 4
Зарегистрирован: 11 дек 2014 12:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 11 дек 2014 13:15

как понять
дабы не сгорел
? С чего это он должен сгореть?
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение Recov » 11 дек 2014 13:19

dandiv писал(а):как понять
дабы не сгорел
? С чего это он должен сгореть?

Действительно, с чего? Не с перепугу же. У меня на отоплении дома два термостата и один на курятник работают третий год, ни один еще не сгорел.
Recov
Живу тут
 
Сообщения: 161
Зарегистрирован: 26 дек 2011 16:23
Откуда: г. Находка

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 11 дек 2014 13:55

agvares писал(а):1)Возник один вопрос, Мне нужен термостат с большой инерцией (чтоб мог выключаться через определенное время, дабы не сгорел). Ваш термостат имеет такие возможности? Если нет, что следует изменить?
Несколько человек в основной ветке форума делали доработки, похожие на то что вы описали. Например вот или еще вот
2)Нужен pspice код
Его нету, объясните более подробно, зачем вам pspice.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 11 дек 2014 19:37

propell_ant Подскажите пожалуйста по поводу ошибок Е0.1 и Е0.3:
Подключил датчик, который находится на улице, длина провода около 15 метров (UTP кабель), подключение датчика по трехпроводной схеме, подтягивающий резистор 4.7К - все работает отлично, на улице -9С, температура отображается верно. Игрался с настройками - выставил температуру включения (исполнительно устройства пока нет), дэльту, думаю как проверить работу... выхожу на улицу, пальцами рук подогреваю датчик - температура начинает резко расти, а вот термостат начинает сваливаться в ошибку (чаще Е0.1 показывает, но иногда Е0.3 причем переодически - ошибка...температура...ошибка и т.д. Сначала это изменение состояния чаще, потом по мере уменьшения скорости изменения температуры реже и потом просто отображает температуру без ошибки). Нужно номинал подтягивающего резистора менять или из-за резкого изменения температуры данные с датчика начинают некорректно передаваться (т.е датчик начинает передавать данные, а температура уже изменилась и окончание данных уже не та, что должна быть) и из-за этого проблемы? Просто работу датчика смутно представляю.
p/s При медленном изменении температуры ошибки не появляются. Может это натолкнет Вас на какие-то мысли по поводу редактирования исходника...если это конечно не чисто проблемы железа :dontknow:
p/s2 Да и точка еще немного путаницу вводит... пришлось светодиод на выход порта, который управляет нагрузкой повесить для тестов, чтобы видно было состояние нагрузки
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение IYra » 11 дек 2014 20:03

dandiv писал(а):Нужно номинал подтягивающего резистора менять

Скорее всего (в сторону уменьшения) На скорость изменения вроде не должна реагировать
А попробуй прошивку termostat_led_5_40_0_4 - что будет показывать
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 11 дек 2014 20:32

IYra, propell_ant Извините пожалуйста, предыдущий мой пост пока на "паузу поставьте" - нужно проверить кое-что... Есть кое-какие мысли, завтра более подробно по изучаю проблему и потом отпишусь :pardon:
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 11 дек 2014 21:05

dandiv писал(а):Да и точка еще немного путаницу вводит... пришлось светодиод на выход порта, который управляет нагрузкой повесить для тестов, чтобы видно было состояние нагрузки
Вот исправление отображения точки.
И IYra правильно советует, поставьте проверенную прошивку, это же тестовая, на ней живого места не осталось после трех оптимизаций. Можно termostat_led_5_40_0_4, можно tl_mod_001, tl_mod_003 - это надежно.
Насчет резистора - да при 15м уже пора подумать о подборе номинала поменьше.
И проверьте контакт между датчиком и кабелем, больше похоже на непропай.

А логика работы датчика, конечно, другая. По команде ConvertT запускается преобразование температуры, датчику, конечно, всё равно, с какой скоростью она меняется. Понятно, что если за 750мс температура изменится на несколько градусов, точность измерения будет сомнительной, но измерение он доведет до конца. Через секунду после ConvertT посылается запрос на передачу измеренной температуры, и тут-то все ошибки и возникают.
Вложения
tl_v4.0.3_src_and_hex.rar
это всё есть в архиве в 1-м посте
(20.93 КБ) Скачиваний: 80
Последний раз редактировалось propell_ant 30 дек 2014 11:15, всего редактировалось 6 раз(а).
Причина: оформлено в новую версию (v4.0.3)
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение Recov » 12 дек 2014 00:38

В идеале при такой длине 15м резистор надо паять на сам датчик.
Recov
Живу тут
 
Сообщения: 161
Зарегистрирован: 26 дек 2011 16:23
Откуда: г. Находка

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 12 дек 2014 04:57

А попробуй прошивку termostat_led_5_40_0_4 - что будет показывать
Сегодня вечером попробую ее и какую-нибудь из tl_mod_001, tl_mod_003.
Насчет резистора - да при 15м уже пора подумать о подборе номинала поменьше.
Попробую после проверки с разными версиями прошивки
В идеале при такой длине 15м резистор надо паять на сам датчик.
, т.е. с основной платы его вообще убрать или на плату поставить какой-нибудь большего номинала.
p/s А первым делом попробую датчик сменить. Дома тестил с одним датчиком (все прошивки), на улице висит другой (когда-то использовался в схеме градусника), так вот тот с которым тестирование вел - изменения температуры по 0.1 градуса, а тот что сейчас висит 0.5 градуса... может с ним чего не так?
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 12 дек 2014 08:45

dandiv писал(а):тот с которым тестирование вел - изменения температуры по 0.1 градуса, а тот что сейчас висит 0.5 градуса... может с ним чего не так?
В датчиках есть настройка точности, ее можно менять, записывая данные в датчик. Понятно, что в нашей прошивке запись в датчик не делается - из экономии памяти прошивки.

Еще модель датчика может оказаться другой. Не DS18B20.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение Recov » 12 дек 2014 13:06

Народ, при длине провода к датчику более 5м. паяйте пожалуйста резистор 4.7К на сам датчик. Тут дело может быть как в увеличении сопротивления, так и в наводках по линии. Согласитесь что редко кто делает линию до датчика в экранированном проводе.

По своему опыту скажу что первое что влияет на сбои ДАННОГО девайса - это импульсный блок питания с гадостным выходом. Проверяется легко, замена на любой трансформаторный Б/П. Второе - проблема в монтаже (промыть спиртом, проверить под лупой...). Третье - и самое последнее - проблема с резистором 4.7кОм. В моей практике ни разу не встретился. Правда с учетом первого абзаца. Кстати заметили: - "Ай не работает, ай не светится, ай, ай...." И потом, в 90% случаях - ой, всем спасибо, разобрался, оказалось дорожка с ... ноги МК замкнула на ... резистор... Прошу прощения, это не поучения, а просто надо подумать, проанализировать.... Ничего тут плохого нет, сам так начинал.
Recov
Живу тут
 
Сообщения: 161
Зарегистрирован: 26 дек 2011 16:23
Откуда: г. Находка

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 12 дек 2014 13:29

Блок питания трансформаторный, выполнен как зарядное устройство для аккумулятора 12V7Ah, т.е. на выходе постоянно аккумулятор подключен.
А вот резистор попробую перенести на сам датчик

Сегодня пробовал тестировать (на улице потеплело) и ошибки не появляются, поэтому пока не стал менять прошивку, поэтому пока перенес подтягивающий резистор с основной платы прямо на выводы датчика, теперь буду наблюдать. Датчик поменял, на тот, с которым тестировал прошивки дома. Тот который стоял на улице (DS18B20 тоже...) проверил (когда-то давно собирал приблуду на COM порт для считывания показаний с датчиков DS18S20, DS18B20, DS1821), так вот у него "resolution 9 bit" оказалось, поставил первоначальный с "resolution 12 bit", поэтому изменения показаний в 0.5 градусов стало понятно из-за чего было. Теперь буду наблюдать за работой термостата, о результатах потом отпишусь... (но похоже проблема это не программная, поэтому пока вопросы по прошивке поднимать не буду)

Заметил одну вещь: Если возникают ошибки Е0.2 или Е0.4, то показания начинают мигать (принудительно создавал такую ситуацию). На данный момент подтягивающий резистор стоит на датчике (прям на его выводах), включаю питание - ошибка Е0.0 (нет ошибок), спустя ночь при входе в меню отображается ошибка Е0.1, но показания температуры не мигают (либо ошибка кратковременная и поэтому показания не мигают, либо при этой ошибке в исходнике недочет и нет мигания...). По железу - наверно нужно уменьшить номинал подтягивающего резистора, для устранения ошибки - попробую, а вот то, что не отображается миганием эта ошибка - похоже в исходнике так организовано. Надеюсь эта замеченная ситуация поможет в доработке исходника...
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 15 дек 2014 11:22

dandiv писал(а):а вот то, что не отображается миганием эта ошибка - похоже в исходнике так организовано. Надеюсь эта замеченная ситуация поможет в доработке исходника...
Да, пожалуй поможет, это подтверждение правильной работы алгоритма - одиночная ошибка происходит, записывается в память, но сразу же после ошибки данные читаются успешно, счетчик сбрасывается, индикатор не моргает, но код ошибки уже записан и его можно просмотреть.
Насчет того, что E0.2 и E0.4 моргают сразу - они моргают почти сразу. Первая возникшая ошибка просто не показывается, вторая - отображается на экране. Задержка между обрывом/КЗ и отображением получается от 1 до 2 секунд.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 17 дек 2014 09:03

propell_ant
В начале исходника tl_mod_002b3

eeprom int eeT_LoadOn = 1280; //1280 = +28°C 1140 = +14°C
eeprom int eeDeltaT = 10; //1°C

А потом при проверке EEPROM

if ((eeT_LoadOn > 1250) || (eeT_LoadOn < -550)) //если в EEPROM значение > 2250 или < 450 значит он не прошился, или
eeT_LoadOn = 280; //чё-то глюкануло, поэтому запишем туда начальные значения.
if (eeDeltaT > 900)
eeDeltaT = 10;

С дэльтой все понятно, а вот eeT_LoadOn... :dontknow:

Наверно так нужно?
if ((eeT_LoadOn > 2250) || (eeT_LoadOn < -450)) //если в EEPROM значение > +125С или < -55С значит он не прошился...
eeT_LoadOn = 1280
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 17 дек 2014 11:01

dandiv писал(а):propell_ant
В начале исходника tl_mod_002b3

eeprom int eeT_LoadOn = 1280; //1280 = +28°C 1140 = +14°C
eeprom int eeDeltaT = 10; //1°C

А потом при проверке EEPROM

if ((eeT_LoadOn > 1250) || (eeT_LoadOn < -550)) //если в EEPROM значение > 2250 или < 450 значит он не прошился, или
eeT_LoadOn = 280; //чё-то глюкануло, поэтому запишем туда начальные значения.
if (eeDeltaT > 900)
eeDeltaT = 10;

С дэльтой все понятно, а вот eeT_LoadOn... :dontknow:

Наверно так нужно?
if ((eeT_LoadOn > 2250) || (eeT_LoadOn < -450)) //если в EEPROM значение > +125С или < -55С значит он не прошился...
eeT_LoadOn = 1280

нет, правильно eeT_LoadOn поменять на 280, мой недогляд
Код: Выделить всё
eeprom int eeT_LoadOn = 280;

пришлось отказаться от хранения в формате 1000+T (из экономии памяти)
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 17 дек 2014 11:32

Т.е
eeprom int eeT_LoadOn = 280; //280 = +28°C 140 = +14°C
eeprom int eeDeltaT = 10; //1°C


if ((eeT_LoadOn > 1250) || (eeT_LoadOn < -550)) //если в EEPROM значение > +125С или < -55С значит он не прошился, или
eeT_LoadOn = 280; //чё-то глюкануло, поэтому запишем туда начальные значения +28С
if (eeDeltaT > 900) // Если дэльта больше 90С
eeDeltaT = 10; // то запишем туда 1С


Так? Просто в комментариях ошибки были :)

Теперь текст
//температура для удобства представлена так:
// - до 1000 = отрицательная
// - 1000 = 0
// - больше 1000 = положительная
// - 0,1°С = 1
//---------------------------------
//-55°C = 450
//-25°C = 750
//-10.1°C = 899
//0°C = 1000
//10.1°C = 1101
//25°C = 1250
//85°C = 1850
//125°C = 2250


нужно привести к виду

//температура для удобства представлена так:
// 0,1°С = 10
//---------------------------------
//-55°C = -550
//-25°C = -250
//-10.1°C = -101
//0°C = 0
//10.1°C = 101
//25°C = 250
//85°C = 850
//125°C = 1250

Или я неправильно понял? С отрицательными температурами теперь отрицательные значения?
Последний раз редактировалось dandiv 17 дек 2014 13:22, всего редактировалось 2 раз(а).
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 17 дек 2014 13:08

dandiv писал(а):Т.е
eeprom int eeT_LoadOn = 280; //280 = +28°C 140 = +14°C
eeprom int eeDeltaT = 10; //1°C

if ((eeT_LoadOn > 1250) || (eeT_LoadOn < -450)) //если в EEPROM значение > +125С или < -55С значит он не прошился, или
eeT_LoadOn = 280; //чё-то глюкануло, поэтому запишем туда начальные значения +28С
if (eeDeltaT > 900) // Если дэльта больше 90С
eeDeltaT = 10; // то запишем туда 1С

Так? Просто в комментариях ошибки были :)
ага. Коменты исправлять - всё-таки моя работа, не бегите впереди паровоза ;)
пока в первый пост не выложил - это бета для суровых мужиков, но про коменты я бы, конечно забыл, если б не вы.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение agvares » 17 дек 2014 13:16

propell_ant, задание на курсовой проэкт, решил взять эту схему. Но для полной картины нужен pspice код.
agvares
Пробегал мимо
 
Сообщения: 4
Зарегистрирован: 11 дек 2014 12:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение dandiv » 17 дек 2014 13:34

propell_ant Пока редактировал предыдущий пост, Вы уже ответ написали. Я запутался с минусовой температурой, гляньте мою последнюю цитату пожалуйста. Про паровоз улыбнуло :) , просто начал просматривать исходник, чтобы возможно было подправлять под себя, а тут такие изменения, что я попал в ступор...
dandiv
Частенько бываю
 
Сообщения: 41
Зарегистрирован: 14 фев 2012 08:46

Пред.След.

Вернуться в ATtiny



Кто сейчас на конференции

Сейчас этот форум просматривают: Yahoo [Bot] и гости: 3

cron