Кухонный таймер на ATTiny13

Мир вам!
Сразу ответы на вопросы:
— велосипед изобретал, так как жена попросила. Механический для неё тикает громко. :)
— "ATTiny13 — это же такая древность!" А куда мне его девать ещё, если он за несколько лет никуда не пригодился? К тому же в единственном экземпляре.

Схемы в обычном понимании не будет. Там вся схема — это батарейка CR2032, пара кнопок на землю, да пьезопищалка, подключенная между двумя выводами. Чуть не забыл — ещё конденсатор керамический.
куда чего цеплять.
Для экономии батарейки основное время контроллер спит, перезагружается по сторожевому таймеру. После пробуждения отрубается компаратор, настраиваются кнопки, опрашиваются. Выполняется соответствующее действие. Если достигли времени счёта — пищим не засыпая одну минуту. (Противно пищит, я вам скажу!)
Управление такое: одна кнопка прибавляет 1 минуту, другая — 5 минут. Нажали обе — обнулили время.
В архиве исходник и прошивка.
  • -2
  • 15 августа 2014, 12:58
  • Hoksmur
  • 1
Файлы в топике: KitchTimer.zip

Комментарии (49)

RSS свернуть / развернуть
ATTiny13 — это же такая древность!
Что это он древность? Хороший годный микроконтроллер для всякой мелочи. Найдите ка, пожалуй, такой мелкий среди модных stm32 и прочих.
+1
  • avatar
  • Bonio
  • 16 августа 2014, 16:37
Смотря что понимать под «мелкий». Если физические габариты — то STMxxxxxxFx имеют примерно такие же.
Ну и для данной задачи как раз этот МК по мне мелковат. Маловато ног для присобачивания дисплея, а таймер без дисплея все же не так удобен.
Впрочем, в целом мне он тоже нравится.
0
Нет, как раз не физические габариты, а минимальный по параметрам и периферии. Такой, чтобы не жалко было выделить целый микроконтроллер на какую нибудь ерунду.
0
Я обычно жабу соизмеряю с ценой. А по этому параметру с STM8S003F3 конкурировать сложно.
К тому же, есть еще PIC10F200. Вот уж действительно, сложно найти минимальней и компактней. И стоит чуть дешевле тини13. Я думаю, для данной задачи его бы хватило.
0
И все же, применив STM8S003F3 для какой нибудь мигалки, кто нибудь обязательно да вспомнит историю про пушку и воробьев. А Attiny13 на на таком фоне, вроде как всего лишь рогатка)) Хоть и при сравнимой цене.
0
Ну что ж поделать, если таковы цены)
0
Маловато ног для присобачивания дисплея
Так это легко решается с 74х164.
0
Только зачем размножать корпуса, когда можно воткнуть STM8S003F3? 20 ножек хватит всем!
Ну и не 164, а 595. С безлатчевыми дополнительная морока с гашением индикатора на время обновления.
0
Никакой мороки, всё равно аноды/катоды переключать. Вот в промежутке и сдвигать в регистр. Кроме того это происходит так быстро, что и не заметишь.
Зато не надо еще ногу на защелку.
0
Это если есть ножки на динамику. С тини13 придется общие тоже с регистра дергать (по крайней мере в текущей схеме, где всего одна нога свободной осталась). А 595-м можно рулить с одной ножки.
Ну и некоторые тут уже думали «это быстро, никто не заметит». Пришлось втыкать управление гашением в готовый девайс.
И зачем вся эта морока, если многоногий МК стоит не дороже?
0
А куда мне его девать ещё, если он за несколько лет никуда не пригодился?
Я пару дней назад тоже свою тиньку, лежавшую 3,5 года без дела, прикрутил к регистру и 7-сегментнику — получился карманный термометр:
Карманный термометр 35х50х20 мм
и новый МК покупать не пришлось :)
0
Я предпочитаю оставить тини13 для проектов, где его особенности актуальны. Один уже есть в планах, когда реализую — выложу (хотя и врядли он будет сильно интересен кому-то кроме меня). Там актуален и размер тиньки, и ее диапазон питания, хотя количество ног не позволяет реализовать одну дополнительную функцию.
0
Это заменить начинку в таком, и время раелизации — критично. «Тикает».
0
Только начал читать статью, и она чрез пару строк уже закончилась.
+2
Вот мне интересно: те, кто минусует они как, смотрять что читают и где опубликовано? Выложено в личном блоге (не тематическом!), мотивы создания девайса указаны… При этом никакой конструктивной критики не предложено — но минусов накидали. Казалось бы — нравится — бери и пользуйся. Не нравится — проходи мимо… «Критикуешь — предлагай. Предлагаешь — делай. Делаешь — отвечай.» Так нет же, «немогу не отметится!». А мы потом удивляемся, когда в подъездах грязно (и не только)… А меж тем, на мой взгляд — корни явлений одни и те же.
0
Мне лично понравилось. Не огорчайтесь, и продолжайте творить!!!
0
Ну первый «минус» вы от меня схлопотали за запрещение комментариев (и ТОЛЬКО), потому и личное письмо получили :)
0
Честно — думал никому не интересно будет. А тут вон оно как. :)
0
А чтож тогда выкладывал? Или у себя на диске уже места нет? :)
0
На случай, если кому полезно будет.
0
Полагаю, практически все минусы (включая мой) ты словил за запрещение комментариев.
0
P.S. Вернул плюсом в карму, но больше так не делай.
0
Спасибо.
0
если есть кнопка, то почему ее нельзя нажимать?
а если можно, то почему кто-то должен отдавать тебе отчет?
тут сообщество, а не личный бложик
т.е. у тебя вроде бы как и личный бложик, но на самом деле в каждом сообществе есть негласные правила
например у многих разрыв жопы вызвало отключение каментов и даже я, который не любит писать в лички и то еле сдержался, но могу себе представить количество написавших

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

но толпа действует довольно предсказуемо, что можно использовать для извлечения лулзов или профита для себя
соотношение этих 2х параметров и показывает карма

манипуляция быдлом в стаде куда более доставляющий процесс, нежели манипуляция битов в байте
+2
Развёрнуто, что сказать! :)
0
Если сильно понадобится, то можно и семисегментник через соответствующий драйвер подключить, кнопки обслужить и пищалку подцепить. Не забываем, что автор не использовал еще фуз, переводящий reset в I/O.
0
  • avatar
  • DVF
  • 17 августа 2014, 20:16
На AVR для этого фьюза нужен сравнительно редкий HVSP программатор. Ну или МК превращается в OTP.
0
Ну или МК превращается в OTP.
А что в этом страшного? Без отладки можно на этот вывод повесить пищалку с встроенным генератором.
0
Иногда в прошивке обнаруживается баг)
0
Всяко бывает. Можно отладить пищалку на другой «ноге», а в финале переназначить. Все остальное в штатном режиме. Я к тому, что на 13-й «тиньке» можно сделать больше, чем представляется.
0
на 13-й «тиньке» можно сделать больше
Согласен. У меня на Tiny13 сигнализация для дома с i-Button. Запоминает до 8-ми ключей с использованием мастер-ключа. Плюс бипер, светодиод, сирена, геркон…
0
Вот схема
0
Кондер по питанию МК я бы побольше поставил.
0
Я его на схеме «потерял». По питанию стоит 0,1 мкФ керамика + 47 мкФ электролит.
0
А проверял, насколько эффективна такая защита от статики? Или скажем от целенаправленного разряда пьезой в гнездо ключа?
0
Нет, не проверял. Эта часть схемы — плагиат с подобного устройства с i-Button. Думаю пьезу не выдержит, нужен еще разрядник на входе. Но сигнализация разрабатывалась для установки гнезда между железной и деревянной входными дверьми. Открываешь первую дверь и у тебя 5 секунд приложить ключ. Так что гнездо ключа относительно защищено (от простых хулиганов). Ну а «знающие» хулиганы не полезут, т.к. видно что квартира на сигнализациии (светодиод над входной дверью).
0
добрый день друзья!
пытаюсь повторить схему и заодно переделать немного под себя.
Почему то время у меня считает не верно.

при
#define T1MIN (10*2)
#define T5MIN (T1MIN*2)

кнопка t1 даёт примерно минуту, а t5 раз в 5 меньше!
я уж подумал, что перепутал ноги. но нет. t1 на 6ю ногу, а t5 на 5ю.
подскажите, пожалуйста, что у меня не так?

код
0
В какой среде программируете, как контролируете что фьюзы верно зашиты?
Проверьте что продпрограммы задержки правильно отрабатывают время, наприер
while(1)
{
— ногу в 1
— _delay_ms(1000)
— ногу в 0
— _delay_ms(1000)
}
Если неверно, убедитесь что в опциях компилятора (точнее в пользовательских дефайнах) правильно выставлена частота процессора и она совпадает с фактически выставленными фьюзами.
Если в Eclipse работаете с GCC, то можно выставить в свойствах проекта, AVR -> Target Hardware и выставить верную частоту.
0
компилирую в Programmers Notepad [WinAVR]. шью ChipPorg48. Фьюзы он берет из HEX файла, вот такие:
Никак не контролирую, не знаю как их контролировать :)
в том то и дело, что delay_ms(1000) работает около дела. точно не мерял, но мне на глаз показалось что нормально. по крайней мере отличий в два раза не заметил.
0
я не понимаю как у автора получалось сделать паузу в 1 минуту если
#define T1MIN (50*2)
а wdt_enable(WDTO_500MS);
ведь получалось 50*2 раз по пол секунды. а это 50 секунд. может оставшееся время процессор ребутится, «просыпается» и уменьшает счётчик и снова засыпает?
0
Примерно так, я уже не помню подробности. По даташиту разброс сторожевого таймера довольно большой, подбирал опытным путём цифру «50». Можно попробовать поставить бОльший делитель, и тогда уже дефайн уменьшать.
0
Если правильно вспомнил — чтобы переменная секунды хранила, для удобства. Опять же, дискретность подстройки меньше. Если уменьшите частоту пробуждений, то и батарейки на дольше хватать будет.
0
Конфигурация правильная. Контроллер именно ATTiny13? Или на что-то переносили? Первый макрос тоже не совпадает с моим.
Попробуйте прошить *.hex из архива — как себя вести будет?
0
отделим мухов от колтлетов, фьюзы это или не фьюзы: «родной»-то код запускается так как надо?
а дальше, кусочками запускать код чтобы понять где сломалось оно…
0
Фьюзы в исходнике указано, что должны стоять по умолчанию:
FUSES =
    {
        .low  = LFUSE_DEFAULT,
        .high = HFUSE_DEFAULT
    }; /* hfuse=0xff, lfuse=0x6A */

Выводы(пины):
#define T1PRESS 0b10
#define T5PRESS 0b01
//....
		buttons = PINB & 0x03;
		switch (buttons) {
		// ....
		}

Я шил AVRDUDE, он понимает «компилированные» фьюзы, да и как параметр можно задать.
Проверьте у себя этот макрос:
#define T5MIN (T1MIN*5)

А то я испугался, полез проверять… Или у вас здесь опечатка?
Написали бы каким инструментарием вы пользуетесь, тогда знающие подскажут, а так приходится гадать, «что же там» у вас.
0
да, конечно опечатка. это я уменьшал, чтобы дождаться времени сигнала. а то даже одну минуту ждал несколько минут. надоело. поставил #define T1MIN (10*2)
и уже запутался :) стало или 30 сукунд или 50 с чем то… запутался.
скомпилировал сейчас так, проверю вечером:
0
По даташиту разброс сторожевого таймера довольно большой, подбирал опытным путём цифру «50».
всё. теперь всё понятно откуда нестабильность и всё такое. вачдог видимо работает не супер точно по часам.
а то получается с этим исходником одну минуту я почти «угадал» а вот 5 минут — не угадал.
если тикает через 1 минуту, то за 1 час накапливается ошибка в 5,5 секунд.
А если тикает через 5 минут, то ошибка за час уже около 19,25 секунд.

Родной код видимо работает около дела. Несколько секунд не заметно в 5 минутах. Он же всего 1 минуту или 5 работает.

А у меня задача немного другая — я хотел делать фотографии экшнкамерой с интервалом от 1 минуты до 30 минут.
И так же кнопками задавать интервал. Нажал +5 получил +5 ко времени. Нажал 3 раза по 5 получил 15 минут.
Поправил код как смог, добавил выход на кнопку фотографирования для камеры.
Она ещё и засыпает у меня, поэтому до непосредственного фотографирования приходится нажимать кнопку чтобы она пробуждалась а потом уже фотографирования. Так и проверяю…
В принципе задача не супер точная. Можно «подобрать» время для 1,5,10 и 15 минут, например, и успокоиться…
0
кажется я даже понял где накосячил :)
думаю что тут
time = timestored;

надо как то учесть
-PushTime
0
Не совсем понятно. Я и 5, и 15, и 42 минуты отмерял с небольшой ошибкой. Логика работы такая: просыпаемся, вычитаем 1 период сработки. Если нажата кнопка добавляем соответствующую задержку к уже имеющейся. Если ноль — пищим. Ваш исходник потом гляну.
Я бы просто привёл к следующему: при сработке — добавляем интервал заново. При нажитии обеих кнопок — обнуляем и интервал, и счётчик (верно, это отдельные переменные). Выдержки удобно вести в «разах» таймера, а для читаемости, через макросы привести к секундам.
ПыСы: Для тестов можно запустить без экономии энергии, таймер опрашивать по флагу и сбрасывать в петле. А когда будет всё хорошо с интервалами — тогда вернуться к экономному режиму работы.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.