Меню
X | ЗАКРЫТЬ

Бегущие огни на ATtiny2313

В этой статье мы сделаем акцент на портах ввода/вывода МК ATtiny2313 и заставим их работать на выход. То есть ножка микроконтроллера (МК) будет выдавать сигнал либо логической единички, либо нуля. Приказывать, что выдавать на ножку, будем мы сами, а точнее, программа, которую мы с вами разработаем.

Все начинали изучать AVR c мигания светодиода. Мы даже делали целую гирлянду из 4 светодиодов в этой статье. Но что, если 4 светодиодов нам мало, и мы хотим чего-то большего? Ну раз хочется, то давайте сделаем!

Выбор микроконтроллера

«Подопытным кроликом» у нас будет старый добрый МК ATtiny2313

ATtiny2313

12 недорогих наборов электроники для самостоятельной сборки и пайки

Моя личная подборка конструкторов с Aliexpress "сделай сам" для пайки от простых за 153 до 2500 рублей. Дочке 5 лет - надо приучать к паяльнику))) - пусть пока хотя-бы смотрит - переходи посмотреть, один светодиодный куб чего только стоит

Долго не думая, находим в интернете на него даташит и смотрим цоколевку

ATtiny2313 распиновка

Так как я хочу навесить на него кучу светодиодов и сделать из них что-то подобие бегущей дорожки, для нас важно рассмотреть, какие пины (выводы МК) позволят мне это сделать. Что мне здесь надо найти? Это, конечно же, порты ввода/вывода. В ATtiny2313 их три группы: порт А, порт В и порт D. В группе порта А у нас три пина — это PA0, PA1,PA2. В группе порта В их уже восемь (PB0…PB7) и в группе порта D семь пинов (PD0…PD6). Итого в сумме 18 пинов, на каждый из которых можно навесить по светодиоду. То есть теоретически, наш МК может управлять 18 светодиодами, которые могут светится независимо друг от друга. Про порты ввода/вывода можно подробно прочитать на сайте easyelectronic по этой ссылке.

Характеристики светодиодов

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

Бегущие огни на ATtiny2313

Ну и осветительные светодиоды — это те, которые используются в ваших китайских фонариках, а также в LED-лампах

Бегущие огни на ATtiny2313

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

Бегущие огни на ATtiny2313

Поэтому подключать их напрямую к МК с питанием в 5 Вольт запрещено. Для них это обернется летальных исходом. В первую очередь сгорят те, кто требует для своей работы небольшого напряжения: красные, желтые и оранжевые светодиоды. Сгореть могут как светодиоды, так и выход МК. Чтобы такого не произошло, надо последовательно со светодиодом ставить токоограничивающий резистор. Лучше всего такой резистор подобрать с помощью магазина сопротивления, либо с помощью потенциометра, включенного по схеме реостата. После того, как мы добились умеренного свечения светодиода, замеряем наше сопротивление и ставим постоянный резистор близкий к измеренному номиналу.

Если такой возможности нет, то делаем простейший расчет.Например, у вас в арсенале имеются желтые светодиоды. Питание нашего МК 5 Вольт, следовательно, напряжение логической единички также 5 Вольт. Так как на желтом светодиоде у нас падение напряжения составляет примерно 2 Вольта, значит, на токо-ограничивающем резисторе должно упасть 3 Вольта. Ток через светодиод берем в среднем 15-20 мА. Исходя из закона Ома высчитываем значение сопротивления: I=U/R ——> R=U/I=3/15=0,2 килоома или 200 Ом. На практике, резистора, номиналом в 200-500 Ом, хватает за глаза.

Способы подключения светодиода на порт МК

1) Это прямой способ, при котором включение светодиода происходит при наличии высокого логического уровня, то есть единички на выходе порта МК:

Бегущие огни на ATtiny2313

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

Бегущие огни на ATtiny2313

Умеренно-светящийся светодиод потребляет силу тока в 15-20 мА. То есть если запитать одновременно все светодиоды с помощью нашего МК, то скорее всего он не выдержит такого издевательства и испустит белый дымок сгоревшего кремния. Значит, если мы сразу зажжем 18 светодиодов и каждый будет кушать по 15-20 мА, то у в сумме наш МК должен выдать 360 мА. В даташите на него пишут, что максимум, что с него можно «выжать»  — это 200 мА (строка в самом низу)

Бегущие огни на ATtiny2313

Индикаторные светодиоды, в зависимости от исполнения (SMD или штырьковые), потребляют при номинальном свечении ток от 2-3 мА и до 20-30 мА. Поэтому, все зависит от того, какие светодиоды мы выберем для нашего эксперимента. Но помните, что сумма токов питания светодиодов не должна превышать максимальное значение МК. В нашем случае это 200 мА. Ну а так для повышения надежности долговременной работы радио-электронной аппаратуры (РЭА) рекомендуется использовать нагрузку по мощности 70% от номинала, а по напряжению и току — 80% от номинала. Поэтому, если номинальный ток светодиода 20 мА, то мы будем его пытать на токе 0.7 * 20 = 14 мА. Применимо к МК — это 160 мА вместо 200 мА.

Управление мощной нагрузкой с помощью МК

Если не терпится и хочется поджигать лампочки накаливания, либо мощные осветительные светодиоды, то можно поставить транзисторные ключи на биполярных транзисторах. В этом случае +Uпит может быть больше, чем напряжение питания МК.

Бегущие огни на ATtiny2313

Почти та же схема, но включение происходит при логическом нуле на выходе МК. Здесь обратите внимание на то, что при таком инверсном включении +Uпит не должно превышать напряжение питания МК.

Бегущие огни на ATtiny2313

Важный момент применимый к обеим схемам — питание нагрузки. Если питаемся от напряжения МК, то схема примитивна: в базовой цепи один резистор (RБ). Если же нагрузку питаем от внешнего источника питания, например 40 Вольт, то еще добавляем в схему резистор Rбэ . Чаще всего его номинал берут в 1 кОм.

К вашему вниманию — последовательное и параллельное соединение проводников.

Расчет резистора базы для режима насыщения

Как же рассчитать примерно значение резистора базы? Есть нехитрые формулы. Для того, чтобы их разобрать, рассмотрим вот такую схемку:

расчет транзисторного ключа

Для начала можно найти ток базы:

Бегущие огни на ATtiny2313

где

IБ — это базовый ток, в Амперах

kНАС  — коэффициент насыщения. В основном берут в диапазоне от 2-5. Он уже зависит от того, насколько глубоко вы хотите вогнать ваш транзистор в насыщение. Чем больше коэффициент, тем больше режим насыщения.

I— коллекторный ток, в Амперах

βкоэффициент усиления тока транзистора

β проще всего измерить с помощью транзисторметра.

Ну а дальше дело за малым

Бегущие огни на ATtiny2313

Бегущие огни на ATtiny2313

Это самый простой расчет без всяких заморочек. Более подробно читайте в этой статье.

Для управления какой-либо мощной нагрузкой, можно применить схему с транзистором и реле:

Бегущие огни на ATtiny2313

О фьюзе RSTDISBL

Ножка PA2 может выполнять функцию не только вывода порта А, но и также участвует при программировании МК. Если с помощью фьюза «RSTDISBL» мы разрешим  этому выводу «притвориться» выходом, то потом не сможем перепрограммировать данный МК с помощью ISP программатора, а другой программатор, я к сожалению, пока еще не приобрел. Но если вы собираетесь делать эту  конструкцию навека, то можете без проблем поставить галочку на фьюз «RSTDISBL» и повесить на этот вывод светодиод). Поэтому, я не буду задействовать эту ножку МК как выход. То есть в сумме у меня будет 17 светодиодов, вместо 18. Жертвуя одни светодиодом, я даю себе право использовать многократно свой МК, не прибегая к помощи другого программатора.

Читайте сопротивление проводника.

Пишем программу для чайников

Далее открываем программу Atmel Studio 6 и начинаем писать программу. Эта  программа специально написана для новичков, чтобы они уловили суть всего процесса.

Программа для профи-программистов

Для тех, кто уже не первый год изучает AVR, приведу оптимизированный код этой же самой программы:

 

Разбор кода в программе для чайников

Так как я особо не силен в языке С, то разбор кода постараюсь объяснить своими словами.

Итак, первая строка:

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

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

подключаем библиотеку задержек, то есть это могут быть функции, как _delay_ms(), _delay_us()

тело программы

Все выводы порта В выставляем как выходА

Изначальное состояние всех выводов порта В равно логическому нулю

Аналогично устанавливаем порты А и D.

Зацикливаем тело программы в бесконечном цикле while

Здесь все просто, достаточно рассмотреть, как выглядят пины в МК с точки зрения самого МК. «0b» говорит о том, что мы записываем команду в двоичной системе счисления, что очень удобно в некоторых случаях для наглядности процесса, особенно для новичков.

Бегущие огни на ATtiny2313

Итак, если в ячейке ноль, следовательно, этот вывод будет выдавать логический ноль. Если в ячейке единица, то и вывод будет выдавать логическую единичку. Значит, в нашей записи PORTB=0b00000001 у нас картина будет выглядеть следующим образом:

Бегущие огни на ATtiny2313

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

Пример для закрепления. Строка кода выглядит вот так:

Какие пины МК будут выдавать логическую единичку?

Вспоминаем нашу структуру и загоняем в нее наши биты:

Бегущие огни на ATtiny2313

Ответ: пины PB0, PB1, PB2 и PB3.

Бегущие огни на ATtiny2313

То есть в данном кусочке кода пины PB0, PB1, PB2 и PB3 одновременно выдадут логическую единичку, то бишь 5 Вольт.

Ну и задержка в миллисекундах:

В данном случае это 50 миллисекунд

Эмуляция программы в Proteus и реальная работа гирлянды

Далее, нам надо создать HEX-файл. Как скомпилировать нашу программку и создать HEX-файл, читаем  в этой статье.

После того, как у нас создался HEX-файл, мы его загружаем в наш виртуальный МК и запускаем процесс эмуляции в программе Proteus. Более подробно в этой статье.

Раз уж все так хорошо, почему бы не прошить реальный МК? О том, как прошивать МК AVR читайте в этой статье.

Зачем я вообще собрал эту схему бегущих огней? Чтобы ставить ее на новогоднюю елочку? Конечно же нет! Целью этой статьи была работа с портами ввода/вывода. В данной статье мы настраивали пины на выход для управления какой-нибудь нагрузкой. Вы без проблем можете поменять программу и решить для себя, как доработать эту «гирлянду». Меняя биты и задержки по времени, вы  без труда сможете сделать различные эффекты и даже управлять какой-либо нагрузкой, подключив транзисторный ключ в паре с реле.

Кстати, такие готовые релейные модули вы без труда можете купить на Алике

Бегущие огни на ATtiny2313Бегущие огни на ATtiny2313

Выбирайте на вкус и цвет!

Для промышленного оборудования стараются использовать программные логические контроллеры (ПЛК,PLC) которые идут в связке с модулями входов/выходов

Бегущие огни на ATtiny2313

Посмотреть, как они выглядят, можно по этой ссылке https://tehprivod.su/katalog/kontrollery-siemens

Файлы проекта «бегущая дорожка» вы можете скачать здесь.

При участии Jeer

 

Часы

Электронный набор-конструктор 'собери сам' - больше часы. В наборе есть пультик для управления режимами, батарейки, вся нужная электроника для пайки. Потребляет 30-50 мА. А размеры 23х9х3 см. В наборе очень много светодиодов, так что для сборки потребуются не только знания электроники, но и терпение. Очень интересный и увлекательный набор, которому будет рад любой радиотехник. После сборки часы можно повесить на стену и наслаждаться проделанной работой.

Экран

Быстрая доставка почтой России, хорошая упаковка, полный комплект, есть запасные резисторы, конденсаторы и транзистор. Для сборки необходим опыт пайки SMD компонентов. С первого раза часы не пошли: время устанавливается, точки мигают, но не идут. Пришлось заменить микросхему RTC DS1302Z.

Цветной светодиодный RGB светильник с дистанционным управлением для пайки, 8x8x8 3D8

Это светильник набор «сделай сам», который вам нужно сварить и собрать самостоятельно. Нижняя пластина состоит из монтажной платы и компонентов. Подсветка 512 светодиодный создает стереопространство. Разнообразие классных моделей, показывающих трехмерный эффект. Лучше смотреть ночью.

Добавить комментарий

Ваш адрес email не будет опубликован.