Обявления

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

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

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

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

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

Сообщение KBH » 26 май 2012 09:30

Уважаемый hardlock, может быть Вас не затруднит добавить в программу проверку наличия датчика?
Насколько я понимаю, нужно после команды чтения (или инициализзации) проверить есть ли ответ.
Если да- идём дальше, если нет - на индикатор прочерки или какие-то нереальные цифры (но не ноль) и один из выходов 1. Я в программировании ноль, изучать языки на седьмом десятке трудновато (запоминалка не та), поэтому даже не представляю как это не писать на Си.
В ветку про переделки уже обращался с такой просьбой, но туда, похже, уже ни кто не заглядывает.
KBH
Пробегал мимо
 
Сообщения: 7
Зарегистрирован: 18 янв 2012 14:55
Откуда: Новосибирск

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

Сообщение Mkonst » 26 май 2012 18:10

hardlock писал(а):
Mkonst писал(а):Куплю тот что вы посоветовали

берите самый простой, красный. Никаких суперярких и т.д.

Купил красенький светодиод, все заработало на отлично!!! Спасибо!
Mkonst
Пробегал мимо
 
Сообщения: 5
Зарегистрирован: 12 май 2012 22:04

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

Сообщение stolbtlt » 27 май 2012 22:57

Здравствуйте!
Хочу выразить признательность автору проекта и поделиться своей реализацией.
За пару лет мною собраны 4 термостата с фукцией нагрева для электрических конвекторов (1,5 кВт), теплого пола (800 Вт), бака на 100 л воды (2 кВт). В своей конструкции использовал индикатор с ОА, супервизор, импульсный БП от зарядника на 5 В, реле, или реле+пускатель, трехпроводное подключение ds18b20 и прошивку с 1 стр. данной темы. В процессе эксплуатации столкнулся с отсутствием програмного контроля наличия датчика и как следствие постоянного включения нагрузки (предложение на 33 стр. не катит). В связи с этим пришлось отказаться от авторской (не силен в Си) и использовать универсальную прошивку для инкубатора (download/file.php?id=1004), предварительно ее подшаманив, сделав установки под себя.
Если возникнут вопросы по моей конструкции, то с удовольствием отвечу.
Всем творческих успехов!

Добавлено спустя 10 часов 33 минуты 14 секунд:
От рассыпухи к готовым изделиям
Вложения
Последний раз редактировалось stolbtlt 29 май 2012 11:57, всего редактировалось 5 раз(а).
stolbtlt
Пробегал мимо
 
Сообщения: 8
Зарегистрирован: 27 май 2012 21:13
Откуда: Тольятти

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

Сообщение IYra » 28 май 2012 20:04

KBH,
Для проверки датчика можно попробовать прочитать третий байт

t1 = w1_read() ;//LSB
t2 = w1_read() ;//MSB
t3 = w1_read() ;// регистр
if (t3 > 250) Tnew = 10999 ;


На экране будут гореть 999.9 и нагреватель отключится.
Проверял на инкубаторе с несколькими датчиками.
Отключал по разному датчики а затем снова подключал на работающем
приборе.
Проверка работала
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

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

Сообщение stolbtlt » 28 май 2012 22:20

IYra, типа так надо сделать?

interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
BYTE t1;
BYTE t2;
BYTE t3;
BYTE i;
WORD Temp;
WORD T;
BYTE Ff;
// Reinitialize Timer 1 value
TCNT1H=0x8F;
TCNT1L=0xD1;
w1_init(); //инициализация шины 1-wire
for (i=0; i<11; i++) //шоб не моргало изображение делаем обновление эрана 10 раз
{
ShowDisplayData();
}
w1_write(0xCC); //выдаём в шину 1-wire код 0xCC, что значит "Skip ROM"
for (i=0; i<11; i++) //шоб не моргало изображение делаем обновление эрана 10 раз
{
ShowDisplayData();
}
Updating = !Updating; //это шоб читать температуру через раз
if (Updating) //если в этот раз читаем температуру, то
{
w1_write(0xBE); //выдаём в шину 1-wire код 0xCC, что значит "Read Scratchpad"
for (i=0; i<11; i++) //шоб не моргало изображение делаем обновление эрана 10 раз
{
ShowDisplayData();
}
t1=w1_read(); //LSB читаем младший байт данных
for (i=0; i<11; i++) //шоб не моргало изображение делаем обновление эрана 10 раз
{
ShowDisplayData();
}
t2=w1_read(); //MSB читаем старший байт данных
t3=w1_read(); //регистр читаем третий байт данных
if (t3 > 250) Tnew=10999;


... и далее авторский код
Последний раз редактировалось stolbtlt 29 май 2012 11:55, всего редактировалось 1 раз.
stolbtlt
Пробегал мимо
 
Сообщения: 8
Зарегистрирован: 27 май 2012 21:13
Откуда: Тольятти

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

Сообщение KBH » 29 май 2012 10:55

Спапасибо, конечно, но тов. Протеус пишет нули при разрыве датчика как этой дообавкой, как и без неё.
KBH
Пробегал мимо
 
Сообщения: 7
Зарегистрирован: 18 янв 2012 14:55
Откуда: Новосибирск

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

Сообщение stolbtlt » 29 май 2012 11:09

А товарищ IYra пишет
IYra писал(а):На экране будут гореть 999.9 и нагреватель отключится.
Проверял на инкубаторе с несколькими датчиками.
Отключал по разному датчики а затем снова подключал на работающем приборе.
Проверка работала

Кто не точен ?!
stolbtlt
Пробегал мимо
 
Сообщения: 8
Зарегистрирован: 27 май 2012 21:13
Откуда: Тольятти

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

Сообщение KBH » 29 май 2012 11:26

В железе завтра попробую.
KBH
Пробегал мимо
 
Сообщения: 7
Зарегистрирован: 18 янв 2012 14:55
Откуда: Новосибирск

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

Сообщение stolbtlt » 29 май 2012 11:40

При добавлении в аторскую прошивку изменений от IYra и нажатии Shift+F9 CodeVisionAVR пишет
The estimated Data Stack usage of 41 bytes
exceeds the amount allocated for this purpose in the C Compiler configuration.
It is recommended to increase the Data Stack size in the
Project/Configure/C Compiler/Code Generation menu.

Вопрос - А можно ли это значение увеличивать?
stolbtlt
Пробегал мимо
 
Сообщения: 8
Зарегистрирован: 27 май 2012 21:13
Откуда: Тольятти

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

Сообщение KBH » 29 май 2012 12:25

stolbtlt писал(а):Кто не точен ?!

Тинька проголосовала за правоту Протеуса.
Блин, зря дело бросил.
KBH
Пробегал мимо
 
Сообщения: 7
Зарегистрирован: 18 янв 2012 14:55
Откуда: Новосибирск

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

Сообщение stolbtlt » 29 май 2012 12:57

Изменил Date Stack c 40 на 41
При прошивке Епрома CodeVisionAVR выдал окно с сообщением об ошибке адресов, тоесть тупо места нет.
Интересно как IYra это обошел ?!
stolbtlt
Пробегал мимо
 
Сообщения: 8
Зарегистрирован: 27 май 2012 21:13
Откуда: Тольятти

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

Сообщение KBH » 29 май 2012 14:10

Он там разные датчики отключает. Надо понимать у него "для инкубатора с тремя датчиками",т.е. уже
другая программа.
KBH
Пробегал мимо
 
Сообщения: 7
Зарегистрирован: 18 янв 2012 14:55
Откуда: Новосибирск

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

Сообщение stolbtlt » 29 май 2012 16:52

Я конечно не силен в Си, но дорогу осилит идущий.
Уважаемый КВН протестируйте пож-та с тов. Протеусом измененный код.
В железе проверил - действительно индицируется 999.9 и нагрузка не включается, когда на живую отключил датчик. Если потом подцепить датчик, то все нормуль :-)
Вложения
firmware v3.2.rar
(73.2 КБ) Скачиваний: 178
Последний раз редактировалось stolbtlt 30 май 2012 15:16, всего редактировалось 1 раз.
stolbtlt
Пробегал мимо
 
Сообщения: 8
Зарегистрирован: 27 май 2012 21:13
Откуда: Тольятти

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

Сообщение IYra » 29 май 2012 18:45

Там еще надо вставить проверку
что-то типа

if (t3 > 250)
{
Tnew = 10999 ;
}
else if (T & 0b10000000) //если отрицательная температура

и дальше авторский код.

На прошивке Hardlock'a у меня сейчас нет возможности проверить.
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

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

Сообщение KBH » 30 май 2012 04:21

IYra, вставлял так:
if (t3 > 250)
{
Tnew = 10999 ;
}
else if (T & 0b10000000) //если отрицательная температура-
безрезультано.
А так:
Tnew = 1000 + (T * 10) + ((Ff * 10) / 16);
}
}
else
{
w1_write(0x44);
}
if (t3 > 250)
{
Tnew = 10999 ;
}
-всё заработало.
Т.е. зависит от того, куда вставить. У меня "Термостат для Covirayhik" на 4 выхода.
Был хороший, а теперь вообще конфетка.
Огромное всем спасибо.
Виноват. Я else перед if (T & 0b10000000) забыл.
И так и так работает
KBH
Пробегал мимо
 
Сообщения: 7
Зарегистрирован: 18 янв 2012 14:55
Откуда: Новосибирск

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

Сообщение deltov » 08 июн 2012 11:55

Довелось намедни померить температуру в пароварке кипящей. Получил значение 99,3 град. По паспорту датчик вроде имеет точность +/- 0,5 град. Вот и озадачился, а почему не около сотни. Вода московская из под крана. Мож какой неизвестный мне физический процесс влияет?
deltov
Пробегал мимо
 
Сообщения: 13
Зарегистрирован: 29 окт 2010 17:49
Откуда: Москва

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

Сообщение sevsur » 08 июн 2012 13:15

deltov писал(а):Довелось намедни померить температуру в пароварке кипящей. Получил значение 99,3 град. По паспорту датчик вроде имеет точность +/- 0,5 град. Вот и озадачился, а почему не около сотни. Вода московская из под крана. Мож какой неизвестный мне физический процесс влияет?


Так а давление атмосферное какое было? 100 градусов если давление 760 мм ртутного столба, а если давление другое и температура другая будет. вот эту ссылочку посмотри http://www.chemport.ru/data/data4.shtml. А прибор я думаю правильно замерил. :-)
sevsur
Пробегал мимо
 
Сообщения: 1
Зарегистрирован: 27 фев 2011 00:29
Откуда: Сургут

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

Сообщение deltov » 12 июн 2012 22:21

sevsur, вот спасибо за науку. Подзабывать стал я школьную программу чёй-то. :-)
deltov
Пробегал мимо
 
Сообщения: 13
Зарегистрирован: 29 окт 2010 17:49
Откуда: Москва

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

Сообщение ssql » 20 июн 2012 20:11

Собрал термостат. Работает отлично)))Огромное спасибо автору!!!Но вот появилась необходимость сделать на больших индикаторах... ну и понятное дело что стало оч тускло...Как можно сделать чтоб по 2 транзюка не ставить (схема ОА) а то места в корпусе не хватит( Или может подскажите как в исходнике поменять, а то я только начинаю контроллеры ковырять))) Заранее благодарю)
ssql
Пробегал мимо
 
Сообщения: 6
Зарегистрирован: 20 июн 2012 19:56

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

Сообщение hardlock » 20 июн 2012 20:42

ssql, какой ток нужен на сегмент? если меньше 20мА, то можно обойтись транзисторами на общие аноды. в программе чуть подправим.

Добавлено спустя 8 минут 23 секунды:
в начале файла, рядом с дэфайнами Анода и Катода добавляем (оставляем один вариант, остальные коментируем)
Код: Выделить всё
#define AnodePNP        //для индикатора с ОА и pnp транзисторами
#define CathodeNPN    //для индикатора с ОК и npn транзисторами

в функцию ShowDisplayData добавляем следующее:
Код: Выделить всё
#ifdef CathodeNPN
  PORTB = byCharacter[byDisplay[0]];
  PORTD.5 = 1;
  delay_us(LED_delay);
  PORTD.5 = 0;   
     
  PORTB = byCharacter[byDisplay[1]];
  PORTD.1 = 1;
  delay_us(LED_delay);
  PORTD.1 = 0;
     
  PORTB = byCharacter[byDisplay[2]];
  PORTD.0 = 1;
  delay_us(LED_delay);
  PORTD.0 = 0;
     
  PORTB = byCharacter[byDisplay[3]];
  PORTD.4 = 1;
  delay_us(LED_delay);
  PORTD.4 = 0;
#endif

#ifdef AnodePNP
  PORTB = ~byCharacter[byDisplay[0]];
  PORTD.5 = 0;
  delay_us(LED_delay);
  PORTD.5 = 1;   
     
  PORTB = ~byCharacter[byDisplay[1]];
  PORTD.1 = 0;
  delay_us(LED_delay);
  PORTD.1 = 1;
     
  PORTB = ~byCharacter[byDisplay[2]];
  PORTD.0 = 0;
  delay_us(LED_delay);
  PORTD.0 = 1;
     
  PORTB = ~byCharacter[byDisplay[3]];
  PORTD.4 = 0;
  delay_us(LED_delay);
  PORTD.4 = 1;
#endif

И компилируем. Всё.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3371
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

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

Сообщение ssql » 20 июн 2012 21:32

Да, до 20 мА самое то!!Спасибо))Завтра доберусь до паяльника сделаю)
ssql
Пробегал мимо
 
Сообщения: 6
Зарегистрирован: 20 июн 2012 19:56

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

Сообщение ssql » 22 июн 2012 10:23

Уважаемый hardlock, если не затруднит посмотрите я правильно сделал??
Код: Выделить всё
#ifdef AnodePNP
  PORTB = ~byCharacter[byDisplay[0]]; 
  if (Minus)
  {
    PORTB = PINB & 0b11111110;
  }                           
  #ifdef heat
  if (LoadOn)
  #endif
 
  #ifdef cold
  if (!LoadOn)
  #endif
  {
    PORTB = PINB & 0b11111011;
  }           
  if (View == 1)
  {
    PORTB = PINB & 0b11110111;
  }
 
  PORTB = ~byCharacter[byDisplay[0]];
  PORTD.5 = 0;
  delay_us(LED_delay);
  PORTD.5 = 1;   
     
  PORTB = ~byCharacter[byDisplay[1]];
  PORTD.1 = 0;
  delay_us(LED_delay);
  PORTD.1 = 1;
     
  PORTB = ~byCharacter[byDisplay[2]];
  PORTD.0 = 0;
  delay_us(LED_delay);
  PORTD.0 = 1;
     
  PORTB = ~byCharacter[byDisplay[3]];
  PORTD.4 = 0;
  delay_us(LED_delay);
  PORTD.4 = 1;
#endif
 
  /*PORTD.5 = 1;
  delay_us(LED_delay);
  PORTD.5 = 0;   
     
  PORTB = ~byCharacter[byDisplay[1]];
  PORTD.1 = 1;
  delay_us(LED_delay);
  PORTD.1 = 0;
     
  PORTB = ~byCharacter[byDisplay[2]] & 0b11111011;
  PORTD.0 = 1;
  delay_us(LED_delay);
  PORTD.0 = 0;
     
  PORTB = ~byCharacter[byDisplay[3]];
  PORTD.4 = 1;
  delay_us(LED_delay);
  PORTD.4 = 0;
#endif*/

 
  }

а то индикация в протеусе не работает. Запутался немножко...
ssql
Пробегал мимо
 
Сообщения: 6
Зарегистрирован: 20 июн 2012 19:56

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

Сообщение hardlock » 22 июн 2012 12:48

ssql, вроде всё правильно, только точку забыли после третьего знака и коментарий в конце лишний :-)

А в протеусе может и не работать - уж больно глючная штука, большинство конструкций в нём не работают. Пробуйте в железе.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3371
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

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

Сообщение ssql » 23 июн 2012 00:53

Даа.. протеус глюкнутый... в железе все отлично. Единственное как советовали поставил светодиод и резюк на 3к3.. у меня тинька постоянно в ребуте.увеличение номинала несколько улучшает ситуацию. вопрос, почему так?
ssql
Пробегал мимо
 
Сообщения: 6
Зарегистрирован: 20 июн 2012 19:56

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

Сообщение stolbtlt » 23 июн 2012 11:17

ssql что значит - постоянно в ребуте ?
Схема рабочая, проверяйте свою конструкцию на предмет `соплей` и стабильности питания.
По поводу Протеуса, то не так все однозначно - использую ver 7.7, но на разных компах эта прога ведет себя не одинаково - на быстрых (проц + озу) нареканий нет.
Успехов!
По просьбам трудящихся фото используемых в кострукции `запчастей` :-)
Вложения
Последний раз редактировалось stolbtlt 29 июн 2012 07:50, всего редактировалось 4 раз(а).
stolbtlt
Пробегал мимо
 
Сообщения: 8
Зарегистрирован: 27 май 2012 21:13
Откуда: Тольятти

Пред.След.

Вернуться в ATtiny



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

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