Учим ладу весту петь пионерским голосом

Учим ладу весту петь пионерским голосом Инструменты

Обработка звука

С учетом вышеупомянутых недостатков и ограничений, взялся за темброблок Pioneer DEH-P4500R. После того, как была проведена операция по установке его в прибор под номером 8450007949 (кнопочная мультимедийная система Весты), я приступил к работе над звуковыми настройками.

Результаты

Через месяц интенсивной работы я добился желаемого результата. Теперь кнопочная мультимедийная система Весты звучит так же, как и CD-ресивер Pioneer. Это была трудная, но весьма увлекательная задача, которая требовала от меня реверс-инжиниринга и пайки микросхем.

Мотивация за проектом

Изначально меня вдохновил звук старого CD-ресивера Pioneer, который я считал качественным. Однако, мой интерес к проекту был связан не столько с улучшением качества звука, сколько с обновлением пользовательского интерфейса. Я искал систему, которая сочетает в себе удобство кнопочного управления и интеграцию с другими устройствами.

Выбор кнопочной системы

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

Звуковые настройки

После установки темброблока Pioneer DEH-P4500R в систему Весты, я приступил к настройке звука. Благодаря моим усилиям и энтузиазму, удалось добиться идентичности звучания двух систем. Теперь моя кнопочная мультимедийная система звучит так же, как и мой старый CD-ресивер Pioneer.

Читайте также:  Беспроводная паяльная станция miniware ts 1 c

Перспективы

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

Image

Однажды я решил, что способен на более тесную интеграцию.

Ну или как минимум это будет веселее, чем идти проторенными тропами. Из практической подготовки я умел держать паяльник и даже перепаивать им микрокнопки в мышках или встраивать готовый LED-кит в старые ЖК-мониторы. Мультиметра я тоже не боялся, как и принципиальных схем. Но требовался другой уровень: впаивание микросхем, измерения, реверс-инжиниринг, работа с логическим анализатором.


В конце концов, можно было вообще ничего не делать и ездить дальше с древним CD-ресивером, который используется только как усилитель с блютусом (не диски же на нём слушать, ей богу). Но мне он не нравился внешне, да и бренчал старыми бесполезными и мелкими кнопками даже на ровном асфальте.


Другой телефон?

Я пользуюсь машиной пару раз в неделю. Чуть чаще пользовался тогда в 2020-м. Меня устраивает надёжный седанчик, который не отсвечивает в семейном бюджете. Сейчас бы я и вовсе не стал заморачиваться с подобными доработками, но тогда мне было интересно поковыряться в электронике (поэтому кроме сухого экшена будут ещё и рассуждения про то, как я до чего-то допёр).


Сравнение снаружи

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

ПионерВеста
Множество регулируемых фильтровОтсутствие регулируемого кроссовера
Возможность настроить звук в несколько менюшекОграниченные регулировки НЧ/ВЧ
Параметрический эквалайзерНедостаточная возможность скомпенсировать баланс тембров

У Пионера множество регулируемых фильтров. Полосы эквалайзера можно двигать влево-вправо и менять их добротность — это можно назвать параметрическим эквалайзером. ВЧ- и НЧ- отрезалки позволяют организовать регулируемый кроссовер между основными каналами и сабвуфером. Настраиваемая тонкомпенсация позволяет уставливать свою зависимость между позицией регулятора громкости и приподнятием НЧ/ВЧ (компенсация нелинейности слуха в зависимости от громкости).

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

А вот у калькулятора Весты гибкостью не пахнет. Тонкомпенсация хоть и плавная (как должна быть), но накидывает только низкие частоты, и установить свою зависимость от громкости нельзя; на малой громкости высокие частоты от этого теряются. Регулировки НЧ/ВЧ только плюс-минус по уровню без изменения частоты.

То есть у Пионера несравнимо больше возможностей скомпенсировать тембральный баланс акустики, музыки, да и вообще настроить звук под себя. Конечно, всё это пораскидано по нескольким разным менюшкам и где-то приправлено лёгким маркетингом (например, кнопка EQ-EX просто вызывает менюшку первой и последней полос эквалайзера). В штатной ММС подкручивать практически нечего.


Сравнение внутри

Время исследований

Настало время разобраться, откуда растут ноги у перечисленных (не)возможностей. Конечно, по времени это все происходило в разные года, так как схемой Пионера я интересовался и раньше, но, пожалуй, не буду томить вас совсем уж заурядной хронологией.

Pioneer DEH-P4500R

На Пионер нагугливается service manual с блочными и принципиальными схемами. Если его поизучать и погулять по стрелочкам сигнала, то обнаруживается компонент PML009A, обозначенный как electronic volume/source selector. Про другие его назначения не сказано, но в любом случае на нем сходятся источники изначально разного рода — с ЦАПа проигрывателя дисков, с линейного входа, с радио. И так как настройки одинаково применимы ко всем этим источникам, то логично, что обработка происходит в некотором общем узле. После него можно найти только микросхему усилителя, которая не влияет на звучание в нормальных диапазонах своей мощности.

ИТЭЛМА 8450007949

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

TDA7303 в тушке кнопочной ММС. Подпаянные провода — спойлер дальнейших изысканий.

Даташит на TDA7303 рассказывает нам, что функция у этой микрухи такая же, как у PML009A — переключение между источниками, регулировка тембра, громкости, баланса и тонкомпенсация. Управление по I2C, все команды расписаны.

План замены

Итак. Очевидно, что нам нужно заменить TDA7303 на PML009A. Но есть препятствия:

  • Не совпадают корпуса микросхем
  • Разный цифровой интерфейс
  • Различные питание и заземление

Есть, впрочем, и зацепки на каждый пункт:

  • Модульный исполнитель цифрового интерфейса
  • Удаление источников питания TDA7303
  • Увеличение воздушных дорожек
  • Вычисления токов питания и земли

Дополнительно я попытался найти похожие на PML009A общедоступные аналоги. Не сами же Pioneer эти микрухи делали. По крайней мере я не нашел, чтобы у них были полностью свои микросхемы. Я таки нагуглил что-то близкое внешне: тот же корпус, похожие выводы, но полного соответствия не было. А цифровой интерфейс похожий не встретился совсем.

Я набросал простейшую схему замены. То есть убираем TDA7303, на ее место ставим PML009A, а в разрез цифрового интерфейса ставим ардуину, которая будет переводить команды.

Подсмотреть не ломая

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

Как я проводил реверс-инжиниринг аудио процессора

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

Дальше подпаялся к интерфейсам обеих микросхем и подсматривал уже их команды.

Подключение

К PML009A подцепился лакированными проводками из обмотки реле.

Учим ладу весту петь пионерским голосом

С TDA7303 уже вычитал про тоненький МГТФ 0,3 и купил его в радиодеталях.

Учим ладу весту петь пионерским голосом

Чтение команд

С TDA7303 я тоже успешно прочитал команды как они документированы в даташите.

Кроме того, прочитал я их и с помощью Ардуино — то есть перехватывать и интерпретировать их я уже был готов.

Подключал я всё напрямую без дополнительных элементов, хотя в обеих схемах между контроллером и аудиопроцессором на цифре стоят какие-то резисторы. Я так и не понял их назначение и не стал выяснять.

Реверс-инжиниринг

На PML009A я удостоверился, что интерфейс действительно SPI (в противовес I2C на TDA7303) и что действительно изменение любого параметра аудио приводит к 17-байтной посылке.

При включении устройства тоже идёт такая посылка.

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

Программно-аппаратный стенд

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

Мне этого было недостаточно, т.к. хотелось реализовать звучание Пионера один-в-один.

Без этого вся затея теряла конечный смысл, оставляя лишь побочный фан.

Я собрал программно-аппаратный стенд и принялся крутить все возможные настройки, записывая закономерности.

Учим ладу весту петь пионерским голосом

Эксперименты

Некоторые закономерности оказались непростыми. Например, на TDA7303 тонкомпенсация на уровне интерфейса это просто вкл/выкл, и она уже сама регулирует как надо (или как не надо) в зависимости от выбранной громкости.

А PML009A сама такого не делает, отдавая глубину и режим тонкомпенсации на откуп контроллеру.

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

Учим ладу весту петь пионерским голосом

Ещё одну арифметическую закономерность пришлось выводить для управления сабвуфером. Я решил привязать уровень сабвуфера к настройке "НЧ" вестовской головы. Она имеет диапазон от -7 до +7, в то время как в оригинале (в пионере) сабвуфер настраивается от -6 до +6. Получилась длинная формула зависимости сабвуферного выхода от общего уровня громкости, опять же полностью повторяющая поведение в Пионере:

Учим ладу весту петь пионерским голосом

Сложности возникли и с достоверной регулировкой громкости. TDA7303 управляется командами по 1 байту. Например, громкость управляется значениями от 0 до 63 (шаги по 1,25 дБ), фейдер левого переднего канала — от 128 до 159 и т.д., всё это можно посмотреть в даташите.

В магнитоле Весты есть 50 уровней громкости, которые размечены по шкале 0-63 микросхемы TDA7303. Размечены они с одной стороны по уму (имитируется экспоненциальная регулировка), но с другой стороны есть забавный баг: например, уровни 36 и 37 не отличаются (подаётся одна и та же команда громкости на микросхему). То же самое с другими уровнями 38=39=40 (значение 3), 41=42=43 (значение 2), 44=45=46 (значение 1) и 47=48=49=50 (значение 0). Другими словами, верхний диапазон регулировки у Весты на удивление бесполезный; можно было сделать 40 ступеней вместо 50, тогда бы верхние ступени не "склеились".

Учим ладу весту петь пионерским голосом

Маппинг одной шкалы громкости в другую. Плюс склеившиеся значения ближе к 50.

В отличие от TDA7303 у PML009A нет полного диапазона регулировки громкости одним параметром. Вместо этого у неё гораздо более глубокая поканальная регулировка (от 0 до -63 дБ, шаг 1 дБ) и неглубокая общая (от 0 до -31 дБ, шаг 1 дБ). В сумме это даёт бОльший и более детальный диапазон, чем у TDA, хоть и ценой сложного управления. При этом пионер имеет 63 ступени громкости в диапазоне примерно от -80 дБ до 0, тоже экспоненциального характера, но без багов как у Весты.

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

Разобраться с чувствительностью отдельных входов мне помогла блок-схема пионеровской микрухи, которую я приводил в начале. Например, в ней виден блок source gain adjuster. Пионеровская голова не предоставляет функций регулировки этого блока отдельно. Вместо этого значения зашиты для каждого источника. Экспериментальным путём я установил, что средние 4 бита нулевого байта управляют как раз этим блоком. Дальше используя смартфон в качестве синусоидального генератора я сопоставил напряжения, которые подаются на микросхемы усилителей в каждой голове, и подобрал соответствующее значение source gain adjuster. Другими словами, я нашёл параметр и подобрал нужную чувствительность входов.

Учим ладу весту петь пионерским голосом

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

Учим ладу весту петь пионерским голосом

К сожалению, остался только такой скриншот

Управляющая программа

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

Код скетча здесь: https://pastebin.com/KHtCZFjg Он довольно простой по структуре и по принципу работы. В начале идут таблицы, которые я вывел из поведения контроллера Пионера и всякий скучняк типа номеров выводов и инициализации обмена. Дальше в loop мы проверяем, не записывалось ли что-то в последние несколько миллисекунд из I2C, и если записывалось, то пересчитываем 17-байтный пакет и шлём его на PML009A. Ограничение частоты пересчёта позволяет получить сразу несколько единичных команд, предназначенных для TDA7303 и потом за один раз отправить всё на пионеровский темброблок. Это и есть паттерн команд контроллера Весты TDAшке: сообщить несколько параметров в течение нескольких миллисекунд. Я выбрал частоту буферизации команд в 30 мс — это в реальном времени на уровне восприятия (например, если крутить ручку громкости, то задержка не чувствуется), но при этом с достаточным запасом времени чтобы контроллер "калькулятора" успел сказать всё, что хотел. Как будто TDA общается отдельными словами, а PML — целыми предложениями. Ещё там есть элемент персистентности: для хранения настроек используется EEPROM.

Шараш-монтаж

Оставался ещё вопрос чисто физической замены одного корпуса на другой. Я купил простенькую паяльную станцию с феном и потренировался в пайке на электронном хламе, который раздобыл: старая мышка, другая ненужная магнитола и т.п. Дальше я "перекрестился" и выпаял сначала "TDAшку", а потом и "PMLку". Вторая была нужнее и дороже. Тут уже чистый экшен без объяснений.

Учим ладу весту петь пионерским голосом

Как я обошёл вопрос с изготовлением платы под PML009A? Да очень просто, хватило макетки:

Учим ладу весту петь пионерским голосом

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

Учим ладу весту петь пионерским голосом

Потом припаял это на место TDAшки.

Учим ладу весту петь пионерским голосом

Нужно было это как-то закрепить. Я не любитель клея и прочих липкостей. Поэтому обмерил платы и задизайнил дополнительную платформу:

Учим ладу весту петь пионерским голосом

Учим ладу весту петь пионерским голосом

Конечный вариант почище без проволоки и изоленты, но фоток не осталось. Перенесённый конденсатор питания (мешался) уже на своём месте, а мини-ардуино ещё нет.

Учим ладу весту петь пионерским голосом

Примерка. Места — вагон!

Учим ладу весту петь пионерским голосом

Врезал и новые выходы на сабвуфер:

Учим ладу весту петь пионерским голосом

Результат

Для первоначальной настройки я запилил ещё и временный пульт, который полностью воспроизводил менюшки Пионера по части аудио-настроек (код).

Учим ладу весту петь пионерским голосом

Мне удалось получить эстетику, функционал и стабильность штатного ГУ с совершенно иным звучанием. При помощи ВЧ-фильтра и отдельного выхода на сабвуфер я разгрузил дверные динамики и усилитель головы. В результате его не требуется менять, по крайней мере для моих целей. Параметрическим эквалайзером я слегка прижал бубнёж около 160 Гц, а тонкомпенсацией исправил звук на малой громкости. Теперь звук меня устраивает и совершенно не отличается от того, что было на старом пионере. Вживую всё выглядело как-то так:

Планировалось (планируется?) дополнить блютус-модулем и приложением на телефон для настройки, но по факту я уже четыре года езжу с фиксированными настройками. Регулируется только уровень сабвуфера из меню "НЧ" калькулятора. Всё это стабильно работает как в +35, так и в -35, настраивать ничего не хочется, возвращаться к этому уже нет времени. В любом случае получена тонна самодельского фана и опыта в переделывании электроники.

Всё это я описывал на одном автомобильном ресурсе. Специально для Хабра подготовлен переработанный вариант.

Оцените статью
Про пайку
Добавить комментарий