Кодовый замок на arduino

UART и ISP

Для подключения прошиваторов к голому чипу нам нужно будет изучить распиновку (pinout) на нужный микроконтроллер. Распиновки бывают цветные и красивые (часто с ошибками), а бывают более серьёзные и правильные. Лучше всего открыть даташит на нужный МК и на второй же странице найти 100% правильную распиновку. Например для ATmega328, ATtiny85 и ATtiny13:

На данных “схемах” подписаны все функции пинов МК. Чтобы загрузить прошивку через USB-TTL, то есть при помощи “живущего в памяти” загрузчика (bootloader), МК должен иметь на борту аппаратный UART, то есть пины RX и TX. Если таких пинов нет – прошивку можно загрузить только через ISP программатор. Вы спросите, а как же Digispark? Там стоит МК ATtiny85, у которого нет UART, но прошивка загружается через USB! Верно, но там хитрые разработчики сделали не менее хитрый загрузчик, который имитирует USB, и прошивка на Digispark загружается при помощи специальной программы, которая запускается в фоне, когда вы нажимаете кнопку “Загрузить” в Arduino IDE. Резюмируя для общего случая:

  • Если в МК прошит загрузчик (bootloader) и на борту имеется аппаратный UART (пины RX TX), прошивку можно загрузить через USB-TTL “загружатор”, также через него можно заниматься отладкой кода при помощи Serial.
  • Если в МК нет пинов RX TX, значит прошивку можно загрузить только при помощи ISP программатора, да и о загрузчике в целом можно забыть, не нужен он. Отладкой всё ещё можно пользоваться, подключив USB-TTL и подняв на МК “программный” UART. Например в ядре для ATtiny85 (об этом ниже) уже идёт встроенный SoftwareSerial и можно им пользоваться.

Работа с голым камнем, ATtiny

Внимание! Данный урок опирается на информацию из предыдущего урока о программаторах. Обязательно изучите сначала его

В прошлом уроке я рассказывал о том, как загрузить прошивку в Ардуино, используя внешние устройства: USB-TTL преобразователь и ISP программатор. Как нетрудно догадаться, при помощи этих же инструментов можно загрузить прошивку и в голый чип, будь то ATmega328 или ATtiny85. МК серии ATtiny являются младшими братьями АТмег, у них меньше ног, меньше памяти, меньше интерфейсов и таймеров, но зато они дешевле и хорошо подходят для мелких проектов. Давайте сравним несколько популярных МК:

МК/spec ATmega328 ATtiny85 ATtiny13
Flash 32k 8k 1k
SRAM 2k 512b 64b
EEPROM 1k 512b 64b
Цифр. Ног 23 6 6
Аналог. Ног 8 4 4
Таймеры 3 2 1
SPI + +
UART +
I2C + +
Цена 95р 70р 20р

Примечание: большинство функций объединены на одних и тех же пинах. Как вы можете видеть, чем дешевле МК, тем меньше у него возможностей. Полное подробное сравнение можно глянуть здесь.

Схема кодовой кнопки на Attiny

Пару слов про резистор на выходе микроконтроллера. Используемое реле может потреблять менее 20 мА (чем выше напряжение, тем ниже будет ток удержания катушки), что при усилении тока около 200 дает около 0,1 мА базового тока. Когда выходной сигнал от платы составляет около 5 В, а падение на переходе база-эмиттер составляет около 0,7 В, базовый резистор может иметь значение 4,3 В / 0,1 мА или 43 кОм. Любое меньшее значение гарантирует полное насыщение в этом диапазоне. Так что 4,7 кОм уже даст полное насыщение.

Написана программа в BASCOM и после компиляции она занимает ровно 1024 байта. Bin файл для программирования во вложении. Тактовая частота 1,2 МГц. Работа кнопки шифрования несколько напоминает код Морзе, когда код короткий и длинный нажимается в нужное время. Всего у нас 256 комбинаций. Это может быть немного, но вряд ли кто захочет тратить столько времени на перебор ввода кода (надо ещё знать что вообще требуется сделать). После включения питания в течение 1,5 секунд схема выполняет внутреннюю очистку и готова к работе.

Необходимые компоненты

  1. Модуль клавиатуры (матричная клавишная панель).
  2. Макетная плата.
  3. Источник питания.
  4. Соединительные провода.

В представленном проекте мы будем использовать технологию мультиплексирования для подключения клавиатуры (с помощью которой и будет вводиться пароль) к плате Arduino Uno. Мы будем использовать клавиатуру 4х4 которая содержит 16 кнопок (клавиш). В обычном режиме для подключения 16 кнопок к плате Arduino нам бы понадобилось 16 контактов, но с использованием технологии мультиплексирования нам будет достаточно 8 контактов для подключения 16 кнопок. Более подробно об этом можно прочитать в статье про подключение клавишной панели к Arduino.

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

Теперь о конструкции замка

   Схема простейшая, испытанная, работает она уже полтора года без проблем, в условиях жары и холода. И самое главное, проста в повторении! Покупаешь радиодетали, плату можно использовать монтажную.

   В качестве привода для замка, применил простой автомобильный электропривод (актуатор). В комплект идут и крепления – металлические полоски, которые нужно переделать, так как видно на фотографиях. Все зависит от того, какой замок применяется для переделки. Можно ставить готовую электрозащелку фирмы FASS LOCK Itemno:2369 (8-12V,12W). В таком случае меняется емкость конденсатора С1, так чтобы получить временную задержку таймера в 0,5-1с.

Схема устройства

Схема устройства представлена на следующем рисунке и содержит в своем составе Arduino, модуль клавиатуры, буззер (звонок) и ЖК дисплей. Плата Arduino управляет всеми процессами работы схемы: считывание пароля с модуля клавиатуры, сравнение паролей, включение/выключение буззера и передача статуса на ЖК дсиплей. Клавиатура используется для ввода пароля. Буззер используется для индикации, а ЖК дисплей используется для отображения статуса операции и различных сообщений. Буззер управляется с помощью NPN транзистора.

Столбцы модуля клавиатуры непосредственно подключены к контактам 4, 5, 6, 7, а строки – к контактам 3, 2, 1, 0 платы arduino uno. ЖК дисплей подключен к плате Arduino в 4-битном режиме. Управляющие контакты RS, RW и En подключены к контактам Arduino 13, GND и 12. Контакты данных ЖК дисплея D4-D7 подключены к контактам 11, 10, 9 и 8 arduino. Буззер подключен к контакту 14(A1) arduino с помощью NPN транзистора BC547.

Специальное замечание

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

Разрешающая способность частотомера проверялась изменением в небольших пределах температуры термостата с кварцем, принятым за эталон. Однозначно фиксировалось изменение частоты при изменении температуры на градус. Получилось среднее значение в районе 2-3 ppm/°C. В целом разрешающая способность близка к аппаратной ошибке ±2/5 Гц на частотах 70/100 МГц.

Частотомер обеспечивает измерение частоты сигналов с логическими уровнями на частотах от 0 до 70/100 МГц с точностью ±2/5 Гц. Работоспособность сохраняется до частоты 125 МГц.

Напряжение питания +5 В. Ток потребления (средний/макс.) – 55/130 мА.

Режим включено

Выключение выполняется кратким нажатием кнопки (она не будет реагировать в течение длительного времени). В этом режиме также возможна любая конфигурация кнопки:

  • удерживаем кнопку в течение от 2 до 3,5 секунды – одноразовый запрос кода, при условии что вы переключаетесь в режим OFF. Затем зеленый светодиод мигает каждые 0,5 с (момент входа в эту функцию невидим). Теперь, если не введем код, то не выключим устройство.
  • удерживая кнопку в течение от 4 до 5,5 секунды – отключение запроса кода. Кнопка тогда работает как обычная кнопка (без кода). Система включается или выключается коротким нажатием кнопки в течение длительного времени (без реакции). Режим активен до тех пор, пока кнопка снова не будет удерживаться во включенном режиме в течение от 4 до 5,5 секунды или до тех пор, пока питание не будет отключено (момент входа в эту функцию невидим).
  • [C} удерживая кнопку в течение 6 секунд – ввод для изменения кода. По истечении этого времени зеленый светодиод начинает быстро мигать каждые 75 мс и мигает до тех пор, пока вы не закроете опцию изменения кода.

Процедура изменения кода следующая: вводим новый код со временем для кнопки, о которой написано ранее. После входа в последнее восьмое состояние, нажмите кнопку еще раз и удерживайте в течение 6 секунд, пока светодиод не перестанет мигать. Время паузы от ввода кода до подтверждения не может превышать 1,5 секунды – по истечении этого времени схема автоматически выйдет из режима изменения кода без его изменения. Вы также можете выйти из этого режима удерживая кнопку в течение 6 секунд после ввода неполного кода (программа проверяет, было ли 8 символов). Введенный код сохраняется в памяти EEPROM, поэтому после выключения устройства и его повторного включения он будет по-прежнему действителен.

Что произойдет если забудем код? Просто отключаем источник питания, снова удерживая кнопку, включаем его и у нас есть временный код «00000000» – в памяти EEPROM, однако лучше сразу войти в режим ON и изменить его на более сложный.

На рисунке изображен прототип на макетной плате. Готовое устройство спаяно в версии SMD.

Детали и конструкция

Конструкция панели управления замка может быть произвольной, но при этом должна защищать кнопки и светодиоды от возможных механических повреждений и отвечать требованиям эргономики. Оптимальное расстояние между кнопками — 40…60 мм.

Светодиоды целесообразно располагать на расстоянии 30…40 мм над кнопками. Кнопки не должны выступать над поверхностью панели управления, а светодиоды следует поместить как можно дальше (глубже) от внешней поверхности, чтобы световой поток от них проходил через узкие каналы коллиматоров (отверстия диаметром не более 1… 1,5 мм и глубиной не менее 5 мм) и не рассеивался во все стороны.

Ещё лучше сделать канал коллиматора в виде конусного отверстия с углом раскрытия 10… 15°. Яркость светодиодов должна быть минимально достаточной для уверенной идентификации при любых условиях внешней освещённости. Регулируют яркость подбором резисторов R4 и R5.

Если первоначальное программирование микроконтроллера будет производиться непосредственно на собранном устройстве (внутрисистемное программирование), на плате следует предусмотреть пятиконтактный разъём для подключения программатора. На схеме этот разъём обозначен XS1.

Из-за невысокой нагрузочной способности выходов некоторых программаторов программирование рекомендуется выполнять при выпаянных светодиодах и резисторе R6.

При первоначальном программировании микроконтроллера в его EEPROM записывается тестовый трёхразрядный код «1 — 1 — 1», который затем пользователь может заменить на любой другой. Максимальная длина пользовательского кода — восемь разрядов, что, как правило, является избыточным.

В микроконтроллере задействован сторожевой таймер WDT, который автоматически перезагрузит устройство в случае его «зависания» по какой-либо причине.

Поскольку схема устройства очень простая и для её реализации можно применить детали различных типоразмеров, чертёж печатной платы не приводится. Её сможет самостоятельно «развести» под свои детали даже начинающий радиолюбитель.

Программа написана в графической среде Algorithm Builder, которую можно скачать по адресу www.algrom.net . Там же можно найти схемы простых программаторов для микроконтроллеров Atmel.

Программа и hex-файлы для прошивки микроконтроллера: Скачать

И. КАРПУНИН, г. Нижний Тагил Свердловской обл. Р-12-2016.

Программирование

Итак, что же даёт нам ядро помимо выбора настроек МК? Можно программировать МК всё теми же командами, что и раньше! Мигать светодиодами через digitalWrite, измерять напряжение через analogRead и прочее прочее. Давайте напишем классический Blink:

void setup() {
  pinMode(PB3, OUTPUT);
}

void loop() {
  digitalWrite(PB3, HIGH);
  delay(500);
  digitalWrite(PB3, LOW);
  delay(500);
}

PB3 – это номер пина, прямо как на распиновке. Всё! Осталось загрузить прошивку. Для этого нажимаем Скетч/Загрузить через программатор:   Я подключил светодиод через резистор на 220 Ом и он мигает два раза в секунду, всё как написано.   Что следует помнить при работе с тиньками: у них мало памяти, а все вот эти Ардуино-функции являются кошмаром индуса и занимают очень много места в памяти. Если тини85 ещё как-то переживёт такие издевательства и сможет уместить в себе вполне интересный проект из Ардуино-функций, то в тини13 уже сложно уместить что-то серьёзное. Напомню: всего 64 байта оперативной памяти и 1 кб флэша!

Важный момент по работе с ядрами для других МК, у которых больше 8 ног. Для сохранения удобства работы с IO функциями ядра (digital/analog/Read/Write) к пину можно обращаться как PIN_ + имя_ноги на распиновке, например подадим высокий сигнал на пин PC3: . Все остальные нюансы расписаны на странице ядер по ссылкам выше.

Я думаю вы поняли, что в целом работа с голыми МК не особо то и отличается от работы с обычной платой Arduino, и теперь можно переходить к сложным самоделкам на базе своей платы, в центре которой будет стоять микроконтроллер. Давайте поделюсь парой советов по минимальной обвязке.

“Загрузить через программатор”

Одноимённый пункт в меню “Скетч” в Arduino IDE загружает скетч через выбранный программатор, а также затирает загрузчик! Если в проекте было решено использовать загрузчик – не используйте загрузку через программатор после его прошивки!

Программирование

Итак, что же даёт нам ядро помимо выбора настроек МК? Можно программировать МК всё теми же командами, что и раньше! Мигать светодиодами через digitalWrite, измерять напряжение через analogRead и прочее прочее. Давайте напишем классический Blink:

PB3 – это номер пина, прямо как на распиновке. Всё! Осталось загрузить прошивку. Для этого нажимаем Скетч/Загрузить через программатор:

Важный момент по работе с ядрами для других МК, у которых больше 8 ног. Для сохранения удобства работы с IO функциями ядра (digital/analog/Read/Write) к пину можно обращаться как PIN_ + имя_ноги на распиновке, например подадим высокий сигнал на пин PC3: digitalWrite(PIN_PC3, HIGH); . Все остальные нюансы расписаны на странице ядер по ссылкам выше.

Я думаю вы поняли, что в целом работа с голыми МК не особо то и отличается от работы с обычной платой Arduino, и теперь можно переходить к сложным самоделкам на базе своей платы, в центре которой будет стоять микроконтроллер. Давайте поделюсь парой советов по минимальной обвязке.

“Загрузить через программатор”

Одноимённый пункт в меню “Скетч” в Arduino IDE загружает скетч через выбранный программатор, а также затирает загрузчик! Если в проекте было решено использовать загрузчик – не используйте загрузку через программатор после его прошивки!

Подключение программатора

Программатор, или Ардуину в качестве программатора, подключить очень просто. Смотрим распиновку и подключаем:

  • Шину ISP: пины MOSI, MISO и SCK. Они есть на всех МК
  • Сброс RST
  • Землю GND. Любую из имеющихся, они соединены внутри МК
  • Если МК не питается от своего источника, подключаем заодно VCC

Например ATmega328p подключаем к USB ASP (обсуждали в прошлом уроке) 6-пин вот так:


Примечание: да, другие компоненты не нужны. Новый (из магазина) МК тактируется от внутреннего генератора на 8 МГц и может без проблем прошиваться прямо так как на схеме выше.
Примечание: конденсатор нужен обязательно!

Практические результаты

Макет частотомера (Рисунок 2) строился на микросхемах CD74HC393E, CD74HC4053E и без замечаний работает на частоте 70 МГц. Также испытывался счетчик LV393, но с ним выше 125 МГц проверка не проводилась. Программный предел для входной частоты – 150-160 МГц. Замена серии HC на LV в коммутаторе ощутимого улучшения характеристик не выявила, разве что на частоте 125 МГц субъективно на несколько единиц счета уменьшилась разница между минимальным и максимальным показаниями.

Рисунок 2.

Поскольку источник эталонной частоты отсутствовал, настройка и проверка характеристик частотомера проводилась с набором серийных кварцевых генераторов, на технические параметры которых однозначно указывала маркировка. Таких оказалось четыре: 5, 30, 70, 100 МГц (частоты округлены). Вначале под каждый кварц подбиралось значение константы Dadd, чтобы показания частотомера соответствовали маркировке. В дальнейшей работе использовалось среднее значение Dadd, и все кварцы уложились в допустимое паспортное отклонение от центральной частоты (не более ±100 ppm). Наиболее близкими к среднему оказались настройки под кварц 70 МГц, который был принят за эталон. Далее каждый кварц термостатировался и фиксировалось максимальное отклонение показаний. После этого этапа работы с кварцами 5 и 30 МГц прекратились, потому что ошибка лежала в пределах ±1 ед.счета в течение достаточно длительного времени. Частота 100 МГц отображалась с максимальной ошибкой ±5 ед.

Устройство приемника

Приемник также как и передатчик построен на Attiny2313A с тактовой частотой 1 МГц от внутреннего RC осциллятора.

В качестве ИК-датчика применен фотоприемник TSOP1736 (TSOP4836, TSOP31236, SFH5110-36, OSRB38C9BA, OSRB38C9AA, TSOP4838, TSOP34838, SFH5110-38). Приемник предназначен для работы на частоте от 36…38 кГц.

Встроенный приемник получает, усиливает и демодулирует инфракрасный сигнал. Он имеет встроенную автоматическую регулировку усиления (АРУ), подавление помех от дневного света, полосовой фильтр, демодулятор и выходной сигнал, согласованный с уровнями TTL. Все вышеизложенное обеспечивается при длиннее световой волны в районе 940-950 нм, поэтому длинна волны, передающего светодиода должна соответствовать данной величине.

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

Тестер транзисторов / ESR-метр / генератор
Многофункциональный прибор для проверки транзисторов, диодов, тиристоров…

Подробнее

Для коммутации нагрузкой выходы приемника модно подключить по следующей схеме:

Реле можно применить на 5 вольт с контактами, выдерживающими ток потребления нагрузки. Питание приемника осуществляется от стабилизированного источника питания на 5 вольт, построенного на стабилизаторе 78L05 или 7805.

Запрограммировать микроконтроллер можно USB программатором.

Фьюзы передатчика:

Фьюзы приемника:

Скачать прошивку (1,0 MiB, скачано: 3 124)

www.danyk.cz

Блок питания 0…30В/3A
Набор для сборки регулируемого блока питания…

Подробнее

Версии микроконтроллеров AVR

После обозначения базовой версии микроконтроллера идет обозначение версии микроконтроллера — от одной до трех цифр, и еще в конце может быть буква. Цифры обозначают объем встроенной памяти программ и модификацию микроконтроллера.К примеру:ATmega8 — объем памяти программ — 8 килобайтATmega32 — объем памяти программ — 32 килобайтATmega168 — объем памяти программ — 16 килобайт, модификация 8ATtiny45 — объем памяти программ — 4 килобайт, модификация 5ATtiny861 — объем памяти программ — 8 килобайт, модификация 61

Буква после цифр указывает на параметры питающего напряжения и потребляемой мощности микроконтроллера.Буквы в конце цифр обозначают:Нет буквы — напряжение питания микроконтроллера скорее всего находится в пределах 4,5 — 5,5 вольтL — версии контроллеров, работающих на пониженном (Low) напряжении питания (2,7 — 5,5 вольт)V — версии контроллеров, работающих на низком напряжении питания (1,8 — 5,5 вольт)U — версии контроллеров, работающих на сверхнизком напряжении питания (0,7 — 5,5 вольт)P — малопотребляющие версии (до 100 нА в режиме Power-down)A — уменьшен ток потребления, перекрывается весь диапазон тактовых частот всех версий, напряжение питания 1,8 — 5,5 вольт (также, в некоторых моделях, добавлены новые возможности и новые регистры, но сохранена полная совместимость с предыдущими версиями). Микроконтроллеры «А» и «не-А» обычно имеют одинаковую сигнатуру, что вызывает некоторые трудности, так как Fuse-bit’ы отличаются.К примеру:ATmega8 — объем памяти программ — 8 килобайт, напряжение питания — 4,5 — 5,5 вольтATmega8L — объем памяти программ — 8 килобайт, напряжение питания — 2,7 — 5,5 вольтATtiny43U — объем памяти — 4 килобайта, модификация — 3, напряжение питания — 0,7 — 5,5 вольтATtiny44А — объем памяти — 4 килобайта, модификация — 4, уменьшенный ток потребления, напряжение питания 1,8 — 5,5 вольт

При этом надо учитывать, что микроконтроллер без буквы в обозначении может иметь пониженное напряжение питания (1,7 или 1,8 вольт), надо проверять по даташиту, к примеру:ATtiny841 — объем памяти — 8 килобайта, модификация — 41, напряжение питания — 1,7 — 5,5 вольтATtiny48 — объем памяти — 4 килобайта, модификация — 8, напряжение питания — 1,8 — 5,5 вольт

УСТРОЙСТВО СВЕТОВЫХ ЭФФЕКТОВ

Рейтинг:  5 / 5

Подробности
Категория: схемы на ATtiny
Опубликовано: 08.04.2017 11:19
Просмотров: 4095

В статье представлен вариант устройства световых эффектов на базе микроконтроллера AVR. Устройство позволяет реализовать 16 различных световых эффектов с заданием скорости переключения индикаторов в гирляндах. Устройства, создающие световые эффекты, пользуются неизменной популярностью на различных массовых мероприятиях. Применение в них микроконтроллеров позволяет значительно увеличить их функциональные возможности по сравнению с аналогичными устройствами, выполненными на цифровых логических микросхемах. Количество реализуемых разнообразных световых эффектов ограничивается лишь фантазией разработчика и памятью программ микроконтроллера. Причем, что число исполняемых функций, а так же параметры и количество световых эффектов устройства можно изменить, под каждый конкретный случай, изменив фактически только программное обеспечение, как правило, при минимальных доработках в аппаратной части. Это очень удобно, когда для изменения сценария световой иллюминации достаточно «на ходу» изменить только программное обеспечение. При желании это можно сделать даже во время мероприятия. Для этого нужно только перепрограммировать микроконтроллер или заменить его с новой зашитой программой.

Кодовый замок на микроконтроллере

Статьи » Микроконтроллеры (разное) » Кодовый замок на микроконтроллере

Основа замка микроконтроллер PIC16F628А, после подачи питания программа микроконтроллера настраивает порты а так же отключает  источник образцового напряжения,  модуль ШИ захвата сравнения, таймеры, компараторы и аппаратный USART – эти модули не нужны для работы замка. Затем начинается опрос клавиатуры, которая состоит из двух частей. Первая SB3-SB14 – находятся снаружи помещения, SB1 SB2 и выключатель SA1 – расположены внутри помещения. Кнопки SB3-SB13 первой части клавиатуры объединены в матрицу.

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

Кнопка SB1 – ОТКРЫТЬ установлена внутри помещения около двери. Нажатием на нее можно открыть дверь изнутри, не набирая кода. SB2 – кнопка перезапуска программы, SB2 и SB14 включены параллельно.

Кнопкам матрицы присвоены обозначения SB3 – 1, SB4 -4, SB5-7, SB6 – ОТКРЫТЬ, SB7- 2, SB8 – 5 , SB9 – 8 , SB10- 0 , SB11 – 3, SB12 – 6, SB13 – 9. Тумблером SA1 выбирают режим закрывания замка. Код вводят поочередным нажатием на цифровые кнопки.

В подтверждение нажатия звучит звуковой сигнал (HA1 управляемый VT2).

Когда контакты SA1 разомкнуты электромагнит закроет замок через определенное время( по умолчанию 12с). Это время устанавливается при программировании микроконтроллера.

( ячейка памяти  с адресом 0*06 – (седьмая по счету) изменяем от 0*01 до 0*FF – из расчета 1 ед= 2,5с , при этом максимальное значение FF=10мин.

В случае если контакты SA1 замкнуты то закрывание происходит после нажатия на SB14 или SB2.

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

Устройство снабжено системой блокировки. Каждый раз при введении неверной комбинации, замок воспроизведет 2 сигнала с частотой 1000Гц и один с частотой звука 500Гц. После трех ошибок подряд микроконтроллер установит на выходе RA2 высокий уровень, при этом закроется VT3, который включит тревожное устройство.  (этим устройством может быть сирена или узел дозвона по телефону)

Одновременно включится светодиод HL1 установленный на панели клавиатуры, который покажет что опрос клавиатуры(кроме SA1 SB1 SB2 SB14) отключен.

Затем следует десятиминутная пауза во время которой работает тревожная сигнализация и горит HL1. В течении этого времени замок можно открыть только изнутри. И так будет продолжатся до введения правильного кода.

Питается устройство от источника постоянного тока напряжением 10…15В, при отключении от сети устройство продолжает работать от аккумулятора.

Т1 рассчитан на напряжение вторичной обмотки 15…20В и ток 1,5А.

Схема источника питания показана на рис 2.

Аккумулятор – 300…600мА ( можно больше) – 7А.Ч.

Программируют микроконтроллер с помощью программы PONYPROG.

Коды программы микроконтроллера размещены по адресу –ftp://ftp.radio.ru/pub/2007/11/zamcod.zip

Литература – Радио 11-2007

Особенности программного обеспечения

Таймер TC1 настраивается на работу в режимах CTC и генерирует «окно счета» длительностью 1 с на выходе OC1A (SEC1). Такой выбор позволяет организовать (псевдо) аппаратное формирование нарастающего и спадающего фронтов, положение которых во времени жестко привязано к системной частоте. В качестве опорного может применяться любой кварц. Настоятельно рекомендуем использовать как можно более высокочастотные.

Если используется кварц, отличающийся от указанного на схеме, нужно изменить две константы в программе. Частоту в Гц требуется разделить на 512, записать в шестнадцатеричной системе и присвоить значение константам Dbase, Dadd. При настройке «временных ворот» (1 с) следует подбирать значение Dadd. Здесь имеется ввиду то обстоятельство, что точная частота генерации конкретного кварца нам неизвестна, тем более, что она еще сдвинута от среднего значения работой при повышенной температуре в термостате.

Программа температурной стабилизации использует только 8 младших разрядов кода аналого-цифрового преобразования UBE транзистора-нагревателя. Поскольку зависимость UBE от тока коллектора и температуры кристалла не нормируется производителями, транзистор для датчика-нагревателя следует выбирать по минимальному UBE на рабочем токе (120-130 мА) и максимальному усилению тока. Для справки: 2SC4115S (T = 25 °C, IC = 1 мА, UBE = 607 мВ), применяемый в термостате, имеет UBE = 531 мВ при токе коллектора 120 мА и температуре кристалла +60 °C. Конечно, можно использовать двухбайтное значение и не экономить программную память МК, но это дело второе. Исходный код написан на ассемблере и очень компактен при компиляции.

Биты блокировки atmega8 с помощью AvrDude

  • 1
  • Атмега8,
  • 27 января

Много раз нам нужно программировать нашу atmega с помощью внешнего программатора. Это может быть даже для программирования загрузчика или для загрузки шестнадцатеричного файла в производство. Сегодня мы собираемся объяснить, как запрограммировать atmega8 с помощью внешнего программатора. Мы собираемся использовать AVR Dude, который также является частью среды разработки Arduino. Но мы собираемся использовать для этого стороннее приложение с графическим интерфейсом, которое также имеет открытый исходный код. Вы можете скачать AVRDUDESS здесь. Вы можете использовать версию командной строки, если вам удобно, но я рекомендую использовать этот графический интерфейс.

Понимание битов блокировки

Биты фьюза всегда кажутся запутанными. Биты блокировки более запутаны, когда дело доходит до программирования atmaga8 с помощью внешнего программатора. Биты блокировки очень важны, когда нам нужна защита кода. В любом микроконтроллере самая важная часть — как защитить нашу интеллектуальную собственность? Что, очевидно, является нашим письменным кодом или данными, помещенными в EEPROM. Для успеха любого микроконтроллера защита кода является важнейшей функцией. В основном все микроконтроллеры предоставляют эту функцию, но процесс становился все более и более сложным в соответствии с архитектурой микроконтроллера. Atmega8 предоставляет два типа битов блокировки для защиты области кода. Один тип битов предназначен для защиты кода и данных eeprom. Другая часть предназначена для защиты данных, связанных с загрузчиком.

Защита флэш-памяти и EEPROM

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

Пожалуйста, обратите внимание, что установка бита HIGH(1) означает отсутствие программирования. Если мы делаем бит нулевым (0), это означает, что мы запрограммировали этот бит

Итак, в первом режиме, когда мы делаем оба бита 1. Мы оставили их не запрограммированными. Это означает, что функция блокировки не включена и защита не установлена. Если мы просто запрограммируем LB1 во втором режиме, сделав его нулем. Это означает, что мы просто отключили дальнейшее программирование FLASH и EEPROM. Если мы обнулим оба этих бита, это означает, что мы также отключили дальнейшее программирование, а также проверку кода с помощью внешнего программатора. Здесь следует помнить один момент: мы все еще можем полностью стереть микроконтроллер и использовать его так же, как и раньше.

Защита области загрузчика

Вторая предусмотренная группа битов защиты или битов блокировки предназначена для защиты области загрузчика. Это заставляет SPM и LPM держаться подальше от раздела загрузчика. Он поддерживает 4 режима, и вот таблица из таблицы, объясняющая поведение этих битов.

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

Проект на голом МК

Зачем делать проект на своей плате и голом микроконтроллере?

Конечно же размер, своя плата получится компактнее в большинстве случаев.
Энергопотребление. Ни для кого не секрет, что всякие удобные штуки на плате ардуино потребляют огромный по меркам энергосбережения ток, и для автономного устройства лучше взять голый камушек.
Работая с голым камнем мы можем выбрать микроконтроллер под свои задачи. Например для мелкого проекта необязательно брать 328 мегу, если с задачей справится аттини13, которая стоит 20 рублей.
Возможная экономия. Ардуино нано стоит условно 170 рублей без доставки. Голая 328 мега на том же алиэкспресс – 100 рублей. Если брать десяток. В дорогущем российском чип и дип – 190 рублей. То есть если очень приспичит – можно и тут купить без особых потерь, потому что оригинальная нано стоит 3 тысячи рублей в том же ЧИДе.
Удобство разводки платы. Микросхема в корпусе под поверхностный монтаж находится на одном слое и не мешает дорожкам на другом слое.
Удобство монтажа. Даже если делать свою плату прототип лутом, то припаять на неё чип в 100 раз удобнее и быстрее, чем сверлить три десятка отверстий под ардуину, а потом их запаивать.
Мелкосерийное производство готовых или почти готовых плат, для себя если нужно несколько или на продажу

На том же jlcpcb можно заказать изготовление плат с распайкой внимание smd компонентов. То есть ардуину вам никто не припаяет, а вот ту же 328 мегу припаяют за 100 рублей, тиньку 13ю – за 35 рублей, а чем больше партия – тем дешевле

К этому вопросу мы вернёмся ближе к концу этого урока.

Итак, я на личном опыте убедился, что МК способен работать вообще без какой-либо обвязки. Это был проект “Читалка файлов с SD карты” на базе ATmega328. Проект достаточно непростой: МК читал текстовые файлы с карты памяти microSD и выводил их на OLED дисплей. Никаких лишних компонентов на плате нет, МК тактируется от внутренних 8 МГц и всё работает отлично. Даже карта памяти подключена напрямую к МК =) Но в надёжных устройствах делать так не рекомендуется! Минимальная обвязка для МК и полезные советы:

Соединять все ноги питания (GND, VCC) максимально толстыми и короткими дорожками между собой:

  • GND обычно делают полигоном на всю поверхность платы
  • Я где то читал, что VCC рекомендуется соединять дорожками “внутри шелкографии”, то есть под МК. Оно и логично, так они получатся короче всего

Поставить керамический конденсатор ~100 нФ/nF (0.1 мкФ/uF) по питанию МК: между VCC и GND для сглаживания микропульсаций напряжения

  • Располагать максимально близко к пинам питания МК
  • Также параллельно ему можно поставить электролит (алюминиевый цилиндр) или танталовый конденсатор (компактный SMD чип) на 10-47 мкФ/uF, для сглаживания более серьёзных пульсаций напряжения. Особенно если МК питается от одного источника с другими потребителями, или используется некачественный источник питания.

Если нужна кнопка сброса (reset), подключаем её к RST и GND, т.е. кнопка должна подать на RST низкий сигнал. Внутри МК уже присутствует подтягивающий резистор на пин RST

При наличии кнопки и дорожки от пина RST рекомендуется подтягивать пин к VCC резистором на 10 кОм, потому что внутренний подтягивающий резистор имеет довольно большое сопротивление и наведённые на дорожку помехи (она выступает в роли антенны) могут привести к сбросу МК

Если нужен внешний тактовый генератор – подключаем его между пинами XTAL1 и XTAL2 (см. распиновку своего МК), и оба пина подключаем к GND через керамические конденсаторы на 18-22 pF/пФ. Более точный номинал конденсатора можно узнать из даташита на генератор, но в 99% это 22 пФ

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

ВНИМАНИЕ! Если фьюзы настроены на внешнее тактирование и внешний генератор не подключен к пинам – вы не сможете прошить МК даже при помощи ISP программатора!

Если нужна удобная прошивка по ISP – выводим штекер для подключения. Вот тут можно открыть мой модуль такого штекера для EasyEDA

Если нужна прошивка по UART – выводим RX, TX, GND. Для автоматического сброса МК перед началом прошивки у USB-TTL преобразователя должен быть выведен пин DTR. Его подключаем к RST через конденсатор на 0.1 мкФ. Также подключаем, VCC если нужно запитать МК от UART преобразователя. Прошивать можно любым USB-TTL преобразователем с выходом DTR. В показанной схеме подключение к преобразователю будет RX->TX, TX->RX!

Я думаю теперь вы готовы к созданию проекта на своей плате!

Понравилась статья? Поделиться с друзьями:
Зинг-Электро
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: