Реклама ⓘ
Главная » Регуляторы тембра
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Ctrl-Amp 2 - управляем усилителем.

Пролог

Прошло уже два года после выхода статьи о первой версии контроллера управления усилителем и набором управляющих модулей Ctrl-Amp.  Очень рад, что система вызвала интерес в нашем сообществе и нашла своих последователей. Благодаря вашему интересу, вопросам и предложениям, контроллер и модули активно развивались - добавилось много новых функций, появилась поддержка бистабильных реле, добавились новые модули. Поэтому прежде всего хочу поблагодарить всех за активное участие в проекте, предложения, помочь в поиске ошибок прошивки, тестирование и просто обмен мнениями!

Но пора двигаться дальше, так как не все идеи можно реализовать на текущей аппаратной платформе контроллера. Кроме того, у меня было огромное желание изучить STM32. Первые эксперименты с тестовой платой Blue Pill показали, что даже у младшего и самого доступного контроллера F103 огромные возможности. Поэтому год назад были сформулированы новые требования к контроллеру:

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

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

Общая концепция системы

Контроллер управления усилителем и управляющие модули Ctrl-Amp 2 - гибкая система для создания усилителя мощности или предварительного усилителя. Она включает в себя контроллер управления на базе микроконтроллера STM32 с графическим дисплеем и исполнительные модули, непосредственно осуществляющие контроль, регулировку или коммутацию. Управление системой осуществляется с помощью кнопок, энкодера и пульта дистанционного управления.

Конкретный набор подключенных модулей и остальные параметры, касающиеся настройки системы, определяются с помощью конфигурационного экранного меню. Текущее состояние оперативных регулировок (вход, громкость, тембр и т.д.) сохраняется в энергонезависимой памяти и восстанавливается после включения устройства.

На момент написания статьи контроллер поддерживает все наиболее востребованные функции управления и контроля:

  • Мягкий старт, задержка полного включения настраивается от 0 до 30 сек. 
  • Задержка подключения АС, настраивается от 0 до 30 сек.
  • ДУ стандарта NEC c настройкой на пульт пользователя из системы меню.
  • Коммутация АС c помощью плат защиты: включение/выключение или переключение зон A/B/выкл. (кнопка, ДУ), переключение левая/правая АС (ДУ). Данную функцию можно использовать для переключения выходов предварительного усилителя.
  • Контроль состояния защиты на предмет постоянного напряжения на выходе и отключение усилителя при аварии.
  • Управление входным селектором на 2-4 входа (кнопки, ДУ, энкодер с нажатой кнопкой). Количество входов задается в конфигурационном меню.
  • Управление громкостью и балансом с помощью микросхемы PGA23XX или релейным РГ Никитина (энкодер, ДУ). Возможно подключение двух РГ Никитина для регулировки баланса. 
  • Режим приглушения звука Mute c настраиваемой громкостью (кнопка, ДУ)
  • Управление регулятором тембра Матюшкина c релейной регулировкой НЧ и ВЧ (энкодер, ДУ).
  • Режим отключения регулятора тембра, Direct (ДУ).
  • Поддержка обычных и бистабильных реле в селекторе входов и модулях регулировки громкости и тембра.
  • Контроль температуры радиаторов на базе цифрового датчике LM75, один или два канала, выходы управления вентиляторами, выключение усилителя при перегреве. Температура выключения и включения/выключения обдува задаются в конфигурационном меню.
  • Кнопки включения, переключения АС, четыре кнопки селектора входов и Mute.
  • Пользовательская команда (ДУ) и выход для управления другими устройствами.
  • Регулировка яркости подсветки экрана (ДУ).
  • Индикатор уровня с запоминанием пиков.
  • Анализатор спектра.
  • Часы.
  • Настройка цвета интерфейса.
  • Отключаемая индикация команд ДУ светодиодом дежурного режима.
  • Индикация ошибок: перегрев, постоянное напряжение на выходе, чтение термодатчиков, клавиатуры, памяти.

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

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

Большая часть модулей описана ранее в статье про Ctrl-Amp и в ветке обсуждения на форуме. Список список модулей системы Ctrl-Amp 2 на данный момент:

  • Селектор входов с обычными или бистабильными реле ( форум )
  • Регулятор громкости Никитина с обычными реле ( статья )
  • Регулятор громкости Никитина с бистабильными реле ( форум )
  • Регулятор громкости на базе PGA23XX c входным селектором на 4 входа ( статья )
  • Предварительный усилитель Натали и регулятор тембров Матюшкина c релейной регулировкой НЧ и ВЧ (обычные или бистабильные реле) ( форум )
  • Защита АС от постоянного напряжения c коммутацией двух зон A/B, левая/правая и возможностью мониторинга контроллером
  • Блок дежурного питания с входным фильтром, фильтром постоянного напряжения в сети, управлением мягким стартом, управляемым питанием защиты АС
  • Термо-датчики ( статья )

Основные исполнительные модули (громкость , селектор, регулятор тембра ) подключаются к последовательной шине контроллера SPI в определенной последовательности. Контроллер Ctrl-Amp 2 допускает следующие варианты подключения модулей:

  • SPI Контроллера -> РГ Никитина -> Селектор
  • SPI Контроллера -> РГ Никитина левый -> РГ Никитина правый ->  Селектор
  • SPI Контроллера -> Темброблок -> РГ Никитина  -> Селектор
  • SPI Контроллера -> Темброблок -> РГ Никитина левый -> РГ Никитина Правый -> Селектор
  • SPI Контроллера -> РГ PGA 23xx -> Селектор
  • SPI Контроллера -> Темброблок -> РГ PGA 23xx ->  Селектор

Модуль селектора можно вообще не подключать к контроллеру и подавать сигнал на вход РГ. Работоспособность РГ и ТБ сохранится. Но при этом на экране он все равно будет отображаться. Остальные модули ( бп, защита, датчики температуры ) подключаются к своим разъёмам на плате контроллера.

Схема контроллера

Схема контроллера в некоторых деталях подобна первой версии. Устройство питается от не стабилизированного источника 12-8в и имеет на борту два стабилизатора - U1 на 5в для питания внешней периферии и подсветки экрана и U2 на 3.3в для микросхемы контроллера и экрана. Кроме того, предусмотрен вход для питания схемы часов от внешней батарейки. Без подключения батареи часы будут сбрасываться при каждом отключении питания. 

Контроллер тактируется двумя кварцами - основной Q1 8мгц и часовой Q2. Так как STM32 не имеет своей энергонезависимой памяти, установлена внешняя память U5 c шиной I2C. К этой же шине подключен регистр U6 для работы с клавиатурой. Шина I2C с питанием 5В выведена на разъем X3 для подключения датчиков температуры и другой периферии.

Для работы индикатора уровня и анализатора спектра на разъем X13 подается аналоговый сигнал. После нормализации сигнал подается на входы АЦП контроллера. На основе данных, полученных от АЦП, реализуются функции индикатора уровня и анализатора спектра.  Входы АЦП микроконтроллера U2 работают с сигналом в диапазоне 0-3.3в, поэтому аудио сигнал нужно привести к этому виду - усилить/ослабить до амплитуды 1.65в и добавить постоянную составляющую 1.65в.   Для этого используется операционный усилитель U4.  Чтобы обеспечить данные условия, ОУ должен быть  Rail-to-Rail по входу и выходу и работать при питании 5в. Входной сигнал ограничивается резисторами R9,R10.  Коэффициент усиления U5 определяется резисторами R11/R18 и R12/R19. Резисторы R13 и R14 обеспечивают необходимое смещение на 1.65в.

Индикация осуществляется с помощью цветного графического дисплея на базе контроллера ILI9341 с разрешением 320x240 и шиной SPI. Такие дисплеи достаточно доступны как по цене, так и по наличию и имеют диапазон диагоналей от 2.2 дюйма до 3.2 дюйма. Дисплей подключается к разъему X4. Контроллер дисплея ILI9341 позволяет управлять яркостью, но в известных мне и примененных в контроллере дисплейных модулях к сожалению цепи контроля подсветки не разведены их производителями. Поэтому яркость подсветки дисплея регулируется широтно-импульсной модуляцией, импульсы которой подаются на ногу включения подсветки дисплея.  Tuch-screen и разъем для SD-карты на дисплейных модулях пока не используются.

Из за небольшого размера платы пришлось немного нарушить принцип обратной совместимости - на разъёме термодатчика пропал выход OS, и сам разъем остался один.  Зато без этого вывода датчики LM75 можно соединять в одну общую шину, для чего одного разъема достаточно.  Управление вентиляторами теперь приняла на себя прошивка и две ноги контроллера. Теперь активный уровень - 3в, а не ноль, как в первой версии.  Поэтому для первой версии контроллера на Atmega была выпущена новая прошивка с подобными дополнениями.

Программирование контроллера осуществляется программаторами St-Link через разъем X11. USB на x9 и USART на X10 выведены на будущее и в данный момент не используются. Нога Boot0 c возможностью установки перемычки так же выведена на разъем X12 для возможности альтернативных вариантов прошивки контроллера.

Ctrl-Amp2 - схема

Конструктив

Плата контроллера сделана под габариты дисплея 2.4 дюйма. Это дает возможность устанавливать контроллер на узкие лицевые панели высотой всего 5 см. Дисплей 2.2 дюйма тоже можно подключить к плате с помощью шлейфа. Дисплей 2.8-3.2 дюйма могут быть подключены непосредственно к разъему на плате, но их крепежные отверстия будут выходить за размер платы контроллера и потребуют для крепления дополнительных отверстий в корпусе. 

Ctrl-Amp2 Top

Разъемы подключения прочей периферии при необходимости могут быть не угловыми и установлены с нижней стороны платы. Если необходимо минимизировать высоту бутерброда контроллер-экран,  с платы экрана можно демонтировать разъем для карты SD и опустить экран до уровня разъемов.

Для настройки нормирующего усилителя АЦП на обратной стороне платы предусмотрены контрольные точки. На эти точки выведены выходы усилителя. 

Ctrl-Amp2 Bottom

Ctrl-Amp2 Top Screen

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

Индикация и управление

Принципы управления и настройки  Ctrl-Amp2 во многом подобны реализованным в первой версии. Основное отличие только в индикации и обработке ошибок. Поэтому кратко рассмотрим основные режимы и экраны. Более детальное описание будет сделано немного позже в виде руководства по сборке и настройке, аналогичного руководству к первой версии.

Ctrl-amp2 дежурный режим В дежурном режиме экран либо выключен, либо отображает текущее время, если это указано в настройках.
Ctrl-Amp2 - Soft-start При включении полностью отрисовывается экран и в зоне отображения изменяемых параметров линейкой показывается процесс мягкого старта, если это указано в настройках. 
Ctrl-Amp2 - Задержка включения АС

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

В дальнейшем в процессе софт-старта и подключения  АС хочу добавить возможность изменять вход и громкость.  

Ctrl-Amp2 - Основной экран После старта на экране отображается громкость и графический символ, показывающий весь диапазон регулировки и текущее состояние.  Отображение часов и температуры отключается вместе с отключением данных функций в настройках. 
Ctrl-Amp2 - Mute По команде Mute устанавливается громкость, заданная в настройках для этого режима и снижается яркость цифр, которые по прежнему отображают нормальную громкость. В режиме Mute полностью сохраняется все управление - можно поменять вход, переключить АС, изменить громкость. При выходе из Mute громкость будет восстановлена на уровне, соответствующей цифрам на экране.
Ctrl-Amp2 - Баланс Вход в остальные регулировки звука осуществляется по нажатию на кнопку энкодера. После первого нажатия индикация громкости сменяется на индикацию баланса. Баланс, как и другие настройки, доступные по нажатию энкодера, выключаются после 10 секунд бездействия и экран возвращается к регулировке громкости.  Как и при регулировке громкости, баланс отображается цифровым значением и картинкой, показывающей весь диапазон регулировки. В дальнейшем после баланса может появится аналогичная регулировка Фронт/Тыл.
Ctrl-Amp2 - Регулировка НЧ Если после регулировки баланса снова нажать на энкодер, появляется возможность изменить регулировку НЧ. На данном экране показана регулировка ТБ Матюшкина. Но интерфейс прошивки уже готов к отображению настраиваемого диапазона от -X до +Х дб для других вариантов регуляторов тембра.
Ctrl-Amp2 - Регулировка ВЧ

Следующее нажатие энкодера приводит нас к регулировке ВЧ. И вот они, любимые многим рога на эквалайзере :) !  Естественно эти регулировки появляются только в случае присутствия в системе такой возможности в соответствии с настройкам конфигурации системы. 

Кроме того, баланс и тембры отображаются на экране сразу, как только пользователь подаст команду с пульта ДУ и так-же будут активны в течении 10 секунд.

Ctrl-Amp2 - Спектр и уровень Если в настройках включена заставка, через заданное в настройках время отображается анализатор спектра.  При получении любой команды от кнопок, ДУ или экрана, возвращается индикация громкости.
Ctrl-Amp2 - Меню настройки

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

Ctrl-Amp2 - Подменю Пункты главного меню настройки раскрываются в подменю с конкретными параметрами и их значениями. В первой строке отображается название данной группы. Первый пункт каждого подменю - выход в главное меню настройки.

Для редактирования конкретного параметра, нужно его выбрать с помощью курсора поворотом энкодера и нажать на кнопку энкодера.

Ctrl-Amp2 - редактирование Переход в режим редактирования индицируется появлением стрелок справа и слева от значения параметра. Наличие стрелок влево/вправо показывает возможность уменьшить/увеличить параметр или наличие значения в списке значений при вращении влево/вправо. Для выбора значения необходимо вращать энкодер. После изменения параметра снова нажмите кнопку энкодера.
Ctrl-Amp2 - Цвет интерфейса Некоторые пункты, типа яркости экрана или цвета текста позволяют сразу увидеть результат своих действий. Изменение часов и минут так-же сохраняется в данные часов в момент изменения.

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

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

Ctrl-Amp2 - Диагностика Ctrl-Amp2 - Диагностика Ctrl-Amp2 - Диагностика
Ctrl-Amp2 - Диагностика Ctrl-Amp2 - Диагностика  

Защита АС

Недавно к проекту был добавлен еще один модуль - защита АС с возможностью коммутации и мониторинга состояния контроллером. При аварии усилителя и появлении постоянной составляющей контроллер выключает усилитель и индицирует канал с проблемой. Так же модули защиты могут работать автономно. Вместо контролера к управляющим входам может быть подключен обычный галечник для включения/выключения АС с лицевой панели. Защита срабатывает от 2B, питается от источника 12в. Уровни на управляющих входах 3В, что дает совместимость как со старым, так и новым контроллером.

Article2

Принцип работы. Так как для контроля состояния защиты мне нужны были четкие логические уровни 0 и 1 на затворах Q1, Q2, применен компаратор U2 TS321. Порог срабатывания компаратора задается резисторами R3, R4. При нормальной работе на выходе компаратора присутствует напряжение питания. Делителями R5, R6 и R7, R8 из него получается 3В, открывающее ключи Q1, Q2. При появлении постоянной составляющей, открывается транзистор оптрона U1, напряжение на прямом входе компаратора падает и на его выходе появляется четкий 0В, закрывающий ключи Q1, Q2. С2 обеспечивает задержку включения АС при автономном использовании. При необходимости можно уменьшить чувствительность увеличением резистора R1.

Ctrl-Amp 2 - Защита АС

Управление. Контроллер для выключения АС подает на затворы Q1, Q2 0В. Для включения нужной АС контроллер переводит соответствующую ногу на вход и считывает состояние защиты. При срабатывании защиты контроллер видит на своем входе 0В, выключает все остальные АС и сам усилитель. При автономном использовании можно замыканием контактов А/В разъема X8 на землю выключать соответствующие АС. Так же на эти контакты можно повесить индикацию, если это необходимо.

Конструктив. Защита сделана на двух зеркальных платах, отдельно для каждого канала. Платы крепятся на выходные клеммы. Изначально разрабатывалась версия на две зоны АС A/B, чтобы использовать все возможности Ctrl-Amp. Версия с одной парой АС получается банальным обрезанием схемы и платы с ненужной парой. При применении SMD компонентов данная схема легко упаковывается в очень скромные габариты - 44x62 и 44x37 при стандартном расстоянии между клеммами 19мм. Дополнительно на платы защиты установлена катушка для компенсации емкости кабелей к АС. Катушка специально вынесена подальше от УМ, так как создает достаточно сильное магнитное поле, которое может добавить помех к работе усилителя. 

Защита Ctrl-Amp две зоны

Защита Ctrl-Amp одна зона

Блок дежурного питания

Этого модуля давно не хватало в системе. Он позволяет запитать контроллер, защиту и плавно включить усилитель мощности. Кроме того, на плате предусмотрен фильтр от постоянной составляющей в сетевом напряжении, что очень полезно для тороидальных трансформаторов. Можно собрать три варианта дежурного БП:

  • Классический Soft-start.
  • Soft-start c использованием Термистора.  Реле K1 и резисторы R1, R2 не устанавливаются, вместо резисторов устанавливается термитор. В настройках контроллера устанавливается нулевая задержка soft-start. 
  • Без Soft-start. Реле K2 и резисторы R1, R2 не устанавливаются. В настройках контроллера устанавливается нулевая задержка soft-start. 

Это возможно благодаря прошивке, которая при установке задержки включает реле K1 и K2 последовательно, а при нулевой задержке включает оба реле одновременно. При включении реле К2 открываются ключи Q1 и Q2, подавая питание на платы защиты. 

Ctrl-Amp2 - Схема дежурного БП

Данная схема вполне умещается на плату 75x75мм:

Ctrl-Amp2 Дежурный БП

Ctrl-Amp2 Дежурный БП

Грабли на пути к совершенству

Как оказалось, сам контроллер STM32 и его библиотеки CubeMX + HAL содержат неприятные ошибки. Когда что-то пишешь для него в первый раз, вся легкость в конфигурировании и использовании периферии превращается в ад. Если что-то работает не так, приходится все равно докапываться до самых основ, попутно разбираясь в чужом коде библиотек. Поэтому кратко опишу, с чем я столкнулся и как это решается. Надеюсь, таким же, начинающим, как я, это поможет:

I2C. Существенную задержку в реализацию проекта внесла работа аппаратной части I2C. Шина, прекрасно работавшая на макетной плате с длинными проводами и плохими контактами, отказалась работать в реализации на плате. Совершенно случайным образом она впадала в состояние BUSY. Поднятие ног микросхем SDA  и SCL на плате, подключение их Dip-версий проводами на макете решало проблему, шина снова стартовала, а я терялся в догадках. Замена микросхем, уменьшение резисторов подтяжки, снижение частоты шины проблему не решали. 

Погружение в тему показало, это известная проблема, описанная в Errata на чип. На ногах SDA и SCL контроллера предусмотрен не отключаемый аналоговый фильтр, который должен служить увеличению помехозащиты. Однако, при старте контроллера и инициализации периферии, он может приводить к зависанию шины в состоянии BUSY. Так же Errata предлагает метод решения, очень похожий на "постучать по колесам, похлопать дверями":

  • после инициализации I2C отключить шину
  • перевести соответствующие ноги порта в режим выхода
  • записать в  них 1, 0, прочитать результат
  • сбросить флаги и снова инициализировать шину

К счастью этот способ сработал, и удалось добиться надежной работы. Перевод рекомендаций Errata в код с использованием библиотек HAL выглядит следующим образом:

// Реинициализация I2C для сброса BUSY по Errata
 GPIO_InitTypeDef GPIO_InitStruct;
 I2C1->CR1 &= ~(I2C_CR1_PE); // Выключение I2C
 GPIO_InitStruct.Pin = I2C_SC_Pin|I2C_SD_Pin;  // порты i2c на выход с открытым коллектором
 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;  //
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; //
 HAL_GPIO_Init(I2C_Port, &GPIO_InitStruct);   //
 GPIOB->ODR |= I2C_SC_Pin|I2C_SD_Pin; // set tо 1
 GPIOB->ODR &= ~I2C_SD_Pin; // set SD tо 0
 GPIOB->ODR &= ~I2C_SC_Pin; // set SC tо 0
 GPIOB->ODR |= I2C_SC_Pin; // set SC tо 1
 GPIOB->ODR |= I2C_SD_Pin; // set SD tо 1
  // повторная инициализация ног для I2C
 GPIO_InitStruct.Pin = I2C_SC_Pin|I2C_SD_Pin;
 GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);    SET_BIT(RCC->APB1ENR, RCC_APB1ENR_I2C1EN); // тактирование i2c    I2C1->CR1 |= I2C_CR1_SWRST; // сброс флагов
 I2C1->CR1 &= ~(I2C_CR1_SWRST); // сброс флагов
 I2C1->CR1 |= I2C_CR1_PE;   // повторная инициализация I2C
 MX_I2C1_Init()

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

hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE; 

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

// Запуск RTC вручную вставить после RTC_INI
 if(!(*(volatile uint32_t *) (BDCR_RTCEN_BB)))__HAL_RCC_RTC_ENABLE();

Часовой кварц.  Во первых, не каждый кварцевый резонатор подойдет. Использование самых доступных деталей из материнских плат может привести к разочарованию - емкость резонатора для часов должна быть 6пф. Но даже купленный кварц SP-T2A с нужной емкостью преподнес сюрприз - точка на корпусе вовсе не означает маркировку первой ноги, все с точностью до наоборот! Вот пример, как не надо припаивать подобные устройства:

Часовой кварц

Что дальше?

Как показал опыт первого контроллера, на этом все не закончится :).  К сожалению я не успел реализовать все, что было задумано применительно к STM.  Изучение STM оказалось несколько сложнее, чем Atmega, но при этом значительно интереснее! На текущий момент планы на будущее данного контроллера выглядят следующим образом:

  • Добавить более красочную заставку анализатора спектра, возможно с настройками отображения, причесать графику
  • Добавить поддержку четырех каналов и регулировку фронт-тыл
  • Аттенюатор на каждый вход
  • Научить контроллер работать с наиболее распространенными процессорами TDA74XX и PT232X. Конечно к качественному звуку это не имеет никакого отношения, но интересно сделать еще более универсальную и гибкую систему. 
  • Попробовать ловить клип на данных с АЦП и на основе этого не давать увеличивать громкость в этом случае
  • Может добавить таймер на выключение и включение 
  • Разобраться с boot loader для обновления прошивки по USB
  • Подключить по USART ESP8266 и попробовать сделать управление по сети и отказаться от экрана совсем :D !

Надеюсь, найду время на воплощение этих идей. Все новости по контроллеру, обновление прошивки,  вопросы и ответы ищите в ветке форума по Ctrl-Amp

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
Контроллер
U1 Линейный регулятор
L7805AB
1 TO-252Поиск в магазине ОтронВ блокнот
U2 МК STM32
STM32F103C8
1 LQFP-48Поиск в магазине ОтронВ блокнот
U3 Линейный регулятор
AMS1117-3.3
1 SOT-23Поиск в магазине ОтронВ блокнот
U4 Операционный усилитель
LMC6482
1 SO-8Поиск в магазине ОтронВ блокнот
U5 EEPROMAT24C02 I2C 2Кбит1 SO-8Поиск в магазине ОтронВ блокнот
U6 ИС I2C интерфейса
PCF8574A
1 SOP-16Поиск в магазине ОтронВ блокнот
T1, T2 Биполярный транзистор
MMBT3904
2 SOT23Поиск в магазине ОтронВ блокнот
D1 Диод Шоттки
SS14
1 SMAПоиск в магазине ОтронВ блокнот
PH1 ИК-приемикTL18381 Поиск в магазине ОтронВ блокнот
C1, C5, C13, C14, C15, C16 Конденсатор0.1 мкф6 1206Поиск в магазине ОтронВ блокнот
C2, C3, C4, C7, C12 Конденсатор10 мкф5 1206Поиск в магазине ОтронВ блокнот
C8, C9, C10, C11 Конденсатор22 пф4 1206Поиск в магазине ОтронВ блокнот
Q1 Кварц32.768 кГц 6пф1 Поиск в магазине ОтронВ блокнот
Q2 Кварц8 мГц1 HC49Поиск в магазине ОтронВ блокнот
R1, R2, R11, R12, R20, R21 Резистор
4.7 кОм
6 1206Поиск в магазине ОтронВ блокнот
R3, R4, R13, R14, R18, R19 Резистор
10 кОм
6 1206Поиск в магазине ОтронВ блокнот
R5 Резистор
470 Ом
1 1206Поиск в магазине ОтронВ блокнот
R6 Резистор
1.5 кОм
1 1206Поиск в магазине ОтронВ блокнот
R7, R8 Резистор
22 Ом
2 1206Поиск в магазине ОтронВ блокнот
R15 Резистор
20 кОм
1 1206Поиск в магазине ОтронВ блокнот
R16 Резистор
100 Ом
1 1206Поиск в магазине ОтронВ блокнот
R17 Резистор
1 мом
1 1206Поиск в магазине ОтронВ блокнот
R9, R10 Подстроечный резистор50 кОм2 3266Поиск в магазине ОтронВ блокнот
X1, X3, X8 РазъемS4B-XH-A3 Вилка на плату угловая XH 2.5мм 4 контактаПоиск в магазине ОтронВ блокнот
X2, X6 РазъемS5B-XH-A2 Вилка на плату угловая XH 2.5мм 5 контактовПоиск в магазине ОтронВ блокнот
X4, X5, X13 РазъемS3B-XH-A3 Вилка на плату угловая XH 2.5мм 3 контактаПоиск в магазине ОтронВ блокнот
X7 РазъемPLS-9R1 Вилка угловая 9 контакторвПоиск в магазине ОтронВ блокнот
X9 РазъемPLD-41 Вилка 4 контактаПоиск в магазине ОтронВ блокнот
X10, X12 РазъемPLS-32 Вилка 3 контактаПоиск в магазине ОтронВ блокнот
X11 РазъемPLS-41 Вилка 4 контактаПоиск в магазине ОтронВ блокнот
X14 РазъемPBS-141 Гнездо 14 контактовПоиск в магазине ОтронВ блокнот
 
Защита
U1, U3 Оптопара
PC814
2 DIP-8Поиск в магазине ОтронВ блокнот
U2, U4 Операционный усилитель
LM321
2 SOT-23-5Поиск в магазине ОтронВ блокнот
Q1, Q2, Q3, Q4 MOSFET-транзистор
MMBF170
4 SOT-223Поиск в магазине ОтронВ блокнот
D1, D2, D3, D4 Выпрямительный диод
PMLL4148L
4 MiniMelfПоиск в магазине ОтронВ блокнот
C1, C3 Электролитический конденсатор47мкф NP2 Поиск в магазине ОтронВ блокнот
C2, C4 Электролитический конденсатор4.7мкф2 Поиск в магазине ОтронВ блокнот
R1, R4, R9, R12, R6, R8, R14, R16 Резистор
10 кОм
8 1206Поиск в магазине ОтронВ блокнот
R2, R10 Резистор
100 кОм
2 1206Поиск в магазине ОтронВ блокнот
R3, R11 Резистор
1 кОм
2 1206Поиск в магазине ОтронВ блокнот
R5, R7, R13, R15 Резистор
24 кОм
4 1206Поиск в магазине ОтронВ блокнот
X7, X15 РазъемB2B-XH-A2 Вилка на плату XH 2.5мм 2 контактаПоиск в магазине ОтронВ блокнот
X8, X16 РазъемB3B-XH-A2 Вилка на плату XH 2.5мм 3 контактаПоиск в магазине ОтронВ блокнот
X5, X6, X13, X14 РазъемВилка 6.3мм4 Поиск в магазине ОтронВ блокнот
X1, X3, X9, X11 РазъемТерминал Banana Красный4 Резьба 5ммПоиск в магазине ОтронВ блокнот
X2, X4, X10, X12 РазъемТерминал Banana Черный4 Резьба 5ммПоиск в магазине ОтронВ блокнот
K1, K2, K3, K4 РелеSMIH-12VDC-SL-C4 Поиск в магазине ОтронВ блокнот
 
Дежурный БП
Q1, Q2 Биполярный транзистор
BC807
2 SOT23Поиск в магазине ОтронВ блокнот
D1 Выпрямительный диод
STTH2003
1 D2-PACПоиск в магазине ОтронВ блокнот
D2, D3, D4, D5 Диод Шоттки
SS14
4 SMAПоиск в магазине ОтронВ блокнот
D6, D7 Выпрямительный диод
PMLL4148L
2 MiniMelfПоиск в магазине ОтронВ блокнот
R1, R2 Резистор
68 Ом
1 SQP 5WПоиск в магазине ОтронВ блокнот
R3, R4, R5, R6, R7 Резистор
470 Ом
5 1206Поиск в магазине ОтронВ блокнот
R8, R10, R9, R11 Резистор
4.7 кОм
4 1206Поиск в магазине ОтронВ блокнот
C1 Конденсатор100 нф1 MKP X2Поиск в магазине ОтронВ блокнот
C2 Конденсатор220 нф1 MKP X2Поиск в магазине ОтронВ блокнот
C3, C4 Конденсатор10000 мкф2 16ммПоиск в магазине ОтронВ блокнот
C7 Конденсатор4700 мкф1 16ммПоиск в магазине ОтронВ блокнот
C5, C6 Конденсатор100 нф2 1206Поиск в магазине ОтронВ блокнот
K1, K2 Реле835-1A-B-C2 Поиск в магазине ОтронВ блокнот
L1 Синфазный дроссельPLY101 Поиск в магазине ОтронВ блокнот
T1 ТрансформаторТП-1321 Поиск в магазине ОтронВ блокнот
X1, X2, X3 РазъемDS1072-3M3 Вилка на плату 3.96ммПоиск в магазине ОтронВ блокнот
X4, X5 РазъемB2B-XH-A2 Вилка на плату XH 2.5мм 2 контактаПоиск в магазине ОтронВ блокнот
X6 РазъемB4B-XH-A1 Вилка на плату XH 2.5мм 4 контактаПоиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: Изменена: 07.12.2019 0 2
Я собрал 0 Участие в конкурсе 8
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 8 чел.

Комментарии (33) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
Nem0 #
Серьезный проект! Достойный!
Ответить
0

[Автор]
Signus #
Спасибо! Мне особенно приятна ваша оценка, учитывая, что все это безобразие началось со сборки вашей ОМ2.5 :)
Ответить
0
Савелий #
Отличный проект. Слышали-ли вы о Sigma DSP от Analog devices? Заранее спасибо за ответ.
Ответить
-1

[Автор]
Signus #
Да, читал про этот камушек, но в руках не крутил и не слышал.
Ответить
0
Евгений-435 #
Отличный проект! Обязательно буду повторять. Одно не понравилось: здоровенная цифра -41 и маленький анализатор спектра, может быть цифру уменьшить, а анализатор увеличить/растянуть?.
Прикрепленный файл: 2019-12-05.png
Ответить
0

[Автор]
Signus #
Евгений, это первый пункт планов - "Добавить более красочную заставку анализатора спектра". Хочу добавить в настройки выбор заставки и сделать полноэкранную версию. Громкость специально увеличил после прикидок, а то экран достаточно мелкий.
Ответить
0
Евгений-435 #
Отлично, то что надо! А печатными платами поделитесь?
Ответить
0

[Автор]
Signus #
Платы будут доступны в готовом виде.
Ответить
0
Евгений-435 #
Когда они будут готовы? Не жмитесь, выложите печатки или гербер файлы.
Ответить
0

[Автор]
Signus #
Они уже есть.
Ответить
0
Евгений-435 #
Хоть вы и жадина, всё равно за вашу статью проголосовал. Сколько плата контроллера стоит?
Ответить
0

[Автор]
Signus #
Выложена вся достаточная информация для повторения. Далеко не у всех есть возможность припаять например STM32, но каждый может нарисовать все под свои детали. Как вариант - плату Blue Pill с питанием и кварцами поставить на свою плату с памятью, PCF и буфером для АЦП.
Ответить
0
Derskij #
А где можно как можно их получить?
Ответить
+1
Динар #
Хорошая статья, но без печаток про нее забудут!
Ответить
0
Зокир #
Ну наконец то, дождался. Есть тема для работы. Начнем со сборки элементной базы. Спасибо за проект.
Ответить
0
Валерий #
Чтож ты наделал, я только познакомился с stm32, и хотел на нём переделать свой усил, который сейчас управляю ардуиной. А ты уже все сделал, да ещё так круто, что уже нечего улучшать...
Ответить
0
andro #
Классный проект, всё хорошо продуманно, это тот случай, когда вещь становится хитом.
Ответить
0
Co_balt #
Подойдет ли на плату контроллера такой ИК-приемник TSOP31238 взамен TL1838 ?
Ответить
0

[Автор]
Signus #
Плата разведена под датчики с ногами Out/Gnd/VCC, у TSOP31238 ноги Gnd/VCC/Out. На плату не встанет, но можно вывести на проводах, работать должен.
Ответить
0
klaid1971 #
Скрещивать ноги, помещая их в изоляцию никто не запретил
Ответить
0

[Автор]
Signus #
Да, или так, только их все придется переплести
Ответить
0
Co_balt #
Плата может быть разведена только не видно ни в герберах ни в продаже. Буду разводить сделаю 4 контакта Out/Gnd/VCC/Out
Ответить
0
Ильдус #
Делаю аналогичный Вашему проект, под свои нужды. Аппаратная часть уже почти готова, сделана на китайской платке с МК.
Для своего проекта, Ваш проект не могу приделать технически. Не могли бы Вы предоставить свою программу для МК в виде исходного кода. За разумные деньги готов ее купить. Вы получите оплату, а я не буду тратить свое время.
Ответить
0

[Автор]
Signus #
Исходные коды проекта выкладываться в общий доступ не будут, продаваться тоже.
Ответить
0
Andrei #
Добрый день. Очень интересный проект получился. Расскажите пожалуйста подробнее, как идёт отрисовка интерфейса и примитивов на дисплее? Есть массив с изображением, который пуляется через dma? Или выбранная область экрана каждый раз перерисовываается?
Ответить
0

[Автор]
Signus #
Стараюсь перерисовывать только изменения экрана, так как шина у дисплея последовательная. Естественно вывод с DMA на максимально возможной частоте шины.
Ответить
0
BARS_ #
Отличный проект на твердые 5 из 5! Подскажите, по скольким точкам делаете FFT и какую полосу захватываете?
Ответить
+1

[Автор]
Signus #
64 точки, частота была 36кгц, поднял до 40. Соответственно сигнал отображается до 20 кГц.
Ответить
0
BARS_ #
А как решили проблему подстройки под амплитуду сигнала?
Ответить
0
Сергей #
"применен компаратор U2 TS321" исправьте пожалуйста в тексте на LM321?, повелся, и не посмотрел в даташит. У TS321 другая распиновка нежели LM321, работать защита не будет.
Ответить
0

[Автор]
Signus #
На фото в статье именно TS321, прекрасно все работает. Что мешает впаять ОУ правильно?
Ответить
0
Сергей #
В смысле, что мешает? Ваша плата защиты разведена под LM321. A у TS321 цоколевка отличается от LM. Предлагаете so8 паять навесным на волосинках?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Конструктор - темброблок на LM1036
Конструктор - темброблок на LM1036
Регулятор мощности 2 кВт Бокс для хранения компонентов
вверх