Начинка баяна готова. Можно начинать монтировать.

Сегодня — важный день для моего MIDI-баяна. Изготовлены и отлажены все платы в режиме «на столе» (см. рис. 1). Можно начинать их монтировать в баян.

Проверено всё, что может быть проверено на столе:

  • Работа каждого датчика холла как для правой, так и для левой клавиатур.
  • Работа датчика положения переключателя выборной клавиатуры.
  • Работа датчика давления
  • Правильность разделения клавиатур по MIDI каналам («правая», «выборная», «бас» и «аккорд»).
  • Работа ритм-машины.

На рис. 1 показаны:

  1. плата микроконтроллера (будет размещаться внутри герметичного объёма)
  2. плата панели управления
  3. плата датчиков 1-го и 2-го рядов правой клавиатуры
  4. плата датчиков 3-го ряда правой клавиатуры
  5. плата датчиков левой клавиатуры
  6. датчик давления (будет размещаться внутри герметичного объёма)
  7. датчик положения переключателя выборной клавиатуры
Рис. 1

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

Рис. 2

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

И вообще, монтаж плат датчиков — это будет самая трудная работа. Нужно будет точно позиционировать каждый датчик (всего их 107). И надо будет ещё клеить магниты на рычаги правой клавиатуры.

А пока — демонстрация того, что готово на текущий момент.

Платы правого полукорпуса закончены

В прошлой серии у меня оставался недоделанным экранчик.

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

Выпаивание контактной гребенки из экранчика — это, для моих кривых рук, процесс с негарантированным результатом. Придётся сильно греть плату дисплея, и я не уверен, что это не испортит сам экранчик. Поэтому пусть этот дисплей остаётся с гребенкой, а я припаял синий дисплей. Припаял его проводом МГТФ 0.2 и прилепил на плату на двусторонний скотч. Получилось отлично. Всё работает.

На видео ниже — довольно полная демонстрация того, что имеется на данный момент. Экранчик светится, кнопки работают, ритм-машина играет, датчики клавиатуры работают, настройки меняются, MIDI команды передаются в синтезатор. Можно даже что-то пытаться «сыграть» под ритм-аккомпанемент, поднося магнит к датчикам (в конце видео).

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

Оно играет

Продолжаю отладку плат. В прошлой серии я обнаружил, что не работает экран.

Пришлось его выпаять из платы панели управления и начать исследование. Воткнул я экран на макетку, и на эту же макетку перекинул сигнальные провода I2C и взял питание со свободного (пока) разъёма основной платы. В таком виде экран нормально завёлся. Но самое главное — это даже не экран, а то, что запустился основной рабочий цикл прошивки. А значит появилась возможность проверить работу всех датчиков правой клавиатуры. Это — самое главное, что я хотел сделать.

На удивление, глюков почти не было. В смысле, их было всего два:

  1. Не срабатывал датчик самой высокой ноты среднего ряда.
  2. 2 датчика самых высоких нот третьего ряда почему-то срабатывали вместе: подношу магнит к одному датчику, а он срабатывает вместе с соседним. И то же самое, когда я подношу магнит к соседнему датчику.

Первый глюк вылечился тщательной пропайкой сигнального вывода датчика; был плохой контакт с «пятаком» верхнего слоя. Второй глюк вылечился после промывки соответствующего участка платы спиртом. Видимо, какая-то грязь изображала из себя «соплю». Теперь все датчики работают как надо (см. видео ниже).

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

И осталась последняя проблема — неработающий (на плате) дисплей. Провёл я эксперимент. Вместо того чтобы запаивать экранчик на место, я его воткнул на макетку, и пробросил на ту же макетку сигнальные провода и питание прямо из того разъёма, куда должен запаиваться экранчик. И оно заработало. То есть с платой всё нормально, а проблема была в каком-то плохом контакте после предыдущего монтажа.

Следующий шаг — запаять экранчик на место. В этот раз проводками, а не на гребёнку. И если оно заработает, то на этом отладка «железной» части всех плат (кроме платы левой клавиатуры) будет закончена. Можно будет либо браться за плату левой клавиатуры, либо дорабатывать прошивку, убирая сделанные ранее «костыли» (временные решения) и адаптируя её к полноценной панели управления.

С первого раза не завелось

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

Как я и говорил в предыдущей заметке, с первого раза всё это хозяйство не завелось.

Выглядит это так: при включении не загорается экран. Светодиоды нормально сбрасываются в «ноль», но экран остается пустым. Пришлось отлаживать.

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

С порядком оказалось чуть веселее. Там же у меня каскад из двух регистров. И данные из буфера в каскад я загружаю из цикла. А цикл, чисто на автомате, я начал с первого элемента массива. Забыл, что младший байт должен грузиться последним, т.к. загрузка этого каскада идёт «снизу вверх». В результате данные младшего регистра попадали в старший, и наоборот. Поправил.

В результате убедился, что как минимум управление светодиодами работает как надо. (Ну, помимо того, что всё хозяйство успешно питается от внешнего БП через спец-разъём, а не через USB на ардуинке.)

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

Раз у меня есть светодиоды, значит на них можно выводить «отладочную печать». 🙂 Добавил метод showDebugCode(), который выводит 9-битовое число на светодиоды. В двоичном коде, естественно. И расставил в блоке инициализации контрольные точки. Которые показали, что управление передаётся в метод init() библиотеки дисплея и оттуда не возвращается. Ну то есть надо копать в направлении «что не так с подключением дисплея». Простейшие моменты типа «нет ли обрыва дорожки» и «нет ли замыканий» я уже проверил (и один разрыв в дорожке я-таки нашёл; зачистил маску и спаял дорожку тоненьким проводком). Так что с основными проверками всё норм. Видимо, неисправность хитрее. Возможно, один сигнальный проводник (или оба) замыкают на что-то по дороге. (Т.е. возможно где-то при пайке повешена сопля, невидимая глазом.) Та же самая ардуинка, пересаженная на макетку с таким же точно дисплеем, нормально инициализируется и начинает «работать». То есть проблема именно где-то в платах.

В общем, надо копать. Продолжение следует.

Рис. 1

Запаяны все платы для правого полукорпуса

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

И я думаю, что надо будет соединить эти платы между собой и проверить их работу в режиме «разложено на столе». Можно будет подносить магнит к датчикам и смотреть, как оно всё работает. Или не работает.

Вообще, я удивлюсь, если всё это добро заведётся с первого раза. Пайку я, конечно, всю проверил визуально. Также я прозвонил все платы на предмет КЗ по питанию; нигде не коротит. Сигнальные выводы датчиков я тоже прозвонил, чтобы проверить, не коротят ли они на землю.

Рис. 1

По техническим причинам, переднюю и заднюю платы датчиков правой клавиатуры пришлось делать составными. Оборудование Дениса не позволяет делать платы, которые длиннее чем 280 мм. Половинки уже соединены между собой винтами М3 через соединительные пластины, сделанные из 2-миллиметровой стали. Покрытие пластин — моё любимое: воронение в льняном масле. Очень мне нравится эта технология. А ещё больше нравится результат: покрытие получается весьма стойкое к механическим повреждениям.

Есть у меня небольшие опасения, связанные как раз с одним из этих соединений передней платы датчиков (на рис. 1 она самая нижняя). Есть вероятность, что рычаги клапанов будут задевать гайки. А поднять плату не получится, т.к. сделать это не даст декоративная решётка (т.н. «ажурка»). Но это дело второе. Сначала нужно убедиться, что электроника работает так, как ожидается.

Рис. 2

Плата панели управления

Сегодня была запаяна плата панели управления (см. рис. 1).

Времени у меня на это ушло около 3.5 часов. Паял медленно, но аккуратно. Надо только завтра на свежую голову визуально проверить все пайки. Хоть это и маловероятно, но я мог где-то поставить соплю или не пропаять до конца. Экранчик пока не запаял. Я еще не решил, как я его буду припаивать: толи через гребёнку, толи проводами. Опять же, на свежую голову разберусь.

Возможно стоит эту плату проверить отдельно, не дожидаясь готовности ещё 4-х плат правой клавиатуры. Подумаю на эту тему.

Рис. 1

Запаял одну плату

Я не утерпел, и одну, самую маленькую плату уже запаял. Благо туда паять-то всего две контактные колодки под Ардуинку и два резистора (см. рис. 1).

Рис. 1

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

Рекомендую и флюс, и изготовителя печатных плат.

Рис. 2

Платы готовы

Сегодня праздник у ребят,
Ликует пионерия.

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

Немного сомневаюсь я только по поводу платы датчиков 1-го и 2-го рядов правой клавиатуры (второй ряд сверху на рис. 1). Пространство между рычагами клапанов и декоративной решеткой там довольно маленькое — порядка 5 мм. Есть шанс, что плата туда не влезет; т.е. рычаги будут по ней стучать. В этом случае придётся чуть приподнимать декоративную крышку; делать проставки какие-то. Но очень надеюсь, что опасаюсь зря.

Следующий шаг — запаять все детали и проверить работоспособность всего этого хозяйства в режиме «разложено на столе». Сюрпризов не ожидаю, но они могут быть даже тогда, когда их не ожидают.

Рис. 1

Хорошая зачищалка МГТФ

По мотивам предыдущей заметки.

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

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

Годный способ.

Рис. 1

Новая книжка

У Павла Ивлева вышла новая книжка — «Кровь на воздух«.

Научная фантастика. Старая-добрая. Никаких литропыг/попаданцев/боярки и прочей ереси. Отличный сюжет.

В целом, чем-то напоминает фильм «Луна 2112» (если среди читателей этой заметки есть такие, кто вообще его смотрел).

Рекомендую.

Рис. 1