leoniv (leoniv) wrote,
leoniv
leoniv

Category:

Панель



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



Конструкция панели управления – многослойная. Самый верхний слой – это двухслойный пластик толщиной 1.4 мм с лазерной гравировкой. Кнопки тоже изготовлены из этого пластика. Ручку регулятора подобрал готовую.



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

Транспарант светящихся надписей представляет собой тонкую пленку с черным непрозрачным покрытием, в котором сделаны прозрачные буквы. Изготовить такой транспарант можно многими способами. Я уже применял подобные решения в своей аппаратуре. Тогда делал на лазерном принтере на матовой пленке. Правда, плотность черного цвета оставляла желать лучшего, в некоторых местах пришлось подкрасить маркером. Но в общем светящиеся буквы в дисплеях самодельных усилителей получились неплохо. Самым правильным способом изготовления транспаранта был бы фотоспособ. Но черно-белая фотография исчезла, а воспользоваться услугами полиграфических фирм по фотовыводу крайне сложно. Как вариант, можно попробовать попросить о такой услуге изготовителей печатных плат. Но, боюсь, будет дорого. На этот раз решил попробовать сделать транспарант методом лазерной гравировки черной краски, нанесенной на пленку PET. Получилось весьма неплохо, черный цвет совершенно непрозрачный, а буквы слегка матовые. Это хорошо в плане равномерности свечения. Под транспарантом будет еще слой матовой пленки в качестве рассеивателя.



Под верхнем декоративным слоем находятся два технологических слоя из листовой пластмассы толщиной 3 мм. Они служат для крепления подвеса кнопок и для получения отдельных отсеков для светодиодов. Сначала хотел заказать лазерную резку этих деталей из оргстекла, но потом передумал и изготовил их методом фрезеровки из черного листового полистирола. В качестве заготовки использовал боковую стенку от магнитофона «Маяк». Черного листового полистирола в свободном виде не встречал ни разу. Белый в виде листов – встречал, хотя купить тоже не имел возможности.



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



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



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



Подвес кнопок в большинстве фирменной аппаратуры сделан из пластика, зачастую он отлит вместе с самой кнопкой. Я тоже делал пластиковые подвесы – клеил полоски тонкого полистирола. Но такие подвесы получаются довольно жесткими и недолговечными. Пластик имеет свойство трескаться. Поэтому здесь я решил применить латунные подвесы. Не смог найти свою тонкую листовую латунь (а ведь точно где-то была!), пришлось купить на Поле Чудес кусочек толщиной 0.1 мм. Подвесы кнопок имеют сложную форму, тут как раз подошла бы лазерная резка. Но низкая доступность таких услуг заставила отказаться от этой затеи. Пришлось прибегнуть к механической фрезеровке. Несмотря на малую толщину материала, процесс этот весьма муторный. Приходится заготовку прижимать к подложке, которая тоже фрезеруется на некоторую глубину. Для фрезы диаметром 1 мм допустимые боковые усилия очень малые, поэтому приходится работать с очень малой подачей.



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



Для обработки пазов шириной 1 мм обычные надфили бесполезны, приходится применять маленькие. На фото справа для сравнения показан надфиль обычного размера.



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



Долго подбирал подходящие микропереключатели. Для проигрывателя очень важным является легкое нажатие, чтобы не создавать лишних вибраций. Наиболее подходящими здесь были бы сенсорные кнопки, но вот незадача, они мне страшно не нравятся. Кнопка должна обязательно давать тактильные ощущения. Как написала на форуме одна девушка, "Я должна иметь возможность положить палец на кнопку, но передумать ее нажимать". Полностью поддерживаю. Конечно, обычные тактовые кнопки – не лучший вариант, особенно те, что продаются на рынке. Выбрал довольно редкие кнопки с резиновыми втулками внутри (стоят в некоторых мышках). Вроде, их название DS027-03TJ-70.



Для наиболее используемой кнопки Start/Stop решил поставить большой переключатель производства Matsushita с еще меньшим усилием нажатия и более приятным щелчком. Этот переключатель довольно габаритный, на все кнопки поставить такие сложно.

Теперь дело за печатной платой панели управления. С кнопками проще – их просто надо вывести на разъем, дальше через шлейф они будут подключаться к портам микроконтроллера. А вот с индикацией сложнее. Количество светящихся элементов довольно большое, нужен какой-то драйвер. Динамическая индикация здесь не проходит по причине помех. Существуют специализированные многоканальные (например, 16-канальные) драйверы светодиодов, которые внутри имеют генераторы тока и не требуют внешних резисторов. Что удивительно, такие драйверы (MBI5026, MBI5027, MBI5039 в корпусе SSOP-24) даже оказались в наличии в магазине Белчип. Не ожидал. Но наступил другой облом – оказались недоступными малогабаритные семисегментные индикаторы с общим анодом. Чтобы минимизировать схему и избавиться от резисторов, продумывал всякие экзотические варианты. Типа уйти от общепринятого питания светодиодов током, а запитать их напряжением, но скомпенсированным по температуре с помощью подобного светодиода. Но это все было кривоватым. Помечтав о необычном, пришел к повседневному решению: 74HC595 с резистором размера 0603 на каждом из выходов.

Когда взялся за разводку печатной платы, затея показалась безнадежной. Ширина платы ограничена, а расположение компонентов жестко привязано к координатам. Это диктуется дизайном, а электроника должна всецело ему подчиняться. Что нужно предпринять, чтобы плата вдруг развелась? В ЖЖ одного из френдов прочитал замечательный вопрос, который полезно задавать себе во время работы: «Где та разница, которая даст разницу?» На пустом месте ничего не случается. Нужно чем-то жертвовать, менять подходы. В данном случае спасением явились две меры: произвольное соединение выходов 74HC595 с сегментами и применение лишней 74HC595, чтобы позволить себе оставлять наиболее неудобные для разводки выходы неподключенными. Произвольное подключение сегментов грозит крупными перестановками битов в программе, но программа все стерпит, ее не видно. Современные процессоры имеют производительность гораздо выше требуемой, что можно использовать, в том числе, для исправления изъянов разводки плат.

Вообще, произвольная перестановка выводов во многих случаях сильно упрощает разводку. Разводить точно по схеме нужно далеко не всегда. Например, многие ножки микроконтроллеров взаимозаменяемы (но не все). Особенно забавно видеть, когда для микросхем памяти разводят адреса и данные согласно принципиальной схеме. На самом деле, все эти выводы равнозначны. Это не относится к ПЗУ, которые прошиваются вне устройства. В данном случае нужно считать равнозначными все выходы всех регистров. Разводка платы в таких условиях на первом этапе представляет собой постоянную перетасовку выводов. Разводка идет без схемы. Тут PCAD 2006 проигрывает старому PCAD 4.5, потому что требует двойного количества работы: сначала надо создать связь, и только затем можно провести дорожку. При перетасовке надо удалить дорожку, удалить связь, создать ее снова, перерисовать дорожку. Морока, но что поделать. В результате плата развелась. Осталось только ее «причесать». Специально для LUT сделал площадки переходных отверстий довольно крупными (диаметром 1.4 мм), чтобы уйти от проблемы точного совмещения сторон. Площадки для компонентов тоже сделал по возможности побольше. В самом конце нарисовал по плате принципиальную схему и добился полного соответствия нэтлиста. Схема нужна для проверки на ошибки, которых, к счастью, не нашлось ни одной.

Поскольку плата разведена с довольно проблемными для LUT нормами 0.3/0.2 мм (проводник/зазор), решил взять самую лучшую фотобумагу – глянцевую Epson, которая осталась от покупки струйного принтера (самого принтера уже давно нет). Прогнал бумагу через печку принтера, потом напечатал из PCAD одну сторону, затем другую. Я в шоке, по длине платы разница между распечатками составила примерно 1 мм! Раньше такого не замечал, вероятно, это особенность бумаги. Абсолютные размеры не так важны, важно совпадение сторон. Поэтому стало ясно, что печатать обе стороны надо за один проход. Прямо из PCAD это сделать затруднительно. Поэтому напечатал стороны в pdf, затем с помощью Adobe Acrobat сохранил pdf в ps, затем ps открыл в Corel Draw, ну а дальше можно делать все, что душе угодно. Более прямого пути не нашел, сразу в ps напечатать не удалось, открыть pdf в Corel – тоже. Но и так хорошо. Напечатаные за один проход стороны совпали с высокой точностью.



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



Основная проблема при использовании глянцевой фотобумаги в LUT – это удаление «глянца» в узких местах между проводниками. При работе с Lomond эта проблема встает во весь рост. Бумага Epson в этом плане просто сказка – большинство «глянца» смывается сразу, остается буквально пару мест, где нужно процарапать зазоры. На радостях кинулся искать бумагу Epson в продаже, но был очень огорчен ценами.





Травление платы не принесло никаких сюрпризов, рисунок проводников получился хорошо.





Фрезеровка контура и сверление показало отличное совмещение сторон. Плата получилась на редкость качественная.



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



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



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



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

Плата готова, теперь предстоит процесс ее оживления.





Подключил плату к Discovery и для начала решил написать небольшой тест, чтобы зажечь индикаторы и проверить кнопки. Как было сказано выше, при разводке платы все возникающие трудности перекладывались на программу. А теперь настало время с этими трудностями разобраться.
Для удобства лучше описать в одном месте программы соответствие между сегментами индикатора и выходами регистров. Сначала хотел сделать что-то подобное с помощью макросов. Например, сегмент «A» первого индикатора подключен к выходу Q4 регистра U6. Описываю это дело так:


enum { U1, U2, U3, U4, U5, U6 }; //регистры индикатора
enum { Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7 }; //выходы регистров индикатора
#define SEG_A1 U6, Q4 //сегмент A, разряд 1
#define SET_SEG(u, q) (RegData[u] |= 1 << q) //установка бита q в регистре u


Но когда делаю подстановку SET_SEG(SEG_A1), то получаю ерунду, все попадает в первый параметр, а второй всегда пустой. Проблему решить не удалось, хоть и пытался что-то на эту тему читать. Решил отказаться от макросов и сделать все на шаблонах. Определил шаблонный класс TSegment, который унаследовал от класса TRegDat, который владеет данными – копиями регистров индикатора, а также умеет с ними кое-что делать (например, очищать):


tеmplate< regs_t regout_t="RegOut_t" segmask_t="SegMask_t" msk="Msk" >
class TSegment : public TRegData


В итоге каждый сегмент описывается так:


TSegment< U6, Q4, A > Seg_A1;


Зажечь его очень просто: Seg_A1 = s, где s – символ в 7-сегментном коде. Оператор присваивания перегружен таким образом, что если в коде s есть бит, соответствующий данному сегменту, то сегмент включится. Поэтому достаточно код символа присвоить всем его сегментам, нужные при этом включатся. К сожалению, множественное присваивание победить так и не удалось, но и без него получилось довольно компактно. Что примечательно, в результате получаем точно такой же код, что и в случае строчки


if(s & A) RegData[U6] |= 1 << Q4;


В этом плане C++ демонстрирует очень большое отношение объема исходника к объему кода. Громадный исходник порождает небольшой код.

Первый запуск свеженаписанной программы дал на индикаторе изображение, словно из фильма «Чужой».



Сегменты загорались в хаотической последовательности. Попытка локализовать проблему все ближе и ближе подводила к регистрам. Оказалось, они неправильно грузятся по SPI. Возможно, причина в довольно длинных проводах. Снижение частоты SPI в 2 раза проблему полностью устранило. Индикатор сразу показал все так, как было задумано. Ни одной ошибки в программе не было, отладки она не потребовала. Исходник здесь. Схема здесь. Рисунок платы в pdf здесь.



Теперь, когда светодиоды могут зажигаться, можно заняться подбором резисторов. Для каждого сегмента индикатора установлен резистор 330 Ом. С таким резистором дискретный светодиод горит слишком ярко. Увеличил резистор до 1 кОм. Яркость почти выровнялась, хотя светодиод все еще оставался более ярким. Так решил и оставить, лишнюю яркость уберу дополнительным слоем матовой пленки. Надо сказать, что матовая пленка под транспарантом меняет характер подсветки кардинальнейшим образом. Она становится мягкой, равномерной. Интересный эффект – дискретные светодиоды на фото получаются заметно другого цвета. Глазом разница тоже немного видна, но она не такая большая. В общем, дисплей вполне устраивает.



Tags: electronics, g-2021, stm32, vinyl, Арктур-006, программирование
Subscribe

  • Путь к рынку

    Это очень долгий путь, поэтому будет длинный пост. Добро пожаловать под кат. 2. Недалеко от дома находится конечная остановка (диспетчерская…

  • Сказка на ночь

  • Охота

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

  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 95 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →

  • Путь к рынку

    Это очень долгий путь, поэтому будет длинный пост. Добро пожаловать под кат. 2. Недалеко от дома находится конечная остановка (диспетчерская…

  • Сказка на ночь

  • Охота

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