Главная » Микроконтроллеры
Призовой фонд
на июль 2018 г.
1. Регулируемый паяльник 60 Вт
Паяльник
2. 300 руб.
От пользователей

Таймер 0...9999 секунд для засветки фоторезиста на ATtiny13

Недавно решил освоить технологию фоторезистивного изготовления плат и для этого мне понадобилась УФ лампа с таймером. Конечно, можно было бы найти готовый проект и спаять, но мне хотелось не просто сделать таймер, а получить целый багаж знаний и опыта. Критерии к таймеру были таковы: индикация времени, удобный интерфейс и простота. В качестве основы решил использовать микроконтроллер, а именно - Attiny 13. Список всех необходимых компонентов для создания таймера вы можете наблюдать в таблице под этой статьей. Так как у Attiny 13 всего 8 ножек из которых 5 портов ввода-вывода – было решено использовать микросхемы сдвига регистра (74HC595) для вывода времени на индикаторы. Ещё нужно подключить кнопки управления наиболее компактно и для решения этой задачи воспользуемся одним интересным решением – будем использовать АЦП микроконтроллера (суть решения описана ниже). В итоге на свет вырисовывается вот такая схема:

Вам может быть непонятно подключение кнопок, расскажу: с помощью делителей напряжения (резисторы R14...R16) при замыкании конкретной кнопки (S1, S2 или S3) на вход микроконтроллера подаётся определенный уровень напряжения, который распознается АЦП и в зависимости от его уровня микроконтроллер понимает какую кнопку мы нажали. R12 и C1 – RC фильтр помех, так как при нажатии кнопок - возникает дребезг контактов и микроконтроллер может ошибочно воспринять не одно, а больше нажатий. Резистор R13 нужен для подтяжки входа АЦП при отжатых кнопках, что бы МК не воспринимал помехи.

Теперь об индикаторе, который, кстати, с общим катодом. Как видите - микроконтроллер управляет микросхемами сдвига регистра. Он посылает последовательный код чисел по двум ножкам, а по третьей – частоту тактирования. Микросхема сдвига регистра U3 – отвечает за разряд индикатора, на который выводится цифра, а U2 – за ввод самих цифр в разряды. Выводятся цифры последовательно. То есть: определили  микросхему U3 на вывод числа в 1-й разряд индикатора, а регистр U2 в это время подает на включенный разряд индикатора код самой цифры, после - микросхема U3 включает 2-й разряд индикатора, а микросхема U2 выводит следующую цифру в выводимом числе. Подобным образом выводятся цифры на остальные разряды. Так как частота перебора разрядов достаточно велика  – в итоге мы увидим единое, будь то 4-х или, например, 2-х значное число.

Управлять УФ светодиодной матрицей будем с помощью полевого транзистора. Первый попавшийся мне под руку – IRF445H в корпусе SOIC8 выпаянный из платы старой видеокарты. Вы можете использовать любой другой транзистор, главное что бы он смог коммутировать чуть более 3-х ампер.

Поскольку светодиоды питаются напряжение около 3.3В, то нам понадобиться приспособить отдельный стабилизатор с током более 3А (так как у нас 100шт. светодиодов). В качестве такого стабилизатора я использовал DC-DC понижающий модуль MP1584 (обычные линейные стабилизаторы типа L7833 не подойдут в связи неспособностью обеспечить ток более 3А). Ввиду того, что наш модуль регулируемый, нужно выставить подстроечным резистором требуемый уровень напряжения и затем заменить этот резистор на аналогичный по сопротивлению постоянный. В моем случае я поставил два резистора соединённых последовательно: 5,1кОм и 22кОм:

Резистор R1 выполняет роль подтяжки вывода RESET иначе наша программа будет произвольно сбиваться при каждой помехе. Резисторы R4...R11 нужны для ограничения тока через светодиоды индикатора. Что ж остальное в схеме должно быть понятно.

Печатную плату и схему разводил в DipTrace. Пришлось использовать 2-х сторонний текстолит с применением межслойных переходов (как их выполнить – покажу далее)

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

С теорией вроде всё.

Теперь переходим к практике:

Для начала зальем прошивку в наш микроконтроллер. Я воспользуюсь программой AVRDudeProg. Отмечу, что настройку фьюз-бит производить не нужно (просто установите их по умолчанию). Кстати, если вам интересно – я заливаю код с помощью дешёвого китайского программатора AVRASP в связке с самодельной отладочной платой:

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

Изготавливать буду по лазерно-утюжной технологии. Распечатаем-подготовим текстолит (я сниму окислы на меде с помощью канцелярского ластика) - что бы 2 слоя сошлись правильно – просверлим контрольные отверстия – утюжим – смачиваем - аккуратно стираем бумагу – проверяем на наличие обрывов или слипаний  дорожек - если таковых не находим – начинаем травить плату ( я буду травить в хлорном железе) – готово – опять же проверяем плату на дефекты – после, сверлим отверстия (замечу, что диаметр у некоторых отверстий разный – у отверстий для межслойных переходов – 0,4 мм, остальные отверстия – 0,6 и 1,0 мм) – отлично - если есть желание, плату можно залудить в сплаве розе - так она дольше прослужит. Теперь приступим к межслойным переходам. Изготавливать эти переходы мы будем следующим способом : Сначала сверлим отверстие, потом берём медную проволоку (провод) с диаметром равным диаметру просверленного отверстия и вставляем её туда так, чтобы из платы немного выделялись кончики проволоки: 

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

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

При желании места межслойных переходов можно укрепить залудивши контактные площадки с 2-х сторон платы. Я решил немного заморочиться и покрыть плату паяльной маской. Вышло не очень, но переделывать не особо хочется:)

Далее нужно изготовить плату УФ прожектора. Там все аналогично, за исключением отсутствия межслойных переходов (так же я решил покрыть дорожки платы сплавом Розе):

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

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

Как видно из последнего фото - несколько светодиодов решило не светится, но это не играет особую роль поскольку все светодиоды соединены паралельно. Кстати номинал ограничительных резисторов (их 100шт для каждого светодиода) - 100-200 Ом.

Ну и напоследок соберем наше устройство в корпус в качестве которого буду использовать пищевой бокс. Вот окончательная конструкция:

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

Теперь о питании: запитывал блоком питания 12В 1А подключенным к разъему питания (диаметр 6мм) на плате. Так же есть возможность подключить питание к клеммнику справа от разъема.

После подключения питания устройство сразу начинает работать:

Вроде все объяснил. Если у вас возникнут какие-нибудь вопросы – пишите в комментариях

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
C1 Конденсатор0.01 мкФ1 SMD_0603Поиск в Utsource В блокнот
C2 Конденсатор10 мкФ1 SMD_1206Поиск в Utsource В блокнот
C3 Конденсатор10 мкФ1 SMD_1206Поиск в Utsource В блокнот
HG1 СветодиодFYQ-5641-AG1 Семисегментный индидикатор с обшим катодом (0,56")Поиск в Utsource В блокнот
Q1 ТранзисторIRF445H1 SOIC_8Поиск в Utsource В блокнот
R1, R3 Резистор
10 кОм
2 SMD_0603Поиск в Utsource В блокнот
R2 Резистор
3 кОм
1 SMD_0603Поиск в Utsource В блокнот
R4-R11 Резистор
100 Ом
8 SMD_0603Поиск в Utsource В блокнот
R12, R14, R15 Резистор
2 кОм
4 SMD_0603Поиск в Utsource В блокнот
R16 Резистор
4 кОм
1 SMD_0603Поиск в Utsource В блокнот
R13 Резистор
100 кОм
1 SMD_0603Поиск в Utsource В блокнот
U1 МК AVR 8-бит
ATtiny13A
1 SOIC_8Поиск в Utsource В блокнот
U2, U3 Сдвиговый регистр
SN74HC595
1 SOIC-16Поиск в Utsource В блокнот
U3 Линейный регулятор
AMS1117-5.0
1 SOT-223Поиск в Utsource В блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (19) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
+1
andro #
Может не по теме, но насколько возможно использование люминесцентной лампы вместо светодиодов?
Ответить
0
_abk_ #
Купите в магазине ультрафиолетовую (черную) люминисцентную лампу. И процесс перестанет быть "длительным" - пары-тройки минут будет хватать.
Ответить
+1
Zlodey #
Купите в магазине ультрафиолетовую (черную) люминисцентную лампу...
Попытка сравнить тёплое с мягким...
Автору наоборот зачёт, сделал как белый человек на светодиодах
Ответить
0
_abk_ #
Для тех кто не понял, это был ответ на вопрос andro
Ответить
+1
andro #
Я так и знал. А для глаз это не опасно?
Ответить
0
nikolsum #
Как на счёт бокового засвечивания, слишком близко расположены излучатели.
Ответить
0
Сергей #
Боковая засветка очень вредная. Много плат так загубил.
Ответить
+1
Pauk #
Насколько важна точность таймера для этих целей?
Ответить
0

[Автор]
Mango #
Думаю точности +-1 мин. достаточно
Ответить
0
Pauk #
немного
Ответить
+1
Voxvel #
Уважаемый автор! У меня к вам огромная просьба... да я уверен и не только мне это будет актуально... не могли бы вы подкоректировав прошивку сделать данный таймер циклическим... тоесть если ставим 10с то по истечении время снова идет 10с но уже с выключенной нагрузкой... т.е если ставим 10с то у нас лампа 10с горит и 10с не горит... Ну очень нужно! Спасибо!
Ответить
0

[Автор]
Mango #
Здравствуйте. Вот переделанный проект (там же hex файл для прошивки):
Прикрепленный файл: Timer on Attiny13 rev.2 .rar
Ответить
0
Денис #
Вместо 3х микросхем можно было взять одну stm8s003. И стоит дешевле одной tiny13. Еще и кварц при желании можно поставить для точности.
Чтобы не паять 8 0603, можно взять 2 сборки (4x0603).
P.S. Я уж не говорю про функционал stm8s003 по сравнению с tiny. Где у tiny 16бит таймеры, аппаратное деление и т.д.
Для чего то более серьезного есть stm32. stm32f103 стоит 1.2$ на али. ARM 72МГц.
При таких раскладах изучать AVR это моветон
Ответить
0

[Автор]
Mango #
Да, согласен. Но это верно при условии если бы я умел программировать STM. Но увы, пока такого навыка не имею
Ответить
+1
Денис #
Просто Вы написали "но мне хотелось не просто сделать таймер, а получить целый багаж знаний и опыта.. При этом выбрали TINY13. Вот я и спросил почему не STM8.
А так все ж тоже самое. По табличке посмотреть настройки портов ввода-вывода. Так же выставить делители у таймера. Логика программы вообще не меняется. Зато никакие фьюзы не нужны. Например частоту можно прямо в коде поменять.
Ответить
0

[Автор]
Mango #
В принципе спорить с преимуществом СТМ перед АВР не буду. Я и сам уже думаю начать освоение этих интересных микроконтроллеров. Даже купил парочку. Думаю как-нибудь сделаю и на них проекты
Ответить
0
Денис #
Мне нравятся корпуса QFN. На алиэкспресс брал, если пересчитывать за 1 шт.: STM8S003F3U6 (8Кб) - 20р, STM8L151G6U6 (32Кб) - 52р.
Ответить
0
Денис #
А для старта на алиэкспресс есть платка с гребенками на STM8S103. "STM8 Development Board" в поиске. 75р стоит.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
iMAX B6 - зарядное для Lion, LiPo, LiFe, Pb, NiCd и NiMH аккумуляторов Raspberry Pi 2
вверх