Хакаем советский дверной музыкальный звонок

в 8:05, , рубрики: timeweb_статьи, звонок, микроконтроллеры, ПЗУ, схемотехника
image

Попал мне в руки вот такой интересный экземпляр – электронный музыкальный звонок «Соната-1» 1990 года выпуска.

image

Вид сзади

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

Перечень мелодий

  1. Без меня
  2. Светит месяц
  3. Радоваться жизни
  4. Нежная мелодия
  5. Тонкая рябина
  6. Крыша дома
  7. Лаванда
  8. Песня о Тбилиси

Четырьмя белыми переключателями сбоку выбирается одна из мелодий 1, 2, 3, 4 или 5, 6, 7, 8. Черным переключателем с фиксацией выбирается группа мелодий (1 – 4 или 5 — 8). Регулятором громкости можно настроить желаемую громкость. На максимуме динамик вопит очень громко, несмотря на свою небольшую мощность (всего 0,5 Вт).

image

Со снятой крышкой

Сняв заднюю крышку, можно легко получить доступ к внутренностям устройства. Почти все устройство собрано на одной печатной плате из фольгированного гетенакса. Снаружи проводами подключены только внешние клеммы и динамик 0,5ГДШ-2. На плате также виднеются рыжие конденсаторы с содержанием драгметаллов, из-за чего такие звонки часто подвергались разграблению вандалами.

image

Внутренности

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

Из записанных в звонке песен угадываются по нотам только «Крыша дома» Юрия Антонова и «Лаванда» Софии Ротару. Остальные – просто набор звуков, никаких ассоциаций не вызывают. Связано это, вероятно, с тем, что проигрывается всего несколько нот, по которым угадать можно только мало-мальски популярное произведение. Да и хиты эти были популярны треть века назад. А нельзя ли заставить звонок проигрывать что-то более современное?

Рассмотрим схему.

image

Схема звонка (второй вариант)

Данный звонок выпускался под одним наименованием, но с тремя принципиально разными схемами. В первой из них мелодия хранилась на отдельно подключаемой сменной плате. Во второй схемотехника кардинально иная – там мелодия хранится в ПЗУ с пережигаемыми перемычками К556РТ4А. В третьем варианте уже была применена широко известная микросхема УМС-8, электронный синтезатор мелодий.

image

3-й вариант звонка

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

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

Мелодии хранятся в ППЗУ К556РТ4А (D3). Это 4-разрядная микросхема с восемью линиями адреса (всего 256 слов). 4 разряда позволяют закодировать 15 различных нот плюс 16-я – отсутствие ноты (пауза). Эти 4 разряда напрямую подключены к дешифратору D4 К155ИД3, выходы которого через диоды подключены к цепочке резисторов. Дешифратор преобразует двоичный 4-разрядный код в позиционный. У дешифратора выходы инвертированные, поэтому, например, при входном коде 1010, на выходе 11 будет лог. 0, а на всех остальных выходах – лог. 1 (5 В). Логический 0 через тот или иной открывшийся диод подключает различное количество резисторов к генератору сигнала, обеспечивая формирование ноты той или иной тональности. Резисторы в цепочке – высокоточные и дополнительно перемежаются подстроечными резисторами для более точного формирования нот. Провод с нижнего (по схеме) края цепочки идет на переключатели. Если все переключатели выбора мелодии находятся в отжатом положении (не выбрана ни одна из мелодий), данный провод соединяется с общим проводом. Также, если не выбрана ни одна из мелодий, конденсатор С12 тактового генератора отключается от общего провода, из-за чего в динамике формируется короткий звук «блям», сообщающий о том, что надо таки выбрать какую то мелодию. На переключателях формируется 3-разрядный двоичный код, который идет напрямую в ПЗУ и отвечает за выбор той или иной мелодии из 2^3 = 8 возможных. На остальные 5 входов ПЗУ подаются сигналы с двоичного счетчика на микросхемах D1 и D2 К155ИЕ5. Иными словами, на каждую мелодию приходится всего 32 тактовых интервала. Этого мало и именно поэтому проигрывается всего несколько нот.

На счетный вход счетчика приходит сигнал с тактового генератора, собранного на транзисторах V18 и V19. Резистором R31 можно в некоторых пределах регулировать частоту следования тактовых импульсов и, соответственно, скорость проигрывания мелодии. Входы сброса обоих счетчиков, а также вход разрешения работы ПЗУ подключены к транзистору V17. При появлении питания конденсатор С9 заряжается через делитель напряжения R24, R25 и через резистор R27 открывает транзистор V17, обеспечивая запуск счетчиков и проигрывание мелодии. Конденсатор С9 нужен для обеспечения задержки начала проигрывания мелодии на то время пока устаканится напряжение питания и генераторы звука и тактов выйдут на номинальный режим.

Запуск воспроизведения кнопкой происходит следующим образом. При замыкании клемм Э3 и Э4 минус питания через диод V5 и резистор R8 поступает на RC-цепочку R19C7. С ее помощью формируется короткий одиночный импульс отрицательной полярности, который через диод V12 открывает транзистор V8. Эта цепочка необходима чтобы звонок не молотил постоянно при залипшей или злоумышленно зажатой кнопке звонка. Для формирования следующего импульса запуска кнопку нужно отпустить и нажать снова. Открывшийся транзистор V8 открывает следом транзистор V9. Данный узел является по совместительству еще и стабилизатором напряжения питания компенсационного типа. Резистором R14 можно точно выставить необходимые микросхемам 5 В.

Итак, на схему подается питание и она начинает работать. После того как схема стартанула, счетчики начали считать, на выходе 11 счетчика D2 появляется лог. 0, который подхватывает поддержание транзистора V8 в открытом состоянии через диод V16 и резистор R15. Когда счетчик D2 досчитает до состояния 100 (двоичные), транзисторы V8 и V9 закроются и вся схема обесточится.

Генератор звука собран на транзисторах V6, V7. На базу транзистора V6 через ФНЧ R11C2R4 подается тактовый сигнал с выхода 12 счетчика D1. Этот сигнал обеспечивает формирование небольшого «вибрато» частоты звучания ноты. На транзисторах V11 и V13 собран усилитель сигнала. С коллектора V11 сигнал также идет на первый триггер счетчика D2, с выхода 12 этого триггера сигнал через конденсатор С11 и резистор R21 идет на выход этого усилителя. Этим реализуется небольшое «вибрато» по амплитуде сигнала. Далее сигнал через резистор регулировки громкости поступает на усилитель мощности на транзисторах V14, V15 и далее на динамик.

Надо сказать, что эти «вибрато» звучат не так чтобы очень приятно на слух. Понятно, что ими разработчики хотели несколько разнообразить пустое звучание прямоугольника. Вибрато по тональности я существенно уменьшил, увеличив емкость конденсатора С2 с 2 до 10 мкФ. А вибрато по амплитуде пока и вовсе отключил, выпаяв один конец резистора R21.

image

Форма сигнала при включенном "вибрато" по амплитуде

image

Форма сигнала при выключенном "вибрато" по амплитуде

Для отладки, чтобы постоянно не нужно было нажимать кнопку звонка, я соединил точку между R15 и V16 с общим проводом. Таким образом, звонок после первого запуска переходит в режим непрерывного воспроизведения выбранной мелодии.

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

Пока микросхема в панельке отсутствует, можно вручную подать сигналы на ее выходы, перебрать все доступные ноты и измерить их частоты. Измерять будем осциллографом. Получилась следующая таблица (цифры очень и очень ориентировочные, поскольку частота зависит от напряжения питания, температуры, положения движка резистора R2 и погоды на Марсе):

| Код двоичный|Код десятичный|Код шестнадцатиричный|Частота|Нота (ориентировочно)|
| --- | --- | --- | --- | --- |
| 0000 | 0 | 0 | 1024 | си (2 октавы) |
| 0001 | 1 | 1 | 960 | ля диез (2 октавы) |
| 0010 | 2 | 2 | 906 | ля (2 октавы) |
| 0011 | 3 | 3 | 852 | соль диез (2 октавы) |
| 0100 | 4 | 4 | 804 | соль (2 октавы) |
| 0101 | 5 | 5 | 752 | фа диез (2 октавы) |
| 0110 | 6 | 6 | 714 | фа (2 октавы) |
| 0111 | 7 | 7 | 668 | ми (2 октавы) |
| 1000 | 8 | 8 | 630 | ре диез (2 октавы) |
| 1001 | 9 | 9 | 592 | ре (2 октавы) |
| 1010 | 10 | A | 560 | до диез (2 октавы) |
| 1011 | 11 | B | 528 | до (2 октавы) |
| 1100 | 12 | C | 500 | си (1 октавы) |
| 1101 | 13 | D | 472 | ля диез (1 октавы) |
| 1110 | 14 | E | 444 | ля (1 октавы) |
| 1111 | 15 | F | 0 | пауза |

Как видно из таблицы, ноты немного уплыли от своих точных значений. С помощью резисторов R2, R42, R46, R50 их можно подогнать как можно ближе к искомым. Но, перед этим необходимо выставить резистором R14 напряжение питания – ровно 5 вольт. Настройку следует начать с самой высокой ноты – «си» второй октавы. Она устанавливается резистором R2. Установив ее, проверяют, насколько точно выставились ноты «ля» и «ля диез». При необходимости, R2 можно еще подвигать туда-сюда. Необходимо найти такое положение движка резистора, при котором ноты «разбегаются» от номинала как можно меньше. Ноты от «соль диез» до «фа» подстраиваются резистором R42, от «ми» до «до диез» – резистором R46 и остальные — резистором R50.

image

Частоты нот, какие должны быть (картинка из интернета)

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

image

КТ1 — КТ4 подключаем напрямую к дешифратору

А для примера возьмем мелодию из популярного мультфильма Хаяо Миядзаки «Небесный замок Лапута». Мелодия достаточно известная и ее ноты легко гуглятся, вот они, на картинке ниже.

image

Давайте попробуем разобраться в этих непонятных закорючках. Но, прежде всего нужно выяснить, получится ли воспроизвести эту мелодию нашим устройством. Исходя из вышеприведенной таблицы видно, что частотный диапазон воспроизводимых нот составляет чуть больше одной октавы. Найдем в нотах мелодии самую высокую и самую низкую ноты. Высокая – «соль» (2 октавы), низкая – «соль» (1 октавы). Как видно, наш девайс не сможет воспроизвести нижние ноты, их у него просто нет. Однако сверху имеется запас неиспользуемых нот, поэтому можно сместить весь диапазон воспроизводимых нот вниз на два полутона с помощью резистора R2. Новая таблица нот приведена ниже, в ней частоты нот указаны уже точно, которые должны быть:

| Код двоичный | Код десятичный | Код шестнадцатиричный | Частота | Нота |
| --- | --- | --- | --- | --- |
| 0000 | 0 | 0 | 880 | ля (2 октавы) |
| 0001 | 1 | 1 | 830 | соль диез (2 октавы) |
| 0010 | 2 | 2 | 784 | соль (2 октавы) |
| 0011 | 3 | 3 | 740 | фа диез (2 октавы) |
| 0100 | 4 | 4 | 699 | фа (2 октавы) |
| 0101 | 5 | 5 | 659 | ми (2 октавы) |
| 0110 | 6 | 6 | 622 | ре диез (2 октавы) |
| 0111 | 7 | 7 | 587 | ре (2 октавы) |
| 1000 | 8 | 8 | 554 | до диез (2 октавы) |
| 1001 | 9 | 9 | 523 | до (2 октавы) |
| 1010 | 10 | A | 494 | си (1 октавы) |
| 1011 | 11 | B | 466 | ля диез (1 октавы) |
| 1100 | 12 | C | 440 | ля (1 октавы) |
| 1101 | 13 | D | 415 | соль диез (1 октавы) |
| 1110 | 14 | E | 392 | соль (1 октавы) |
| 1111 | 15 | F | - | пауза |

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

Далее нужно найти в мелодии самую короткую ноту. Эта нота будет соответствовать одному минимальному временному интервалу. В мелодии это длительность 1/8 (например, в 3 такте — нота «ре»). Соответственно, один такт будет занимать 8 временных интервалов (или, проще говоря, шагов). Такт на нотном стане – это группа нот, разделенных тонкой вертикальной линией.

Скрипичный ключ означает, что это ноты основной мелодии (бывает еще басовые ноты, аккомпанемент). Две цифры «4» одна над другой говорят, что в такте четыре четверти, но нам это не особо важно, так как мы уже выяснили минимальную длину ноты – одна восьмая. Топорики слева от цифр «4» – это бемоли, они говорят, что все ноты на этих линиях будут с бемолями. Бемоль – это понижение тона звучания ноты на один полутон. Диез – то же самое, только повышение на полутон. «Си бемоль» это, по сути, то же самое, что и «ля диез».

Занесем все ноты последовательно в таблицу. Каждый вертикальный столбец — отдельный такт.

| Шаг | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | - | - | ре диез (2) | ре (2) | до (2) | ля диез (1) | соль диез (1) | соль (1) | ре (2) | ре (2) |
| 2 | - | - | ре диез (2) | ре (2) | до (2) | ля диез (1) | соль диез (1) | соль (1) | ре (2) | ре (2) |
| 3 | - | - | ре диез (2) | ре (2) | до (2) | ля диез (1) | соль диез (1) | соль (1) | ре (2) | ре (2) |
| 4 | - | - | ре (2)| ре (2) | ля диез (1) | ля диез (1) | соль (1) | соль (1) | ля (1) | ре (2) |
| 5 | - | - | ре диез (2) | ре (2) | до (2) | ля диез (1) | соль диез (1) | соль (1) | ля (1)| ре (2) |
| 6 | - | - | ре диез (2) | ре (2) | до (2) | ля диез (1) | соль диез (1) | соль (1) | ля (1)| ре (2) |
| 7 | - | до (2) | соль (2) | соль (1) | ре диез (2) | соль (1) | ре диез (1) | ре диез (2)| ре (2)| - |
| 8 | - | ре (2) | соль (2) | соль (1) | ре диез (2) | соль (1) | ре диез (1) | ре диез (2)| ре (2)| - |

Черточка под линией в первом такте означает паузу на весь такт. Черточка над линией – пауза полтакта. Закорючка следом – пауза четверть такта. Поэтому весь первый такт – прочерки, во втором такте первые 6 шагов – тоже прочерки. Затем идет первая нота – сдвоенная, это означает, что каждая из входящих в нее нот звучит по времени как одна восьмая. Дуга над этими нотами говорит, что их нужно сыграть вместе, слитно, что наш электронный аппарат и так делает без дополнительных указаний. Галочка над нотой означает, что ее нужно сыграть с акцентом, мы этот знак никак не учитываем. Итак, вносим в таблицу ноты «до» и «ре» (в скобочках указываем октаву — вторую).

Идем дальше, третий такт. Одиночная закрашенная нота – четвертная, в нашей таблице она займет 2 шага. Точка рядом с нотой указывает увеличить ее длительность на половину ее длительности, иначе говоря, эта нота займет 3 шага. Нота стоит в положении «ми», но в этой же строке стоит бемоль в начале стана, значит, это будет нота «ми бемоль», или, что то же самое – «ре диез» (2-ой октавы).

Затем идет нота «ре» с завитушкой на палочке – это значит, что ее длительность 1/8. Записываем. Затем снова идет нота «ре диез», длительностью ¼. И в конце такта – нота «соль». Аналогично «расшифровываем» следующий такт. Вначале идет незакрашенная нота «ре» – длительностью ½, плюс точка указывает что нужно увеличить ее длительность еще вполовину, итого она займет 6 шагов. В конце такта – четвертная нота «соль», первой октавы. И так далее. В 9 такте встречается значечек, похожий на решеточку – это бекар, он отменяет действие бемоля в этой строке до конца такта, поэтому нота там – «ля».

Заполнив 10 тактов, можно остановится. Для мелодии звонка этого куска будет достаточно. Исключив паузы, получилось ровно 64 шага, что очень удобно для двоичного счета. Попробуем загрузить все это в микроконтроллер и проиграть.

Программа микроконтроллера

#include <iom328p.h>
#include <intrinsics.h> 

//global variables declare
unsigned char i,k;
__flash const char mel[9][8]={{15,15,15,15,15,15, 9, 7},                                                                                
                              { 6, 6, 6, 7, 6, 6, 2, 2},
                              { 7, 7, 7, 7, 7, 7,14,14},
                              { 9, 9, 9,11, 9, 9, 6, 6},
                              {11,11,11,11,11,11,14,14},
                              {13,13,13,14,13,13,6, 6 },
                              {14,14,14,14,14,14,6, 6 },                                                   
                              { 7, 7, 7,12,12,12,7, 7 },
                              { 7, 7, 7, 7, 7, 7,15,15}};
//main function
void main(void)
{
//init ports  
  DDRB=0x00;
  PORTB=0x00;

  DDRD=0x0F;
  PORTD=0x00;

  DDRC=0x00;
  PORTC=0x00;

  while(1)
  {
    for(k=0;k<9;k++)
      for(i=0;i<8;i++)
      {
        PORTD=(mel[k][i]&0x0F);
        __delay_cycles(4000000);     //delay
      }
  }
}

Программа очень проста. После инициализации портов программа просто выдает в порт D коды из двумерного массива с нотами. Массив записан по тактам, ровно так, как выглядит в таблице, чтобы было проще искать ошибки.

Скомпилировав и прошив программу мы слышим в динамике знакомую мелодию!

Есть один только момент: все ноты играются слитно, что не везде звучит хорошо. Например, ноты «ре» в 9 и 10 такте сливаются в одну. На микроконтроллере это пофиксить несложно, добавив лишнюю паузу, но с ПЗУ реализовать все равно не получится.

Запрограммируем аналогичным образом ноты мелодии из «Тетриса» («Коробейники»), популярную мелодию вызова из эры кнопочных телефонов «Бумер» и еще одну мелодию из мультфильма Миядзаки «A Town With An Ocean View».

image

Мелодия из тетриса также имеет размер четыре четверти, и самую короткую ноту – 1/8. Но вот тональный диапазон другой – от ноты «ми» 1 октавы, до ноты «ми» второй октавы. В этом случае можно сделать транспонирование или, проще говоря, перенести мелодию в другую тональность. Нам нужно сделать на два тона выше. Без знания музыкальных интервалов проще всего просто перенести все ноты на 2 тона вверх, а не попавшие в интервал вычислить на слух и поправить вручную. Иными словами, нота «ми» превращается в «соль», «фа» – в «ля», и т. д.

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

| Шаг | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 1 | ля диез (1) | си (1) | ля диез (1) | си (1) | ми (2) | ре диез (2) | ля диез (1) | си (1) |
| 2 | ля диез (1) | си (1) | ля диез (1) | си (1) | ми (2) | ре диез (2) | ля диез (1) | си (1) |
| 3 | ля диез (1) | соль диез (1) | ля диез (1) | соль диез (1) | ми (2) | ре диез (2) | ля диез (1) | соль диез (1) |
| 4 | си (1) | соль диез (1) | си (1) | соль диез (1) | фа диез (2) | ми (2) | си (1) | соль диез (1) |
| 5 | до диез (2) | ре диез (2) | до диез (2) | соль диез (1) | соль диез (2) | ре диез (2) | до диез (2) | соль диез (1) |
| 6 | до диез (2) | ре диез (2) | до диез (2) | соль диез (1) | соль диез (2) | ре диез (2) | до диез (2) | соль диез (1) |
| 7 | ре диез (2) | до диез (2) | ре диез (2) | соль диез (1) | фа диез (2) | до диез (2) | ре диез (2) | соль диез (1) |
| 8 | ре диез (2) | си (1) | ре диез (2) | - | ми (2) | си (1) | ре диез (2) | - |

Мелодия из фильма «Бумер» вообще простая. Но, она также не помещается в наш диапазон нот, поэтому также ее транспонируем, но на тон ниже.

| Шаг | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | ре (2) | фа (2) | соль (2) | соль (2) | ре (2) | фа (2) | соль (2)| соль (2) |
| 2 | фа (2) | ре (2) | фа (2) | ля (2) | фа (2) | ре (2) | фа (2) | ля (2) |
| 3 | фа (2) | ре (2) | соль (2) | ля (2) | фа (2) | ре (2) | соль (2) | ля (2) |
| 4 | фа (2) | ре (2) | фа (2) | ля (2) | фа (2) | ре (2) | фа (2) | ля (2) |
| 5 | - | - | соль (2) | - | - | - | соль (2) | - |
| 6 | - | - | фа (2) | - | - | - | фа (2) | - |
| 7 | - | - | соль (2) | - | - | - | соль (2) | - |
| 8 | - | - | фа (2) | - | - | - | фа (2) | - | 

И, наконец, мелодия «A Town With An Ocean View»
image

| Шаг | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | - | соль (2) | ми (2) | ля (1) | си (1) | соль (2) | ми (2) | ля (1) | ми (2) |
| 2 | - | соль (2) | ми (2) | до (2) | си (1) | соль (2) | ми (2) | до (2) | ми (2) |
| 3 | - | - | ре (2) | ми (2) | си (1) | - | ре (2) | ми (2) | ми (2) |
| 4 | - | си (1) | до (2) | соль (2) | си (1) | си (1) | до (2) | соль (2) | ми (2) |
| 5 | - | фа диез (2) | ре (2) | ля (2) | - | фа диез (2) | ре (2) | ля (2) | - |
| 6 | - | фа диез (2) | ре (2) | ля (2) | - | фа диез (2) | ре (2) | ля (2) | - |
| 7 | - | - | ре (2) | фа диез (2) | - | - | ре (2) | фа диез (2) | - |
| 8 | си (1) | си (1) | си (1) | ре (2) | си (1) | си (1) | си (1) | ре (2) | - |

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

Подобранные мелодии укладываются в 64 шага, однако в нашем устройстве на перебор нот отведено только 5 линий адреса (32 шага). Поэтому необходимо где-то «добыть» еще один адресный разряд. Для этого проще всего отказаться от одного из «вибрато», для реализации которых задействованы счетные триггеры. Я решил отказаться от «вибрато» по амплитуде, которое, на мой взгляд, больше портит звук. Демонтируем конденсатор С11, R21 и R35. Перерезаем дорожки, идущие к выводам 14 счетчика D2 и 11 счетчика D1 и соединяем эти выводы перемычкой. Это и будет еще одна адресная линия. Подключим ее к выводу 15 ПЗУ вместо кнопки, которая раньше переключала 1-4 или 5-8 мелодии. Ножку 1 счетчика D2 соединяем с 12. Оставшуюся не у дел кнопку можно приспособить под новый функционал — для включения запрета воспроизведения, заведя ее сигнал в точку соединения резисторов R24 и R25. Заземлив ее, транзистор V17 никогда не откроется, а значит, мелодия проигрываться не будет.

Из-за того, что третья линия адреса со счетчика заведена теперь на самый старший адресный вход ПЗУ, данные в нем необходимо располагать следующим образом: первые 4 слова в нижней половине ПЗУ, вторые – в верхней, третьи – снова в нижней, четвертые – в верхней, и т. д. Это не создает особых проблем, ведь прошивать данные можно в любом порядке, главное – в правильном порядке переключать адреса.

В итоге, прошивка выглядит следующим образом.

Прошивка ПЗУ

9 7 6 6 2 2 7 7 E E 9 9 6 6 B B E E D D 6 6 E E 6 6 7 7 7 7 7 7 B B B A A A D D B B B A A A D D 5 5 5 3 6 6 6 5 B B B A A A D D 7 4 4 4 4 7 7 7 2 4 2 4 2 0 0 0 7 4 4 4 4 7 7 7 2 4 2 4 2 0 0 0 A 2 2 F A 5 5 7 A C 9 5 7 A A A A 2 2 F A 5 5 7 A C 9 5 7 5 5 5 6 7 6 6 7 7 7 7 9 B 9 9 B B B B D E D D E E E E 7 C C C 7 7 7 7 8 8 6 6 6 6 8 A 8 8 6 6 D D D F 1 1 3 5 6 6 8 A 8 8 6 6 D D D F F F F F F F F F 2 4 2 4 F F F F F F F F F F F F 2 4 2 4 F F F F A 3 3 F 9 7 7 7 2 0 0 3 A F F F A 3 3 F 9 7 7 7 2 0 0 3 5 F F F

Для программирования ПЗУ К556РТ4А можно воспользоваться простейшим самодельным программатором.

image

Схема программатора

Он состоит из 8 переключателей, задающих адрес, переключателя CS, переключателя для выбора нужного бита данных и кнопки для программирования. Изначально в микросхеме все биты – лог. 0. Лог. 1 устанавливается путем пережигания нихромовой перемычки внутри микросхемы. Эта операция необратимая, поэтому программировать необходимо очень внимательно, не допуская ошибок.

image

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

Как звучат мелодии можно услышать в коротком ролике на Ютубе.

Вопросы и замечания прошу писать в комментариях.


Автор: zatim

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js