ФОНАРИК НА МК ATTINY-13

Фонарик на ATtiny13

ФОНАРИК НА МК ATTINY-13

Фонарик на ATtiny13 – статья, в которой расскажу, как сделать фонарик на сверх-ярких светодиодах со стабилизатором тока и некоторыми полезными функциями.

Описание задумки

Работая на одном заводе, пришлось мне столкнуться со светодиодными лампами. Лампы эти шли взамен старым люминесцентным, мощностью 80Вт. Длинные трубы, такие.

Рисунок 1

Так вот. Светодиодные лампы хорошо и долго работали, но все же выходили из строя, какие – ремонтировались, а какие – просто списывались. Вследствие чего в моём распоряжении появлялись оставшиеся запчасти. Запчастями это, конечно, сложно назвать, внутри лампы была линейка светодиодов типоразмера 3528 и плата стабилизатора тока. Стабилизаторы обычно перегорали.

Как-то цеховые электрики попросили изготовить фонарик из оставшихся запчастей. Выполнить заказ взялся мой коллега и друг. Так на свет появился первый прототип фонарика на литиевом аккумуляторе и SMD-светодиодах. Фонарик был очень простым и состоял из 21 светодиода, зарядного на микросхеме TP4056, выключателя и литиевого аккумулятора из старой батареи ноута.

Из-за своей простоты жизнь фонарика была не долгой. Причин несколько: 1. Из-за отсутствия стабилизатора тока быстро перегорели светодиоды; 2. Выключатель вышел из строя, так как коммутировал рабочий ток светодиодов, а он не маленький. Проанализировал первый неудачный прототип фонарика коллеги – решил разработать свой, который будет лишен перечисленных недоработок.

О схеме

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

За всё время работы у меня не сгорел ни один светодиод! Почему?! Расскажу немного позже, а сейчас о схеме. Принципиальная схема фонарика на микроконтроллере показана на рисунках 2-3.

Если ты знаешь, как всё работает и тебе не интересно – пропускай этот раздел и переходи к следующему.

Рисунок 2.

Рисунок 3.

Фонарик можно собрать в двух модификациях – с микроконтроллером и без. Если нет желания использовать микроконтроллер, то достаточно установить перемычку 2-3 штыревого разъёма ХР4 и не ставить все компоненты, которые показаны на схеме(рис.2) + резистор R16(рис.3).

Выключатель с фиксацией подключается к ХР3. Правда в таком исполнении, через выключатель будет протекать рабочий ток светодиодов, и он будет быстрее выходить из строя. В своём описании буду опираться на схему с микроконтроллером.

Эта модификация работает, когда установлены все необходимые компоненты и стоит перемычка 1-2 штыревого разъёма ХР4.

Управляет режимами работы фонарика микроконтроллер ATtiny13A. Резистор R2 служит для «подтяжки» вывода Reset микроконтроллера к + питания. Кнопка вкл./выкл./яркость через R5 подключается к 6 ноге микроконтроллера. Чтобы нога «не висела» в воздухе пока кнопка не нажата, нужен R4. Штыревой разъём ХР1 добавил для внутрисхемной «прошивки» микроконтроллера.

ХР2 установлен параллельно кнопке, на тот случай если штатная кнопка не установлена, чтобы было куда подключать выносную. М1 – модуль зарядного на микросхеме ТР4056, покупается на али. Светодиоды HL1, HL2 «выдернул» с модуля М1. Они, кстати, нужны для индикации заряда аккумулятора. Красный – идёт заряд, синий – заряжен полностью.

Для зарядки подойдёт обычное зарядное от смартфона со штекером micro USB. Сверх-яркие светодиоды HL3-HL23, типоразмера 3528, покупал на али. Даташита на них не нашёл, но на странице продавца значились рабочие характеристики: напряжение питания – 3,2В, ток – 20мА. Разъём ХР4 позволяет выбрать режим работы фонарика.

Замкнуты контакты 1-2 – управление идёт через микроконтроллер, 2-3 – микроконтроллер не нужен, а включением и выключением управляет выключатель, который нужно подключить к разъёму ХР3.

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

Для этого добавил в схему операционный усилитель на микросхеме LM358, коэффициент усиления которого, задаётся резисторами R12, R13, R14, R15, R17. Резисторы R8, R11 выполняют роль шунта. Напряжение, которое падает на этих резисторах, усиливается операционным усилителем и подается на базу транзистора VT1.

Когда падения напряжения на переходе БЭ транзистора VT1 будет достаточным для его открытия, он откроется и «посадит» затвор транзистора VT2 на массу, что приведёт к его закрытию и как следствию – снижению тока через светодиоды.

Как только ток понизится, падение напряжения на шунте станет меньше и транзистор VT1 закроется, освободив затвор транзистора VT2 от «массы». Транзистор VT2 снова откроется и ток устремится к светодиодам. На самом деле транзисторы могут работать не в ключевом режиме, а в режиме усиления.

Работая в таком режиме и очень быстро. В схеме легко можно было обойтись и без операционника, но он есть. Полевой транзистор, кстати, позаимствовал из старой материнки. Причём, пробовал ставить транзисторы с разным сопротивлением канала и ток был стабильным и неизменно одинаковым.

Аккумулятор типоразмера 18650 на 3,7В «выдернул» из старой батареи ноута. Кстати, если у тебя остались ещё аккумуляторы, то можешь обратить внимание на эту статью – FM приёмник на RDA5807.Весь перечень необходимых запчастей свёл в таблицу 1.

О печатной плате

Принципиальную схему и печатную плату разрабатывал в PCAD-2006. Печатная плата фонарика получилась двухсторонней, размерами 100х21мм, рисунки 4,5.

Рисунок 4

Рисунок 5

Шелкография – рисунки 6,7.

Рисунок 6

Рисунок 7

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

Для чего мне это было нужно? Всё просто! Если в последующем заказывать производство печатных плат у китайцев, то за плату, которая умещается в их стандартный размер, придётся заплатить гораздо меньше, чем за плату, которая немного больше стандартного размера. У большинства китайских производителей стандартный размер платы – 100х100мм.

Первый прототип делал с помощью аэрозольного фоторезиста. Получилось очень даже ничего, рисунки 8,9.

Рисунок 8

Рисунок 9

Залуженная – 10,11.

Рисунок 10

Рисунок 11

Когда плата была готова принялся паять компоненты – рисунки 12, 13, 14, 15, 16.

Рисунок 12

Рисунок 13

Рисунок 14

Рисунок 15

Рисунок 16

Когда все спаял, взялся за наладку.

О наладке

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

В схеме 21 светодиод, все они включены параллельно. Через каждый протекает ток в 20мА, а в общем – 420мА. Мне довелось собрать ни один фонарик и у каждого проверял рабочий ток светодиодов.

После чего пришёл к однозначному выводу – если номиналы резисторов R12, R13, R14, R15, R17, R8, R11 не отличаются от тех, что указаны на схеме, то можно вообще ничего не проверять. Так как ток стабилизатора получается около 410мА.

Если же решишь подвериться, то установи перемычку 2-3 штыревого разъёма XP4, а амперметр включи между контактами 1-2 штыревого разъёма XP3. Если всё правильно собранно, аккумулятор заряжен и подключен согласно схемы, то должны включиться светодиоды, а амперметр должен показать рабочий ток.

Если значение рабочего тока сильно отличается от 420мА, то придётся подобрать номиналы резисторов: R12, R13, R14, R15, R8, R11. На рисунке 17 самая первая наладка стабилизатора тока.

Рисунок 17

Фьюзы

Фьюзы на рисунке 18.

Рисунок 18

Прошивал микроконтроллер программатором – USBASP, его покупал на али. Программа для прошивки – AVRDUDE. Перед прошивкой проверь бит SPIEN, на рисунке 18 видно, что он не активный и по умолчанию на нём стоит галка.

Если у тебя всё также, то можешь смело ставить галки, как на рисунке и «шить». Если же бит SPIEN не активен и галка не стоит, то придётся сделать инверсию, то есть: где на рисунке не стоит галка там поставить, где стоит – убрать.

На всякий случай добавлю программу после статьи. Если сомневаешься, то лучше скачай мою.

Что может

Фонарик может работать в одном из трех возможных режимов:

  1. Основной;
  2. Стробоскоп;
  3. SOS.

Описание основного режима.

По умолчанию фонарик включается/выключается кратковременным нажатием кнопки SB1. После включения фонарик переходит в основной режим работы. Сам по себе основной режим работы – это обычное свечение с установленной ранее яркостью. Причём установленная ранее яркость распространяется и на стробоскоп, и на SOS. Как поменять яркость???

  1. Выключаю фонарик;
  2. Зажимаю кнопку SB1 и жду первую вспышку светодиодов;
  3. После первой вспышки кнопку отпускаю.
  4. Теперь яркость плавно меняется от минимума до максимума и обратно, и так будет до тех пор, пока снова не нажму кнопку SB1 и не сохраню значение яркости. Если внимательно присмотреться, то можно увидеть, что на минимуме и максимуме светодиоды на некоторое время совсем тухнут. Это сделано для того чтобы можно было легко выставить максимальную или минимальную яркость. Если нажать кнопку в момент, когда светодиоды потухнут, то установится минимум или максимум в зависимости от того где находилось значение яркости.

Описание стробоскопа.

Режим стробоскоп – это мерцание светодиодов с определённой частотой.

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

Описание режима SOS

Режим SOS подобен режиму стробоскоп отличие только в том, что в режиме SOS вспышки светодиодов формируют сообщение SOS, азбукой Морзе.

Режим SOS включается также, как и режим стробоскоп отличие только в том, что кнопку бросают не после второй вспышки светодиодов, а после третьей. Для выхода из режима достаточно повторно нажать на кнопку SB1.

Если не понятно, то посмотри видео или задай мне вопрос – постараюсь объяснить.

Сравнение фонарика смартфона и представленного в статье.

Корпус

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

Рисунок 19

Первым делом наметил и сделал отверстие под кнопку SB1, рисунок 20.

Рисунок 20

Далее выточил отверстие для зарядки в одной из крышечек, рисунок 21.

Рисунок 21

Немного позже запишу видео, как это сделать.

В глухую крышку, со стороны аккумулятора, вырезал изоляционный материал и поролон, рисунки 22,23.

Рисунок 22

Рисунок 23

В одной из половинок колбы собрал плату и аккумулятор. Между ними поставил перегородку из текстолита и немного поролона, рисунок 24.

Рисунок 24

Чтобы не было видно аккумулятор на прозрачной половинке колбы, закрыл это место кож.замом, рисунок 25.

Рисунок 25

После соединил половинки колбы воедино, закрыл крышками и насладился новоиспечённым фонариком, рисунок 26.

Рисунок 26

Не обойтись в этой истории без Китайцев… Хорошо протестировав фонарик, решил заказать производство печатных плат в Китае, что из этого получилось можно посмотреть на рисунках 27,28.

Рисунок 27

Рисунок 28

Фонарик с новой платой, рисунок 29. Кнопку, кстати, сделал выносной и убрал её на крышку, рисунок 30.

Рисунок 29

Рисунок 30

Подведу итоги. В статье рассказал, как сделать несложный фонарик на микроконтроллере ATtiny13. Фонарик имеет три режима работы (основной, стробоскоп, SOS). Есть возможность регулировать яркость с последующим сохранением значения в энергонезависимую память. Заряжается от обычной зарядки (micro USB). В конце статьи есть все необходимые файлы для повторения изобретения. Фонарик получился очень классным и удобным. Сам им постоянно пользуюсь. Очень удобно возить с собой в машине, в бардачке или брать с собой в командировку. Так же использую дома, как ночник в детской. Многим друзьям уже подарил, жалоб ещё не было.

Некоторые планы

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

После того, как добавлю магниты фонарик можно будет примагничивать к металлическим предметам, а это очень удобно. Ещё подумал о том, что неплохо было бы разработать макет пластиковых крышечек с необходимым отверстием под micro USB гнездо и кнопку, и печатать их на 3D – принтере.

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

Источник: https://pichobby.lg.ua/shemu/svet/item/110-fonarik-na-attiny13.html

Простой ШИМ на ATTiny13.Регулируем всё

ФОНАРИК НА МК ATTINY-13

Написать (мгновенно) Добавить свой обзор/запись

Потребовалось регулировать температуру маленького  12-ти вольтового паяльника Baku 938 мощностью 8 Вт , но в интернете попадались схемы ШИМ на дискретных элементах, например, схемы на таймере 555, к561ла7, к561лн2, на мультивибраторе из транзисторов.

ШИМ или PWM — процесс управления мощностью, подводимой к нагрузке, путём изменения скважности импульсов, при постоянной частоте. 

Собрав несколько из них, ни одна меня не устроила, у них был слишком крутой спад\подъем сопротивления при вращении ручки переменного резистора — от 2 кОм сразу подскакивало к 7 кОм, и следовательно, при этом, к примеру, подключенный для теста на исток полевого транзистора, компьютерный вентилятор со скорости 20 процентов сразу поднимал обороты до 90-100 процентов. В общем, чтобы пользоваться схемой, пришлось бы вращать потенциометр с прецизионной точностью и\или с замером сопротивления при вращении.

Однако, нашлась схема, собранная на ATTiny13, в которой используется цифровая ШИМ . Посмотреть статью о ней можно на странице  cxem.net/master/61.php

Сначала я отнесся к ней скептически, но зря, потому что схема минимальна по обвязке, по сравнению с дискретными схемами найденными ранее. Микросхема маленькая и дешевая, изготавливается в корпусах SOIC,DIP, QFN, MLF, ножек всего 8, как и у таймера NE\LM555.

ШИМ на ней получается точным и легко регулируется.

Смотрите также статьи по теме:

—Как прошить микроконтроллер ATmega, AVR

—Эмуляция AVR в Proteus, микроконтроллеры в Proteus

—Как написать код для AVR, программирование микроконтроллеров Atmel AVR на Си

Наглядная схема (принципиальную схему смотрите по ссылке выше на сайте-источнике).

Описание чипа Atmel (Microchip) ATTiny13A 

ATTiny13A — это 8 битный AVR микроконтроллер с программируемой Flash памятью внутрисистемно, размером 1 КБ.

Распиновка (pinout) микроконтроллера ATTiny13A 

В чем отличие attiny13 от attiny13a ?

Tiny13A — это более новый и улучшенный микроконтроллер от Atmel.

Ранее выпускались два варианта Тини13 — с обычным (ATTiny13, работает от 2.7 вольт) и пониженным (ATTiny13V, работает от 1.8 вольт) питанием.

При этом первый вариант работает на частоте до 20 Мгц, второй — до 10Мгц.

С выходом Тини13А убрали разделение мк по питанию, Тини13А работает и от 1.8 вольт (в этом режиме, при пониженном низковольтном питании его невозможно заставить работать на высокой частоте).

Примечание по сборке схемы

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

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

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

Также можно обойтись и без линейного стабилизатора напряжения LM7805 (КРЕН5), если схема питается напряжением в 5 вольт, и регулируемая нагрузка работает от такого же напряжения, а не от 12 вольт.

Для стабильности напряжения можно добавить керамические конденсаторы (на наглядной схеме выделены квадратом салатового цвета) — 0,33 микроФарад (334) на вход 7805, и 0,1 микрофарад (104) на выходе 7805.

Используемая нагружаемая мощность будет ограничена полевым (MOSFET) транзистором.

Прошивка

Почитав комментарии на оригинальной странице, увидел несколько комментариев об ошибке — надо вначале держать кнопку 30 секунд, чтобы ШИМ запустился, что конечно же ну очень долго.

Так как исходники прилагались — решил исправить ошибку и добавить индикацию работы светодиодами нагляднее. Исходники, к моему сожалению оказались на BascomAVR.

Пришлось его скачать и открыть исходник в нем. Исправив ошибку с ожиданием в 30 секунд — решил проверить и залить прошивку.

Но прошивка не захотела литься, подумав что это ошибка компилятора BascomAVR, было решено написать свой код для ATTiny13 на Си в Atmel Studio 7, конечно с сохранением оригинальной схемотехники, чтобы было можно только лишь залить прошивку и ничего не переделывать на печатке.

Написал тестовый код в Atmel Studio, скомпилировал прошивку, заливаю в attiny13 – опять ошибка:

mismatch 0x000000

Ошибка оказалась не в средах разработки, а в программе для прошивки мк, конкретно в моем случае в  eXtreme Burner AVR, для того, чтобы исправить данную ошибку необходимо открыть файл

C:\Program Files\eXtreme Burner – AVR\Data\chips.xml

Найти ATTiny13 и между тегами 64 Вместо 64 написать 32 – после этого ATTiny13 начал шиться без проблем.

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

Что изменено и добавлено в прошивку:
+ Не нужно удерживать кнопку на протяжении 30 секунд
+ Добавлено 8 значений ШИМ вместо 7
+ Добавлена индикация включения.
+ Сделана наглядная индикация режима ШИМ .
+ Добавлено автосохранение значения ШИМ (по умолчанию выключено)

Индикация включения — при включении очень быстро и с реверсом перельются все три светодиода.

Переключение режимов осуществляется нажатием на кнопку, действует циклически.

Файлы прошивки находятся в конце статьи.

При возникновении дополнительных вопросов по работе с кодами для микроконтроллеров , вам может помочь статья:

Как написать код для AVR, программирование микроконтроллеров Atmel AVR на Си

Пояснения по работе устройства с новой прошивкой

Режимы работы:
0 — Все светодиоды выключены, Значение ШИМ — 0 (0%)
1 — Моргает светодиод 1, ШИМ — 32 (12%)
2 — Моргает светодиод 2, ШИМ — 64 (25%)
3 — Моргает светодиод 3, ШИМ — 96 (37.

6%)
4 — Все светодиоды переливаются, ШИМ — 128 (50%)
5 — Горит светодиод 1, ШИМ — 160 (62.7%)
6 — Горит светодиод 2, ШИМ — 192 (75.2%)
7 — Горит светодиод 3, ШИМ — 224 (87.

8%)
8 — Все светодиоды моргают, ШИМ — 255 (100%)

ШИМ — 0 (0%) — питание на «регулируемом устройстве» отсутствует, например, паяльник не греется.

ШИМ — 255 (100%) — полная мощность работы «регулируемого устройства».

Для включения автосохранения значения ШИМ необходимо удержать кнопку в течении 3-х секунд, для отключения — осуществить тоже самое.

При этом при включении автосохранения на 1,5 секунды загорится светодиод 1.
При отключении — на 1,5 секунды загорится светодиод 3.Удерживать кнопку можно в любом режиме, но лучше это делать в режиме 0- так будет нагляднее.

Не стоит забывать, что при включенном автосохранении каждый раз, при нажатии на кнопку записываются данные в EEPROM, ресурс записи EEPROM в Atmel AVR — 100 000.

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

Необходимо поставить фьюз на работу от внутреннего тактового генератора на 9,6 Мгц

Т.к. я пользуюсь eXtreme Burner AVR то во вкладке Fuse\Bits записываю такие байты вместо выставления галок(в других программах-прошивальщиках галки):

Младший байт(Low Byte\Fuse) – 7A

Старший байт (High Byte\Fuse) – EB

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

homes-smart.ru/fusecalc/?prog=avrstudio&part=ATtiny13A

Слева вверху, где написано Байты конфигурации вводим  – 7A в окошечко LOW

и EB в окошечко HIGH – получаем указание на то, где следует поставить галки.

Собранное в корпус устройство ШИМ с вынесенной кнопкой:

(Принципиальная схема и печатная плата имеется на приведенном выше сайте.)

Плата ШИМ, упакованная в корпус от другого устройства и подключенный к ней паяльник.

.

Файлы прошивки в формате HEX:

Оригинальная, скомпилированная из приведенных ниже исходников:

SolderPWM

Прошивка с более высокой частотой (Не тестировалась на реальной схеме!):

PWM_HF

Прошивка по просьбе одного из пользователей нашего сайта, частота ШИМ — около 2,3 килоГерц:

SolderPWM_v1_1_1

В данной прошивке всего три режима

0 — Выключено

1 — ШИМ 80%, светится светодиод 1

2 — ШИМ 90%, светится светодиод 1,2

3 — ШИМ 100%(Постоянное питание), светится светодиод 1, 2 и 3

Источник: https://lampcore.ru/%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA/%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D0%B9-%D1%88%D0%B8%D0%BC-%D0%BD%D0%B0-attiny13-%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D0%B8%D1%80%D1%83%D0%B5%D0%BC-%D0%B2%D1%81%D1%91/

Управление светодиодом на мк attiny13

ФОНАРИК НА МК ATTINY-13

10.10.2018

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

Поэтому, если чувствуется, что Arduino становится тесноват — можно не только перейти на 32-битные контроллеры (например, STM32), но и попробовать более низкоуровневое программирование контроллеров.

Уходя ближе «к железу» — программировать придётся на более близком к железу уровне — и если это не ассемблер, то уж язык программирования Си — точно.

Пример подобного программирования уже приводился в статье .

У такого стандартного программирования микроконтроллеров есть существенное преимущество перед использованием Arduino-вских скетчей. Однако, за низкоуровневый полный контроль и возможность использовать все ресурсы микроконтроллера, приходится расплачиваться долгим и внимательным изучением документации (datasheet-а) на микроконтроллер. Т.е.

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

Разумеется, не всегда это может быть оправдано и если задачу нужно и можно быстро решить при помощи Arduino — то почему бы и нет? Однако, если решение задачи на Arduino невозможно, то придётся потратить время на получение ценных опыта и знаний, которые помогут открыть все возможности, которые под силу микроконтроллеру.

Для примера, возьмём меленький, простой и дешёвый контроллер ATtiny13.

8-битный AVR микроконтроллер с 1 КБ программируемой Flash памяти — RISC архитектура — 120 команд, (большинство выполняется за один такт) — 32 8-битных регистра общего применения — 1 КБ программируемой Flash памяти программы — 64 байта EEPROM памяти данных, (до 100 000 циклов записи/стирания) — 64 байта SRAM памяти (статическое ОЗУ) — Один 8-разрядный таймер/счётчик с отдельным предделителем и два ШИМ канала — 4-канальный 10-битный АЦП со встроенным ИОН — Программируемый сторожевой таймер (watchdog) со встроенным генератором — Встроенный аналоговый компаратор — Внутрисистемное программирование через SPI порт — Внешние и внутренние источники прерывания Корпусное исполнение: — 8-выводные PDIP и SOIC корпуса: 6 программируемых линий ввода-вывода Диапазон напряжения питания, частота: 1.8 – 5.5В (для ATtiny13V) — до 10МГц 2.7 – 5.5В (для ATtiny13) — до 20МГц

Выводы микроконтроллера ATtiny13:

Как видим, микросхема микроконтроллера — маленькая — всего 8 ножек. Чтобы заставить её работать — нужно просто воткнуть её в макетную плату, подтянуть RESET (первый пин — на схеме обозначается — PB5) к шине питания через 10-килоомный резистор и подать питание — например, 5V снятые с пинов питания контроллера Arduino / CraftDuino.

В статье , уже подробно расписано как нужно подключить микроконтроллер ATtiny13 к контроллеру Arduino или CraftDuino, чтобы его можно было программировать через выводы микросхемы FT232RL используя режим bit-bang (режим управления отдельными выводам микросхемы). Поэтому сразу переходим к софтовой части.

Раз решили программировать «по-взрослому», то и среда разработки нужна «взрослая».

Идём на сайт -a, и скачиваем свежую версию .

Atmel Studio — (наследница AVR Studio) — это бесплатная среда разработки для микроконтроллеров Atmel.

Сама IDE должна быть знакома, т.к. используется оболочка от Microsoft Visual Studio, однако следует обратить внимание, что в качестве компилятора используется GCC. После установки, на рабочем столе появится ярлык с симпатичной красной божьей коровкой. Запускаем IDE и привычным образом, быстренько создаём проект.

File -> New -> Project…

Выбираем С/С++ и GCC C Executable Project, пишем имя проекта, например, blink

Источник: https://electshema.ru/drugoe/upravlenie-svetodiodom-na-mk-attiny13.html

USBISP – заливаем собственную прошивку в фонарик / Лайв им. SinuX / iXBT Live

ФОНАРИК НА МК ATTINY-13

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

Сразу оговорюсь, что в статье речь пойдет о прошивке фонарей с драйверами на базе микроконтроллера Attiny13a, такие драйвера стоят во всех конвоях S серии (кроме нового S9), а так же в Convoy M1, M2, C8.

Многие другие производители так же ставят в свои фонари драйвера с Attiny, к ним данный мануал тоже применим, но следует уделять внимание фьюзам и используемым портам Attiny.

Краткий ликбез

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

  • Кнопка выключения — у «тактических» EDC фонариков типа Конвоев обычно располагается в хвосте
  • Аккумулятор — обычно это Li-ion банка
  • Драйвер — самая важная часть фонаря, его мозги
  • Светодиод — говорит сам за себя

Драйвер и светодиод

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

В одноаккумуляторных фонарях чаще всего встречаются ШИМ-драйвера. В качестве силового ключа в таких драйверах обычно используется либо полевой транзистор, либо куча линейных регуляторов AMC7135.

Например, так выглядит довольно популярный драйвер Nanjg 105D:

Микроконтроллер Attiny13a содержит в себе прошивку, которая определяет логику работы фонаря. Далее я покажу, как можно залить в этот микроконтроллер другую прошивку, чтобы расширить функционал фонаря.

Предыстория

Сейчас на рынке представлено поистине огромное количество карманных EDC фонариков, и, что характерно, каждый производитель норовит изобрести свою собственную прошивку с собственным уникальным™ управлением.

Из всех существующих решений мне больше всего нравилась прошивка, с которой до недавних пор поставлялись фонари Convoy с драйвером Nanjg 105D. Она имела 2 группы режимов (1 группа: Мин-Средний-Макс, 2 группа: Мин-Средний-Макс-Строб-SOS).

Смена групп в ней осуществлялась интуитивно просто: включаем минимальный режим, спустя пару секунд фонарь моргнёт — кликаем кнопкой, и группа режимов переключена. С недавних пор Convoy начал поставлять свои фонари с новой прошивкой biscotti.

Она имеет больше возможностей (12 групп режимов, возможность включения-отключения памяти последнего режима, запоминание режима в выключенном состоянии (т.н. off-time memory)), но у нее есть несколько жирных минусов, которые лично для меня перечеркивают все достоинства:

  • Сложное управление. Чтобы сменить группу режимов нужно помнить наизусть шаманскую последовательность кликов кнопкой
  • Off-time memory не работает при использовании светящихся кнопок (например, таких)
  • Много бесполезных групп режимов, отличающихся лишь порядком следования

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

Все бы ничего, но нельзя просто так взять и перешить Nanjg 105D на старую добрую прошивку с двумя группами, потому что в свободном доступе ее нет, и производитель установил запрет на считывание дампа памяти микроконтроллера, т.е. оригинальную прошивку взять неоткуда.

В репозитории прошивок для фонарей аналога данной прошивки нет, поэтому у меня остался один выход — написать все самому.

Встречайте Quasar v1.0

Взяв за основу прошивку luxdrv 0.3b от DrJones, я сваял собственную с блекджеком и лунапарками. Я постарался сделать ее максимально похожей на стоковую прошивку Nanjg 105D и более масштабируемой. Что может мой Quasar:

  • 2 группы режимов: (Минимальный — Средний — Максимальный — Турбо) и (Минимальный — Средний — Максимальный — Турбо — Строб — Полицейский строб — SOS)
  • Строб злой (частота вспышек около 12Гц)
  • Новый режим — полицейский строб — делает прерывистые серии по 5 вспышек, режим может быть полезен велосипедистам, т.к. повышает заметность
  • Переключение групп осуществляется как в заводской прошивке: включаем первый режим, ждем пару секунд, кликаем сразу после того, как фонарь моргнет
  • Путем модификации исходников можно добавить до 16 групп, в каждой группе можно задать до 8 режимов
  • Используется традиционная on-time память, можно использовать светящиеся кнопки без потери функциональности
  • При разряде аккумулятора ниже 3В фонарь начинает сбрасывать яркость, но полностью не отключается — используйте аккумуляторы с защитой, если боитесь их убить.
  • Удобная фича для проверки текущего уровня аккумулятора: в любом режиме делаем 10-20 быстрых полу-нажатий  кнопкой до тех пор, пока фонарь не перестанет включаться. После этого фонарь сделает от 1 до 4 вспышек, каждая вспышка означает уровень заряда соответственно < 25%, < 50%, < 75% и < 100%.

Исходники, скомпилированный бинарник с двумя группами режимов и проект для Atmel Studio вы можете найти на моем гитхабе. Помните, что исходники распространяются под лицензией CC-BY-NC-SA, и прошивку вы используете на свой страх и риск без каких-либо гарантий.

Принадлежности

Для заливки кастомной прошивки нам понадобятся:

  • SOIC клипса Купить
  • Любой клон Arduino Nano 3.0 для использования в качестве программатора Купить
  • Arduino у меня уже была, поэтому я решил завести отдельный самостоятельный девайс для прошивки фонарей и купил USBISP программатор Купить
  • Dupont провода для подключения клипсы к программатору Купить

Подготовка программатора

Для прошивки драйвера подойдет обычная Arduino Nano 3.0 с залитым скетчем ArduinoISP, но я решил завести отдельный программатор, поэтому купил USBISP. Он имеет форм-фактор флешки в алюминиевом корпусе:

Из коробки этот программатор определяется на компе как HID устройство и работает только с китайским кривым софтом, чтобы использовать его с avrdude можно перепрошить его в USBASP. Для этого нам, как ни странно, понадобится другой рабочий программатор. Здесь нам поможет Arduino Nano, подключаем её к компьютеру, открываем Arduino IDE и открываем стандартный скетч ArduinoISP:

Раскомменчиваем строку #define USE_OLD_STYLE_WIRING:

И заливаем скетч в Nano. Теперь у нас есть AVRISP программатор, которым можно перепрошить наш USBISP в USBASP. Для этого нам в первую очередь понадобится avrdude, он лежит в папке установки Arduino IDE по пути \hardware\tools\avr\bin. Для удобства советую добавить полный путь к avrdude.exe в переменную окружения PATH.

Теперь нам необходимо открыть USBISP и перевести его в режим программирования, установив перемычку UP:

Вот так:

Заодно убеждаемся, что на плате распаян Atmega88 или 88p, как в моем случае:

Другие перемычки, несмотря на советы в инете, трогать не нужно, все прекрасно прошивается и с ними.

Теперь внимательно смотрим на распиновку USBISP программатора, нанесенную на его алюминиевом корпусе, и подключаем его к Arduino Nano:

  • VCC и GND к VCC и GND сответственно
  • MOSI к D11
  • MISO к D12
  • SCK к D13
  • RESET к D10

У меня не оказалось Female-Female проводов, поэтому я заюзал мини-макетку:

Следующий шаг — скачиваем прошивку usbasp.atmega88-modify.hex, подключаем Arduino к компу, запускаем консоль и переходим в папку с сохраненной прошивкой. Для начала выставим фьюзы командой:

avrdude -p -m88 -c avrisp -b 19200 -U lfuse:w:0xff:m -U hfuse:w:0xdd:m

Затем заливаем прошивку командой:

avrdude -p m88p -c avrisp -b 19200 -U flash:w:usbasp.atmega88-modify.hex

После этого убираем перемычку на USBISP, подключаем его к компьютеру, и если все сделано правильно, — на нем загорится синий светодиод:

Теперь у нас есть полноценный компактный USBASP программатор в удобном металлическом корпусе.

SOIC клипса

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

Подключаем контакты клипсы к программатору в соответствии с распиновкой микроконтроллера:

Для большей надежности я припаял провода к клипсе и затянул все это термоусадкой:

Заливаем прошивку в фонарь

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

Крепим клипсу, соблюдая ориентацию. Ориентир в данном случае — кругляш на корпусе микросхемы, он обозначает первый её пин (RESET в нашем случае):

Смотрим, чтобы все пины клипсы утопились в корпус. Подключаем программатор к компу, теперь дело осталось за малым — нужно залить прошивку) Для этого идем на гитхаб, качаем бинарник quasar.hex, запускаем консоль, переходим в папку с бинарником и выполняем команду:

avrdude -p t13 -c usbasp -u -Uflash:w:quasar.hex:a -Ulfuse:w:0x75:m -Uhfuse:w:0xFF:m
Если все нормально, то пойдет процесс загрузки прошивки, в этот момент ни в коем случае нельзя трогать клипсу, лучше вообще не дышать) При успешной прошивке в конце вывода будет примерно следующее:

Просто, да? А вот нифига, с вероятностью 90% вместо загрузки прошивки вы увидите это:

Причина чаще всего кроется в том, что у новых моделей драйверов замкнуты пины 5 и 6 (MISO и MOSI), что делает невозможным программирование. Поэтому если avrdude жалуется на target doesn't answer, то первым делом вооружаемся скальпелем и внимательно смотрим на плату. Нужно перерезать дорожку, как показано на картинке:

После этого прошивка обычно заливается без проблем. Если нет — внимательно посмотрите на микроконтроллер, возможно у вас вовсе не Attiny13a, по крайней мере мне попадались драйвера с Fasttech с PIC контроллерами.

Модификация прошивки

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

Сейчас я расскажу, как это сделать. Первым делом качаем и устанавливаем Atmel Studio с официального сайта. Потом скачиваем все файлы проекта (кто умеет в git — могут просто клонировать всю репу) и открываем Quasar.

atsln через установленную студию:

Перечислю наиболее интересные места в коде:

#define LOCKTIME 50

Задает время, через которое текущий режим будет сохранен. Значение 50 соответствует 1 секунде, соответственно поставив 100 можно получить интервал ожидания в 2 секунды

#define BATTMON 125

Задает критический уровень напряжения на аккумуляторе, при достижении которого фонарь начнет сбрасывать яркость. У стандартного Nanjg 105D величина 125 соответствует примерно 2.9 вольтам, но все зависит от величин резисторов делителя напряжения на плате. Если удалить эту строку целиком — фонарь не будет следить за напряжением аккумулятора.

#define STROBE        254

#define PSTROBE       253

#define SOS           252

Определения режимов-мигалок, цифровые значения трогать не следует, если не нужен какой-либо режим — соответствующую строку можно удалить, не забыв после этого поправить объявления групп режимов в массиве groups.

#define BATTCHECK

Включает режим индикации уровня аккумулятора после 16 быстрых кликов. Можно удалить, если эта функция не нужна.

#define MEM_LAST

Задает запоминание последнего режима. Возможны следующие значения: MEM_LAST — фонарь включается в последнем включенном режиме, MEM_FIRST — фонарь всегда включается в первом режиме, MEM_NEXT — фонарь всегда включается в следующем режиме.

#define MODES_COUNT     7

#define GROUPS_COUNT    2

Задают количество режимов в группе и количество групп соответственно. Тесно связаны со следующим массивом groups:
PROGMEM const byte groups[GROUPS_COUNT][MODES_COUNT] = {{ 6, 32, 128, 255, 0, 0, 0 },                                                        { 6, 32, 128, 255, STROBE, PSTROBE, SOS }};

Здесь перечислены сами группы режимов работы. Числа 6, 32, 128, 255 — значения яркости, STROBE, PSTROBE, SOS — обозначения специальных режимов. Нулевые значения яркости игнорируются, поэтому в разных группах можно задавать разные количества режимов (в данном случае в первой группе 4 режима, во второй — 7).

Например, если вы хотите оставить один единственный режим работы со 100% яркостью, то сделать это можно так:

#define MODES_COUNT     1

#define GROUPS_COUNT    1

PROGMEM const byte groups[GROUPS_COUNT][MODES_COUNT] = {{ 255 }};

Если вам нужны 3 группы режимов без мигалок и с обратным следованием (от максимального к минимальному), то можно сделать так:

#define MODES_COUNT     4

#define GROUPS_COUNT    3

PROGMEM const byte groups[GROUPS_COUNT][MODES_COUNT] = {{ 255, 0, 0, 0 },

                                                        { 255, 64, 6, 0 },

                                                        { 255, 128, 32, 6 }};

При таком раскладе в первой группе всего один режим со 100% яркостью, во второй — 3 режима, в третьей — 4 режима с более плавным уменьшением яркости. Легко и просто, правда? Остается лишь скомпилировать исходник в hex файл с помощью студии, для этого выбираем «Release» в диспетчере конфигураций и жмем «Запуск без отладки»:

Если нигде в коде не накосячили, то в папке проекта появится директория Release, а в ней — hex файл, который остается залить в драйвер описанным в предыдущем разделе способом.

На этом все, надеюсь сей мануал будет кому-нибудь полезен. Если у кого возникнут вопросы — милости прошу в комменты)

Источник: https://www.ixbt.com/live/sinux/usbisp---zalivaem-sobstvennuyu-proshivku-v-fonarik.html

Поделиться:
Нет комментариев

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

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.