Этот сенсорный переключатель восьми аудио каналов на контроллере позволяет легко коммутировать восемь (8) сигнальных каналов небольшой мощности одним простым прикосновением!
Переключатель запоминает своё последнее состояние и при подаче питания включает именно те каналы (в данном случае - звуковые), которые были включены до его выключения.
Предыстория устроства такова:
Как-то старший братик пожаловался на отсутствие возможности слушать и переключать музыку в его Peugeot 407 в широком диапазоне, т.е. в самой магнитоле некуда вставить диск либо флешку, даже линейного входа нету, есть только радио и CD-чейнджер на 6 CD. Только 6 CD! И только CD! Ставить другую магнитолу не охота: -заводская отлично влита под дизайн авто, другую туда ну никак не вставить - коряво будет выглядеть.
Подумал я немного и спросил, как он на счёт идеи слушать музыку с телефона, который всегда можно вставить в зарядное и получится портативный плеер, у которого никогда не сядет батарейка и с помощью которого можно скачать музыку из интернета. Правда, без высоких технологий, без блютуза и прочих приблуд (не дорос я ещё до такого) - просто по проводу. В магнитолу монтируется вход 3,5 Jack, а коммутацию осущевствлять простой механической кнопкой. Он согласился.
Было бы всё так просто....
Дело в том, что микросхема УНЧ управляется по шине I2C. То есть, не получится одной кнопкой управлять громкостью с телефона. В магнитоле осущевствлено программное управление энкодером. Это первый косяк.
Второй косяк заключается в том, что входов в этой микросхеме - четыре. Два задних и два передних. Параллелить входы тогда, когда коммутирутеся туда ещё телефон - занятие не самое благодарное.
Да и где я возьму маленькую красивую кнопочку или тумблер, которая позволит переключить сразу несколько звуковых каналов??? Не нашёл я ни у себя, ни на рынке таких кнопочек, только громоздкие многовыводные переключатели.
Незадолго до этого начал читать про контроллеры, такие программируемые микросхемы с массой возможностей, которые можно адаптировать под свои нужды.
Почитал литературы, запрограммировал пару платок: поморгал светодиодом, кнопкой заставил моргать и сел за сенсор. На страницах интернета вникнул, как они устроены. Забегая наперёд скажу, что много (очень много) строк кода, которые я тут нарисовал можно было оформить гораздо проще. Просто на момент написания кода я ещё плохо знал все операторы наизусть. А если ещё использовать язык С (читается си), то вообще по объёму программа займёт максимум листик :)
Так вот, почитал я, значит, как сенсорные кнопки работают, усвоил общий принцип, нарисовал на листе макет, накинул примерный алгоритм работы, составил первую программу. Из всех PIC контроллеров, что у меня были я выбрал pic16f84a. Почему этот всем приевшийся и устаревший PIC? Да потому, что он содержит минимум перефирии, дёшев и к тому же был у меня дома в smd исполнении.
Единственное что - много лишних и свободных ног остаётся, хотя тут не принципиально, но для этого проекта хватило бы любого контроллера на 8 ног. Даже на 6 :)
Кстати, в контроллерах STM32 в большинстве моделей есть выводы, которые превращаются в сенсорные простым конфигурированием (выбором функции сенсора из множества доступных конкретно на данном выводе). У них узнать есть касание или нет и дать команду на дальнейшую обработку события по сути можно с помощью двух-трёх строк кода языка С.
Замечательно, не правда ли?
Вот так выглядит этот самый сенсорный переключатель восьми аудио каналов на контроллере PIC.
Всё. Весь сенсорный переключатель. Обычно в таких случаях кладут рядом линейку Я не подумал, когда фотографировал :)
Размеры этой платы с кварцем - 55х25х5. Если заменить кварц на SMD вариант, то плата становится тоньше на 2 мм, итого в высоту будет 3 мм!
Прежде всего, поговорим о недостатках. Максимальная тактовая частота у этого пика - 10 МГЦ, её недостаточно для точного определения наличия руки в непосредственной близости от, например, пластинки металла размером 10x10, однако более, чем достаточно для определения касания до этой пластинки металла;
Просто я думал, что кнопки и железяки никакой не будет вообще. Планировалась установка сенсорной пластины с внутренней стороны магнитолы.
Не придумал я больше недостатков к задуманному устройству. Если найдёте - опять же - пишите.
А хотя вспомнил - нету предусилителя звукового сигнала со стороны телефона. Иначально он с ним и планировался, глянул на своё же фото:
В принципе, сенсор может функционировать и без него. Только возможна ситуация, когда телефон не даст той необходимой громкости, когда хочется "врубить на всю" :)
Примечание - в конце статьи есть продолжение - установка этого устройства в магнитолу. И звука от мобильника, кстати, хватает на то, чтобы слушать очень громко.
Появилась некая "хайтековость" вместо изначально задуманной страшной кнопки :)
Изначально я тренировался на таком же контроллере, только в DIP корпусе. Для этого было изготовлено что-то типа макетки, что ли..
Схему напаял на эти выводы, контроллер программировал напрямую, без применения технологии внутрисхемного программирования ISP.
Со всеми детальками первый полуфабрикат появился в таком виде:
Страшненько выглядит, правда? Зато работает :)
Плату рисовал в DipTrace, но со временем перевёл для посетителей сайта в *LAY. И вообще, это я дал ей предназначение звук коммутировать, а ведь устройство можно адаптировать и для переключения более мощных нагрузок, с разным количеством каналов и разным количеством сенсорных кнопок.
И вот, первый набросок платы сделан и распечатан - смотрим, сходятся ли ножки, масштаб..
Всё сходится. Можно выводить на печать и делать плату. Да вот только смутили меня эти волны на дорожках. Оказалось, это из-за несогласования разрешения печатей принтера и изображения. Поменял на 600 точек на дюйм разрешение и вот она, разница:
Так что будьте внимательны, не попадитесь. Особенно это касается тех, у кого плохое зрение.
Дальше по накатанной: печатаем на глянцевом листе от обычного спама в подъездные почтовые ящики:
Утюгом переносим изображение на отпалированный текстолит:
Травим плату. Только аммоний персульфат. На фото плата протравлена немного не до конца.Вытравленная плата запоминающего сенсорного переключателя звуковых сигналов
С применением SMD кварца и более мелкого контроллера, платка потеряла бы в длине миллиметров эдак 10, а то и больше.
Лудим, припаиваем контроллер:
По-быстрому осваиваем технологию внутрисхемного программирования. А осваивать там в принципе и нечего. Паяем провода в соответствующие места платы. Кстати, те два полигона, что идут от 12 и 13 выводов - не для SMD детали, а для одноразового программирования платы по интерфейсу SPI по принципу: припаял, запрограммировал, отпаял.
На последнем фото видно, что я не предвидел остутствия у себя конденсаторов типоразмера 0603 для кварца. И даже 0805 не нашлось, только 1206, поэтому они немного не на своих посадочных местах.
Схема устройства в общем простая:
Можно упростить: убрать резистор 1кОм с 4 ноги и напрямую к Vcc.
Update. Вот, покуда добавлю исходник на ассемблере - качайте, смотрите :) Открывать любым блокнотом. И прошивку добавил, слово конфигурации - 0009h. А вот прошивка со словом конфигурации. И даже плата тут есть. Чтобы сохранить прошивку - нажмите правой кнопкой мыши по ссылке - пункт "сохранить по ссылке как..."
Как запрограммировать контроллер по SPI - в интернете полно статей.
Написал продолжение статьи, в котором описывается удачный опыт интегрирования устройства в магнитолу. Читаем, обсуждаем.