Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Ответить

Как термостатом запускать таймер?

Чт июл 04, 2019 14:56:14

Друзья, доброго времени суток! Китайские таймеры С005 так и не пришли. Моя очередная идея, требует ваших электронных мозгов. Посмотрите на мою картинку, может кто предложит простую и конкретную схему реализации этого проекта...
Изображение

Пока не знаком с устройством, которое бы формировала импульс для запуска таймера (при замыкании термостата, ведь термостат минут через 5 разомкнётся, а таймер должен, не заметить это и продолжать отчёт 30 минут).

Таймер должен быть дещёвым, точность не нужна, главное простые и доступные компоненты.
Последний раз редактировалось koluhok Чт июл 04, 2019 19:05:58, всего редактировалось 2 раз(а).

Re: Как термостатом запускать таймер?

Чт июл 04, 2019 14:59:13

используйте любой простой МК и реализуйте фсе ваши смелые фантазии.

Re: Как термостатом запускать таймер?

Чт июл 04, 2019 15:10:45

Если бы писал в старой теме (тема ведь всё та-же, про холодильник?), то люди бы знали, что мк был уже не только предложен, но и распробован.

Re: Как термостатом запускать таймер?

Чт июл 04, 2019 15:22:20

используйте любой простой МК и реализуйте фсе ваши смелые фантазии.

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

Добавлено after 6 minutes 30 seconds:
Если бы писал в старой теме (тема ведь всё та-же, про холодильник?), то люди бы знали, что мк был уже не только предложен, но и распробован.

Рад встретить старого друга, что скажешь о моей новой идеи?

Re: Как термостатом запускать таймер?

Чт июл 04, 2019 16:27:49

Привет! ну, мне кажется она не нова, а это всёж продолжение той темы...
варианты:
дискретная логика - генератор да счетчик (несколько корпусов - сложно)
555 - совсем низкая точность на таких длинных задержках
опять мк? :)
—————
а что нужно делать если прошли те 5 минут, и ещё 30... а термостат так и не разомкнулся?

Re: Как термостатом запускать таймер?

Чт июл 04, 2019 16:37:59

555 - совсем низкая точность на таких длинных задержках

Я в той теме предлагал комбинашку из 555 таймера и 561ИЕ8 (или ДВУХ 561ИЕ8)

Re: Как термостатом запускать таймер?

Чт июл 04, 2019 17:19:17

все выше полная Херня если на дискрете ищи 564ие15...тактуй кварцем...
если хочешь проше толко мк... есть готовы прошивки под разные холода

Добавлено after 51 second:
да забыл чтоб не было сбоеф питать батарейкой

Re: Как термостатом запускать таймер?

Чт июл 04, 2019 18:50:20

Привет! ну, мне кажется она не нова, а это всёж продолжение той темы...
варианты:

а что нужно делать если прошли те 5 минут, и ещё 30... а термостат так и не разомкнулся?


Вот что значит электронный профи, сразу нашёл изьян в схеме (такое может быть после разморозки холодильника). Могу ответить так: Разморозку делают раз в год, можно будет перезапустить или добавить режим заморозки на час.

С МК больше связываться не буду. Сам не могу исправить программу, а паразитировать на других совестно.
Последний раз редактировалось koluhok Чт июл 04, 2019 19:10:14, всего редактировалось 1 раз.

Re: Как термостатом запускать таймер?

Чт июл 04, 2019 19:01:34

не следует забывать что никакой таймер или мултик не сможет обеспечить подержание температуры в заданых пределах...
термостат должен быть термостатом с датчитком и порогами уставки верх\низ

Re: Как термостатом запускать таймер?

Чт июл 04, 2019 19:21:57

Это чужую ты исправить не можешь, так напиши свою... иногда своё написать легче, чем чужое понять. :)
заодно и научишься...

Re: Как термостатом запускать таймер?

Пт июл 05, 2019 07:37:39

Всё прояснилось, идею в мусорку. Всем огромное спасибо - мне очень важно ваше профессиональное мнение, которое наполняет копилку моих знаний. :beer: :beer: :beer:

Re: Как термостатом запускать таймер?

Пт июл 05, 2019 19:08:36

(при замыкании термостата, ведь термостат минут через 5 разомкнётся, а таймер должен, не заметить это и продолжать отчёт 30 минут).

.

Значит ты не знаком с RS триггером или на худой конец про обычное реле с самоподхватом...жаль...

Re: Как термостатом запускать таймер?

Вт июл 09, 2019 14:47:13

(при замыкании термостата, ведь термостат минут через 5 разомкнётся, а таймер должен, не заметить это и продолжать отчёт 30 минут).

.

Значит ты не знаком с RS триггером или на худой конец про обычное реле с самоподхватом...жаль...


"Всё в мире управляемо и всем управляет Бог". Отсюда:
1). Слава господу-богу за благую весть.
2). Огромное спасибо Brigadir, за доставку по назначению.
Ибо Бог разговаривает с нами на языке жизненных обстоятельств. Но, только нужно быть НАБЛЮДАТЕЛЕМ, чтобы видеть это.
Теперь о схеме, которую я начертил, посмотрев вот этот ролик: https://www.youtube.com/watch?v=cwDSsB9ElG0

Изображение

Для меня всё прояснилось, кроме того, какой таймер поставить заместо китайского С005
Изображение

В итоге:
Изображение

Re: Как термостатом запускать таймер?

Ср июл 10, 2019 06:58:20

Думаю таймер С005 можно заменить дешёвым МП аттини10 (который можно купить в розницу по 63 копейки за штуку вот здесь http://triema.su/shop/products/view/5562858).
Остаётся написать программу и залить в МП.
Нашёл простенькую прогу:
Изображение
Попробовал самостоятельно переделать, но не знаю, правильно ли, поправте пожалуйста, если что не так написал.
по нажатию кнопки включать зеленый светодиод
через минуту гаснет. Во время свечения диода нажатие кнопки игнорируется.

Изображение



#define F_CPU 1200000UL // Указываем тактовую частоту МК
#define LED PB4 // Используем светодиод, подключенный к PB4 (3 нога МК) выход
#include <avr/io.h> // Подключаем определения ввода/вывода
#include <util/delay.h> // Подключаем библиотеку функций задержки

unsigned char i;


int main(void)
{
DDRB=0b00001000; // РВ4 (3 нога МК) делаем выход
PORTB=0b00000001; // РВО - включение подтяжки - подтягиваем РВ0 к питанию (по умолчанию светодиод выключен)

while (1)
{
while(PINB & 0x01); // ждем нажатия на кнопку

PORTB|= 0x00001000; // зажигаем светодиод (РВ4 - 3 нога МК выход)
_delay_ms(32767); // ждем 30 сек
PORTB&= 0x11110111; // тушим светодиод
}
Последний раз редактировалось koluhok Ср июл 10, 2019 19:21:15, всего редактировалось 10 раз(а).

Re: Как термостатом запускать таймер?

Ср июл 10, 2019 09:11:02

1) порты расписывай правильно!
тебе - новичку будет проще представить их в бинарном, а не в 16ричном виде:
DDRB=0b00001000; (третий - выход, остальные - входы) тут просто - по порядку от 7 до 0, где 0 - вход, 1 - выход.
PORTB=0b00000001; (у тебя правильное значение, но так нагляднее)
2) не уверен, но, вроде максимальная задержка 32767 (больше в переменную не помещается)
если будет ругаться - для начала замени одну длинную задержку, на несколько коротких...

Re: Как термостатом запускать таймер?

Ср июл 10, 2019 11:27:19

Ivanoff-iv, Привет, благо дарю за подсказку. Посмотри сверху - правильно исправил?
Потренируюсь пока на аттини13, пока они под рукой есть.

Только не знаю пока, где я буду компилировать машинный код (.hex)? В Algorithm Building не получится?

Re: Как термостатом запускать таймер?

Ср июл 10, 2019 11:57:09

неправильно
PORTB=0b00000001; // РВО - вход
правильно:
PORTB=0b00000001; // РВО - включение подтяжки
не важно что вперёд - ПОРТ или ДДР писать - в любом случае 1 в ПОРТ тянет вверх, а 1 в ДДР включает силовые выходные транзисторы (с ними порт начинает работать на выход, кстати, при этом не переставая работать и на вход тоже)
_____________
ты понимаешь суть этой строки?:
PORTB|= 0x10; // зажигаем зеленый
объясню, это пример сокращенной записи вот этой строки:
PORTB = (PORTB) | (0x10); // зажигаем зеленый
вертикальная черта | - это поразрядное ИЛИ (это как плюс, только без переноса) если хотябы в одном из операндов в данном месте была 1, то на выходе в этом же месте будет 1.
тоесть взяли регистр ПОРТБ и записали его весь обратно, кроме 1го (2го по счету) бита - он в результате этой операции всегда станет равным 1.
я стал объяснять про эту строчку из-за этой строки (она хоть и работать будет, но написана неправильно и может в дальнейшем навредить - когда начнешь мигать более чем одним светодиодом):
PORTB= 0x01; // тушим зеленый
на самом деле эта строчка выключает все ножки порта, кроме 0й (там у тебя подтяжка кнопки)
если надо отключить только 1ю ногу и не тронуть остальные, то правильно писать так:
PORTB&= 0x11111101; // тушим зеленый
& - (поразрядное И) записывает 0 в те разряды, где хоть у одного оператора был 0.
но такая запись неудобна, проще инвертировать чило:
~ - (поразрядное НЕ, или инверсия)
PORTB&= ~(0x00000010); // тушим зеленый
такие операции встречаются очень часто и их стоит запомнить.
ещё, для улучшения восприятия можно воспользоваться командой сдвига:
PORTB|= (1<<x); // зажигаем x ногу порта
PORTB&= ~(1<<x); // тушим x ногу порта

<< - сдвиг, в данных строках происходит сдвиг "1" на х позиций, (вместо х число) так и получится при х = 0 единица не сдвинется и будет переключение 0 ноги порта, при х=1 - первой, и т.д.
_____
надеюсь эта информация поможет тебе написать более красивый и правильный код :beer:

Re: Как термостатом запускать таймер?

Ср июл 10, 2019 15:23:12

Ivanoff-iv, Спасибо! Это только на первый взгляд всё кажется просто... А на самом деле :shock: шары на лоб лезут :o Короче - "Влип очкарик" (это про меня).
Короче исправил свой код сверху, даже не понял правильно ли... А где мне этот код компелировать? :dont_know:

Re: Как термостатом запускать таймер?

Чт июл 11, 2019 10:02:04

Вот неплохой учебник нашел...
Для работы с кодом и с контроллерами нужна среда разработки, наиболее часто для С используют
Кодевижен:
Code Vision AVR 2.05.3 (у меня сейчас такой, но не из сундука)
CodevisionAVR Advanced v3.12 (более свежая версия)
и АВР студию:
AVR STUDIO 3.21 (не знаю, какая сейчас последняя...)
(всё, что наскрёб - всё из "сундука")

Re: Как термостатом запускать таймер?

Чт июл 11, 2019 10:57:19

... АВР студию:
AVR STUDIO 3.21 (не знаю, какая сейчас последняя...)
(всё, что наскрёб - всё из "сундука")
Замечу, 3.19 студия не поддерживает tiny13. Лучше установить 4.19 build730
Ответить