Обявления

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

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

Термостат ∆T=0,1°C - работа над ошибками

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

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение IYra » 14 ноя 2016 08:41

SIV писал(а):Посмотрел, почитал про таймери и понял что сам не осилю.
Скажите сможет ли кто помочь чтобы точка показывающая нагрев мигала.

Модифицированную под себя прошивку для инкубатора от grey4ip предоставлю.

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

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение SIV » 14 ноя 2016 21:29

Вот проект термостата для инкубатора
Вложения
Inkubator.zip
Проект термостата для инкубатора
(100.87 КБ) Скачиваний: 16
SIV
Пробегал мимо
 
Сообщения: 7
Зарегистрирован: 22 авг 2011 14:42

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение IYra » 15 ноя 2016 16:54

SIV писал(а):Вот проект термостата для инкубатора

Подправил
Вложения
Inkubator_blink.rar
(34.72 КБ) Скачиваний: 18
IYra
Живу тут
 
Сообщения: 535
Зарегистрирован: 01 фев 2012 19:36
Откуда: Санкт-Петербург

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение SIV » 15 ноя 2016 20:11

IYra большое спасибо за помощь.
SIV
Пробегал мимо
 
Сообщения: 7
Зарегистрирован: 22 авг 2011 14:42

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение SIV » 18 ноя 2016 00:42

Для Timer 0 записано TCNT0=0xBF

Подскажите как посчитать с какой частотой работает Timer 0 если тинька работает на частоте 8 МГц.
SIV
Пробегал мимо
 
Сообщения: 7
Зарегистрирован: 22 авг 2011 14:42

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 18 ноя 2016 17:39

SIV,
http://home.roboticlab.eu/ru/avr/timers - пример №1
делитель таймера у нас 1024 (TCCR0B = 0x05)
из примера:
256 - 8 MHz / 1024 / X Hz = 0xBF
откуда получаем:
X = (8 MHz / 1024) / (256 - 0xBF)
= 8000000 Hz/ 1024 / (256 - 0xBF)
= 8000000 / 1024 / (256 - 191)
= 7812.5 Hz / 65 = 120.2Hz

Добавлено спустя 18 часов 35 минут:
Да, и еще у хардлока кое-где (но не в термостате) используется делитель частоты всего чипа в таком вот виде
Код: Выделить всё
#pragma optsize-
CLKPR=0x80;
CLKPR=Prescaler;        //0x00 - для кварца 4MHz, 0x01 - для кварца 8MHz...
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

он естественно влияет на все таймеры.

Добавлено спустя 6 минут 33 секунды:
Да, самое главное, этот способ назначения частоты срабатывания таймера (TCNT0=... и потом вызов процедуры прямо в прерывании) очень неточный, хотя в данном конкретном месте точность и не нужна. В модели можно видеть что тут частота ниже 100Гц вместо расчетных 120Гц.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение SIV » 19 ноя 2016 12:25

propell_ant писал(а):SIV,
http://home.roboticlab.eu/ru/avr/timers - пример №1
делитель таймера у нас 1024 (TCCR0B = 0x05)
из примера:
256 - 8 MHz / 1024 / X Hz = 0xBF
откуда получаем:
X = (8 MHz / 1024) / (256 - 0xBF)
= 8000000 Hz/ 1024 / (256 - 0xBF)
= 8000000 / 1024 / (256 - 191)
= 7812.5 Hz / 65 = 120.2Hz

Добавлено спустя 18 часов 35 минут:
Да, и еще у хардлока кое-где (но не в термостате) используется делитель частоты всего чипа в таком вот виде
Код: Выделить всё
#pragma optsize-
CLKPR=0x80;
CLKPR=Prescaler;        //0x00 - для кварца 4MHz, 0x01 - для кварца 8MHz...
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

он естественно влияет на все таймеры.

Добавлено спустя 6 минут 33 секунды:
Да, самое главное, этот способ назначения частоты срабатывания таймера (TCNT0=... и потом вызов процедуры прямо в прерывании) очень неточный, хотя в данном конкретном месте точность и не нужна. В модели можно видеть что тут частота ниже 100Гц вместо расчетных 120Гц.


Спасибо, разобрался и сделал прерывания через каждые 10 ms. Нужно было именно 100 Гц.
После чего сделал импульсный нагрев в интервале дельты.
SIV
Пробегал мимо
 
Сообщения: 7
Зарегистрирован: 22 авг 2011 14:42

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение georg77 » 20 ноя 2016 11:33

Всем доброго дня!
в соседней ветке есть моя темка - термостат/универсальное устройство на ATMEGA168
заметил, что после выключения часто портится содержимое eeprom
на Казусе совсем недавно на этой вроде неделе было обсуждение такой проблемы
был сделан вывод о том что портится содержимое ячейки с нулевым адресом
один из вариантов решения - прописать по нулевому адресу eeprom ничего не значащую переменную, для этого инициализировать её первой в теле программы, присвоить ей какое-то значение, чтобы компилятор оставил её по нулевому адресу и никуда не выкинул
попробовал в своём проекте - вроде проблема ушла, пока сбоев не было, а до того - чуть ли не через раз.
возможно, такое решение подойдёт и для термостата на Attiny2313.
georg77
Частенько бываю
 
Сообщения: 83
Зарегистрирован: 26 ноя 2011 06:38

Re: Термостат ∆T=0,1°C - работа над ошибками

Сообщение propell_ant » 21 ноя 2016 17:39

georg77, спасибо, этот вариант проверялся.
На моем термостате без супервизора херился весь EEPROM, а не первый байт. Кроме того, в "работе над ошибками" пришлось поменять формат внутреннего представления данных, и чтобы случайно не прочитать старые настройки, настройки теперь хранятся в следующих байтах, то есть первые аж четыре байта не используются.
propell_ant
Живу тут
 
Сообщения: 276
Зарегистрирован: 03 июн 2014 09:22

Пред.

Вернуться в ATtiny



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8