Страница 1 из 1

Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 02:46:30
DataLife
Суть вопроса: увлёкся аквариумистикой.
Нужно чтобы свет над аквариумом горел ровно 10 часов. Засекать во сколько я его включил и поджидать время отключения не очень удобно.

Задача: подал питание на МК - включилось питание и началась задержка. После 10 часов выключить питание и ВСЁ. Тоесть что бы снова включить МК нужно туда-сюда клацнуть тумблером (ну или придумаю получше что-то, не важно).

Хочу это сделать на крошечном Тини13.
Суть в программе. Написал такую кашу:

Код: Выделить всё

while (1)
      {
        delay_ms(1000);
        PORTB.0=1;            // включаем свет
       
        for (time = 1; time < 18000; time++)         // цикл 600 минут ( 18000 х 2 сек = 36 000 сек = 10 часов)
             {
                     
              delay_ms(2000);  // ждем 2 сек.
             
              }
              continue;
              PORTB.0=0;
   
    };



Сижу и думаю, будет ли МК так долго считать?
Может есть проще варианты?
Может подключить часовой и ... не знаю я как с ним обращаться.

Подскажите, пожалуйста, как быть.

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 04:27:53
BerZerK-ku
В вашем случае лампочка будет гореть пока питание не снимите.

Код: Выделить всё

    delay_ms(1000);
    PORTB.0=1;            // включаем свет
       
    for (unsigned int time = 0; time < 18000; time++)         // цикл 600 минут ( 18000 х 2 сек = 36 000 сек = 10 часов)
    {     
        delay_ms(2000);  // ждем 2 сек.       
    }

    PORTB.0=0;
    while (1);

Если задача автономности и снижения потребления не стоит, то можно сделать и так.

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 13:29:20
Мастер Ломастер
я бы сделал управление светом при помощи симистора, питание через конденсаторный балласт - схеме минимального вида. для отсчета времени тупо считал бы полупериоды сети - отсчитал нужное количство и выключил свет. и схема и программа будут до отвращения примитивны.

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 13:36:41
pyzhman
Такая схема потребует цепей ловли нуля. Уже нагромождение. Да и зачем привязываться к частоте сети, если есть внутренняя?
2тс: считать будет. Главное не обмануться с частотой тактирования при компиляции. От этой частоты зависят временн'ые задержки delay.

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 13:44:58
Мастер Ломастер
pyzhman писал(а):Такая схема потребует цепей ловли нуля. Уже нагромождение. Да и зачем привязываться к частоте сети, если есть внутренняя?
2тс: считать будет. Главное не обмануться с частотой тактирования при компиляции. От этой частоты зависят временн'ые задержки delay.
чтобы управлять симистором ловля нуля необходима. никакого нагромождения - 2 резистора по 510 килоом всего-навсего :) по сравнению со схемой без ловли нуля деталей значительно меньше будет :)))

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 13:53:34
BerZerK-ku
А чем вариант мк + электромеханическое реле сложнее? программа проще, деталей меньше.
Опыта работы с 220В кот наплакал, но вроде симмистр дает фору реле при регулировке мощности, а тут такой необходимости нет.

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 14:20:04
pyzhman
2Мастер Ломастер: ничё не понял. Писал "потребует цепей ловли нуля" - получил "ловля нуля необходима". Писал "нагромождение" - получил "2 резистора", что, согласитесь, уже лишние детали + программная обработка. "По сравнению со схемой без ловли нуля деталей значительно меньше будет" вообще не всосал. Делаем на том же бестарансформаторном питании, с тем же симистором/транзистором/реле/оптроном. Чего меньше-то?

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 14:30:08
Мастер Ломастер
ок, рассказываю для сомневающихся.

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

для управления симистором без оптрона надо ловить ноль, для этого подключаем к сети через 2 резистора по 510 килоом МК и ловим этот ноль. симистор отпираем прямо с пина МК через небольшой резистор. итого имеем обвязку из 3 резисторов.

подведем баланс:
1) оптрон + 2 резистора
2) 3 резистора.

что проще в итоге? ;) и дешевле? ;) вот и все

P.S. если кто-то думает, что через оптрон можно управлять симистором без ловли фазы, то он будет сильно огорчен: придется постоянно давать в оптрон минимум 10 мА тока, что потребует отказаться от однополупериодной схемы питания или заставит ставить очень большую емкость "по питанию". даже использование оптрона со встроенной схемой контроля нуля не решает проблему. поэтому проведенный мною анализ еще печальнее для сторонников 1-го варината - им все равно потребуется контролировать ноль в сети для формирования одного короткого импульса отпирания симистора... т.е. к первому варианту +2 резистора все равно :)))

естественно, схему с реле вообще не рассматриваем, т.к. с питанием в этом случае вообще печалька...

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 15:42:46
BerZerK-ku
а че не так с питанием в случае реле?

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 16:57:13
sachok
Реле больший ток потребляет.

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 19:51:12
DataLife
Всем огромное спасибо за советы!
Буду делать на реле и Тини13.
Есть у меня сейчас 5-ти вольтное реле, проверил ток - 63 мА. Нормально.
Задача не энергосбережении не стоит, просто нужно сделать отключение света вовремя.
Питаться это будет от зарядки моб телефона. Проверил - 5В на выходе (зарядка с ЮСБ портом аля для iPhone). Реле тянет, Мк мелочь.

Как думаете, если дописать программу ещё и на включение, насколько будет большая погрешность со временем? Насколько будет уходить вперёд/назад? Тактирование от внутреннего генератора будет.

10 часов горит свет, 14 отдыхает.

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 20:22:03
Мастер Ломастер
DataLife писал(а):Есть у меня сейчас 5-ти вольтное реле, проверил ток - 63 мА. Нормально.
Задача не энергосбережении не стоит, просто нужно сделать отключение света вовремя.
Питаться это будет от зарядки моб телефона. Проверил - 5В на выходе (зарядка с ЮСБ портом аля для iPhone). Реле тянет, Мк мелочь.

Как думаете, если дописать программу ещё и на включение, насколько будет большая погрешность со временем? Насколько будет уходить вперёд/назад? Тактирование от внутреннего генератора будет.
сколько сложностей, сколько вопросов...

погрешность установки встроенного тактового генератора примерно 5%, но нестабильность при колебаниях температуры гораздо больше. думаю, в худшем случае можно ожидать погрешности 15% в любую сторону от расчетной. т.е. в худшем случае сутки у вас будут не 24 часа, а 21 или 28, соответственно пропорционально изменятся и интервалы свечения-несвечения. в лучшем случае попадете в дырочку и все будет почти идеально. а вот стабильность частоты сети уж никак не хуже 1%...

но мое дело - сторона :)))

P.S. надеюсь, реле вы не напрямую к ножке контроллера пришпандоривать собираетесь? это к слову о простоте схемы :)))

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 20:24:17
Gipsy
Такая схема не поможет?
http://bezkz.su/publ/tajmery/tajmer/42-1-0-355

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Сб янв 14, 2012 21:43:57
DataLife
Gipsy, огромное спасибо! Хоть с ПИКами ещё ниразу не работал, но сделать программатор ради такого дела нужно!

Мастер Ломастер, то, что есть ограничение по току на ногу МК - я знаю :) О существовании транзисторов и подобных - тоже ;) Спасибо, не знал, что такая погрешность большая. Кстати, дома практически стабильная температура, так что погрешность может быть не настолько велика. ХЗ :)

Пока остановлюсь на ПИК ..

Re: Самый простой таймер - как лучше реализовать?

Добавлено: Вс янв 15, 2012 08:10:38
pyzhman
для управления симистором без оптрона надо ловить ноль

Обоснование?
очень большую емкость "по питанию"

Насколько очень большую? Или во сколько?
ps. Не в целях полемики, в целях отметания последних сомнений.