Сенсорный выключатель на attiny2313 – Сенсорный выключатель на Attiny13 — Микроконтроллеры и Технологии

cool-hacker › Блог › Емкостный сенсор на микроконтроллерах AVR и задержка итерациями. Примеры на Attiny13

Приветствую, любитель микроконтроллеров!

Вступление
Я продолжаю воплощать в жизнь свой первый, когда-то заброшенный, проект на микроконтроллере — лампу настроения. И, как и обещал в прошлый раз, по ходу разработки пишу небольшие заметки для начинающих. В этот раз рассмотрим как реализуется емкостный сенсор и задержки тех или иных операций итерациями основного цикла. Что касается самого проекта, могу сказать, что на данный момент написана полностью рабочая прошивка. Остается дело за схемой, печаткой и тестированием в нормальном железе. Затем выложу все на ваш суд.

Сенсорная кнопка
Принцип сенсорной кнопки прост. Берем небольшую площадку не важно какой формы, я взял кусок фольгированного текстолита (далее — кнопка). Подпаиваем к ней резистор большого номинала, порядка 1 МОм. И подключаем кнопку через этот резистор к питанию. Подпаиваем к кнопке провод, который соединит кнопку с ножкой микроконтроллера (далее — МК). Площадку изолируем тонким изолятором, хотя и без него будет работать. Площадка кнопки имеет определенную емкость, которая увеличивается, когда на ней находится палец человека.

Сенсорная кнопка. Сверху покрыта скотчем

Алгоритм работы следующий:
1. Переводим ногу МК в режим выхода.
2. Подаем низкий уровень, чтобы разрядить емкость кнопки.
3. Переводим ногу МК в режим входа и ждем когда емкость кнопки зарядится через резистор 1 МОм и на входе появится верхний уровень. Ожидание производится в цикле, в котором инкрементируется счетчик.
4. Сенсор зарядился — по значению счетчика можно судить о состоянии сенсора.

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

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

Я проверял, на пустом сенсоре функция у меня возвращает стабильно 15. А когда кладешь на сенсор палец — около 30. Значит порог у нас будет где-то 15 + 15/4 = 18.

Ну а далее, в основном цикле программы нам остается проверять состояние сенсора и сравнивать его с пороговым значением. Если превысило — кнопка нажата, нужно отреагировать.

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

Я, в течении нескольких дней, пользовался кнопкой, пока отлаживал прошивку для лампы — сенсор срабатывает четко!

Задержка итерациями основного цикла
Иногда в основном цикле требуется периодически производить какие-то действия с большой задержкой. Скажем 2 секунды. Однако, просто «спать» при этом нельзя, потому что можно проворонить, скажем, нажатие на сенсорную кнопку или другое событие. В этом случае есть простой выход. Берем счетчик, выставляем его в некоторое значение и каждую итерацию основного цикла декрементируем. Как только счетчик стал равен нулю — наша задержка истекла и пришло время для нашего действия. В основном цикле можно добавить минимальную задержку, которая не сделает появление ожидаемого события критическим.

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

Результат
Дабы разбавить сухой текст, я хочу показать результат сегодняшнего урока наглядно. Т.к. я делаю лампу настроения, то я использовал RGB-светодиод. В основном цикле будем менять 7 цветов радуги + розовый по кругу. А при нажатии на сенсорную кнопку будем просто моргать белым цветом. Микроконтроллер будет работать на частоте 9.6 МГц, для этого достаточно от фьюзов по умолчанию убрать делитель на 8 (сделать CKDIV8 = 1). Фьюз байты удобно рассчитывать вот этим калькулятором.



Задержка между сменами цветов реализована циклами. Регулировка яркости светодиода реализована с помощью бинарной модуляции, о которой и подробно писал в прошлый раз.

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

Принципиальная схема

Смотрим результат на видео

Исходный код, схему, модель в протеусе можете скачать в архиве.

Ссылки на используемые материалы
Еще раз о емкостных сенсорах
Сенсорная кнопка на микроконтроллерах Attiny

В преддверии Нового года, желаю вам довести все ваши проекты до конца!

www.drive2.ru

Диммер с сенсорной кнопкой — Проекты — AVR project.ru

  По прошествии достаточного количества лет существования замечательного сайта avrproject.ru мной было сделано предложение о расширении его наполнения альтернативными проектами на микроконтроллерах фирм-конкурентов. В частности, в данной статье пойдет речь о применении МК всем известной фирмы Microchip, ну, то есть, как вы уже догадались – PIC контроллерах. Многие true-old программисты начинали свои проекты именно с них, переходя с контроллеров 51 серии, и по своей популярности они ничуть не уступают нашим любимым Atmel’ам. Некоторое время назад мной были куплены по дешевке десяток самых мелких и простых контроллеров PIC10F200 в шестиногом SOT23-6, и периодически туда-сюда я их использовал.
  Поскольку мне, в свое изучавшему в альма-матер язык программирования ПЛ/1, Ассемблер, Бейсик и Паскаль, вводя данные на перфокартах, так и не удалось заставить окостеневший разум привыкнуть к синтаксису линейки языков Си, для изучения возможностей Atmel пришлось освоить Bascom, то, соответственно, был произведен выбор в пользу бейсиков и для пикушек. Совершенно случайно я наткнулся на пакет программ от одного физика-теоретика, и это был не Стивен Хокинг и не Шелдон Купер. Итак, знакомьтесь: Владимир Сосо (Vladimir Soso) и его комплекс программных продуктов Oshonsoft. Предлагаемые им среды разработки (IDE) лично мне понравились своим единым интерфейсом, встроенным эмулятором, логическим «осциллографом», и, самое главное, генерацией ассемблерного листинга. Все программы платные с возможностью 30-ти пробных запусков. По ссылке есть скриншоты программы и описание всех её возможностей.

 

 

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

 

 

 Принцип работы диммера всем известен, но повторение – мать учения:

 Каждую полуволну сети 50 Гц, то есть 100 Гц – 0,01 сек. (10 миллисекунд) микроконтроллер отсчитывает временной интервал времени для включения симистора – реализуется фазовое управление симистором. Т.е. регулируется мощность, подаваемая на лампу накаливания, и, тем самым, излучаемая яркость.  Одновременно идет подсчет времени для работы таймера. В случае светодиодных или люминесцентных ламп яркость регулировать не получится – надо замкнуть перемычку на плате – тогда данное устройство работает просто как таймер.
 Диммер различает продолжительность касания и защиту от кратковременных помех. При кратковременном касании сенсора (от 0,1 до 0,5 сек) происходит включение лампы. Контроллер обеспечивает плавное зажигание лампы накаливания, тем самым обеспечивая более долговременную ее работу. Касание сенсора длительностью от 0,5 до 1,5 сек. выключает лампу.
 В случае применения ламп накаливания по истечении запрограммированного времени яркость лампы снижается, экономя тем самым электроэнергию, и в дальнейшем тухнет окончательно.

 Текст программы с построчными комментариями:

Define CONFIG = 0x0009  ‘GP3 as input — нога 3 как вход

Symbol mode_in = GP3 ‘ножка определяет принцип работы — лампа накаливания или нет
Symbol gate_out = GP0 ‘выход на симистор
Symbol zero_input = GP1 ‘вход детектора нуля
‘Symbol sens_input = GP2 — вход сенсора, подключенный к транзистору

‘Переменные:

Dim zero_cross As Byte ‘переменная для детектирования нуля
Dim touch_on As Byte ‘длительность касания
Dim touch_off As Byte ‘длительность отпускания сенсора
Dim power_on As Byte ‘время включения симистора
Dim power_off As Byte ‘время выключения симистора
Dim min_power As Byte ‘минимальная мощность
Dim counter_decisecond As Byte ‘счетчик сотых долей секунд
Dim counter_second As Byte ‘счетчик секунд
Dim counter_minute As Byte ‘ счетчик минут
Dim timer_volume As Byte ‘текущее значение таймера микроконтроллера

Const edge_zero = 15 ‘длительность детектирования нуля
Const gate_on_time = 20 ‘длительность включения симистора
Const max_count = 75 ‘максимальное значение цикла подпрограммы
Const count_cycle = 70 ‘значение таймера, при котором происходит отсчет времени
Const touch_first = 38 ‘значение таймера, при котором происходит опрос сенсора
Const touch_second = 40 ‘значение, при котором происходит анализ длительности касания сенсора

‘начало программы
TRISIO = %1110 ‘устанавливаем ножку 1 как выход на ножку симистора
OPTION_REG = %11010110 
‘Prescaler Rate 1:128  => 1 000 000 : 100 : 128 = Max count TMR0 = 78

gate_out = 0 ‘гасим симистор

‘ выбор режима работы
‘ если ножка mode_in заземлена, то диммер не используется

min_power = 1
If mode_in = 1 Then min_power = 50 ‘значение минимальной мощности лампы

‘ старт программы
start:

‘ детектор перехода с 0 на 1
zero_cross = edge_zero
While zero_cross > 0
If zero_input = 1 Then zero_cross = zero_cross — 1
Wend

Call work_mode()       ‘ вызов подпрограммы

‘детектор перехода с 1 на 0
zero_cross = edge_zero
While zero_cross > 0
If zero_input = 0 Then zero_cross = zero_cross — 1
Wend

Call work_mode()        ‘  вызов подпрограммы

Goto start                ‘  возврат на старт программы

End                            ‘  конец программы

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

Proc work_mode()

TMR0 = 0 ‘обнуляем таймер микроконтроллера (МК)
timer_volume = 0 ‘и буферную переменную, куда данное значение копируется

While timer_volume < max_count ‘пока значение таймера меньше макс. значения, выполняем цикл

        While timer_volume = TMR0 ‘ждем, когда значение таймера изменится
        Wend

        timer_volume = TMR0 ‘присваиваем буферной переменной значение таймера МК

‘ Проверяем, включен ли свет, если да, то назначаем время выключения симистора
        If power_on = 0 Then
                power_off = 0
        Else
                power_off = power_on + 5
        Endif
‘ конец данного условия

‘ Формируем импульс для симистора
        If power_on < timer_volume And timer_volume < power_off Then

        High gate_out
        WaitUs gate_on_time
        Low gate_out

        Endif
‘ конец данного условия

‘ в зависимости от значения буферной переменной, выполняем разные действия

        Select Case timer_volume

‘ Измеряем длительность касания/отпускания сенсора
        Case touch_first  ‘count length touch to on: 0.2-1s, to off > 1s
                zero_cross = GPIO And %00000110
                If zero_cross = %00000010 Then touch_on = touch_on + 1
                If zero_cross = %00000110 Then touch_off = touch_off + 1
‘ конец данного условия

‘ В зависимости от длительности касания/отпускания сенсора, включаем/выключаем лампу
        Case touch_second
                If touch_off > 20 Then
                        If touch_on > 50 And touch_on < 151 Then
                        power_on = 0
                        Endif
                        If touch_on > 10 And touch_on < 51 Then
                        power_on = min_power
                        Endif
                        touch_off = 0
                        touch_on = 0
                Endif
‘ конец данного условия

‘ В данном случае считаем количество импульсов для таймера
        Case count_cycle  ‘count second & minute
                If power_on = 0 Then
                        counter_decisecond = 0
                        counter_second = 0
                        counter_minute = 0
                Else
                        counter_decisecond = counter_decisecond + 1
                        If counter_decisecond = 250 Then
                                counter_second = counter_second + 1  ‘2.5 second
                                counter_decisecond = 0
                                If counter_second = 6 Then  ’15 second — тестовый вариант
‘If counter_second = 240 Then  ’10 minute — рабочий вариант
                                        counter_minute = counter_minute + 1
                                        counter_second = 0
                                Endif
                        Endif
                        If counter_minute > 3 Then power_on = min_power
                        If counter_minute > 5 Then power_on = 0
                Endif

‘ Плавное зажигание лампы накаливания
                If power_on > 1 And counter_minute = 0 Then power_on = power_on — 1

‘ конец данного условия

        Case Else
        EndSelect

Wend
‘  возврат в начало подпрограммы и ожидание следующего значения таймера МК

End Proc
‘ конец подпрограммы и возврат в основной цикл

 

 Ниже приведен универсальный (работа как с PIC10F200, так и с Attiny13) и усовершенствованный вариант платы диммера — добавлены помехоподавляющие элементы: RC цепочка (3*1,2 кОм и 0,1*275V) и дроссель 220 мкГн. Включение возможно как по трехпроводной схеме – основная разводка, так и по двухпроводной вместо обычного выключателя – добавлено место под перемычку. Данные элементы выделены красным цветом. Размер платы и расположение элементов выбирались исходя из корпуса – верхней части блока питания от старой Nokia, малогабаритный трансформатор от которой ушел на другие проекты. В качестве сенсора используется советский транзистор КТ605 с никелированной крышечкой – получилось достаточно эстетично. Плата выполнена на одной стороне, прикручена 3 шурупчиками к существующим стойкам и корпус в сборе посажен на двухсторонний скотч. Тиристор припаян к плате и вокруг него напаяно несколько ребер из жести для охлаждения. Видимое на фотографии отверстие служит для конвекции воздуха.

 

ВАЖНО: не забываем про работу с 220 Вольт. Диммер чувствителен к включению в розетку – при неправильной фазировке просто переверните вилку.

 

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

Пример настройки таймера на частоту 1,2 МГц приведен ниже.
TCCR0A = %00000000
TCCR0B = %00000011
OCR0B = 187
‘Prescaler Rate 1:64  => 1 200 000 : 100 : 64 = Max count TMR0 = 187
‘WDTCR = %00000100  ‘Prescaler Rate 1:32K = 0.25 sec

 

Печатная плата в формате Lay

Схема в Splan

Исходники и готовая прошивка

 

автор: Pchela5

 

avrproject.ru

Сенсорный выключатель на модуле TTP223

Ввиду мелкого размера микросхем TTR223 (datasheet), данный сенсорный модуль является довольно удобным выходом для тех, кто не хочет связываться с распайкой детали в корпусе SOT-23. О модуле и примере его практического применения можно прочитать ниже.

Предыстория:

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

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

Так же на модуле есть пары выводов под запайку А и В. Пара А — служит для выбора уровня на выходе модуля при срабатывании — по умолчанию высокий уровень, в запаянном состоянии — низкий. Пара В — для управления типом срабатывания — по умолчанию кнопка, в запаяном состоянии триггер. Кроме того, рядом с микросхемой TTP223 имеется место под установку конденсатора от 0 до 50 пФ для снижения чувствительности сенсора, сюда же подпаивается проводок для выносного сенсора.


Таким образом, я запаял пару В (нужен высокий уровень для открытия N-канального мосфета), поставил конденсатор 0805 на 30пФ и сначала сделал вывод на корпус светильника. Не тут то было, из за размера корпуса нет четкого срабатывания, включение происходит крайне не стабильно, в том числе в зависимости от того, раскрыта кисть или вытянут один палец — может сработать при положении руки за 20 см от светильника, а может не сработать при прямом прикосновении. Установка конденсаторов различных номиналов ничего не дала, чувствительность менялась, но нестабильноть работы так и оставалась. Пришлось винтик и декоративную шишечку, с помощью которых светильник крепиться к внутреннему кронштейну (а тот соответственно к стене) изолировать от основного корпуса с помощью прокладки из текстолитовой шайбы, силиконовой резинки (от какого то винчестера) и кусочка термоусадки.


Вывод на сенсор подпоял к этому винтику. Модуль срабатывает четко, только от прикосновения к маленькой шишечке (человек со стороны и не поймет как лампу включить). Т.е. при его использовании не следует стремиться к сенсору большой площади. Платка легко помещается внутрь корпуса, туда же сунул 7805 для запитки модуля и мосфет 60N03L в качестве реле для светодиодных ламп, все оголенные проводки и выводы покрыл цапон-лаком и приклеил изнутри к корпусу на термоклей.

Найти подходящую лампу оказалось не так просто, абажуры устанавливаются на лампы и держатся за счет ее формы, а ламп на DC12В с цоколем Е14 в форме капли можно сказать и нет. Хотел уж было лампочку на 220 В переделывать, но потом нашел эти, взял на 3Вт, 4000К. При 12В потребляет 0,26 мА, что соответствует заявленной мощности.


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


В качестве источника питания применил блок питания на 12В 1А, его описывал Kirich в своем обзоре.

Заодно сделал подсветку под тумбой с умывальником. Я как то описывал микроволновый датчик движения, применял его тогда для скрытой установки за пластиковой дверцей. Но в данном случае из под тумбы есть прямая видимость, поэтому использовал всем известные ультразвуковой датчик SRF-05, Ардуино Nano и тот же мосфет 60N03L, что получается в два раза дешевле. В качестве источника света использовал такой светодиодный модуль


Я его не покупал, а взял с рекламного проспекта, с выставки


Для точечной скрытой подсветки такие модули самое то, мне понравилось. На Али наверняка есть что то подобное.


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

Схема в светильнике:

mysku.ru

Простая сенсорная кнопка

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

Транзисторы любые NPN структуры: КТ315, КТ3102 или BC547 или любой другой. Резисторы 0,125-0,25 Ватт. Светодиод любого цвета, но лучше красный, так как падение напряжение падение у него минимальное. Питание 5 вольт, больше меньше можно и меньше тоже.

Все компоненты были компактно соединены между собой на миниатюрной печатной плате, которую можно сделать просто вырезав лишнюю медь резаком оставив таким способом остроугольные многоугольники. Детали, использованные для поверхностного монтажа, транзисторы в sot-26 npn, резисторы 0805, перемычки – кусочки провода, вместо них, если есть берите крупный 2512 резисторы с нулевым (условно) сопротивлением. Сенсорное устройство работает сразу, без настройки.

Объяснение работы схемы

Дотрагиваясь до базы транзистора Q3 вы наводками открываете его, вследствие чего через его КЭ и резистор 1 Мом течет ток, который открывает следующий полупроводник Q2, тот открываясь открывает Q3, который уже управляет светодиодом, открываясь через его КЭ течет ток, от минуса идет к катоду светодиода, а к аноду он уже подключен. Резистор 220 Ом здесь “токоограничительный”, на нём падает лишнее напряжение, что защищает диод от деградирования кристалла и полного выхода из строя LED1

Применение

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

Также организовать включение/отключение нагрузки можно с помощью оптопары, если отсутствует реле, тогда также будет гальваническая развязка. Эта прекрасная вещь состоит из светодиода и фототранзистора, когда первый светит, то это открывает транзистор и через его КЭ может течь ток. Включаем нужные выводы оптрона в схему сенсора вместо светодиода LED1, а остальные два в разрыв источника питания и любой нагрузки. Эту деталь можно изъять из зарядок от телефона. Возьмите, к примеру, PC-17L1.

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

Еще вместо реле и оптопары возможно применение двух npn транзисторов. Я так и сделал, схему вы видите. Работает это так: Q5 всегда должен быть открыт, через резистор 10 кОм, но через КЭ открытого Q4 на базу Q5 поступает “минус” и из-за этого он закрыт. Когда же вы касаетесь сенсора – то минус поступает через открытый Q1 на базу Q4 и закрывает его, теперь уж ничто не мешает Q5 оставаться открытым – нагрузка работает, а в моем случае мощный 1 Ватт светодиод ярко светит.

Так это выглядит в собранном состоянии.

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

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

Коментарии

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

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

Яркость работающего диода не велика, если вы дотрагиваетесь только до базы третьего транзистора, но стоит вам коснуться еще и плюса питания, то ваше тело выступит в роле резистора и транзистор Q3 перейдет в насыщение. Но при таком раскладе для некоторых потеряется смысл сенсора.

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

Видео

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

usamodelkina.ru

Сенсорный выключатель | Библиотека устройств на микроконтроллерах


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

  Конструктивно разделен,  на силовой блок с блоком питания и на сенсорную плату с системой управления.  В девайсе используем два МК это PIC12F629 для приема IR команд с пульта управления и PIC16F628A собственно сам выключатель, такой конструктивный подход обособлен уже достаточной нагрузкой на   PIC16F628A, где  для надежного и уверенного IR  приема не хватает ресурсов.

  Пульт для выключателя необходим с протоколом NEC , по сути в PIC12F629 несколько модифицированная программа «IR конструктора» думаю многие с этим устройством уже знакомы.

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

  Из функций стоит отметить:

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

— первая, кнопка верх

— вторая, ON-OFF

— третья, кнопка вниз

Как записать пульт: Дотронутся до 6 сенсора (верхний сенсор, максимальный уровень яркости и удерживать около 10 секунд) светодиоды на выключателе с включенных всех переключатся на  четыре центральных светодиода.  Отпускаем сенсор и берем пульт, нажимаем поочередно выбранные три кнопки, индикацией четырех средних светодиодов видим проведения записи. Запись завершена можно проверить и понажимать кнопки пульта.

2.   Работа с пультом:

— кнопкой  ON-OFF собственно включаем и выключаем

— кнопкой  верх с выключенного состояния включаем на максимальную мощность,

в включенном положении увеличиваем яркость.

— кнопкой вниз с выключенного состояния включаем на минимальную  мощность,

в включенном положении уменьшаем  яркость.

3. Работа с сенсорной панелью: 

— Короткое прикосновение к панели функция ON-OFF

— Прикосновение и удержание на выбранном сенсоре установит уровень яркости соответствующий этому сенсору.

— Режим слайдера, перемещая палец по сенсорной панели устанавливаем необходимый уровень яркости.

4.  Стандартная функция авто выключения света. Меню  выключателя позволяет выбрать один из шести режимов времени авто выключения:

-1  авто выключение через 15 минут. (индикация нижних светодиодов)

-2  авто выключение через 30 минут. (индикация второго светодиода)

-3  авто выключение через 1 час.         (индикация третьего светодиода)

-4  авто выключение через 4 часа.       (индикация четвертого светодиода)

-5  авто выключение через 8 часов.    (индикация пятого светодиода)

-6  авто выключение через 12 часов. (индикация шестого светодиода)

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

5.  Выбор режима светодиодной индикации. Для  входа в режим выбора настроек светодиодной индикации необходимо включить свет кнопкой вкл-выкл. на пульте и удерживать ее в течении примерно10 секунд до появления на выключателе индикации текущего режима. Всего доступно 6 режимов, первый считается с минимального уровня освещения и далее верх до шестого. Далее кнопками на пульте верх и вниз выбираем необходимый режим подсветки, для запоминания выбора подтверждаем нажатием кнопки вкл-выкл, режим запоминается и выходим в нормальный режим работы.

Режимы подсветки выключателя:

1. Установлен по умолчанию в новом изделии. Выполняется подсветка контура выключателя и индикация выполняемых действий, как с сенсорной панели так и с пульта.

2. Режим в котором выполняется  индикация выполняемых действий, как с сенсорной панели так и с пульта, но нет индикации подсветки контура в ждущем режиме.

3. Режим в котором вся индикация отключена. Если у вас в доме есть маленькие дети, чтоб не привлекать их внимание.

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

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

6. Аналог четвертого режима с той лишь разницей, что после включения света запускается таймер на 15 минут, по истечению времени индикация начинает мигать привлекая внимание. 

Сборка: 

  Выключатель можно собрать как в DIP корпусах МК так и в  SOIC, платы прилагаются.

Процесс сборки требует качественной платы и опыта пайки SMD компонентов. Применяемые светодиоды использовал с ленты, цвет можно выбрать по вкусу. Светодиоды, требуют к себе особого внимания,  пока не впаяны в плату, они очень чувствительны к статическому электричеству и перегреву. Рекомендую до монтажа дорожки на плате временно соединить между собой перемычками. Также применять качественный паяльник или лучше выключать его из сети 220В, в общем использовать все возможные меры защиты.

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



Программирование:  

-PIC12F629 паяем первым и «шьем» на плате, потом можно поставить ИК приемник. 

-PIC16F628А также пишем на плате, это можно сделать, когда все компоненты установлены, мешать не будут. Если не пишется в монтаже где-то брак. 

Силовой блок: 

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

Конструкция панели:  

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

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

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

Внешний дизайн панели, цветовая гамма, форма зависит от вашей фантазии.

Детали:   

Конденсатор 1000 пф. С малым допуском отклонения. 

Заключение:  

Материал предназначен, для частного использования. В случае серийного производства необходимо получить разрешения автора. 

elektro-shemi.ru

Простая сенсорная панель (сенсорные кнопки)

Такая панель может быть использована для замены обычных и сложных выключателей, такие как: резистивные, оптические и акустические датчики. На сайте умельца ChaN (http://elm-chan.org/works/capsens/report_e.html) я нашел интересную схему простого девайса: сенсорные кнопки на микроконтроллере ATtiny2313 рис. 1.


Рис. 1. Внешний вид панели

Видео работы устройства

На входы микроконтроллера подключены 8 медных панелей покрытых изолирующей пленкой, с подтягивающими резисторами 1МОм. Суть работы состоит в том, что каждая медная пластина как часть конденсатора с емкостью 1пФ. При касании пальцем образуется «конденсатор», емкость которого меняется в пределах от 1пФ до 10пФ. Это очень маленькая величина, но вполне достаточно для изменения электрического заряда на входе МК и обнаружения «нажатия» на панель. Человек даже если изолирован от земли, обладает собственной «емкостью» около 100пФ (при ESD-тестах) и является как «заземление».


Рис. 2. Графики. а — нет нажатия, в — нажатие на сенсор

Изменение емкости регистрируется методом интеграции: с некоторой частотой микроконтроллером производится заряд сенсорных пластин рис. 2 (участок Tcs). Заряд на сенсорах через подтягивающие резисторы будет автоматически разряжаться. При касании пальцем изменяется емкость сенсора Cs в большую сторону. Соответственно, на зарядку такого конденсатора требуется большее время, но через определенный период микроконтроллер зафиксирует значение напряжение на сенсоре. Заряд когда пластина «не нажата» принимают за точку отсчёта — кривая A (видимо это выполняется при включении контроллера). Судя по графику B рис.2, когда на пластину нажали напряжение через фиксированный период будет зарегистрировано ниже, чем обычно. На этом принципе интеграции основана еще одна разработка ChaN — цифровой измеритель емкости. Циклы заряда на всех 8 пластинах сенсора производится поочередно, при чем может с достаточно высокой скоростью. Скажем, десятки (может больше) раз в секунду измеряется каждый вход МК. Панель мгновенно отреагирует на любое нажатие. Изменить емкость сможет любой металлический объект.

Я детально не разбирал код программы МК (Си и атмелы не моя стезя), да и надеюсь принцип работы устройства понял правильно :).

Схема устройства простая, и собрать на макетной плате час-два рис. 3.


Рис. 3. Схема сенсорной панели

Исходный код программы capsens.zip 7,5кб

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

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

 

Art!P

nice.artip.ru

ATtiny2313 — Страница 4 — Меандр — занимательная электроника

Такая панель может быть использована для замены обычных и сложных выключателей, такие как: резистивные, оптические и акустические датчики. На сайте умельца ChaN (http://elm-chan.org/works/capsens/report_e.html) я нашел интересную схему простого девайса: сенсорные кнопки на микроконтроллере ATtiny2313 рис. 1. Рис. 1. Внешний вид панели На входы микроконтроллера подключены 8 медных панелей покрытых изолирующей пленкой, с подтягивающими резисторами 1МОм. …

Читать далее

Постоянная ссылка на это сообщение: http://meandr.org/archives/7707



Представлена конструкция электронных часов на микроконтроллере Attiny2313 с выводом на LCD-дисплей. Часы сделаны на микроконтроллере Attiny2313 и дисплее 2*16 от WINSTAR на контролере HD44780. Время отображается на часах в формате ЧЧ:ММ:СС. Прошивка написана на языке бэйсик. Часы собраны на печатной плате.  Часы работают от  внутреннего генератора 8МГЦ. Значение кнопок: Кнопка  1  +часы Кнопка  2  +минуты …

Читать далее

Постоянная ссылка на это сообщение: http://meandr.org/archives/6483

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

Читать далее

Постоянная ссылка на это сообщение: http://meandr.org/archives/5936

  Таймер  предназначен для циклического включения и выключения исполнительного устройства (ИУ) с заданными временными интервалами, которые оперативно можно изменить в пределах от 10 до 80 минут кнопками S1-S3.  Дискретность установок равна 10 минут. Стартовые преустановки времени на включение и выключение нагрузки равны по 30 минут. Таймер снабжен индикацией времени в виде линейки светодиодов (8 светодиодов …

Читать далее

Постоянная ссылка на это сообщение: http://meandr.org/archives/2269



Предлагаю вашему вниманию схему простого и недорогого программатора для микроконтроллера Attiny2313. Для программирования контроллера используэтся COM — порт компьютера. Программа которую я использую для заливки программы в этот чип — Pony Prog. Для питания микроконтроллера необходимо напряжение 5В (Рис.1). Удобно использовать как источник питания для данного программатора USB. Рис.1 После правильной сборки устройство работает без …

Читать далее

Постоянная ссылка на это сообщение: http://meandr.org/archives/1664

meandr.org