Недавно решил освоить технологию фоторезистивного изготовления плат и для этого мне понадобилась УФ лампа с таймером. Конечно, можно было бы найти готовый проект и спаять, но мне хотелось не просто сделать таймер, а получить целый багаж знаний и опыта. Критерии к таймеру были таковы: индикация времени, удобный интерфейс и простота. В качестве основы решил использовать микроконтроллер, а именно - 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 | Поиск в магазине Отрон | |
C2 | Конденсатор | 10 мкФ | 1 | SMD_1206 | Поиск в магазине Отрон | |
C3 | Конденсатор | 10 мкФ | 1 | SMD_1206 | Поиск в магазине Отрон | |
HG1 | Светодиод | FYQ-5641-AG | 1 | Семисегментный индидикатор с обшим катодом (0,56") | Поиск в магазине Отрон | |
Q1 | Транзистор | IRF445H | 1 | SOIC_8 | Поиск в магазине Отрон | |
R1, R3 | Резистор | 10 кОм | 2 | SMD_0603 | Поиск в магазине Отрон | |
R2 | Резистор | 3 кОм | 1 | SMD_0603 | Поиск в магазине Отрон | |
R4-R11 | Резистор | 100 Ом | 8 | SMD_0603 | Поиск в магазине Отрон | |
R12, R14, R15 | Резистор | 2 кОм | 4 | SMD_0603 | Поиск в магазине Отрон | |
R16 | Резистор | 4 кОм | 1 | SMD_0603 | Поиск в магазине Отрон | |
R13 | Резистор | 100 кОм | 1 | SMD_0603 | Поиск в магазине Отрон | |
U1 | МК AVR 8-бит | ATtiny13A | 1 | SOIC_8 | Поиск в магазине Отрон | |
U2, U3 | Сдвиговый регистр | SN74HC595 | 1 | SOIC-16 | Поиск в магазине Отрон | |
U3 | Линейный регулятор | AMS1117-5.0 | 1 | SOT-223 | Поиск в магазине Отрон | |
Скачать список элементов (PDF)
Прикрепленные файлы:
- Timer on Attiny13.rar (5099 Кб)
Комментарии (24) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
Автору наоборот зачёт, сделал как белый человек на светодиодах
[Автор]
[Автор]
Чтобы не паять 8 0603, можно взять 2 сборки (4x0603).
P.S. Я уж не говорю про функционал stm8s003 по сравнению с tiny. Где у tiny 16бит таймеры, аппаратное деление и т.д.
Для чего то более серьезного есть stm32. stm32f103 стоит 1.2$ на али. ARM 72МГц.
При таких раскладах изучать AVR это моветон
[Автор]
А так все ж тоже самое. По табличке посмотреть настройки портов ввода-вывода. Так же выставить делители у таймера. Логика программы вообще не меняется. Зато никакие фьюзы не нужны. Например частоту можно прямо в коде поменять.
[Автор]
И, если не затруднит, под индикатор с общим Анодом. И, если не затруднит, под индикатор с общим Анодом.
Спасибо за огромный труд!