Найти в Дзене

Орион-128. Электронный регулятор громкости BEEPER'а.

Всех приветствую! На Орионе практически все программы свои звуковые эффекты делают через "бипер" - выход INTE процессора. Не будем в этом винить авторов, почему они так сделали - так уж случилось. Кто-то этот звук вывел на телевизор, кто-то на отдельный усилитель, кто-то соорудил на самой плате что-то, похожее на это: Если для регулировки уровня громкости применён резистор переменный, то регулировать громкость очень удобно, а если установлен резистор подстроечный, то иногда уже не очень. Нужно лазить отвёрткой, возможно подсвечивать фонариком на плату. У каждого своё. И внезапно подумалось: а что если придумать программное регулирование громкости динамика? Например, на ром-диске лежит небольшая утилита, запустил, отрегулировал громкость и этот уровень громкости сохраняется при выключении компьютера. Идея засела в голове. Придумывалось несколько разных вариантов: от применения микросхем с энергонезависимой памятью на интерфейсе I2C, до сохранения настроек на дисках, которых у пользовате

Всех приветствую!

На Орионе практически все программы свои звуковые эффекты делают через "бипер" - выход INTE процессора. Не будем в этом винить авторов, почему они так сделали - так уж случилось. Кто-то этот звук вывел на телевизор, кто-то на отдельный усилитель, кто-то соорудил на самой плате что-то, похожее на это:

Если для регулировки уровня громкости применён резистор переменный, то регулировать громкость очень удобно, а если установлен резистор подстроечный, то иногда уже не очень. Нужно лазить отвёрткой, возможно подсвечивать фонариком на плату. У каждого своё. И внезапно подумалось: а что если придумать программное регулирование громкости динамика? Например, на ром-диске лежит небольшая утилита, запустил, отрегулировал громкость и этот уровень громкости сохраняется при выключении компьютера.

Идея засела в голове.

Придумывалось несколько разных вариантов: от применения микросхем с энергонезависимой памятью на интерфейсе I2C, до сохранения настроек на дисках, которых у пользователя может и не быть. Например, диск RAM7 или накопитель НЖМД. В результате родилось простое, но не лишённое недостатков решение:

-2

В адресном пространстве устройство занимает всего один адрес - /F735H - и включается в системный разъём компьютера.
Записывая по этому адресу управляющий байт, звук в динамике будет регулироваться от 0 до 100%. Диапазон - 50 шагов.
Минус такого решения - нет возможности узнать текущий "уровень звука" после подачи питания, ведь сам потенциометр запоминает своё состояние после выключения питания и восстанавливает после его подачи. Это плюс.

Чтобы увеличить громкость, необходимо записать байт с лог.1 в бите D0 по адресу /F735h, чтобы уменьшить - с лог.0. Вот пример кода:
; Увеличение уровня громкости
MVI A,1
STA 0F735H

;Уменьшение уровня громкости
XRA A
STA 0F735H

Собрать весь этот "саундбластер" я решил на отдельной плате вместе с динамиком на тот случай, что вдруг мне все эти пикалки-свистелки надоедят, то я просто вытащу эту плату из разъёма и закину далеко-далеко 😏 А при необходимости снова достану и вставлю в компьютер.

Плата будет размерами 50х100мм. Примерно вот так будет размещён динамик:

Проект размещениея динамика на плате
Проект размещениея динамика на плате

Между ним и разъёмом будут размещены микросхемы дешифратора, а сбоку - модуль электронного потенциометра вместе с остальными элементами схемы.

Сам модуль выглядит так:

Модуль электронного потенциометра X9C103S
Модуль электронного потенциометра X9C103S

Его размеры 27х13мм, и он нормально помещается на плату. Высота динамика 20мм.
В итоге всё получилось компактно и аккуратно:

-5

Ещё мне в этой конструкции понравилось то, что диффузор динамика будет защищён самой платой, а отверстия в ней будут пропускать звук.

Для регулятора была написана незатейливая управляющая программа, которую с исходным текстом, а также схемой можно скачать по ссылке https://disk.yandex.ru/d/FVZDOmPrI6rYCQ

Программа одинаково работает как под ОС ОРДОС, так и DSDOS.

Демонстрация работы устройства:

До новых встреч!