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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
DataLife
Вымогатель припоя
Сообщения: 601
Зарегистрирован: Пт фев 13, 2009 20:58:13
Откуда: Донецк

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

Сообщение 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;
   
    };



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

Подскажите, пожалуйста, как быть.
Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного.
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

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

Сообщение 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);

Если задача автономности и снижения потребления не стоит, то можно сделать и так.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

я бы сделал управление светом при помощи симистора, питание через конденсаторный балласт - схеме минимального вида. для отсчета времени тупо считал бы полупериоды сети - отсчитал нужное количство и выключил свет. и схема и программа будут до отвращения примитивны.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Такая схема потребует цепей ловли нуля. Уже нагромождение. Да и зачем привязываться к частоте сети, если есть внутренняя?
2тс: считать будет. Главное не обмануться с частотой тактирования при компиляции. От этой частоты зависят временн'ые задержки delay.
Docendo discimus
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

pyzhman писал(а):Такая схема потребует цепей ловли нуля. Уже нагромождение. Да и зачем привязываться к частоте сети, если есть внутренняя?
2тс: считать будет. Главное не обмануться с частотой тактирования при компиляции. От этой частоты зависят временн'ые задержки delay.
чтобы управлять симистором ловля нуля необходима. никакого нагромождения - 2 резистора по 510 килоом всего-навсего :) по сравнению со схемой без ловли нуля деталей значительно меньше будет :)))
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

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

Сообщение BerZerK-ku »

А чем вариант мк + электромеханическое реле сложнее? программа проще, деталей меньше.
Опыта работы с 220В кот наплакал, но вроде симмистр дает фору реле при регулировке мощности, а тут такой необходимости нет.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

2Мастер Ломастер: ничё не понял. Писал "потребует цепей ловли нуля" - получил "ловля нуля необходима". Писал "нагромождение" - получил "2 резистора", что, согласитесь, уже лишние детали + программная обработка. "По сравнению со схемой без ловли нуля деталей значительно меньше будет" вообще не всосал. Делаем на том же бестарансформаторном питании, с тем же симистором/транзистором/реле/оптроном. Чего меньше-то?
Docendo discimus
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

ок, рассказываю для сомневающихся.

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

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

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

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

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

естественно, схему с реле вообще не рассматриваем, т.к. с питанием в этом случае вообще печалька...
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

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

Сообщение BerZerK-ku »

а че не так с питанием в случае реле?
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

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

Сообщение sachok »

Реле больший ток потребляет.
Я не Сашок!!!
Аватара пользователя
DataLife
Вымогатель припоя
Сообщения: 601
Зарегистрирован: Пт фев 13, 2009 20:58:13
Откуда: Донецк

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

Сообщение DataLife »

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

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

10 часов горит свет, 14 отдыхает.
Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

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

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

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

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

P.S. надеюсь, реле вы не напрямую к ножке контроллера пришпандоривать собираетесь? это к слову о простоте схемы :)))
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
Gipsy
Открыл глаза
Сообщения: 42
Зарегистрирован: Чт мар 03, 2011 23:23:57

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

Сообщение Gipsy »

Такая схема не поможет?
http://bezkz.su/publ/tajmery/tajmer/42-1-0-355
Аватара пользователя
DataLife
Вымогатель припоя
Сообщения: 601
Зарегистрирован: Пт фев 13, 2009 20:58:13
Откуда: Донецк

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

Сообщение DataLife »

Gipsy, огромное спасибо! Хоть с ПИКами ещё ниразу не работал, но сделать программатор ради такого дела нужно!

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

Пока остановлюсь на ПИК ..
Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

для управления симистором без оптрона надо ловить ноль

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

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

Вернуться в «Микроконтроллеры и ПЛИС»