вторник, 6 ноября 2012 г.

Таймер для управления школьным звонком

Предыстория

Буквально в прошлом году мне пришлось перейти в другую школу, чтобы получать образование по специальности - информационные технологии же. Школа считается одной из лучших в районе, где дают подобное технарское образование. И для меня было внезапностью то, что звонки здесь управляются исключительно вручную, кнопкой на посту охраны. Наш физик рассказал мне, что в далёких 80-х в школе был некий Кулибин, который тоже задался этим вопросом и скреативил суровую механическую систему на базе стрелочных часов. Эта байда (сам видел, настенные часы, в которых, возможно, была кукушка, с металлическими насечками на циферблате), естественно, капитально отставала по времени, поэтому она осталась висеть в учительской как память о талантливом ученике, не проработав и месяца.

И я подумал, а почему мы не панки а почему бы не сделать то же самое, но в современном варианте, с низким энергопотреблением и симпатичным внешним видом, да ещё и более-менее надёжную? Тем более, что к тому времени я запасся некоторым количеством опыта в работе с микроконтроллерами, и хотелось попробовать себя в деле.

Под катом - картинки! А также ссылки на все возможные материалы, которые понадобятся при повторении конструкции.


Концепт

Посмотрев на то, какие системы предлагают специализированные предприятия, я, мягко говоря, ошалел. Внешне непритязательные коробочки содержат внутри себя довольно хитронавороченный комплекс, с управлением школьными настенными часами и синхронизацией времени всеми возможными способами - от радио до спутников. Ценник, разумеется, соответствующий - от 10 килорублей. "Нехило, но ведь можно сделать проще!" - сказал я, уже разрисовывая в голове план действий.

Основную логику управления можно реализовать на базе контроллера ATmega16 - там большего не потребуется, хотя при особом желании начинка поместилась бы и в ATmega8 (ниже объясню, почему именно 16). Часы - на базе DS1307, микросхемка не дефицитная и не очень навороченная, но нам хватит. Стабилизатор питания - импульсник, но мощности 7805 тоже хватит (но я стремился не экономить на энергопотреблении, а 7805 на высоких входных напряжениях при токе порядка 500 миллиампер ощутимо греется). Индикацию выведем на символьный дисплей (2 строки по 16 символов - за глаза хватит). Для управления цепью питания звонков (а именно, 220 переменных вольт при около 2 ампер индуктивной нагрузки) решил использовать симисторную сборку (хотя финальная версия ушла работать с релешкой внутри, там не сильно сложная модификация схемы). Симистор при необходимости протащить сквозь себя хоть 18 ампер переменного тока, так что его возможностей нам хватит за глаза. Последовательно ему поставим элементарный плавкий предохранитель (любую схему нужно беречь), а гальваническую развязку устроим оптосимистором. Для заливки расписания сделаем USB-UART, а ещё можно зашить бутлоадер в контроллер, тогда и прошивка таким же образом потечёт.

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

Реализация

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

Начнём с "сердца" системы - микроконтроллера.

 ATmega16


Сначала я хотел обойтись ATmega8, но в процессе планирования схемы понял, что выводов ей немного не хватает. Да и если вдруг захочется немного развернуться с прошивкой, то 8 килобайт может и не хватить, а вот на 16 я вряд ли сумею накодить, потому идеально.

В наших краях шестнадцатая мега в планарном TQFP-44 в розницу стоит около 70 рублей. Нормальненько, дайте две! (Если что, брал на Митинском радиорынке в PL-1 - он там на цокольном этаже). Но чтобы работать было проще и веселее (сначала собирал на макетке), то сделаю для неё breakout - то есть плату с ножками, ведущими к чипу. Заодно и кварц разведу на этой плате.
Вроде ничего, две перемычки кинуть - не великая проблема. ЛУТом делается, правда, для не-джедаев придётся заготовить иголку - местами зазоры между дорогами маловаты и их может слепить. Кварц напаивать на "брюхо" - под плату. Дорожки смотрят вверх, ноги по периметру смотрят вниз. Здесь уже и внешняя подтяжка RESET, и кондёр на питание.

Кстати, эту плату можно использовать и в других поделиях при особом желании, хотя она полна несовершенств. Например, одну дорожку пришлось кидать через ногу контроллера (PB4, прямо рядом с маркером на микросхеме).

Ссылки на проект в Eagle я приведу в конце.

Дисплей


Вот в этом месте можно было бы дать волю своей фантазии... Но я решил, что раз уж дело идёт за красивость, налеплю туда OLED-дисплей от Winstar (конкретно WEH001602AWPP5N00000). Есть в ТерраЭлектронике, за скромные 450 рублей (хотя это и дороговато). Внутри контроллер, похожий на HD44780, но даташитик лучше полистать отдельный, там есть неувязки. Да, этот дисплей имеет несколько нестандартные размеры платы, и плата "Звонка", разумеется, заточена под него. Так что если кто-нибудь поможет с альтернативной разводкой - буду очень рад. :)

Клавиатура


Состоит из двух отдельных платок, одна проще другой. Первая плата - основной клавиатуры, на ней 4 кнопки размера 12х12 мм (высоту брал 10 мм) и резисторы подтяжки.
На контактную группу я решил напаять штыри (дорожки вверх, штыри вниз), а ответный разъём сделал на материнской плате.

Да, здесь есть замечание. Для винтового крепления я не успел найти места, поэтому энтузиастам предлагаю решить этот квест :) А так, к нижней стороне текстолита на термоклей посадить два винта длиной пол-дюйма (около 13 мм) таким образом, чтобы они не касались контактов элементов на основной плате - и всё отлично! Я по крайней мере так и поступил (а выхода не было, на следующий день - сдача, а про клавиатуру при проектировании я и забыл).

Вторая плата - всего под одну такую же кнопку, для кнопки "Тест" (ручного запуска звонка).
Здесь на один набор контактов надо напаять кнопку, а на другой - высокие штыри (так, чтобы плата с кнопкой была на уровне дисплея), лишние части штырей аккуратно откусить.

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

Основная плата устройства


Вот здесь некоторые радиолюбители могут найти неприятные для себя сюрпризы...
Шесть перемычек, которые я кидал проводками типа МГТФ (желательно две длинных сделать с изоляцией). Три светодиода (два информационных, третий - индикатор неверной полярности), схема стабилизатора питания с защитой от переполюсовки, батарейный отсек для часов реального времени, буззер, а также симисторная сборка для управления линией. Если вдруг она не заработает и вы, подобно мне, бросите эту затею, тогда можно выпаять всё, кроме предохранителя, вместо оптопары повесить КТ315 (базу на провод, идущий от контроллера, эмиттер на землю, а коллектор - к катушке реле, питание для неё можно взять с проводка под корпусом оптопары). Катушку реле не забываем шунтить диодом (прямо к выводам катушки, катод диода - к плюсу питания).

Теперь о кошмарах. Схема USB-UART не требует особой обвязки, но сделана на микросхеме CP2102 (одна из самых дешёвых микросхем-конвертеров), которая существует в природе только в безвыводном варианте. На самом деле не страшно, нужно просто хорошенько облудить все контакты и поджарить феном (если фена нет, то были MadSkillz по запаиванию этой микрухи турбозажигалкой, хотя гуманный и рабочий вариант - делать это паяльником, я пробовал - выходит). На первой версии платы я перепутал D+ и D-, здесь вроде бы всё поправил.

Схема питания сделана на MC34063 - ШИМ-регулятор. Для него нужно будет обзавестись катушкой индуктивности на 330 мкГн (стоить будет готовая около 30 рублей) и диодом Шоттки (1N5819). Хотя в своё время я закупил партию этих диодов и пихаю их везде, где нужно вставлять обычные диоды - эти и пошустрее, и падение напряжения на них меньше. Да, ещё в этой схеме предусмотрен самовосстанавливающийся предохранитель на питание (на всякий пожарный случай :) ), на схеме он R1. Вообще на его место можно влепить перемычку, но если есть возможность, то лучше защититься.

Часы реального времени DS1307 находятся рядом с крайней левой длинной перемычкой, левее. Тоже планарный корпус, но с выводами, паяется легче, чем атмега. Кварц на 32 кГц не требует конденсаторов, но его корпус нужно припаять к земляному полигону! Это важно, без этого микросхема не затикает.

Модуль с ATmega16 я сначала хотел установить в разъём, но он слишком высоко стоял и мешал дисплею, поэтому я полностью погрузил его в дырки на плате и не пожалел. Так даже надёжней. Модуль вставлять так, чтобы микроконтроллер смотрел на светодиоды, а кварц - на кнопку ресета (то есть конденсатором питания вверх). Но сначала рекумендую прошить бутлоадер в контроллер.

Питается схема от обычного универсального блока питания на 500 миллиампер постоянного тока без стабилизации (разъём Power Jack 5mm, в комплекте практически у всех универсальников), напряжением от 7 до 15 вольт (это то, что я проверил, при более низком могут возникнуть глюки по голодухе, при более высоком - сдохнуть конденсатор в цепи питания). Оптимально - 9 или 12 вольт. Плюс идёт на штырь, как положено. Если спутаете полярность - загорится индикатор, но схеме ничего не будет, так что не бойтесь :) (Это если вы всё правильно сделали!)

Корпус


Корпус для устройства не самый дефицитный, Gainta G738. На Митинском радиорынке видел минимум в двух ларьках в огромном количестве. 

Сама плата вполне замечательно располагается на 4 винтовых креплениях, привинчиваемых к соответственным ножкам внутри корпуса (я даже немного приподнял плату на гайках над поверхностью пластика, для аккуратности). Винты M3, длина около 13 мм (полдюйма).

На лицевой панели понадобится вырезать прямоугольник под дисплей (учиться резать дома - у тов. DI HALT на этой странице), 5 отверстий под кнопки и 2 под светодиоды. (чертёж в SVG прилагается). На нижней крышке нужно будет вырезать отверстия под разъёмы и для светодиода-индикатора неверной полярности (чертежа пока не дам, но там не очень сложно).

В целом, все сложные моменты работы с железом я осветил. Остальные вопросы прошу задавать в комментариях к статье.

Теперь о логике работы.

Прошивка контроллера


О структуре прошивки можно писать отдельную статью :) Хотя, в общих чертах, там работает флаговый автомат с псевдо-парралельностью, несколько задачек. Расписание берётся из EEPROM.

Прошивку контроллера я приложил внизу (формат Intel HEX).

ВАЖНО! Сначала (до запайки в схему модуля) микроконтроллер нужно прошить бутлоадером AVR109 (приложил в комплекте внизу, уже настроенный). Через бутлоадер происходит загрузка расписаний, а также обновление прошивки. Затем модуль впаивается в плату и оттуда уже прошивается через USB-UART (avrdude точно умеет работать с этим бутлоадером, указываете программатор avr109 (не путать с avr910) и порт, по которому у вас определился "Звонок"). Схема от USB не питается! Я уже сталкивался с проблемами раздельного питания и не хочу их повторять. Тогда у меня сгорели часы реального времени прямо перед презентацией устройства.

Для Windows потребуются драйверы (лежат в архиве с программами для "Звонка").

Инструкция по эксплуатации в человеко-читаемом виде тоже прилагается. Составлять расписание - задача весёлая, во вложениях есть архив с программами для "Звонка", там внутри я подробно расписал README - разобраться, надеюсь, будет не очень трудно. Кстати, в этом комплекте я вложил bat-скрипты для обновления прошивки и установки драйверов, они несложные, если что, помогу.

Напоследок - фотография готового устройства. Фотографий начинки не дам, так как сделать их не успел до сдачи устройства :(


Очень важный постскрптум!

Один я вряд ли справился с этой кучей работы полностью. Хочу сказать огромное спасибо DI HALT (автору сайта EasyElectronics), по вашим статьям я очень многому научился! Так что в том, что это устройство работает, есть и ваша заслуга.

За снабжение деталями благодарю магазины ТерраЭлектроника, ТЭКОМ-Кварц (вы спасли меня с реле и блоком питания); PL-1, ROM Store и Неоконнект (последние три живут на Митинском радиорынке).

Пост-постскриптум

Все исходные сведения об устройстве распространяются свободно согласно принципам Open Source Hardware Association - ассоциации открытого технического обеспечения. Я не гарантирую, что в Вашем случае устройство заработает сразу после сборки, но готов помочь по мере своих сил и здравого смысла.

 

Приложенные файлы

6 комментариев:

  1. Ну и отлично. Рад был помочь.

    ОтветитьУдалить
  2. Очень полезная статья. Но, к сожалению, архив недоступен.

    ОтветитьУдалить
  3. Здравствуйте!Очень полезная статья.Не могли бы вы перезалить на файлообменник фалы,если они у вас еще остались?

    ОтветитьУдалить
    Ответы
    1. Доброго времени,
      Обновил ссылку в статье.

      Удалить
  4. BETBLING OFFERS & BONUS CODES FOR MATCHES - Vie Casino dafabet link dafabet link m88 m88 5354The best poker hand combinations for vintagroup.com

    ОтветитьУдалить
  5. The Real Reason Why Betway Casino Review Is Rated as
    The reason 보령 출장안마 is 전라남도 출장마사지 because it has the lowest deposit and highest withdrawal limits. The online sportsbook 논산 출장안마 also 제주 출장마사지 offers live betting, live betting, 의왕 출장마사지

    ОтветитьУдалить