Световые эффекты на микроконтроллере attiny2313. Бегущие огни

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

Для этого нам потребуется уже не один светодиод. У меня на этот счёт имеется светодиодная планка или матрица. Я её поместил в беспаечную макетную плату, катоды всех светодиодов соединил вместе и подключил к общему проводу, а аноды каждый через токоограничивающий резистор подключил к соответствующим ножкам порта D. Вот так это всё выглядит (нажмите на картинку для увеличения изображения)

Поэтому, как обычно, по старой доброй традиции мы запускаем Atmel Studio , создаём в ней проект, выбрав тот же самый микроконтроллер Atmega8a , назовём проект Test03 . Таким же образом в качестве отладчика выберем simulator, и также, чтобы сэкономить наше драгоценное время, скопируем весь код из файла main.c прошлого занятия.

Начнём писать код. Сначала мы в функции main() создадим целочисленную короткую беззнаковую переменную

int main (void )

unsigned char i ;

Порт также оставляем на выход, и сразу на данном порте включим нулевую ножку в 1

DDRD = 0xFF;

PORTD = 0b00000001 ;

А в бесконечном цикле мы создадим цикл другого типа — типа for . Данный цикл уже является конечным и работает он следующим образом

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

while (1)

for (i =0;i <=7;i ++)

{

Delay_ms (500);

}

В данном цикле у нас будет пока только задержка, остальной код мы уберём. То есть тело нашего цикла будет у нас выполняться до тех пор, пока переменная i у нас не достигнет значения, большего или равного 7 . То есть получится, что наше тело будет выполняться ровно 8 раз, затем мы выйдем из данного цикла и благодаря бесконечному циклу заново в него войдём и наш восьмикратный процесс повторится сначала.

А вот теперь сдвиг. Вставим его до задержки

PORTD =(1<<i );

Delay_ms (500);

Как мы видим, данный сдвиг мы применяем к регистру, отвечающему за состояния порта D , и в нём мы будем сдвигать единичку влево на величину нашей переменной i , а так как данная переменная с каждым циклом увеличивается на 1 (или инкрементируется ), то, соответственно, наша единичка постепенно раз в полсекунды будет двигиться влево, также как и лапки порта, за которые отвечает каждый бит нашего регистра. И тем самым мы и получим эффект бегущего огня.

Давайте соберём наш проект. И, также как и на прошлом занятии скопируем файл протеуса с прошлого занятия и переименуем его в Test03 . Откроем его, заменим файл прошивки в свойствах контроллера.

Также добавим ещё 7 светодиодов и 7 резисторов, так как показано на схеме. Можно применять операцию копирования. Как это делается, показано в видеоуроке.

Запустим проект в протеусе и увидим, что наши светодиоды мигают поочерёдно, создавая впечатление эффекта бегущего огня

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

Post Views: 10 673

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

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

Кнопка SA3 позволяет осуществлять переключение между программами.

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

При монтаже светодиодов в линейку следует соблюдать очередность такую же, как пронумеровано на схеме от HL1 до HL11.

Микроконтроллер ATtiny2313 тактируется от внутреннего генератора с частотой 8 МГц.

Видео работы: Бегущие огни на светодиодах

(1,1 Mb, скачано: 3 650)

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

Микроконтроллер ATtiny2313 для бегущих огней

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

ATtiny2313 сделан по простой схеме, где порт для вывода и ввода имеет идентичное значение. Выбрать программу (одну из 12) на таком микроконтроллере очень легко, ведь он не перегружен лишними опциями. Модель выпускается в двух корпусах – SOIC и PDIP, причем каждый вариант обладает идентичными характеристиками:

  • 8-битные общие регистры в количестве 32 штук;
  • возможности 120 операций за один тактовый цикл;
  • flash-память внутри системы на 2 кБ с поддержкой 10 тысяч циклов стирания и записи;
  • внутрисистемная EEPROM на 128 байт с поддержкой 100 тысяч циклов;
  • 128 байт встроенной оперативки;
  • 4 ШИМ-канала;
  • счетчик-таймер на 8 и 16 бит;
  • встроенный генератор;
  • удобный для разных целей интерфейс и другие функции.

Микроконтроллер имеет два вида в соответствии с энергопараметрами:

  • классическая модель ATtiny2313 обладает напряжением от 2,7 до 5,5 В и силой тока до 300 мкА на частоте 1 МГц в режиме активности;
  • вариант ATtiny2313А (4313) обладает характеристиками в 1,8-5,5 В и 190 мкА при той же частоте.

В режиме ожидания устройство имеет энергопотребление не больше 1 мкА.

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

Схема бегущих огней и принцип её работы

Создаваемая схема бегущих огней на светодиодах базируется на размещении микроконтроллера в центре. Все его порты вывода соединяются со светодиодами:

  • порт B или PB0-PB7 используется полностью для контроля над свечением;
  • максимально задействованы три вывода от порта D (PD4-PD6);
  • также работают PA0 и PA1, поскольку они свободны за счет реализуемого внутреннего генератора.

Вывод №1 – PA2 или Reset – не является активным звеном схемы, поэтому резистором R1 подсоединяется к цепи питания ATtiny2313. Плюсовая часть питания 5 В идет к выводу №20 – VCC, а минусовая — №10 (GND). Полярный конденсатор C1 устанавливается для предотвращения сбоев и гашения помех в работе МК.

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

Подходят, как классические smd3258, так и led’ы повышенной яркости в DIP корпусе. Суммарно их должно быть 13 штук. Функция ограничения тока возлагается на резисторы R6-R18.

Работа схемы контролируется посредством посредством переключателя SA1, кнопок SB1-SB3 и цифровых входов PD0-PD3, которые подключаются через резисторы R2, R3, R6 и R7. Такая конструкция позволяет включать мигание светодиодов в 11 различных режимов, задавая конкретную программу кнопкой SB3. А с помощью переключателя SA1 изменяется скорость мигания. Для этого:

  1. SA1 переводится в замкнутое положение.
  2. Скорость изменяется кнопками SB1 (ускорение) и SB2 (замедление).

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

Варианты сборки

Существует два доступных и относительно простых варианта сборки бегущих огней: на печатной или макетной плате. И в том, и в другом случае желательно за основу брать схему в PDIP корпусе на панельке DIP-20. При этом нужно, чтобы остальные компоненты также были в DIP-корпусах.

При сборке на макетной плате будет достаточно модели 50×50 мм с шагом в 2,5 мм. Светодиодыможно будет разместить не только на самой плате, но и на внешней линейке, подключив их в схему с помощью гибких проводов.

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

К примеру, когда они устанавливаются на велосипед или автомобиль. В этом случае понадобятся такие компоненты:

  • односторонний текстолит 55×55 мм;
  • конденсатор 100 мкФ-6,3В;
  • DD1 – Attine 2313;
  • резистор 10 кОм-0,25 Вт±5% (R1);
  • 17 резисторов 1 кОм-0,25 Вт±5% (R2-R18);
  • 13 светодиодов LED диаметром 3 мм (цвет не важен);
  • 3 кнопки KLS7-TS6601 или аналог (SB1-SB3);
  • переключатель движковый ESP1010 (SA1).

Радиолюбителям с практическим опытом сборки печатных плат лучше взять для этой схемы Attine2313 SOIC c SMD резисторами. За счет этого общие габариты схемы уменьшатся почти в два раза. Можно также отдельным блоком установить сверхъяркие SMD светодиоды.

Эта схема бегущих огней на 12 вольт широко известна в сети, так как имеет очень простую и понятную конструкцию. Генератором режима выступает таймер импульсов, а счетчик, подсчитывая их, подает на выходы соответствующие логические уровни. Светодиодный элемент, подключенный к каждому выходу, загорается при логической единице и гаснет при нуле. Эффект бегущих огней создается за счет последовательного мерцания. Скорость «бега» задается генератором, работа которого контролируется номинальными параметрами конденсатора C1 и резистора R1.

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

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

Прошивка

Среди десятков разнообразных светодиодных мигалок достойное место занимает схема бегущих огней на светодиодах, собранная на микроконтроллере ATtiny2313. С её помощью можно создавать различные световые эффекты: от стандартного поочерёдного свечения до красочного плавного нарастания и затухания огня. Один из вариантов того, как сделать своими руками бегущий огонь на светодиодах под управлением МК ATtiny2313, рассмотрим на конкретном примере.

Сердце бегущих огней

То, что AVR микроконтроллеры Atmel обладают высокими эксплуатационными характеристиками – всем известный факт. Их многофункциональность и лёгкость программирования позволяет реализовывать самые необыкновенные электронные устройства. Но начинать знакомство с микроконтроллерной техникой лучше со сборки простых схем, в которых порты ввода/вывода имеют одинаковое назначение.

Одной из таких схем являются бегущие огни с выбором программ на ATtiny2313. В данном микроконтроллере есть всё необходимое для реализации подобных проектов. При этом он не перегружен дополнительными функциями, за которые пришлось бы переплачивать. Выпускается ATtiny2313 в корпусе PDIP и SOIC и имеет следующие технические характеристики:

  • 32 8-битных рабочих регистра общего назначения;
  • 120 операций, выполняемых за 1 тактовый цикл;
  • 2 кБ внутрисистемной flash-памяти, выдерживающей 10 тыс. циклов запись/стирание;
  • 128 байт внутрисистемной EEPROM, выдерживающей 100 тыс. циклов запись/стирание;
  • 128 байт встроенной оперативной памяти;
  • 8-битный и 16-битный счётчик/таймер;
  • 4 ШИМ канала;
  • встроенный генератор;
  • универсальный последовательный интерфейс и прочие полезные функции.

Энергетические параметры зависят от модификации:

  • ATtiny2313 – 2,7-5,5В и до 300 мкА в активном режиме на частоте 1 МГц;
  • ATtiny2313А (4313) – 1,8-5,5В и до 190 мкА в активном режиме на частоте 1 МГц.

В ждущем режиме энергопотребление снижается на два порядка и не превышает 1 мкА. Кроме этого данное семейство микроконтроллеров обладает целым рядом специальных свойств. С полным перечнем возможностей ATtiny2313 можно ознакомиться на официальной страничке производителя www.atmel.com.

Схема и принцип её работы

В центре принципиальной электрической схемы расположен МК ATtiny2313, к 13-ти выводам которого подключены светодиоды. В частности, для управления свечением полностью задействован порт В (PB0-PB7), 3 вывода порта D (PD4-PD6), а также PA0 и PA1, которые остались свободными из-за применённого внутреннего генератора. Первый вывод PA2 (Reset) не принимает активного участия в схеме и через резистор R1 соединён с цепью питания МК. Плюс питания 5В подаётся на 20-й вывод (VCC), а минус – на 10-й вывод (GND). Для исключения помех и сбоев в работе МК по питанию установлен полярный конденсатор С1.
С учётом небольшой нагрузочной способности каждого вывода подключать следует светодиоды, рассчитанные на номинальный ток не более 20 мА. Это могут быть как сверхъяркие led в DIP корпусе с прозрачной линзой, так и smd3528. Всего их в данной схеме бегущих огней 13 шт. В качестве ограничителей тока выступают резисторы R6-R18.

Нумерация светодиодов на схеме указана в соответствии с прошивкой.

Через цифровые входы PD0-PD3, а также с помощью кнопок SB1-SB3 и переключателя SA1 производится управление работой схемы. Все они подключены через резисторы R2, R3, R6, R7. На программном уровне предусмотрено 11 различных вариаций мигания светодиодов, а также последовательный перебор всех эффектов. Выбор программы задаётся кнопкой SB3. В пределах каждой программы можно изменять скорость её выполнения (мигания светодиодов). Для этого переключатель SA1 переводят в замкнутое положение (скорость программы) и кнопками увеличения (SB1) и уменьшения (SB2) скорости добиваются желаемого эффекта. Если SA1 разомкнуть, то кнопки SB1 и SB2 будут регулировать яркость светодиодов (от слабого мерцания до свечения на номинальной мощности).

Печатная плата и детали сборки

Специально для начинающих радиолюбителей предлагаем два варианта сборки бегущих огней: на макетной и на печатной плате. В обоих случаях рекомендуется использовать микросхему в PDIP корпусе, устанавливаемую в DIP-20 панельку. Все остальные детали также в DIP корпусах. В первом случае достаточно будет макетной платы 50х50 мм с шагом 2,5 мм. При этом светодиоды можно разместить, как на плате, так и на отдельной линейке, соединив их с макетной платой гибкими проводами.

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

Похожие статьи