Вопрос про термостат для котла.
Вопрос про термостат для котла.
Здравствуйте дамы и господа, понадобился мне термостат для нового котла BAXI в квартире, уж больно много жрет газа, сказано сделано, но вот беда так как я не силен в программировании, ну уж очень хотелось написать программу самому так сказать для общего развития. Взял завалявшийся МК atmega 8515 и датчик DS18B20 плюс LCD 16x4 наваял программу часть из библиотеки, часть с интернета, часть своими силами и вот получилось вроде все работает но как то не так и чего то не хватает, а не хватает десятых или даже сотых от датчика, как сделать не знаю. Так решил выложить на форум может кто поправит исходник. Короче вот простой термостат который у меня работает уже месяц.
- Вложения
-
- termostat.GIF
- (87.04 КБ) 476 скачиваний
-
- atmega8515.rar
- (94.29 КБ) 185 скачиваний
- Реклама
Re: помогите с программой для термостата на atmega и ds18b20
Эта тема вам должна помочь.
Re: помогите с программой для термостата на atmega и ds18b20
Сотых вы тут не получите, у него точность ±0.5°
Хотя сам датчик может дать до сотых с шагом 0,0625, т.е. по 0,06 прыгать будет. Но смысла никакого нет. Поэтому округляют до десятых.
А вообще, научитесь пользоваться поиском
Хотя сам датчик может дать до сотых с шагом 0,0625, т.е. по 0,06 прыгать будет. Но смысла никакого нет. Поэтому округляют до десятых.
А вообще, научитесь пользоваться поиском
Вопрос про термостат
а по моему это не помощь, а отписка.
то что у датчика точность ±0.5° это еще до создания проекта читается., и то что сам датчик может дать до сотых с шагом 0,0625 это тоже везде написано
а смысл есть еще какой, вы же уважаемый проект мой даже и не посмотрели?
смысл такой что при срабатывании верхний - нижний порог допустим 21°-23° все нормально но когда разрыв в один градус 21°-22° то реле на включение котла постоянно щелкает. Вот в чем вопрос который я так и не успел задать в моей предыдущей теме (помогите с программой для термостата на atmega и ds18b20) которую закрыли так и не дав даже мяукнуть.
да и поиском я умею пользоваться.
то что у датчика точность ±0.5° это еще до создания проекта читается., и то что сам датчик может дать до сотых с шагом 0,0625 это тоже везде написано
а смысл есть еще какой, вы же уважаемый проект мой даже и не посмотрели?
смысл такой что при срабатывании верхний - нижний порог допустим 21°-23° все нормально но когда разрыв в один градус 21°-22° то реле на включение котла постоянно щелкает. Вот в чем вопрос который я так и не успел задать в моей предыдущей теме (помогите с программой для термостата на atmega и ds18b20) которую закрыли так и не дав даже мяукнуть.
да и поиском я умею пользоваться.
Re: все тот же вопрос про термостат
ну и так вообще просил посмотреть саму программу. может мне лучше и не стоит писать свое, а так всю жизнь и пользоваться чужим. Я же за советом, а то действительно как не сюда попал » Обучалка » Практика
- Реклама
Вопрос про термостат
Вы спрашивали про работу с датчиком, а тут примеров кода на всех языках немеряно.
Ладно. Давайте конструктивно.
Если надо точно поддерживать какой-то параметр инертной системы (температуру воды, как у вас), простое релейное (или пропорциональное) регулирование тут не поможет. Будьте готовы к "волнам" в 5-10°, если не больше. Надо городить ПИД-регулирование.
Как оно реализуется программно не знаю, не делал, но слова для поиска дал.
Ладно. Давайте конструктивно.
Так и будет. Десятые градуса в большей степени показывают шумы АЦП, сотые - чистые шумы, и прыгать будут постоянно. Можно их конечно сгладить усреднением (среднее арифметическое - считываете, допустим, 16 показаний, потом делите на 16), но это ничего особенного не даст.смысл такой что при срабатывании верхний - нижний порог допустим 21°-23° все нормально но когда разрыв в один градус 21°-22° то реле на включение котла постоянно щелкает.
Если надо точно поддерживать какой-то параметр инертной системы (температуру воды, как у вас), простое релейное (или пропорциональное) регулирование тут не поможет. Будьте готовы к "волнам" в 5-10°, если не больше. Надо городить ПИД-регулирование.
Как оно реализуется программно не знаю, не делал, но слова для поиска дал.
Re: Вопрос про термостат
ПИД регулятор это сильный наворот для моего девайса. Тут еще такая мысль была поставить задержку выключения на выход который идет на реле при достижении верхнего порога, чтобы избавится от постоянного перещелкивания реле. вот только где ее в программе поставить так чтобы считывание температуры с датчика не тормозить. Заранее спасибо.
Re: Вопрос про термостат
Я посмотрел ваш архив, но похоже это не то, что было на скриншоте. Точнее там был виден русский текст, а нигде в программе он не выводится.
Это тот архив?
И перезалейте его сюда, чтоб ту тему не дёргать.
Я в Си не силён, но думаю, общими усилиями что-нибудь родим.
Это тот архив?
И перезалейте его сюда, чтоб ту тему не дёргать.
Я в Си не силён, но думаю, общими усилиями что-нибудь родим.
Re: Вопрос про термостат
вот пожалуйста, просто в протеусе я использую библиотеку русский для LCD, а в контроллер заливал с использованием директивы pragma rl+. Я программу сейчас подредактировал надписи все английскими буквами не красиво, но теперь должно в любом протеусе отображать
могу добавить файлик из библиотеки для протеуса версии 7.7 русский на LCD после замены стандартного будет как на скришоте
могу добавить файлик из библиотеки для протеуса версии 7.7 русский на LCD после замены стандартного будет как на скришоте
- Вложения
-
- atmega8515 termostat.rar
- (194.19 КБ) 159 скачиваний
Re: Вопрос про термостат
Вам не нужно копипастить код с других ресурсов.
Вот мой старый но простой код для CV:
Умножение температуры было на 100, почему так не понимаю
. Но все работало отлично
Тоесть теперь вам нужно сравнивать температуру вместо 21-22°C с 210-220 (а то и ваще с 2100-2200).
Плюс к всему можно добавить т.н. "мертвую зону" (en "deadband") в 1°C и тогда щелканье точно пропадет
Вот мой старый но простой код для CV:
Код: Выделить всё
#include <mega8.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __w1_port=0x12 ;PORTD
.equ __w1_bit=0
#endasm
#include <1wire.h>
// DS1820 Temperature Sensor functions
#include <ds1820.h>
#include "n3310lcd.c"
// Declare your global variables here
void main(void)
{
int temp;
char i;
//some code (инициализация контроллера).........
LcdInit();
w1_init();
while (1)
{
temp=ds1820_temperature_10(0);
LcdClear();
sprintf (lcd_buf, "%d.%02d C",temp/100,temp%100);
LcdStringBig(1,2);
LcdUpdate();
delay_ms(300);
}
}Тоесть теперь вам нужно сравнивать температуру вместо 21-22°C с 210-220 (а то и ваще с 2100-2200).
Плюс к всему можно добавить т.н. "мертвую зону" (en "deadband") в 1°C и тогда щелканье точно пропадет
Re: Вопрос про термостат
phenomen отличный код, большое спасибо, а на счет мертвой зоны не совсем понятно можно по конкретней на картошках так сказать
Re: Вопрос про термостат
Код: Выделить всё
#define DEADBAND 1
//.........
if(Value+DEADBAND<LowLimit)
doSomething()
else
if(Value-DEADBAND>HighLimit)
doSomethingElse()
//.........
../-----+++++-----\............
Где "." - нужно срочно чтото делать
"/,\" - действуем
"-" - а давай-ка подожду, узнаю как дальше будет себя вести
"+" - собственно все ок, можно и поспать
Можно использовать и float.
Re: Вопрос про термостат
кстати, автору скопипасченого кода нужно почитать про С, очень уж интересное место:
а именно temp%1, не говоря уже о другом
Код: Выделить всё
sprintf(lcd_buffer,"t=%i.%u\xdfC",temp,temp%1);Re: Вопрос про термостат
спасибо за подсказку намотал на ус. При помощи проб и ошибок. а код копировал от друзей сайта my-avr.at.ua так по моему хотя, может и со стандартной библиотеки так написано осталось надо глянуть
Re: Вопрос про термостат
да точно это из стандартных exemple CV там код так сделан был
Re: Вопрос про термостат
все отлично получилось, спасибо большое phenomen.
- Вложения
-
- ter.GIF
- (93.78 КБ) 455 скачиваний


