24 февраля 2022 года в 5 утра, без объявления войны, россия напала на Украину.

Они пришли "освобождать народ от нацистов и националистов".
С этого момента наша жизнь изменилась на "до" и "после".
Нас освобождают от наших домов, от наших любимых, от наших родителей и от наших детей....
Тут я не буду никого агитировать или переубеждать, разумный человек найдёт всю информацию
в интернете, а для зомби никакие доводы и факты не послужат аргументом.

Я не умею много писать, да и без мата тут сложно что-то написать.
Поэтому выражу все мои чувства одним фото.

«Спасибо дедушка путин за счастливое детство и мое освобождение». ©

Дополню словами уважаемого человека, широко известного в узких кругах:
тут путин не виноват, не он нажал на кнопку сброса,
- виноват пилот, который нажал на кнопку сброса, мог промахнуться. виноваты жена/мать/брат/друг пилота, которые не позвонили ему, и не сказали "нет войне",
- виноват тот, кто отдал приказ, и виноваты его жена/мать/брат/друг,
- виноват тот, кто цеплял бомбу, потому что он мог её обезвредить, "ну бывает, не сработала",
- виноват кладовщик, виноват водитель, который перевозил эту бомбу. виноваты жена...и т.д., потому что не позвонили и не сказали "нет войне, не вези бомбы",
- виноваты все журналисты оркостана, потому что они врут,
- виноваты недограждане, потому что не сказали журналистам "не врите",
- виноваты все... все 160 миллионов,
- а те 2, 3, 5 тысяч, которые вышли, и которых запаковали, это даже не десятая процента, это погрешность... случайно оказавшиеся в мордоре люди. ©

PS: За несколько часов до вторжения был атакован и взломан крупный интернет хостинг в Киеве, где и размещался мой сайт. Только 16 марта отважным админам удалось частично восстановить работу хостинга. Далеко не все сайты выжили, т.к. были повреждены даже бэкапы.
Нет, нет, я не жалуюсь, нет. В цифровом мире нет ничего ценного, материального...


Due to periodic DDoS attacks, the forum may not be available.

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

Здесь только проекты на ATtiny
Post Reply
KBH
Пробегал мимо
Posts: 7
Joined: 18 Jan 2012 13:55
Location: Новосибирск

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

Post by KBH »

Уважаемый hardlock, может быть Вас не затруднит добавить в программу проверку наличия датчика?
Насколько я понимаю, нужно после команды чтения (или инициализзации) проверить есть ли ответ.
Если да- идём дальше, если нет - на индикатор прочерки или какие-то нереальные цифры (но не ноль) и один из выходов 1. Я в программировании ноль, изучать языки на седьмом десятке трудновато (запоминалка не та), поэтому даже не представляю как это не писать на Си.
В ветку про переделки уже обращался с такой просьбой, но туда, похже, уже ни кто не заглядывает.
Mkonst
Пробегал мимо
Posts: 5
Joined: 12 May 2012 22:04

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

Post by Mkonst »

hardlock wrote:
Mkonst wrote:Куплю тот что вы посоветовали
берите самый простой, красный. Никаких суперярких и т.д.
Купил красенький светодиод, все заработало на отлично!!! Спасибо!
stolbtlt
Пробегал мимо
Posts: 8
Joined: 27 May 2012 21:13
Location: Тольятти

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

Post by stolbtlt »

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

Добавлено спустя 10 часов 33 минуты 14 секунд:
От рассыпухи к готовым изделиям
Attachments
Рассыпуха
Рассыпуха
Че то спаялось
Че то спаялось
Вот такой пирог
Вот такой пирог
Конвектор
Конвектор
Греем бак с водой
Греем бак с водой
Last edited by stolbtlt on 29 May 2012 11:57, edited 5 times in total.
IYra
Живу тут
Posts: 712
Joined: 01 Feb 2012 18:36
Location: Санкт-Петербург

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

Post by IYra »

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

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


На экране будут гореть 999.9 и нагреватель отключится.
Проверял на инкубаторе с несколькими датчиками.
Отключал по разному датчики а затем снова подключал на работающем
приборе.
Проверка работала
stolbtlt
Пробегал мимо
Posts: 8
Joined: 27 May 2012 21:13
Location: Тольятти

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

Post by stolbtlt »

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;


... и далее авторский код
Last edited by stolbtlt on 29 May 2012 11:55, edited 1 time in total.
KBH
Пробегал мимо
Posts: 7
Joined: 18 Jan 2012 13:55
Location: Новосибирск

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

Post by KBH »

Спапасибо, конечно, но тов. Протеус пишет нули при разрыве датчика как этой дообавкой, как и без неё.
stolbtlt
Пробегал мимо
Posts: 8
Joined: 27 May 2012 21:13
Location: Тольятти

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

Post by stolbtlt »

А товарищ IYra пишет
IYra wrote:На экране будут гореть 999.9 и нагреватель отключится.
Проверял на инкубаторе с несколькими датчиками.
Отключал по разному датчики а затем снова подключал на работающем приборе.
Проверка работала
Кто не точен ?!
KBH
Пробегал мимо
Posts: 7
Joined: 18 Jan 2012 13:55
Location: Новосибирск

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

Post by KBH »

В железе завтра попробую.
stolbtlt
Пробегал мимо
Posts: 8
Joined: 27 May 2012 21:13
Location: Тольятти

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

Post by stolbtlt »

При добавлении в аторскую прошивку изменений от 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.

Вопрос - А можно ли это значение увеличивать?
KBH
Пробегал мимо
Posts: 7
Joined: 18 Jan 2012 13:55
Location: Новосибирск

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

Post by KBH »

stolbtlt wrote:Кто не точен ?!
Тинька проголосовала за правоту Протеуса.
Блин, зря дело бросил.
stolbtlt
Пробегал мимо
Posts: 8
Joined: 27 May 2012 21:13
Location: Тольятти

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

Post by stolbtlt »

Изменил Date Stack c 40 на 41
При прошивке Епрома CodeVisionAVR выдал окно с сообщением об ошибке адресов, тоесть тупо места нет.
Интересно как IYra это обошел ?!
KBH
Пробегал мимо
Posts: 7
Joined: 18 Jan 2012 13:55
Location: Новосибирск

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

Post by KBH »

Он там разные датчики отключает. Надо понимать у него "для инкубатора с тремя датчиками",т.е. уже
другая программа.
stolbtlt
Пробегал мимо
Posts: 8
Joined: 27 May 2012 21:13
Location: Тольятти

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

Post by stolbtlt »

Я конечно не силен в Си, но дорогу осилит идущий.
Уважаемый КВН протестируйте пож-та с тов. Протеусом измененный код.
В железе проверил - действительно индицируется 999.9 и нагрузка не включается, когда на живую отключил датчик. Если потом подцепить датчик, то все нормуль :-)
Attachments
firmware v3.2.rar
(73.2 KiB) Downloaded 370 times
Last edited by stolbtlt on 30 May 2012 15:16, edited 1 time in total.
IYra
Живу тут
Posts: 712
Joined: 01 Feb 2012 18:36
Location: Санкт-Петербург

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

Post by IYra »

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

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

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

На прошивке Hardlock'a у меня сейчас нет возможности проверить.
KBH
Пробегал мимо
Posts: 7
Joined: 18 Jan 2012 13:55
Location: Новосибирск

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

Post by KBH »

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) забыл.
И так и так работает
deltov
Пробегал мимо
Posts: 13
Joined: 29 Oct 2010 17:49
Location: Москва

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

Post by deltov »

Довелось намедни померить температуру в пароварке кипящей. Получил значение 99,3 град. По паспорту датчик вроде имеет точность +/- 0,5 град. Вот и озадачился, а почему не около сотни. Вода московская из под крана. Мож какой неизвестный мне физический процесс влияет?
sevsur
Пробегал мимо
Posts: 1
Joined: 26 Feb 2011 23:29
Location: Сургут

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

Post by sevsur »

deltov wrote:Довелось намедни померить температуру в пароварке кипящей. Получил значение 99,3 град. По паспорту датчик вроде имеет точность +/- 0,5 град. Вот и озадачился, а почему не около сотни. Вода московская из под крана. Мож какой неизвестный мне физический процесс влияет?
Так а давление атмосферное какое было? 100 градусов если давление 760 мм ртутного столба, а если давление другое и температура другая будет. вот эту ссылочку посмотри http://www.chemport.ru/data/data4.shtml. А прибор я думаю правильно замерил. :-)
deltov
Пробегал мимо
Posts: 13
Joined: 29 Oct 2010 17:49
Location: Москва

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

Post by deltov »

sevsur, вот спасибо за науку. Подзабывать стал я школьную программу чёй-то. :-)
ssql
Пробегал мимо
Posts: 6
Joined: 20 Jun 2012 19:56

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

Post by ssql »

Собрал термостат. Работает отлично)))Огромное спасибо автору!!!Но вот появилась необходимость сделать на больших индикаторах... ну и понятное дело что стало оч тускло...Как можно сделать чтоб по 2 транзюка не ставить (схема ОА) а то места в корпусе не хватит( Или может подскажите как в исходнике поменять, а то я только начинаю контроллеры ковырять))) Заранее благодарю)
User avatar
hardlock
Администратор
Posts: 4014
Joined: 21 Jan 2009 14:48
Location: Minsk - zp.ua
Contact:

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

Post by hardlock »

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

Добавлено спустя 8 минут 23 секунды:
в начале файла, рядом с дэфайнами Анода и Катода добавляем (оставляем один вариант, остальные коментируем)

Code: Select all

#define AnodePNP        //для индикатора с ОА и pnp транзисторами
#define CathodeNPN    //для индикатора с ОК и npn транзисторами
в функцию ShowDisplayData добавляем следующее:

Code: Select all

#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
И компилируем. Всё.
ssql
Пробегал мимо
Posts: 6
Joined: 20 Jun 2012 19:56

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

Post by ssql »

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

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

Post by ssql »

Уважаемый hardlock, если не затруднит посмотрите я правильно сделал??

Code: Select all

#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*/
 
  
  }
а то индикация в протеусе не работает. Запутался немножко...
User avatar
hardlock
Администратор
Posts: 4014
Joined: 21 Jan 2009 14:48
Location: Minsk - zp.ua
Contact:

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

Post by hardlock »

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

А в протеусе может и не работать - уж больно глючная штука, большинство конструкций в нём не работают. Пробуйте в железе.
ssql
Пробегал мимо
Posts: 6
Joined: 20 Jun 2012 19:56

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

Post by ssql »

Даа.. протеус глюкнутый... в железе все отлично. Единственное как советовали поставил светодиод и резюк на 3к3.. у меня тинька постоянно в ребуте.увеличение номинала несколько улучшает ситуацию. вопрос, почему так?
stolbtlt
Пробегал мимо
Posts: 8
Joined: 27 May 2012 21:13
Location: Тольятти

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

Post by stolbtlt »

ssql что значит - постоянно в ребуте ?
Схема рабочая, проверяйте свою конструкцию на предмет `соплей` и стабильности питания.
По поводу Протеуса, то не так все однозначно - использую ver 7.7, но на разных компах эта прога ведет себя не одинаково - на быстрых (проц + озу) нареканий нет.
Успехов!
По просьбам трудящихся фото используемых в кострукции `запчастей` :-)
Attachments
Зарядник для БП
Зарядник для БП
DSC00051.jpg
Last edited by stolbtlt on 29 Jun 2012 07:50, edited 4 times in total.
Post Reply