Обявления

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

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

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

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

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

Сообщение Yanshun » 30 авг 2015 21:05

Добрый вечер.
Сегодня решил прошить микроконтроллер прогромматором USBasp в программе AVRDUDE_PROG 3.3, прошилось все за 1сек. верификацию прошло на УРА, так-же с фьюзами все замечательно. Но мне ОЧЕНЬ хочется считать назад прошивку и сравнить ее с оригиналом, есть ли такая возможность в AVRDUDE_PROG 3.3, как я не пробывал у меня ничего не получается, считать прошивку и сохранить ее себе на ПК, буду очень признателен за помощь.
Благодарю.
Вложения
Аватара пользователя
Yanshun
Частенько бываю
 
Сообщения: 52
Зарегистрирован: 01 фев 2015 13:45

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

Сообщение Nikolas » 31 авг 2015 10:59

За 1 сек. он не может прошить так скорость записи флеш в мк. низкая.
Nikolas
Частенько бываю
 
Сообщения: 34
Зарегистрирован: 29 июн 2011 14:58
Откуда: Калуш

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

Сообщение hardlock » 31 авг 2015 12:19

Yanshun, если вы не знаете команды ДУДки, то может посомтреть в сторону графических оборлочек для неё? Типа Burn-O-Mat или SinaProg.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3374
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

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

Сообщение Yanshun » 31 авг 2015 17:14

Добрый день.
Большое спасибо всем за помощь, оказалось AVRDUDE_PROG 3.3 записала в микроконтроллер всего 13 байт, не могу понять почему, отсюда высокая скорость записи. Только как-же она прошла верификацию, не понятно.
Попробую с помощью SinaProg поколдовать, может что у меня получится зашить полностью прошивку в микроконтроллер.
USBasp наверно мне попался не много с сюрпризом.
В случае удачи отпишусь и сделаю фотоотчет.
Аватара пользователя
Yanshun
Частенько бываю
 
Сообщения: 52
Зарегистрирован: 01 фев 2015 13:45

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

Сообщение felyx » 22 сен 2015 11:34

Добрый день. Не хочу флудить,но вопрос у меня остался открытым: Можно ли доработать этот термостат для управления ДВУМЯ каналами нагрузки, с одного датчика температуры,для нагрева и охлаждения. То есть надо держать постоянную заданную температуру с помощью подогрева и охлаждения. Если уже есть такое устройство,просьба написать где оно.Спасибо.
felyx
Пробегал мимо
 
Сообщения: 11
Зарегистрирован: 15 сен 2015 22:17

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

Сообщение propell_ant » 22 сен 2015 15:07

felyx писал(а):Если уже есть такое устройство,просьба написать где оно.Спасибо.

на вскидку - промах...
и еще несколько выдает поиск:
http://hardlock.org.ua/search.php?keywords=нагрева охлаждения&t=10&sf=msgonly
вот какое-то похожее решение
http://hardlock.org.ua/viewtopic.php?f=9&t=10&p=2552#p2553
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

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

Сообщение IYra » 22 сен 2015 18:12

propell_ant писал(а):
felyx писал(а):Если уже есть такое устройство,просьба написать где оно.Спасибо.

на вскидку - http://hardlock.org.ua/viewtopic.php?f=9&t=10&p=9822#p9823

Это совсем не то что ему нужно. Ему нужны две температуры регулирования - первая (например +15) нагрев дельта 1 градус, вторая (например +25) охлаждение дельта 1
Это проще сделать самому. Только сделать одну температуру регулирования жестко прошитой в программе.
felyx сам сможешь с помощью или нужны готовые хексики ?
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

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

Сообщение felyx » 23 сен 2015 19:50

IYra, спасибо за отзывчивость,если можешь помочь,буду признателен. Я так понимаю что мне нужно переделать немного схему и повесить второое реле.А температурный диапазон мне нужен: верхний порог 14*С, а нижний 12*С. С чего начнем или создадим еще одну ветку форума?
felyx
Пробегал мимо
 
Сообщения: 11
Зарегистрирован: 15 сен 2015 22:17

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

Сообщение IYra » 24 сен 2015 18:45

felyx писал(а):Я так понимаю что мне нужно переделать немного схему и повесить второое реле.

Да надо добавить еще один транзистор и реле как на схеме
Один транс подключен к PD2 (6 ножка) - это управление нагревом ( 1 = T < Tуст)
Другой тр подключен к PD3 (7 ножка) - это управление охлаждением ( 1 = T > Tуст)
felyx писал(а):А температурный диапазон мне нужен: верхний порог 14*С, а нижний 12*С.

Это непонятно. Что - при 14 включается охлаждение, а при 12 нагрев ?
Если настройка границ не требуется то можно пороги зашить жестко для надежности.
Иногда слетают настройки при плохом питании.
И еще вопрос. Какой у тебя CodeVision и сможешь ли ты сам исправить код и пересобрать проект ?
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

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

Сообщение felyx » 24 сен 2015 19:13

IYra, Сode vision есть,немного умею им пользоваться,открывал исходник этого термостата,а вот что именно там надо исправить или добавить и где - не знаю. Если ты в этом понимаешь то надо добавить срабатывание реле на нагрев при нижнем пороге 10*С - этот порог можно зашить стабильно в мк, а верхний порог оставить регулируемым(для охлаждения).Спасибо.
felyx
Пробегал мимо
 
Сообщения: 11
Зарегистрирован: 15 сен 2015 22:17

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

Сообщение IYra » 24 сен 2015 20:11

felyx писал(а): надо добавить срабатывание реле на нагрев при нижнем пороге 10*С - этот порог можно зашить стабильно в мк, а верхний порог оставить регулируемым(для охлаждения).Спасибо.

Тогда надо в функции interrupt [TIM1_OVF] void timer1_ovf_isr(void) заменить
Код: Выделить всё
Temp = T_LoadOn + DeltaT;      //Temp - временная переменная.

if ((Tnew >= Temp) & (LoadOn)) //Если температура выше (установленной + Дэльта) и нагрузка включена,
{                              //то выключаем нагрузку
  PORTD.3 = 1;
  PORTD.2 = 0;             
  LoadOn = 0;
}             

Temp = T_LoadOn;                //Temp - временная переменная.

if ((Tnew <= Temp) & (!LoadOn)) //Если температура ниже (установленной) и нагрузка выключена,
{                               //то включаем нагрузку
  PORTD.3 = 0;
  PORTD.2 = 1;
  LoadOn = 1; 
}

на
Код: Выделить всё
Temp = 1100 + DeltaT;      //  10 градусов.

if (Tnew >= Temp) //Если температура выше (10 + Дэльта)
{                              //  выключаем Нагрев
  PORTD.2 = 0;             
}             
else if (Tnew < 1100)
{                              //  включаем Нагрев
  PORTD.2 = 1;             
}   

Temp = T_LoadOn + DeltaT;                //   Уставка     Охлаждение

if (Tnew >= Temp) //Если температура выше Уставка+дельта включаем Охлаждение
{                               //то включаем нагрузку
  PORTD.3 = 1;
}
else if (Tnew < T_LoadOn)
{                              //то выключаем Охлаждение
  PORTD.3 = 0;             
}   

дельта общая
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

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

Сообщение felyx » 24 сен 2015 22:25

IYra, спасибо,завтра попробую и отпишусь :good:
felyx
Пробегал мимо
 
Сообщения: 11
Зарегистрирован: 15 сен 2015 22:17

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

Сообщение propell_ant » 25 сен 2015 11:27

IYra, а что ж не вот так, вместо
Код: Выделить всё
Temp = 1100 + DeltaT;

написать
Код: Выделить всё
Temp = T_LoadOn - DeltaT;

то есть гистерезис как бы расширяется вниз, ниже уставки. Алгоритм переключения станет таким:
падение температуры:
от T_LoadOn - DeltaT - включается нагрев
рост температуры:
после достижения T_LoadOn - прекращение нагрева
при достиженииT_LoadOn - DeltaT - охлаждение
падение температуры:
после достижения T_LoadOn - прекращение охлаждения.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

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

Сообщение IYra » 25 сен 2015 18:39

propell_ant писал(а): Алгоритм переключения станет таким:
падение температуры:
от T_LoadOn - DeltaT - включается нагрев
рост температуры:
после достижения T_LoadOn - прекращение нагрева
при достижении T_LoadOn - DeltaT - охлаждение (наверное имелось ввиду T_LoadOn + DeltaT)
падение температуры:
после достижения T_LoadOn - прекращение охлаждения.

Если я правильно понял идея в том чтобы с помощью одной уставки и большой дельты
регулировать и нагрев и охлаждение.
То есть к примеру T_LoadOn = 20.0 DeltaT = 10.0
Тогда при 10 гр включается нагрев и греет до 20
а при 30 включается охлаждение и отключается при 20
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

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

Сообщение felyx » 26 сен 2015 12:41

Ув. форумчане, При копиляции исходника с первой страницы(без всяких изменений в исходнике),с помощью Codevisionavr 2.05.3, выдает пять предупреждений,и в работе с термостатом не регулируется дельта!!! Куда копать или что делать?
Ув.IYra, , идея такова,что мы устанавливаем в исходнике 10*С + дельта, а на охлаждение оставляем регулируемым-дельта. Пробывал испытать подправленый тобой код из поста выше, но не смог определить правильность работы из-за ошибок связаных с регулировкой дельты.
felyx
Пробегал мимо
 
Сообщения: 11
Зарегистрирован: 15 сен 2015 22:17

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

Сообщение propell_ant » 26 сен 2015 13:17

felyx,
для компиляции под CVAVR 2 добавь в файл kbd.c после строк #include "tiny2313.h" такие строчки:
Код: Выделить всё
#if __CODEVISIONAVR__ > 2000
//проверка версии только для полной гарантии того, что
//оригинальная версия исходника не затрагивается
extern BYTE View;
extern BYTE Counter;
extern int T_LoadOn;
extern int DeltaT;
extern void RefreshDisplay(void);
#endif

а вообще, в первом посте, в самом конце списка файлов доступных для скачивания есть архив с исходниками, нормально собирающимися под CVAVR 2:
firmware v3.2.cv2.rar
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

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

Сообщение felyx » 26 сен 2015 21:05

propell_ant писал(а):felyx,
для компиляции под CVAVR 2 добавь в файл kbd.c после строк #include "tiny2313.h" такие строчки:
Код: Выделить всё
#if __CODEVISIONAVR__ > 2000
//проверка версии только для полной гарантии того, что
//оригинальная версия исходника не затрагивается
extern BYTE View;
extern BYTE Counter;
extern int T_LoadOn;
extern int DeltaT;
extern void RefreshDisplay(void);
#endif

а вообще, в первом посте, в самом конце списка файлов доступных для скачивания есть архив с исходниками, нормально собирающимися под CVAVR 2:
firmware v3.2.cv2.rar

добавил,теперь выскочили два таких предупреждения:
Warning: firmware v3.2.cv2\firmware v3.2.cv2\termostat_led.c(382): overflow is possible in 8 bit multiplication, casting to 'int' may be required
Warning: firmware v3.2.cv2\firmware v3.2.cv2\termostat_led.c(387): overflow is possible in 8 bit multiplication, casting to 'int' may be required
в строке
Tnew = 1000 - (((~T & 0xFF) * 10) + (Ff * 10 / 16)); //вычисляем значение температуры если T < 0.
//Формат хранения - смотри строку 58 этого файла
...что еще не так? Спасибо
felyx
Пробегал мимо
 
Сообщения: 11
Зарегистрирован: 15 сен 2015 22:17

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

Сообщение IYra » 26 сен 2015 21:59

felyx писал(а):...что еще не так? Спасибо

Все нормально. Так и должно быть
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

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

Сообщение felyx » 28 сен 2015 10:03

Всем спасибо за помощь.Все скомпилилось и заработало в железе. Вопрос такой: если я не хочу привязывать дельту к нижнему порогу 10*С,то мне надо сделать так:
Temp = 1110; // 11 градусов.

if (Tnew >= Temp) //Если температура выше (11 градусов)
{ // выключаем Нагрев
PORTD.2 = 0;
}
else if (Tnew < 1100) //Если ниже 10 градусов
{ // включаем Нагрев
PORTD.2 = 1;
}

Temp = T_LoadOn + DeltaT; // Установка Охлаждение

if (Tnew >= Temp) //Если температура выше Установка+дельта включаем Охлаждение
{ //то включаем нагрузку
PORTD.3 = 1;
}
else if (Tnew < T_LoadOn)
{ //то выключаем Охлаждение
PORTD.3 = 0;
}

Я все правильно написал,тут вручную установил дельту в 1*С?
Спасибо!
felyx
Пробегал мимо
 
Сообщения: 11
Зарегистрирован: 15 сен 2015 22:17

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

Сообщение IYra » 28 сен 2015 10:58

felyx писал(а): Вопрос такой: если я не хочу привязывать дельту к нижнему порогу 10*С,то мне надо сделать так:
Код: Выделить всё
Temp = 1110;      //  11 градусов.

if (Tnew >= Temp) //Если температура выше (11 градусов)
{                              //  выключаем Нагрев
  PORTD.2 = 0;             
}             
else if (Tnew < 1100) //Если ниже 10 градусов
{                              //  включаем Нагрев
  PORTD.2 = 1;             
}   


Да все правильно
PS
Можно и верхнюю границу так же зашить в программу.
Увеличивается надежность (сбой EEPROM) и освобождаются два вывода (кнопки)
К ним можно еще что-нибудь прикрутить
IYra
Живу тут
 
Сообщения: 543
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

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

Сообщение Yanshun » 06 окт 2015 21:47

Добрый вечер.
Наконец сегодня пришли печатки, 10 шт. начну потихоньку пробовать собирать.
В случае удачи сделаю фотоотчет.
Вложения
Аватара пользователя
Yanshun
Частенько бываю
 
Сообщения: 52
Зарегистрирован: 01 фев 2015 13:45

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

Сообщение hardlock » 06 окт 2015 21:57

Yanshun, где заказывали?
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3374
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

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

Сообщение Yanshun » 06 окт 2015 22:06

Донецк, но есть такой-же и еще и с шелкографией в Харькове.
Аватара пользователя
Yanshun
Частенько бываю
 
Сообщения: 52
Зарегистрирован: 01 фев 2015 13:45

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

Сообщение robert » 08 окт 2015 21:48

уважаемый hardlock подскажите пожалуйста как можно заставить первую ножку или шестую заставить прерываться с переодичностью? это я для авто поворота лотка в инкубаторе.читал есть команда .посмотрите пожалуйста будет ли она работать если я ее вставлю в прошивку?заранее благодарен.
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
while(1)
{
PORTD=0b00000001;//включаем
_delay_ms(10000);//Задержка 10 сек.
PORTD=0b00000000;//выключаем
_delay_ms(10000);//Задержка 10 сек.
}
}
robert
Пробегал мимо
 
Сообщения: 3
Зарегистрирован: 08 окт 2015 21:02

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

Сообщение hardlock » 08 окт 2015 21:58

robert, не, не будет работать, т.к. в программе все реализовано через прерывания и таймеры. Надо подумать. А в теме про инкубатор похожего нету?
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3374
Зарегистрирован: 21 янв 2009 15:48
Откуда: zp.ua

Пред.След.

Вернуться в ATtiny



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

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