Авторизация
Зарегистрироваться

DS3231 AT24C32 IIC module precision Real time clock module memory module Arduino


Таймер

Сегодня расскажу, как сделать таймер на несколько каналов своими руками. В основе таймера лежит Arduino и шилд с часами реального времени DS3231. Кому интересно, прошу под кат.


Предыстория:
В один прекрасный день я заметил, что потёк мой маленький аквариум. Потёк по шву снизу. Так как покупал я его, чтобы набраться опыта, то решено было не пытаться чинить, а купить нормальный большой аквариум. После недолгих поисков я купил нормальный аквариум через интернет магазин (в офф-лайн магазинах подобный аквариум стоил на 2-3 тыс. дороже). Пока обустраивал аквариум, пока запускал его, выяснилась одна отрицательная черта. Лампы в аквариуме светили слишком ярко. Для рыб и растений они, конечно, работали нормально, но аквариум находился в спальне (а стоит зима с поздними рассветами!) — свечение от ламп по утрам заливало комнату и мешало моим домочадцам наслаждаться объятиями Морфея. Поначалу я подумал просто выставить таймер, который остался у меня от прошлого аквариума, на другое время, но в этом случае приходилось кормить рыб вечером, что меня не устраивало.
Второй мыслью было поставить ещё один таймер и светодиодную ленту, но, подумав немного, решил собрать таймер сам, так как все компоненты имелись в наличии.
Первоначально таймер хотел строить по следующей схеме: Блок питания 5В — Arduino – часы DS3231 –шилд реле. Но от этой схемы отказался практически сразу. Причин было несколько:
1) по затратам сборка подобного таймера сопоставима с таймером, купленном в магазине
2) бездарно пропадает вычислительная мощь компонентов.
3) много времени уйдет на постройку таймера
Если говорить простым языком, то если и собирать таймер, то с такими функциями, которых нет в обычных таймерах, иначе вообще нет смысла браться за подобную затею.
Так, цель ясна. Теперь, как нас давно учили в институте на основах научно технического творчества, подменяем одну функцию устройства на другую. По большому счёту, функций у нас не так много:
1) Включение/выключение света
2) Управление
3) Количество каналов регулирования светом
4) Другие функции (цвет, размер, дизайн… на ум больше ничего не приходит)
Начнём с конца списка.
— Количество каналов – можно подключать разные каналы в разные моменты времени, тем самым делая освещённость аквариума ярче или темнее.
— Управление таймером не самая важная функция. Так как таймер строится по принципу «работать долго и автономно без всякого вмешательства», то функция управления носит второстепенный характер. То есть один раз запрограммировать, и таймер работает. Конечно, функцию перепрограммирования нужно оставить, чтобы в случае чего подправить времена вкл/выкл.
— Теперь про функцию включения света. А почему бы не сделать включение света плавным, как в диммерах. Для этого практически все есть в Arduino, небольшая обвязка в виде силовых цепей и полноценный диммер-канал готов.
Ну вот, теперь более или менее вырисовывается таймер, который я хочу сделать. В связи с тем, что в новом аквариуме стоят люминесцентные лампы, то управлять ими приходится через реле, а вот светодиодными лентами я буду управлять Arduino, через ШИМ.
Вот схема, по которой я собирал таймер

Немного пояснений к схеме.
С левой части Arduino у неё есть три канала:
— на цифровых выходах (D3, D5) – ШИМ управляют светодиодными лентами HL1, HL2.
— цифровой выход D7 управляет реле, которое коммутирует 220В (люминесцентные лампы).
В качестве питания я использовал блок питания на 12В, 1А . Не помню, для чего и когда я его покупал в офф-лайне, но подошел он в корпус идеально. Питание на Arduino я брал с преобразователя LM2596M (настроил его на 5В), хотя на самом деле, как я сейчас понимаю, можно было ограничиться «кренкой» на 5В и конденсатором.
Часы DS3231 подключаются к стандартным портам SDA(A4) и SCL(А5). Первоначально в планах были задуманы три кнопки, которые цепляются к аналоговому входу А0, но в дальнейшем пришлось от них отказаться по причине нехватки места в корпусе (об этом напишу позже). Кнопками задумывалось управлять следующими функциями:
1) Все каналы включить
2) Все каналы выключить
3) Установка времени часам (например, в субботу в 12:00, если вдруг часы будут сильно убегать).
По схеме, вроде, все понятно. Ещё немного времени уделю каналам и перейду к реализации.
С каналом, который управляет реле, сложностей не возникло. Схема типовая, транзистор подойдёт любой, который может коммутировать токи от 100 мА.
С каналами, которые управляют светодиодными лентами, пришлось повозиться. Вся загвоздка была в выборе силового транзистора. Он должен обеспечивать коммутацию токов до 1А, при этом падение напряжения на нем должно быть минимальным, иначе он будет греться, а нагрев нам ни к чему. Для испытаний был собран стенд на макетной плате, где я тестировал транзисторы, которые нашёл у себя в рабочем столе. В идеале, можно было бы взять что-то типа IRFZ44N, но для сборки таймера решил использовать по максимуму компоненты, которые у меня уже были в наличии. В столе нашёл несколько полевиков NDP7060. По даташиту у него сопротивление канала при очень большом токе составляло всего 0,013 Ом. На испытаниях он вообще не нагрелся. Было решено ставить их в схему.
Перед сборкой таймера нужно было сначала выбрать корпус, чтобы на основе его проектировать другие компоненты системы. Поход по электронным магазинам показал, что выбор есть, но цены одного корпуса сопоставимы с ценой готового таймера. И тут я вспомнил, что когда делал свою метеостанцию, то я заказывал пару корпусов. После непродолжительных поисков в квартире, в которой идёт ремонт, корпус был найден. Все бы хорошо, но размеры его были маловаты. Я уже хотел отказаться от этого корпуса, но потом решил собирать все компоненты в корпусе по частям. То есть будет несколько плат, а соединяться они будут проводами. Минус этого метода — большое количество проводов и сложность в отладке. Плюс – маленькие размеры.
Вот такой корпус я решил использовать

Немного опишу основные компоненты.
Arduino mini
На муське много обзоров данной платы. Я покупаю ее дешевизны (около 100 руб.) и малого размера. Все основные интерфейсы у нее присутствуют, следовательно, нет смысла переплачивать тройную цену за Arduino Uno или Arduino nano. Единственный минус — это необходимость использования внешнего преобразователя USB – COM. Но покупка подобного преобразователя с платой обойдется все равно дешевле, чем большая плата.
Немного фотографий Arduino nano





Часы реального времени DS3231
Почему я выбрал именно этот RTC, а не DS1307??? Да потому что имею печальный опыт использования DS1307 в своей метеостанции и больше с ними связываться не хочу. В прошлый раз мне в комментариях написали, что лучше было использовать DS3231, вместо DS1307, так как в DS3231 встроенный кварц и термостабилизация. Еще одной особенность платы DS3231 — это ее высокая точность хода.
Заказывал часы давно, а вот испытать пришлось их недавно. Не обошлось, конечно, без ложки дегтя, хотя об этом чуть ниже.
Пришли часы в обычном конверте

Внутри в слое пупырки лежали часы в антистатическом пакете


С одной стороны была распаяна угловая линейка контактов


Батарейки не было, так как почте Китая и Гонконга запретили к пересылке литиевые батарейки. В часах используется стандартная батарейка CR2032.
Линейку контактов пришлось выпаять и припаять не угловую с другой стороны.

Корпус
В корпусе было решено сделать розетку, чтобы в нее можно было вставить вилку от освещения аквариума. Данное решение заметно уменьшает полезный объем корпуса, в котором можно разместить электронику, но я хотел создать максимально универсальное устройство.
Розетку взял обычную встраиваемую (у меня осталась от ремонта).

Выкручиваем среднюю часть. Выкидываем окантовку. С одной стороны пришлось обрезать каркас розетки, чтобы розетка вплотную встала в корпус.

В корпусе прикладываем розетку, карандашом намечаем отверстие

Здесь на фотографии видно, что я уже пристроил плату от блока питания 220/12В.
Далее дрелью делал много отверстий по намеченному контуру и крупным напильником дорабатывал основное отверстие. Прикручиваем основу розетки, а к ней сверху винтом центральную накладку.
Вот что получилось


На последней фотографии видно, что на центральной накладке есть два углубления. Не знаю, для чего они (кстати, с другой стороны есть аналогичные вырезы). Это, конечно, портит немного эстетический вид, но я решил не заморачиваться с поиском герметика в цвет розетки, чтобы заделать эти вырезы.

Далее проектирование самой схемы. После того, как я собрал все основные компоненты, я попробовал примерить, как они сидят в корпусе. Оказалось, все печально. Нужно было делать минимум 2 платы.
В Sprint-Layout примерял различные компоненты. В итоге, скомпоновал две платы:


Изготовил платы путем травления фольгированного текстолита в хлорном железе.

Платы с установленными компонентами


Все компоненты в корпусе



Как видно на фотографиях, корпус забит под завязку, проводов много. Долезть до какого-либо компонента проблематично, а порой и просто невозможно.
Вот так выглядит собранный таймер


При проектирование плат допустил несколько ошибок.
1) не развел линию сброса для программатора. Раньше у меня был преобразователь USB – COM, который имел 4 выхода VCC, TX, RX, GND. Для программирования я тогда просто нажимал сброс на Arduino, и программа нормально заливалась. Сейчас купил нормальный преобразователь USB – COM, но про остальные линии забыл. В результате, пришлось на Arduino припаивать угловой контакт и выводить соединяющий провод из корпуса. После программирования и удачного тестирования этот провод можно просто выдернуть из корпуса.
2) не учёл ширину направляющих внутри корпуса. В результате, пришлось ставить коннекторы меньшего размера или вообще без корпуса.

Первое включение.
Включил в сеть, внутри загорелась куча лампочек. Светодиод на Arduino заморгал (который висит на D13). Попытался залить свою программу мигания светодиодом – все прошло успешно.
Дальше пошло обычное программирование. После этого я решил закрыть корпус, ведь вроде все работало. Закрыл, пытаюсь загрузить программу – ничего не выходит. Раскручиваю корпус, подключаю питание. Питающий светодиод на Arduino горит, но как-то слабо. Пытаюсь еще раз залить программу, ничего не выходит. После долгих поисков (основную мою работу никто не отменял), я нашел, что провода, которые подходят к основному блоку питания, натянулись и не обеспечивали надежный контакт на плате. По-простому говоря, я просто выдавил крышкой эти провода. После восстановления контакта (хорошо пропаял) и нормальной укладки провода, Ardiuno не заработала. Пришлось ее вытаскивать и подключать к макетке. Что я с ней только не делал, но оживить ее не смог. В итоге, просто взял новую Arduino.
Программирование продвигалось нормально до того момента, когда нужно было подключать RTC. Как я писал раньше, без ложки дегтя не обошлось. Заливаю стандартную программу опроса часов, а программа никаких данных не присылает. Что за фигня??? Начинаю пробовать все демонстрационные программы, которые идут в комплекте со средой разработки Arduino. В результате программа висит. Ладно. Загружаю программу сканер I2C. Она по-любому должна выдать два адреса, так как в шилде RTC на шине I2C висят часы DS3231 и память 24С32. И программа виснет на первом адресе. Опять разбираю свое устройство. На макетке подключаю Arduino к RTC, еще раз пробую заливать разные программы – результат нулевой. Начинаю экспериментировать с проводками I2C (SDA и SCL). При отключении провода SDA все программы начинают работать, но естественно, по шине ничего не предают. То ли я попалил шилд, когда Arduino питался от информационных цепей, то ли он был уже бракованный, я теперь не знаю. На тот момент я отложил устройство на неопределенный срок, так как в наличии свободного модуля RTC у меня не было, а заказанные уже давно три модуля RTC застряли между Китаем и Россией. Через недельку, когда прошли уже все разумные и не разумные сроки прихода посылки с тремя модулями RTC, я решил поковыряться в существующем RTC (все равно он нерабочий). Я подумал, что если не работает шина I2C, то, возможно, одно из устройств (память или часы) просто коротят SDA. И если это устройство выпаять, то другое должно заработать. По началу, решил выпаять память (она мне не нужна была). Шанс того, что шилд заработает, 50/50. Взял фен с тонкой насадкой, прогрел память и аккуратно пинцетом удалил микросхему.
Подключаю Arduino к RTC на макетке, заливаю программу сканер I2C – часы откликаются на адресе 0х68. Пробую задать время, часы нормально идут, без признаков отставания. Значит, во всем была виновата память 24С32.
Собираю все опять в корпус и начинаю писать основную программу таймера.
Вскоре была написана основная версия программы. Но в связи с тем, что процессы, которыми управляет таймер, слишком растянуты во времени, то и отладка программы заняла очень много времени.
Описание программы:
Вначале инициализирую массивы, в которые заношу время включения/выключения каналов, а также время работы диммеров. Для рабочих и выходных дней массивы разные.
В теле программы один раз в минуту текущее время сравнивается со временем из массивов. Происходит определение, к какому интервалу принадлежит текущее время, и в зависимости от этого интервала выполняется определенное действие (вкл/выкл основного канала освещения или диммера).
Информацию для отладки выводим в СОМ порт. Вот пример лога (здесь для отладки я использовал интервалы 5 минут, чтобы оценить, как будут переключаться каналы)

Немного пояснений. Вначале показываю время, потом номер интервала, следом состояние каналов.
Вроде, все написал, кроме испытаний в боевых условиях, то есть на аквариуме.
Для аквариума я взял две светодиодные ленты. Концы лент тщательно герметизировал с помощью термоусадки. Ленты прикрепил рядом с основными лампами, а провода аккуратно вывел в тумбочку под аквариумом.





На последней фотографии виден синий провод. Пока оставил его для программирования.
Первое включение было в 20:30 в воскресенье.
В 21:00 отработало переключение основных ламп на светодиодные ленты.
В 21:20 отработал первый диммер на выключение (лента плавно гасла в течение четырех минут).
Потом в 21:30 отработал второй диммер на выключение (вторая лента также гасла в течение четырех минут).

Вроде, программа отлично отработала, но не тут-то было. В понедельник утром в назначенное время 6:15 светодиодная лента не включилась. Отвел ребенка в школу и выяснил, что лента включилась в 8 часов и отработала программу за выходной день. После просмотра кода я понял, что когда задавал время, то выставил неправильный день недели. Плюс ко всему, жена раскритиковала расписание. Мои аргументы, что раньше в то же время включался свет в маленьком аквариуме, ее не убедили.
В итоге, пришлось корректировать расписание и задавать точное время. На раннее утро оставил всего одну светодиодную ленту. Вторая лента включается намного позже, а основной свет — в 9:00.

В принципе, это все, что хотел написать. Сначала планировал снять видео, но решил, что смотреть 4 минуты, как гаснет светодиодная лента, не слишком увлекательно :-).

Код программы выложил на Яндекс.диск.

Устройство отработало больше недели. Функционал устройства меня полностью устраивает. За время работы были отключения света в квартире, таймер отработал штатно по заданному алгоритму.
Плюсы и минусы, думаю, не стоит описывать, так объективно мне сложно дать оценку своему устройству.
Планирую купить +58 Добавить в избранное +70 +115
свернуть развернуть
Комментарии (45)
RSS
+
avatar
  • yalexey
  • 16 декабря 2013, 07:55
0
В этой тумбочке места выше крыши. можно было взять любую ардуину, не упираясь в размеры развести нормальную плату, да ещё поставить туда модуль WiFi, и пусть жена сама со смартфона задаёт любое время.
+
avatar
  • Bim_Sony
  • 16 декабря 2013, 08:10
+4
Можно конечно и умный дом собрать… :)
+
avatar
+1
Если мне не изменяет память, то плата arduino, на которую Вы ссылаетесь, как раз-таки arduino pro mini (http://arduino.cc/en/Main/ArduinoBoardProMini) или ее клон.
А Arduino nano (http://arduino.cc/en/Main/arduinoBoardNano) имеет на борту преобразователь USB-COM. И по стоимости pro mini + преобразователь примерно равны стоимости nano. По размерам mini, конечно, чуток поменьше.
+
avatar
  • Bim_Sony
  • 16 декабря 2013, 08:08
+1
Да. Попутал немного. Исправил в обзоре
+
avatar
  • nm11
  • 16 декабря 2013, 16:08
0
Великолепно просто шедевр, всегда читаю Ваш обзор с удовольствием, и жду нового с нетерпением.
Я как человек ленивый таки бы схему сделал проще, на unl2003 модуле
выходы можно параллельно включать получаем тот же 1а, и для реле даже диод не нужен.
спасибо за обзор, было интересно.
+
avatar
  • Baton72
  • 16 декабря 2013, 08:22
0
Великолепно! Всё облизываюсь на ардуины, парочка уже есть, один неудачный проект пока забросил, т.к. надо докупить некоторые компоненты, но вот самое главное, что меня мучает… Скажите, где надыбать такой корпус как у Вас?
+
avatar
  • Bim_Sony
  • 16 декабря 2013, 08:30
+1
Ключевые слова ABS Plastic Box
+
avatar
0
Можно подобрать что нибудь из российских TYCO
www.apiskomplekt.ru/katalog.php?lvl=21.3
искать в электротоварах.
+
avatar
  • spc
  • 16 декабря 2013, 09:25
+3
это же как повезло рыбам и домашним!
+
avatar
0
Отличный обзор-инструкция.
Сам недавно купил ардуинку и обвес разный, пока только светодиодами мигаю и сенсоры изучаю. надеюсь запала хватит на что то большее.
+
avatar
  • katran
  • 16 декабря 2013, 11:32
0
мне интересно
во сколько обошлась полная комплектация таймера? 1500… 2000р… или 3000р?
(конролеры — блоки питания — реле -программаторы — корпуса — платы)
.
что-то мне кажется что это просто хобби(когда на цену уже не смотрят главное сделать)
не о какой экономии тут нет и речи (если сравнить с заводским таймером)
.
собрал ты всё аккуратно что радует

P.S.S
я бы всёже добавил модуль контроля внешнего света…
чтобы освещение не включалось когда его достаточно

P.S.
светодиодные ленты в силиконе под крышкой аквариума очень быстро выходят из строя (расслаиваются)
+
avatar
  • Bim_Sony
  • 16 декабря 2013, 11:49
+1
Arduino — 3.69$
RTC DS3231 — 4.3$
LM2596 — 1.24$
корпус — около 10$
БП — 4,29$
провода, клеммы, транзисторы, платы, резисторы и т.д. — бесплатно :)

итого 23,5$ (примерно 750 руб.)

Что имеем в наличии:
— коробка, которая заменяет три таймера. по размерам коробка соизмерима с размерами заводского таймера.
— три канала управления. В теории можно расширить количество каналов.
— плавное включение и выключение каналов.

Можно ли купить три заводских таймера с похожими функциями за 24$ ???
Я свой старый таймер покупал за 13$
+
avatar
  • katran
  • 16 декабря 2013, 12:20
-1
провода, клеммы, транзисторы, платы, резисторы и т.д. — бесплатно :)
это хорошо что есть в заначке:)… но если нет… то
пара полевиков каждый по 140-270р
+ изготовление платы
и если не ошибся вы покупали два комплекта контролеров… что уже не 4$
плюс ещё преобразователь интерфейса… от 300р
.
от сюда следует что ну не как в 750р тут не впишешся :((
кстати заводские устройства что ты ранее использовал имеют графический дисплей и им не нужен ПК для смены программы
.
всёже считаю что это в даном случии хобби :)
обзор и описание процесса сборки и наладки конечно отличный !!
(кстати ты случаем ещё гдето на специлизированых форумах не пишешь про свои сборки устройств ?)

P.S.
я в своё время купил на скидках INTERSTEP SP 206 за 460р
(два независимых таймера + зарядка 5а\2А) очень удобно
(хотя он и дорогой если без скидок брать)
+
avatar
  • Bim_Sony
  • 16 декабря 2013, 12:40
+2
пара полевиков каждый по 140-270р
Откуда такая цена???
Взять ходовой IRFZ44 — 25 руб за штуку.
Изготовление платы: 60 руб. за хлорное железо, которое хватит на изготовление с сотню таких плат + 100 руб за кусок фольгированного текстолита, который в 2-3 раза превышает размеры плат.
Два комплекта контроллеров… да, моя вина, но опять же, у меня есть шанс восстановить сломанный. Друг выдвинул идею, что потерлись фьюзы. Нужен параллельный программатор, чтобы восстановить их. Если все сложится, то восстановлю ардуинку.
Преобразователь интерфейса стоит 4,42$ и к тому же, он не для этого проекта покупался.
отсюда следует, что ну не как в 750р тут не впишешся :((
Если покупать все с нуля, то думаю в 1000 руб. уложиться можно.
кстати заводские устройства, что ты ранее использовал имеют графический дисплей и им не нужен ПК для смены программы
Я писал в обзоре, что ввод программы, для таймера функция вторичная. Я практически уверен, что на 99% больше не буду менять программу в своем новом устройстве, как и не менял ее на прошлом заводском таймере (программировал один раз при запуске).
всё же считаю что это в данном случае хобби :)
А я и не говорил, что штампую подобные устройства для продажи :). Любые самоделки, это хобби. Просто у некоторых хобби — это поморгать светодиодом на ардуине и закинуть все это электронное барахло в ящик, другие находят более рациональное применение этим вещам.
+
avatar
  • Bim_Sony
  • 16 декабря 2013, 22:14
0
На других форумах я свои обзоры не публикую.
+
avatar
  • Aahz
  • 16 декабря 2013, 13:35
+1
Можно было немного сэкономить на регуляторе 12в -> 5в. В arduino mini pro Есть встроенный регулятор, на вход Raw можно подавать до 12в. И снять 5в с вывода VCC для часов (или с любого вывода, установленного в «1»)
+
avatar
  • Bim_Sony
  • 16 декабря 2013, 22:06
0
На ардуине стоит линейный стабилизатор. Если через него питать еще и часы, то будет греться. А нагрев мне в закрытом устройстве совершенно не нужен. Устройство работает круглосуточно, следовательно повышенные требования по температурному режиму в закрытом корпусе.
+
avatar
  • asdfzx
  • 16 декабря 2013, 15:00
+1
Чувак, я аплодирую стоя. Обзор эпичен. Хоть на хабар выноси…
Хоть и ни буя не понял, букафф многа.
Меня максимум на что хватило, так это дома редуктора на ГВС и ХВС дома запилить. (не электроника голая механика)
ЗЫ люто плюсую.
+
avatar
  • DSergio
  • 16 декабря 2013, 15:54
+7
+1 к геморрою с питанием. Все платы-дуино имеют встроенный стабилизатор — 12В можно спокойно подавать.
А еще можно вот такое оптоэлектронное реле применить, управляется логическими уровнями, токи сами выбирайте.
Транзисторы — для ленты вполне хватит IRLML2502, IRLML0030 — управляются логическими уровнями а токи тянут вполне нормальные, места занимают крайне мало.
И еще — появилась вот такая интересная ардуина Цены у китайцев на них очень вкусные :-)



Нужен параллельный программатор
Параллельный программатор не нужен. Нужен для начала стандартный последовательный программатор ISP, его можно сделать из модуля USB-COM если он собран на микросхеме FT232.
Вот статья easyelectronics.ru/skorostnoj-avr-usb-programmator-na-ft232rl-bez-vspomogatelnogo-kontrollera.html хотя, если фьюзы слетели начисто то да, нужен параллельный.
Ух, сколько написал… А хотел просто "+" поставить :-)
+
avatar
  • Bim_Sony
  • 16 декабря 2013, 22:01
+1
Последовательным пробовали, ардуинка не отвечает.
По поводу транзисторов и оптоэлектронного реле. Возможно они лучше, но я собирал из деталей, которые были в наличии, чтобы минимизировать свои затраты.
Ардуино понравилась, взял на заметку.
+
avatar
  • DSergio
  • 17 декабря 2013, 10:58
0
Не отвечает — понятно
Было бы интересно заменить всю подсветку в аквариуме вот на такие штуки тогда и яркость можно плавно регулировать и безопаснее, в виду отсутствия 220В и крышка аквариума легче будет.
+
avatar
  • Bim_Sony
  • 17 декабря 2013, 12:31
0
Эти ленты не ватерпроф. По яркости они наверно сопоставимы с люминесцентными, но вот растения от них скорее всего расти будут неохотно. У меня на прошлом аквариуме была светодиодная подсветка, растения росли очень медленно. На новом аквариуме стоят разные лампы. Одна розовая для растений, одна белая. Растения очень хорошо растут. За неделю приходиться обрезать излишки.
+
avatar
  • partyzan
  • 16 декабря 2013, 20:29
0
сделайте заголовок на русском.
спасибо.
+
avatar
  • Bim_Sony
  • 16 декабря 2013, 22:11
0
Заголовок относится к RTC. В начале обзора есть заголовок таймер, я подумал, что этого достаточно.
+
avatar
  • borec
  • 17 декабря 2013, 00:05
0
Отличный технический обзор. Нет, даже не обзор, скорее — статья.
Я только причины трудов этих не уловил:
Лампы в аквариуме светили слишком ярко. Для рыб и растений они, конечно, работали нормально, но аквариум находился в спальне (а стоит зима с поздними рассветами!) — свечение от ламп по утрам заливало комнату и мешало моим домочадцам наслаждаться объятиями Морфея.
Мои рыбы ложатся спать и встают вместе с хозяевами. Два раза в сутки щелкнуть выключателем — дело нехитрое. Что я делаю не так?
+
avatar
  • Bim_Sony
  • 17 декабря 2013, 06:15
0
Хозяин один в квартире живет?
Я же написал, что аквариум стоит в спальне. Я встаю рано, жена еще спит. Включать с утра основной свет аквариума, равносильно включить в спальне основное освещение.
Жена в дикретном отпуске, и ее подъем с утра зависит от того, как проснется ребенок. Перекладывать на нее обязанности включения света и кормление рыб я не хочу.
А если допустим задержаться в гостях, то кто у вас будет выключать свет в аквариуме?
+
avatar
  • borec
  • 18 декабря 2013, 00:14
0
С утра не кормлю. Свет в первой половине дня включаем только если совсем темно на улице.
Спать я ложусь несколько позже того времени, когда можно вернуться откуда-то, даже задержавшись. Рыбы привыкли уже. Более того, если ночью-вечером выключить свет в аквариуме, но оставить в комнате, они пытаются стенки аквариумные лбами вынести :) Что-то им не так в этом случае.
+
avatar
  • Bim_Sony
  • 18 декабря 2013, 06:40
0
Более того, если ночью-вечером выключить свет в аквариуме, но оставить в комнате, они пытаются стенки аквариумные лбами вынести :)
у меня мирные рыбки :).
+
avatar
  • borec
  • 19 декабря 2013, 00:47
0
Никогда не покупайте астронотусов :)
+
avatar
  • lv426
  • 17 декабря 2013, 07:48
+2
Отлично!!!
Из серии обзоров, которые почитаешь — поумнеешь.
Жаль только, что опусы в виде «купила труселя, фото на мне» у местной аудитории в большем почёте.
+
avatar
  • fairhyip
  • 17 декабря 2013, 12:30
+1
Отличный обзор, впрочем как и метеостанция.

Даешь автоматическую кормушку рыбок? ;-)
+
avatar
  • Bim_Sony
  • 17 декабря 2013, 12:36
0
Кормление рыб, также, как и наблюдение за рыбками мне доставляет удовольствие. А лишать себя удовольствия я не хочу :-)
+
avatar
  • fairhyip
  • 17 декабря 2013, 13:02
0
ну как же так…
А если допустим задержаться в гостях, то кто
или еще хуже — уехать в отпуск на неделю, то кто же будет их кормить? Просить соседа или родсвенника — не выход.
+
avatar
  • Bim_Sony
  • 17 декабря 2013, 22:23
0
Если задержался в гостях, то ничего страшного, если рыбы пропустят одно кормление. Если рыбы здоровые, то двое-трое суток спокойно протянут без кормления.
Если уезжать в отпуск, то все равно приходиться просить родственников присмотреть за кошкой, цветами и рыбками
+
avatar
  • Stich
  • 17 декабря 2013, 21:31
0
Респект за проделанную работу!!! Сам еще только хочу взяться за изучение Адруино.

Оффтоп
Есть задача сделать хронометраж для автосоревнований (автослалом, кольцевые гонки), с возможностью засекать два таймера с точностью до сотых долей секунды от двух пар фотоэелементов (либо ИК датчиков), с передачей результатов на компьютер. На чем лучше это все собрать? Достаточно ли самой платы, или дополнительные модули надо ставить? В общем буду признателен знающим людям чтобы направили в нужное русло.
+
avatar
  • Bim_Sony
  • 17 декабря 2013, 22:19
0
Где-то я видел подобный вопрос. Кажется на форуме arduino.ru.
+
avatar
  • Stich
  • 18 декабря 2013, 20:20
0
Видел я эту тему, никакой конкретики.
+
avatar
  • Stich
  • 18 декабря 2013, 20:22
0
А RTC DS3231 умеет отсчитывать сотые доли секунды? Везде в спецификациях указано: Часы реального времени, отсчитывающие секунды, минуты, часы, дни недели, дни месяца, месяц и год.
+
avatar
  • Bim_Sony
  • 19 декабря 2013, 07:06
0
А RTC DS3231 умеет отсчитывать сотые доли секунды?
эээ, вроде нет. Но у DS3231 есть выход опорной частоты 32к. Определенными командами можно устанавливать частоты 1Гц, 4096Гц, 8192Гц и 32768Гц.
Если этот вывод завести на прерывание и в обработчике прерывания считать импульсы, то можно достичь определенной точности.
Если выставить частоту 4096Гц и активировать выход 32к в момент старта, то точность отсчета можно достичь 1/4 мс (ваш диапазон перекрывается в 40 раз).
+
avatar
  • dkuznets
  • 21 декабря 2013, 12:15
0
А не проще (вернее, дешевле) было сваять таймер на той же самой ардуине? И так не шибко загружена. Даже если уйдет за месяц на несколько минут, рыбам на это… Да и Вам несущественно.
Кстати, разводку часов проверяли на соответствие рекомендациям Далласа? Мои (на DS1307) уходят на пару минут в месяц. Дешевый кварц, разводка, как мне удобнее… И вот результат.
+
avatar
  • Bim_Sony
  • 23 декабря 2013, 06:35
0
А не проще (вернее, дешевле) было сваять таймер на той же самой ардуине? И так не шибко загружена. Даже если уйдет за месяц на несколько минут, рыбам на это… Да и Вам несущественно.
Нет, не проще. По этой самой причине на компьютерных материнках тоже устанавливают RTC, с собственным кварцем. А вычислительная мощь компьютерных материнок, но несколько порядков выше ардуино. По простому говоря, если отключат питание и потом в произвольный момент его включат, то как ардуино узнает, какое текущее время???
Кстати, разводку часов проверяли на соответствие рекомендациям Далласа? Мои (на DS1307) уходят на пару минут в месяц. Дешевый кварц, разводка, как мне удобнее… И вот результат.
На модуле 1307, внешний кварц, там нет термостабилизации, отсюда такой результат. В микросхеме DS3231 кварц встроенный и термостабилизация присутствует, следовательно разводка платы, не сильно влияет на ход часов(я бы сказал, что совсем не влияет). За все время (чуть больше 2 недель) часы идут точно, ну может быть есть расхождение +0,5 сек. Если подсчитать, то часы за год будут иметь максимум расхождения 24 секунды. Меня такой параметр более чем устраивает.
+
avatar
  • pmg181
  • 14 марта 2021, 07:47
0
Доброго времени суток начал я отладку вашего кода для рассвета заката в курятник и обнаружил что таймер нельзя выставить больше 255 секунд, если его выставить больше то код его просчитывает меньше и меньше 255 в итоге я увеличил Sleep_D в 100 раз
+
avatar
  • Angbor
  • 29 октября 2015, 00:28
0
а подскажите пожалуйста, этот шилд подзаряжает аккумулятор, на котором работает?
например как на Tiny RTC I2C
+
avatar
  • pmg181
  • 10 декабря 2020, 16:06
0
Bim_Sony Подскажи пожалуйста что исправить в скетче в какой строке чтобы два канала ШИМ включались в 5,30 и выключались к примеру 21,30, и чтоб закат и рассвет длились полчаса а третий канал чтоб включался 6,00 выключался 21,00 хочу ваше изобретение в курятник приладить и чтоб каждый день недели так

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.