Попала ко мне на ремонт магнитола Toshiba RT-9510S. Начальное состояние аппарата - никаких признаков жизни.
Было видно, что питание вообще не включается. С трансформатором все оказалось в норме, но у этой магнитолы есть электронные часы и таймер, поэтому питание на схему подается через транзисторный ключ. Обнаружил в блоке питания два неисправных транзистора, заменил, питание стало включаться.
С магнитофонной частью получилось разобраться довольно быстро. У ЛПМ были стандартные «болячки»: это пассики и загустевшая смазка. К счастью, загустела лишь новая смазка (черного цвета), которую кто-то нанес на доступные сверху подвижные детали. В глубине ЛПМ была родная смазка, которая сохранила свои свойства. Поэтому разбирать для промывки пришлось не весь ЛПМ. Он тут средней сложности, с софт-тач кнопками.
Нажатие на кнопку непосредственно не приводит в действие механизм, а лишь взводит его. Дальше включается ведущий двигатель и через зубчатую передачу от ведущего вала перемещает подпружиненную планку (видна снизу механизма), которая фактически и нажимает нужную кнопку.
Самой сложной частью механизма является кнопочная станция.
Короче говоря, кассета заиграла. Но приемник по-прежнему не подавал никаких признаков жизни. В этом аппарате он имеет синтезатор частоты, поэтому настройка производится электронным способом. Ручки настройки нет вообще, а есть только кнопки. Частота настройки должна индицироваться на ЖКИ, но на нем не светилось ни одного сегмента.
Индикатор выполнен в виде отдельного модуля.
На фотографии видны припаянные навесные элементы. Они были изначально. Вообще, в этом аппарате на всех платах куча проводов и напаянных снизу деталей. Причем они явно шли с завода, так как даже их изображение нанесено в виде шелкографии на плату. Частично эти элементы противоречат схеме из сервис-мануала (сама схема - яркий пример, как не надо рисовать схемы). К примеру, на плате есть два резистора с одним порядковым номером, а запаян только один, который есть на схеме. Получается, что вылавливая глюки, японцы не скорректировали сами платы, зато смогли напечатать на них новую шелкографию с «работой над ошибками». На некоторых платах есть разрезанные в заводских условиях дорожки (интересно, чем их резали, с этим всегда проблемы) и проволочные перемычки. Возможно, этот аппарат был не очень массовым.
На печатной плате модуля установлен ЖКИ, который контачит с золочеными ламелями через токопроводящую резинку - «зебру». Под индикатором находится контроллер. И этот контроллер не подает никаких признаков жизни - на сегменты индикатора ничего не выдает, на кварце генерации нет. Микросхема контроллера выполнена в виде «капли», заменить ее нет возможности. Если менять, то плату целиком. Только где ее взять?
На плате управления тюнером установлен основной процессор uPD650C-062, который по нескольким проводам связывается с индикатором.
Этот процессор некоторые признаки жизни подает, но слабые. Тактовый генератор работает, на двух ножках после сброса устанавливается высокий уровень. На всех остальных - тишина. Клавиатуру не сканирует, в синтезатор частоты ничего не шлет. Возможно, такое поведение является следствием неисправности модуля индикации. Что там японцы намудрили в прошивке, мы не знаем. Хотя такое маловероятно. Скорее всего, процессор дохлый. Купить такой процессор, да еще и с прошивкой 062, нереально. Но даже если он и будет, это не спасет. Модуль индикации не работает, по какому протоколу процессор с ним общается, узнать невозможно, не имея под рукой исправного аппарата. Поэтому если менять, так менять всё - и основной процессор, и контроллер ЖКИ.
Контроллер ЖКИ здесь не просто управлял индикатором. Там еще были реализованы часы с двумя таймерами, которые могли включать аппарат. В режиме ожидания основной процессор обесточен, а модуль индикации питается от двух батареек «AA». Поэтому специализированные микросхемы контроллеров ЖКИ сюда не подойдут, нужен микроконтроллер со встроенным контроллером ЖКИ. Из распространенных есть ATmega169 и STM8L152. Оказалось, купить их в Минске невозможно. Как и многие другие детали, здесь с этим беда. В результате удалось купить аналог - ATmega329V, на нем и решил делать модуль индикации.
Само стекло ЖКИ оказалось исправным, проверить это очень легко - на ламели надо подать небольшое (порядка 3 В) напряжение (лучше переменное), соответствующие сегменты загорятся. Пробежав по всем ламелям, можно вычислить их соответствие сегментам. Это соответствие я нарисовал в Corel Draw, используя как заготовку рисунок другого ЖКИ.
Затем нарисовал в PCAD плату. Надо отдать должное японцам, размеры ламелей ЖКИ и самой платы сделаны в миллиметрах, а не в дюймах, что сильно упростило замеры.
На сей раз плату резал ножовкой по металлу, отбросив в сторону лень. На фото видно, какое отклонение имеет рез относительно разметочной линии. Обработать в размер такую заготовку очень легко.
Но в данном случае можно было резать криво-косо, потому что в технологии ЛУТ заготовка всегда больше платы, а контур будущей платы вытравливается в виде тонкой дорожки, по которой делается конечная обработка. В последнее время ее делаю фрезеровкой. В этой плате также нужны прямоугольные вырезы для защелок рамки дисплея, которые должны быть выполнены очень точно. Эти вырезы сначала высверлил, а затем обработал старым добрым надфилем. Благо, есть точная разметка в виде тонкой вытравленной дорожки.
Были некоторые сомнения насчет покрытия ламелей. На оригинальной плате они покрыты золотом. Была даже мысль выфрезеровать в центре платы прямоугольное отверстие, куда поместить самодельную плату, а ее выводы подключить к родным ламелям. Но это весьма трудоемкая операция, поэтому я рискнул использовать полностью самодельную плату с лужеными ламелями. Время покажет, вызовет ли это проблемы. По-моему, в каких-то часах я видел что-то подобное. В крайнем случае, можно будет потом заказать плату с золочением.
Разъемы, кварц, подстроечный конденсатор перенес со старой платы.
Что любопытно, на старой плате имеются надписи «TOSHIBA», «JAPAN», а еще забавная надпись «NO (0) JEWELS». Часы все-таки, мало ли что подумают :) Формально, один камень там есть, это кремниевый кристалл микросхемы контроллера. Но он даже не полудрагоценный, хотя многие микросхемы на вес стоят намного дороже золота.
После небольшого шаманства на языке Си, индикатор начал отображать время и все остальное, что ему скажут.
Поскольку часы должны работать от батареек, здесь очень важно получить низкое потребление. К счастью, встроенный контроллер ЖКИ способен работать даже когда сам процессор находится в режиме Power Save, при этом он тактируется от низкочастотного кварца 32768 Гц. От этого же кварца работает таймер, который каждую секунду генерирует прерывание. Процессор просыпается, увеличивает время на одну секунду, выводит его на ЖКИ, проверяет время включения и снова засыпает. Поэтому потребление имеет вид коротких всплесков раз в секунду. Интересно знать среднее потребление, для его измерения пришлось сделать интегрирующую цепочку из конденсатора 6800 мкФ и резистора 1 кОм. На всякий случай зашунтировал резистор диодом Шоттки (BAT85), чтобы не появлялось слишком большого падения, когда процессор работает в активном режиме. Измеряя тестером падение на этой цепочке, можно узнать средний ток за несколько секунд. Каждый милливольт напряжения соответствует микроамперу потребляемого тока.
Может показаться, что на измерение микроамперных токов может повлиять утечка конденсатора большой емкости. Но в плане тока утечки конденсатор ближе к резистору, чем к генератору тока. Т.е. при снижении напряжения на обкладках уменьшается и ток утечки. Поэтому можно говорить о каком-то эквивалентном сопротивлении изоляции конденсатора. Пусть даже оно для электролитического конденсатора не совсем линейно. Но в любом случае, это сопротивление лежит в мегаомном диапазоне, а в данной схеме оно начнет влиять, когда станет одного порядка с резистором (а здесь он 1 кОм).
Выбор резистора в такой схеме можно делать исходя из ожидаемого среднего тока потребления. Про пиковый ток не надо заботиться. Благодаря конденсатору, здесь не будет больших пиков падения напряжения. Это позволяет выбрать резистор более высокоомным, что улучшает точность измерения. С резистором 1 кОм и обычным китайским 3.5-разрядным тестером имеем разрешение 0.1 мкА.
Делая малопотребляющие устройства, надо быть очень внимательным. Одна ошибка - и потребление может заметно увеличиться. Например, забытый включенный детектор снижения питания (BOD) дал прирост тока потребления 20 мкА. Забытая подтяжка входного пина может дать еще больше. Когда отключил все лишнее, потребление часов с ЖКИ оказалось примерно 35 мкА. Очень даже неплохо. С алкалайновыми батарейками «AA», заявленная емкость которых 2700 ма*ч, часы должны работать примерно 9 лет. Но это в теории, на практике есть еще саморазряд.
Немного глянул, что дает какой вклад в потребление. В режиме Power Save при всех остановленных генераторах намерил 0.2 мкА. Работающий таймер и программные часы реального времени дают 4 мкА (просыпаясь, процессор работает от внутреннего RC на 8 МГц, раз в секунду выполняется обработчик прерывания длительностью примерно 200 мкс). Ну а с контроллером ЖКИ получается, как писал выше, 35 мкА. Для управления ЖКИ тоже можно выбирать разные режимы. Например, можно менять длительность включения сегментов. Ток потребления уменьшается, но падает и контраст. Есть еще режим экономичной формы питающего напряжения, в нем потребление снижается с 35 до 25 мкА. Недостаток такого режима - надо отслеживать обновление индикатора, чтобы гарантировать два подряд одинаковых фрейма. Я решил, что мне это не сильно надо.
Теперь надо подыскать замену для основного процессора. С ним намного проще - никаких особых требований к нему нет. Лишь бы ног хватало. В оригинале стоял 4-разрядный uPD650, у которого было всего 2 K памяти, любой современный микроконтроллер его с легкостью заменит. Правда, ног было много - целых 42, но некоторое их количество использовалось для подключения внешнего ОЗУ TC5501, в котором хранились частоты настройки каналов. Питание этого ОЗУ поддерживалось от батарейки. Сейчас так делать смысла нет: у микроконтроллеров внутри есть EEPROM. Все настройки можно хранить там, и они не будут теряться, даже если вынуть батарейки. В результате выбрал то, что было под рукой - ATmega88. Без внешней памяти как раз ног хватило. Из платы выпаял старый процессор и память, а взамен сделал небольшую платку, которая по ногам совпадает со старым процессором.
Ну а дальше требуется еще некоторое количество шаманства на языке Си. Нужно реализовать обработку нажатия кнопок, загрузку синтезатора частоты, обмен с процессором дисплея и написать все функции управления. Логику их работы почерпнул из сервис-мануала на магнитолу.
Синтезатор частоты здесь применяется древний - TC9125, вместе с внешним прескалером TD6102 для диапазона FM. Многие вещи по сегодняшним меркам выглядят довольно странно. Например, синтезатор программируется в двоично-десятичном коде. А чтобы получить европейскую сетку частот на FM-диапазоне (50 кГц), нужно на каждом втором шаге настройки включать вывод из синтезатора импульсов с выхода делителя, по которым внешний прескалер «проглатывает» импульсы, смещая сетку на 50 кГц. И это не сленг, такой счетчик в составе синтезатора частоты так и называется - «swallow counter». Но в современных синтезаторах это происходит внутри, а в данном случае все это напоминает «закат солнца вручную». Ну и надо не забыть про то, что у нас супергетеродин, у которого частота гетеродина выше частоты принимаемой станции на величину ПЧ. В диапазоне FM надо загружать в синтезатор частоту на 10.7 МГц выше частоты станции. В диапазонах AM - на 450 кГц выше. Правильность загрузки частоты на FM проверить просто - частоты всех станций точно известны. На AM пришлось прибегнуть к помощи генератора. Просто включил в его выходной разъем кусок провода, который приблизил к антенне магнитолы. Точная настройка на частоту генератора хорошо слышна. Частота настройки в точности совпала с установленной на генераторе. С синтезатором закончил.
Некоторые проблемы возникли с организацией связи между процессорами. В оригинале модуль индикатора был подключен тремя линиями: RX, TX и CLK. Видно, что интерфейс синхронный. Причем источником CLK был индикатор! Я тоже решил использовать синхронный интерфейс SPI, но сделать мастером основной процессор. Теперь думаю - лучше бы соединил процессоры асинхронным UART. Во-первых, отсутствие линии выбора слэйва затрудняет сделать синхронизацию пакетов. Во-вторых, эти же выводы процессоров используются для прошивки, что потребовало отключения одного из них и затруднило отладку. По поводу синхронизации сначала начал выдумывать всякие алгоритмы, типа длительности пауз, но это все было неудобным в использовании. Потом решил, что это не ракета и не ядерный реактор. Ну сбойнет индикация, можно перевключить аппарат. По сбросу основного процессора синхронизация восстановится. Хотя чего ей сбиваться? Между процессорами всего несколько сантиметров провода, причем экранированного. Ни одного сбоя обмена выловить не удалось.
Еще одна проблема - детектирование выключения питания. В оригинале контроллер индикатора был сделан на жесткой логике и его потребление всегда было низким. Ему не надо было спать. Жесткая логика никогда не спит! А с процессором дело хуже. Когда аппарат включается, процессор индикатора просыпается, чтобы ловить команды основного процессора и выполнять их. Можно конечно, засыпать после каждой команды, но смысла в этом нет, и поэтому процессор засыпает только при выключении питания. Детектирую это по длительной единице на линии CLK, чего при работающем основном процессоре быть не может.
Из прикольного - на вход прерывания старого процессора поступали импульсы с генератора, собранного на КМОП логике на этой же плате. Видимо, внутреннего таймера этого процессора хронически не хватало. Я заглушил этот генератор за ненадобностью. Еще прикол в обработке кнопок: триггерно работающая кнопка «TIMER-CLOCK» была так и реализована - на триггере на двух транзисторах. Почему это не сделано программно - не понимаю. Триггер отключил, а кнопку включил в общую матрицу, что, кстати, почти и было предусмотрено разводкой платы, а в области этого триггера было множество доработок. Возможно, уже был готов процессор с масочным ПЗУ, а позже обнаружилась ошибка. Такой вот аппаратный дебаг. В общую матрицу клавиатуры включены и ключи диапазонов приемника, вероятно, для экономии ног процессора.
По ходу проверки тюнера оказалось, что прием на FM идет всегда в монофоническом режиме, индикатор «Stereo» не загорается. Наиболее типичная причина - отсутствие захвата частоты в PLL стереодекодера. С этого и начинаем. Обычно там есть один подстроечник, которым надо выставить номинальную частоту ГУН при отсутствии захвата (в режиме свободных колебаний). Обычно это учетверенная частота пилот-тона 18 кГц, т.е. 76 кГц. Настраиваюсь на наименее шумное место диапазона, где нет станций, становлюсь входом частотомера на контрольную точку, поворотом подстроечного резистора добиваюсь нужных показаний. Точность в пару сотен Гц здесь вполне достаточна. После регулировки стереоприем появился.
Логику управления старался сохранить оригинальную, лишь в некоторых местах позволяя себе небольшие улучшения. Например, в оригинале на каждом диапазоне было 6 пресетов (по числу кнопок каналов). Я увеличил их число до 12, на индикаторе они отображаются как «CH 1..CH 9, CH A, CH B, CH C», так как под номер канала выделена всего одна цифра. Чтобы ввести номер канала больше шести, надо удерживать кнопку «FAST». Еще в оригинале не было индикации, какой из двух таймеров в данный момент программируется. Об этом даже сказано в мануале, что надо помнить. Я задействовал второй разряд секунд (а секунды для таймеров не программируются), теперь номер таймера виден.
В результате весь функционал был восстановлен: магнитола в выключенном состоянии индицирует время, при включении приемника индицирует частоту настройки, делает автопоиск станций, запоминает их частоты на 12-ти каналах. Также умеет в заданное время по таймеру включать заданный канал радио, или воспроизводить кассету, или записывать ее с радио. Второй таймер позволяет в заданный момент времени перейти на другой канал. Не знаю, кому это надо, но так было в оригинале. Хотя просто таймер вполне может пригодиться в быту. Засыпая под радио, можно нажать кнопку «Sleep», магнитола выключится через 60 минут. А затем утром в назначенное время автоматически включится по таймеру.
Прошивки процессоров оттестированы, наиболее лютые глюки выловлены. Хотя, наверное, какие-нибудь добродушные маленькие глючки остались, их можно будет выловить после пробной эксплуатации аппарата.
Последний штрих: в оригинале плата дисплея всегда питалась от батареек. Без них аппарат вообще не включался. Логично, чтобы при включенной сетевой вилке батарейки не разряжались, а питание происходило от встроенного БП. Пришлось сделать миниатюрную дополнительную платку.
На ней разместил коммутатор батареек (P-канальный полевой транзистор IRLML5301) и стабилизатор LM1117 на 3.3 В, который через диод Шоттки BAT85 подключил к цепи питания часов. Теперь при наличии сетевого питания батарейки отключаются (проверил это, замерив потребляемый от них ток). Еще добавил второй диод Шоттки и резистор, чтобы обеспечить небольшой ток подзарядки батареек. Хоть формально батарейки не являются перезаряжаемыми, но небольшой ток зарядки способен продлить их жизнь. Такие цепи зарядки были встроены в некоторые модели микросхем часов фирмы Dallas.
Теперь магнитолу можно собирать, но тут уже нет ничего интересного.
Аппарат готов, он снова слушается кнопок, показывает на дисплее время и частоту настройки и, конечно, радует своим мощным звуком. Думаю, что получилось довольно близко к оригиналу. Если бы под рукой был такой же работающий аппарат, то можно было бы скопировать в точности. А так копировал в меру того, что описано в сервис-мануале.
В помощь тем, кто восстанавливает похожую технику,
тут выложил исходники прошивок и все сопутствующие файлы проекта.