Page 66 of 109

Re: Термостат ∆T=0,1°C

Posted: 13 Feb 2013 22:49
by hardlock
Ashatshem,

eeprom WORD eeDelta2 = 20; //2°C

намёк понят? Внимательнее надо быть.

Re: Термостат ∆T=0,1°C

Posted: 13 Feb 2013 22:58
by Ashatshem
Блин однако))) Вот 100 раз пересмотрел и не доглядел))) Тогда ещё один вопрос) А что значит такая ошибка?

Re: Термостат ∆T=0,1°C

Posted: 13 Feb 2013 23:04
by hardlock
Значит именно то, что там написано. Потрудитесь перевести. Тем более там даже указано что делать.

Re: Термостат ∆T=0,1°C

Posted: 13 Feb 2013 23:07
by Ashatshem
Значит что в Data Stack лишних 4 байта, а вот что такое что такое Data Stack я не знаю, я же где то писал что чайник)

Re: Термостат ∆T=0,1°C

Posted: 13 Feb 2013 23:14
by hardlock
это стек данных. во второй части сообщения написано что и где надо сделать.

Re: Термостат ∆T=0,1°C

Posted: 13 Feb 2013 23:40
by Ashatshem
Спасибо Вам огромное за помощь, и отдельное спасибо за отличный исходник, я на нём потихоньку и смотрю что и как работает. 1 термостат уже полностью собрал, то есть корпус, исполниловка и тд, второй работает просто как термометр, вот пытаюсь допилить прошивку до "термостата мечты", вроде всё получается)

Re: Термостат ∆T=0,1°C

Posted: 13 Feb 2013 23:41
by hardlock
Ashatshem, главное не забывайте про гугл. любую ошибку можно найти на форумах и способ её решения. Да и просто примеров кода миллионы... Удачи!

Re: Термостат ∆T=0,1°C

Posted: 14 Feb 2013 12:06
by Ashatshem
У меня есть ещё вопрос)

Code: Select all

((Tnew >= T_LoadOn + DeltaT) & (FlagON))
Почему такое условие работает,

Code: Select all

(((Tnew >= T_LoadOn + Delta2) || (Tnew <= T_LoadOn - Delta2)) & (FlagON)))
а такое нет? Где ошибка?
А такое

Code: Select all

((Tnew >= T_LoadOn + Delta2) || (Tnew <= T_LoadOn - Delta2))
тоже работает нормально...
ЗЫ: Вопрос снят, всё равно не хватает места на мк))) Хотя интересно почему так...

Re: Термостат ∆T=0,1°C

Posted: 14 Feb 2013 15:49
by IYra
Ashatshem wrote: ЗЫ: Вопрос снят, всё равно не хватает места на мк))) Хотя интересно почему так...
В условиях старайтесь использовать короткие простые цепочки

if ((Tnew >= T_LoadOn + DeltaT) & (FlagON))
{
}
займет больше места чем
if (Tnew >= T_LoadOn + DeltaT)
{
if (FlagON))
{
}
}

Re: Термостат ∆T=0,1°C

Posted: 14 Feb 2013 16:24
by Ashatshem
Спасибо, уже понял.

Добавлено спустя 3 минуты 24 секунды:
Только есть ещё один вопрос. Пользуюсь кодевиженом 2.04, так как 12.59 на семёрке работать не хочет, так он выдаёт такое предупреждение

Code: Select all

Warning: C:\Users\Ashatshem\Desktop\222\Новая папка\termostat_led.c(425): overflow is possible in 8 bit multiplication, casting to 'int' may be required
на строчку

Code: Select all

    Tnew = 1000 + (T * 10) + ((Ff * 10) / 16);            //вычисляем значение температуры если Т > 0. 
Что ему не нравится? Хотя в общем то всё работает)

Re: Термостат ∆T=0,1°C

Posted: 14 Feb 2013 16:56
by IYra
Ashatshem wrote:Warning: C:\Users\Ashatshem\Desktop\222\Новая папка\termostat_led.c(425): overflow is possible in 8 bit multiplication, casting to 'int' may be required
Что ему не нравится? Хотя в общем то всё работает)
Возможно переполнение но здесь оно не наступает.
Хотя надо быть внимательней к таким предупреждениям.
Я пару раз попадался. Не сразу доходило.

Re: Термостат ∆T=0,1°C

Posted: 14 Feb 2013 17:50
by Ashatshem
Тогда ещё вопрос) Как узнать код буквы из таблицы символов?

Re: Термостат ∆T=0,1°C

Posted: 14 Feb 2013 18:55
by IYra
Ashatshem wrote: Как узнать код буквы из таблицы символов?
Не понял вопроса ! byCharacter[13] = 0x64, //d
Или вы хотите создать свою букву ?

Re: Термостат ∆T=0,1°C

Posted: 14 Feb 2013 19:32
by Ashatshem
С этим разобрался, а вот где взять код для новой буквы-нет.

Re: Термостат ∆T=0,1°C

Posted: 14 Feb 2013 19:53
by IYra
Ashatshem wrote: где взять код для новой буквы-нет.
Создать по образу и подобию.
ОА - буква d - 0x64 - 01100100 - там где нули те разряды горят
на схеме есть соответсвие сегментов и бит в байте
ОК - все наоборот

Re: Термостат ∆T=0,1°C

Posted: 14 Feb 2013 21:08
by Ashatshem
Вроде понятно, только получается что отсчёт идёт в обратном порядке? То есть-первый ноль это бит 7, вторая единица-это бит 6, 3 единица-это бит 5?

Re: Термостат ∆T=0,1°C

Posted: 14 Feb 2013 21:30
by IYra
Ashatshem wrote:Вроде понятно, только получается что отсчёт идёт в обратном порядке? То есть-первый ноль это бит 7, вторая единица-это бит 6, 3 единица-это бит 5?
Нумерация битов в байте идет справа налево - это азы

Re: Термостат ∆T=0,1°C

Posted: 15 Feb 2013 08:03
by Ashatshem
IYra wrote:Нумерация битов в байте идет справа налево - это азы
Ну я же сказал что я чайник))) Это первый проект который переделываю для себя (уж больно исходник хорошо расписан), поэтому и вопросы такие)))

Добавлено спустя 13 минут 26 секунд:
IYra wrote:ОА - буква d - 0x64 - 01100100 - там где нули те разряды горят
А в исходнике символ "d" записан как "0x9B" Почему?

Добавлено спустя 9 часов 32 минуты 7 секунд:
Появился ещё вопрос) Как сделать что бы через секунду после показа 4 экрана начало показывать первый экран?

Code: Select all

  case 0:
              View = 4;
              Counter = 5;
              break;
              case 4:
              View = 1;
              Counter = 5;
              break;

Re: Термостат ∆T=0,1°C

Posted: 15 Feb 2013 15:16
by IYra
Ashatshem wrote: А в исходнике символ "d" записан как "0x9B" Почему?
Потому что это для ОК. Там все наоборот
0x9B -10011011
0x64 - 01100100
Ashatshem wrote: Появился ещё вопрос) Как сделать что бы через секунду после показа 4 экрана начало показывать первый экран?
Недостаточно информации в вопросе. И это к автору проекта.

Re: Термостат ∆T=0,1°C

Posted: 15 Feb 2013 22:40
by Ashatshem
Спасибо, вроде разобрался, скоро выложу фотки и переделанную прошивку, только погоняю термостат немного)

Re: Термостат ∆T=0,1°C

Posted: 20 Feb 2013 18:52
by Ashatshem
Вот и "допилил" я свой термостат) Как он работает: Показывает температуру от 0 до 99.9 градусов. После нажатия кнопки "плюс" или "минус"-переходим в режим установки температуры, где теми же кнопками устанавливаем нужную температуру. Если нажать кнопки "плюс" и "минус" одновременно-то переходим в режим установки дельты температуры. Если в этом режиме опять нажать две кнопки одновременно-то переходим в режим установки критических порогов, при превышении которых будет срабатывать зуммер. Выход с термостата идёт на 2 канала, то есть, если температура превысила установленную+дельт-то включится канал охлаждения, выключится он только после того, как температура станет равна или ниже установленной. Если температура ниже установленной+дельта-то включится обогреватель, выключится он когда температура станет равна или выше установленной. Всё собрано в корпусе от двух батареек АА и старом корпусе от блока питания. В архиве исходник, файл протеуса, прошивка. ДАННАЯ ПРОШИВКА НЕ БУДЕТ РАБОТАТЬ НА ПЕЧАТКЕ ИЗ ШАПКИ!!!! Фотки процесса сборки:

ImageImageImageImageImageImageImage

Re: Термостат ∆T=0,1°C

Posted: 21 Feb 2013 19:40
by Coviraylhik
Achtung! ..... Achtung!!!!!
Кто интересуется много канальным термостатом, можете посмотреть вариант термостата 4 канала http://hardlock.org.ua/viewtopic.php?f=9&t=301
Варианты применения также обширны, нагреватели, холодильник, отопление, теплицы.....

Re: Термостат ∆T=0,1°C

Posted: 26 Feb 2013 06:10
by hardlock
Ashatshem, можно Вас попросить приложить исходник печатки и схему (хотя бы картинку, а то не у всех стоит протеус).

Re: Термостат ∆T=0,1°C

Posted: 27 Feb 2013 19:55
by Ashatshem
В архиве есть плата в лайоте, на ней все элементы расписаны, можно прям по рисунку платы и собирать.

Добавлено спустя 11 минут 47 секунд:
Вот схема с протеуса, но она немного другая,на ней нет транзистора для зуммера, а вместо него стоит светодиод, подключение индикаторных светодиодов тоже немного другое.

Re: Термостат ∆T=0,1°C

Posted: 10 Mar 2013 12:57
by kret_a_v
доброго дня
прошу помощи
собрал по своей печатке
по просьбе отца ,термостат для инкубатора
установка кнопками +/- работает , гистерезис после одновременного нажатия +/- тоже устанавливается
датчик по 3х проводной схеме подключил
на индикаторе - точка в 1м разряде , 2й погашен, 3й показывае 0 и точку, 4й только 0
датчики менял - ни гугу, ставил их в часы - работают
без датчика -
на индикаторе - точка в 1м разряде , 2й погашен, 3й показывае 0 и точку, 4й только 0
установка кнопками +/- работает , гистерезис после одновременного нажатия +/- тоже устанавливается
прошивка - Для нагревателя-точка горит, когда T меньше Tуст-termostat_led_oa_heat ( с 1й страницы)
питание на датчике 4,98в
в чем накосячил не разберу... понять не могу.... как проверить работу датчика
Image
Image
помогите плиз, люди добрые советом