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

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » ! Санькины ПЛЮШКИ ! » Hi-End усилитель мощности с микроконтроллерным управлением


Hi-End усилитель мощности с микроконтроллерным управлением

Сообщений 1 страница 9 из 9

1

Файлы проекта лежат по ссылке

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

Усилитель имеет следующие блоки:
- Узел дежурного питания 12 В;
- Узел сетевого фильтра, защит и ступенчатой подачи питания на силовой трансформатор;
- Узел аналоговой обработки сигналов и защиты АС;
- Узел управления передней панелью ( графический дисплей, сенсорные кнопки, ИК-приемник пульта ДУ, сенсорный регулятор громкости с круговой индикацией)
- Собственно платы усилителей мощности.

Дежурное питание 12 В осуществляется от готового импульсного блока, основное - через линейный тороидальный трансформатор мощностью около 300 Вт с обмотками ~2х42 В (=2х50 В на выходе блока питания) и ~2х15 В для питания ОУ. Подача питания на силовой трансформатор осуществляется ступенчато, в две ступени: предварительное питание и полное, поскольку выпрямитель нагружен на батарею конденсаторов большой емкости (60 000 мкФ).

Сетевой фильтр типовой, содержит предохранитель, варистор, конденсаторы, синфазный фильтр, термопредохранитель. С сетевого фильтра напряжение 220 В поступает на реле ступенчатого включения силового трансформатора. Первая ступень включается с понижением напряжения на двух включенных параллельно керамических резисторах по 560 Ом. Термопредохранитель на 85°С имеет тепловую связь с этими резисторами (расположен между ними) и предназначен для отключения узла в аварийном случае невключения второй (полной ступени). Реле управляются от узла аналоговой обработки сигналов (АТТ) по команде микроконтроллера.

Узел аналоговой обработки сигналов (АТТ) содержит стабилизатор питания +5 В от дежурного напряжения +12 В, ключи управления реле ступенчатого включения нагрузки, выпрямитель и стабилизаторы питания -15 и +15 В для питания аналоговой части, управляющий микроконтроллер, микросхемы управления громкостью (цифровой аттенюатор PDA2310) и преобразования балансного сигнала в небалансный. Выбор источника сигнала осуществляется через малогабаритное специализированное сигнальное реле от управляющего МК.

Узел передней панели (PANEL) содержит микроконтроллер, ИК-приемник сигналов пульта ДУ (стандарта NEC) с возможностью обучения разным пультам, часы реального времени на DS3231, разъемы для подключения двух термодатчиков (защита от перегрева усилителя мощности), разъем для подключения графического дисплея, и разъем для подключения сенсорного регулятора громкости. Также узел содержит два интегрированных сенсора - включение питания и выбор источника сигнала.

Сенсорный регулятор громкости (ROLLER) построен на микросхеме TTP229 c 16-ю сенсорными площадками, расположенными по кругу, а сенсорный датчик MUTE на TTP223. Узел расположен на круглой печатной плате, прижатой к передней панели из оргстекла толщиной 1,5 мм. Вокруг него размещено кольцо с 16-ю адресными светодиодами, которые через рассеиватель индицируют регулировку громкости.

Узлы ATT и PANEL связаны между собой только одной 4-проводной линией связи UART, по которой узлы обмениваются между собой командами и данными. При этом узел PANEL является ведущим, а узел ATT - ведомым.

ПО микроконтроллеров написано на Bascom AVR (версия компилятора 2.0.8.5).

Основной модуль прошивки панели содержит в имени файла main, модуль определений def, модуль конфигурации cfg. Используется внешняя библиотека glcdSSD1306-I2C_V2.lib для графических дисплеев на чипах семейства SSD1306 с интерфейсом I2C.
Панель может находиться в различных состояниях, определяемых константами const MODE_ххх.
Основные состояния - это MODE_STANDBY и  MODE_WORK. Смена режимов может осуществляться непосредственно, изменением значения переменной workmode, но главным образом, при помощи процедуры chmod(mode), которая по мере необходимости производит некоторые действия при смене режима. При включении, после инициализации, МК переходит в состояние MODE_STANDBY командой chmod MODE_STANDBY. В этом режиме на экране с пониженной яркостью отображается текущее время (т.е. аппарат выполняет функцию часов).

Обработка кнопок

Аппаратные кнопки (сенсоры) приводятся к кнопкам ПДУ. Все возможные внутренние коды кнопок определены константами const KEY_ххх. Коды кнопок, поступающие с ПДУ, переводятся в  эти аппаратные коды (internal) при помощи процедуры lookup_key(ir_cmd) в результате просмотра EEPROM, где хранятся коды кнопок ПДУ (native). Internal коды могут быть переведены в нативные коды при помощи массива eram_key_code(KEY_ххх), картированного на EEPROM. Все это сделано ради возможности заменять нативные коды ПДУ при помощи процедуры обучения.

Поэтому основная процедура обработки нажатия клавиш использует именно нативные коды. Далее, если режим работы НЕ ОБУЧЕНИЕ, она переводит нативный код кнопки во внутренний код KEY_ххх, и, в зависимости от рабочего режима, вызывает обработчик кнопок key_proc_ххх того или иного режима. Каждый такой обработчик содержит код реакции на те кнопки, которые должны в этом режиме обрабатываться.

Связь

Связь однобайтная. Обработчик прерывания UART выставляет флаг, который обрабатывается в основном цикле. Там же разбирается значение поступившего байта. Если выставлен бит 7 или 6, то в младших битах содержится значение громкости для VU-метра, поступившее от АЦП МК модуля ATT. Иначе если выставлен бит 4, то модуль АТТ сигрализирует о срабатывании защиты колонок. При поступлении такого кода более, чем MALFUNCTION_LIMIT раз, МК уходит в режим неисправности и, после индикации сообщения, выключает аппарат.
Передача в ATT организована аналогично путем последовательного выставления битов, начиная со старшего; используются команды установки аттенюатора LINK_P2A_SET_DB, выбора входа LINK_P2A_INSEL, включения и выключения LINK_P2A_POWER_ON и LINK_P2A_POWER_OFF.

Сенсорная панель

Чип TTP229 при изменении состояния сенсорных площадок кратковременно выставляет на линии данных ВЫСОКИЙ уровнеь, что сигнализирет МК о том, что можно подавать тактовые импульсы на вход CLK микросхемы и считывать с линии данных 16 бит состояния площадок.
За это отвечает прерывание int_roller. После считывания состояния площадок в sens_new_key оно выставляет флаг sens_flag, который обрабатывается в основном цикле. Стоит заметить, что TTP229 сконфигурирован так, что сигнализирует соответстующим битом состояние каждой площадки (режим multi touch).
Обработчик флага sens_flag в основном цикле определяет, началось ли новое движение по серсорным площадкам, и вычисляет направление вращения, выдавая в итоге key_press eram_key_code(KEY_VOLMINUS) или key_press eram_key_code(KEY_VOLPLUS). В рабочем режиме MODE_WORK обработчик key_proc_work() по этим командам выдает в ATT команды управления громкостью через set_volume(value), а также управляет световым кольцом индикации через ring_set_led (num_led, R, G, B), устанавливая цвет нужных светодиодов (тот, что находится под пальцем при ручной регулировке (флаг roller_flag установлен) или пропорционально громкости - при регулировке с ПДУ. За постепенное затухание индикации отвечает таймер 0, флаг которого обрабатывается в основном цикле и вызывает декремент всех горящих светодиодов.

ИК-декодер

Поскольку в Bascom нет встроенного декодера пультов системы NEC, декодирование осуществляет код, который помещен в прерывание захвата таймера 1 int_cap1(). Здесь измеряются интервалы между импульсами и выдается два флага -  основной ir_recieved и вспомогательный ir_repeat. Флаги обрабатываются в основном цикле. При этом только для части клавиш реализуется повтор нажатий: KEY_LEFT, KEY_RIGHT, KEY_UP, KEY_DN, KEY_VOLPLUS и KEY_VOLMINUS. Для всех остальных клавиш многократный повтор игнорируется.

Секундный таймер

В качестве секундного использован таймер 2, по флажку которого timer2_flag в дежурном режиме обновляется индикация часов, а в рабочем - верхняя строка индикации на дисплее: вход, температура термодатчиков, время.

Игровой таймер

В качестве игрового также используется таймер 2, по флажку которого game_timer в игровых режимах вызывается интерфейс игрового модуля game_cycle.

Игры

В качестве пасхалки реализованы три игры: змейка, динозаврик и пакмэн. Игры можно вызвать из меню about нажатием кнопок 1, 2 или 3 на ПДУ.
Поскольку игры реализованы через игровой интерфейс, который предоставляет прототипы классов, сравнительно просто можно менять их количество и тип, подключая собственный код.
Также в папку games вынесена отдельная реализация игрового интерфейса без всех остальных функций. В принципе это позволяет использовать игры в любых других проектах, просто перенеся код.

Игровой интерфейс реализован в файле games, и содержит три внешних прототипа, которые вызывает внешний управляющий код. Это game_init_interface(), вызов которого обязателен и служит начальной инициализации модуля, game_init_game(game_num) инициализирует соотв. игру (и дальше все операции будут производиться с игрой game_num, покуда метод не будет вызван с другим номером игры; и game_cycle(), вызываемый таймером основного модуля для каждого игрового цикла (шага).
Сами игры специфицированы в вызовах процедуры game_init_interface(), путем ссылки на процедуру инициализации игры, на игровой цикл, на процедуру обработки клавиш, указания частоты таймера и имени игры, которое будет отображаться в консоли. Таким образом, каждая игра должна содержать в себе реализацию трех методов: инициализация, игровой цикл (шаг), обработчик кнопок.

+2

2

https://upforme.ru/uploads/0000/25/b8/2070/t438009.png
https://upforme.ru/uploads/0000/25/b8/2070/t706784.png
https://upforme.ru/uploads/0000/25/b8/2070/t332977.png

+3

3

Вопросы и критика по коду и смехотехнике приветствуются!

0

4

А там есть схема в графическом формате?
Я видел только KiCad, но его у меня нет, так как новый требует win64, а моему компу лет 15 ))) и смысла ставить 64 просто не вижу...

0

5

Александр Д. написал(а):

А там есть схема в графическом формате?
Я видел только KiCad, но его у меня нет, так как новый требует win64, а моему компу лет 15 ))) и смысла ставить 64 просто не вижу...

Там просто довольно много схем - поблочно. Но я могу, в общем-то, сохранить как графику.

https://upforme.ru/uploads/0000/25/b8/2070/t969156.png
https://upforme.ru/uploads/0000/25/b8/2070/t891428.png
https://upforme.ru/uploads/0000/25/b8/2070/t518180.png
https://upforme.ru/uploads/0000/25/b8/2070/t262463.png

Аттенюатор все-таки используется PGA2310 (питание +- 15 В), а не PGA2311 (пятивольтовый).

В блоке ROLLER резистор R10 к паду TP7 не устанавливается.
Назначение резисторов, которые служат для задания конфигурации TTP229BGF, можно посмотреть в следующей таблице:

https://upforme.ru/uploads/0000/25/b8/2070/t60011.png

+1

6

Что реально дало такое разделение минуса питания на R1, R2 и R9
Для чего обмотка реле запитана через резистор?
Не понял, как работает модуль защиты, а именно U9, U11 и U12 через Q1 и R14

60000 uF не страшно так заряжать? :)

0

7

Александр Д. написал(а):

Что реально дало такое разделение минуса питания на R1, R2 и R9

Разрыв токовой петли между силовой и сигнальной массой. Снижение шумов и искажений.

Для чего обмотка реле запитана через резистор?

Греется. Нет необходимости питать его полным напряжением.

Не понял, как работает модуль защиты, а именно U9, U11 и U12 через Q1 и R14

Оптроны 814 (в отличие от показанного на схеме символа) - униполярные. При появлении постоянного напряжения любой полярности на выходе УНЧ униполярный конденсатор С10 (С11) заряжается до напряжения открытия отпрона. Оптрон открывается, вызывая рост напряжения на резисторе R14 и открытие Q1. Открытый Q1 приводит к закрытию Q2 и отключению реле, а также открытию оптрона U13, сигнализирующего по линии SPRT в МК о срабатывании защиты.
Оптрон U9 служит для управления защитой (отключения АС) от МК по линии SPDIS (SPeaker DISable). Это управление требуется для принудительного отключения АС на некоторое время при старте, а также сразу после выключения усилителя, во избежание появления любых возможных щелчков в АС, вызванных переходными процессами в УНЧ.

60000 uF не страшно так заряжать?

Так (через двухступенчатое включение) - не страшно. Страшно разряжать (случайное замыкание приводит к страшному бабаху!). Поэтому в реальном аппарате параллельно емкостям стоят резисторы 2 Вт сопротивлением порядка 2...4 кОм для их постепенной разрядки (на схеме не показаны). Без этого даже спустя время лазить в силовые цепи чревато мега-бабахом. Также параллельно батарее электролитов установлены пленочные конденсаторы 4,7 мкФ (по одной штуке) для снижения внутреннего сопротивления источника питания на высоких частотах (на схеме не показаны).

+1

8

Александр Д. написал(а):

Что реально дало такое разделение минуса питания на R1, R2 и R9

Вообще вопрос правильной разводки земель - ключевой для мощных усилителей высокой точности.
Следует, во-первых, разделять понятия силовой и сигнальной земли, ориентируясь на просадки напряжения на отнюдь ненулевом сопротивлении проводов. При этом сигнальная земля должна быть подключена своим проводом к точке, имеющей наименьшие просадки. Как правило, эта точка называется "меккой" и расположена как можно ближе к конденсаторной батарее. Выходные каскады усилителей подключаются к этой точке также своим отдельным проводом. Чтобы уменьшить протекание тока между этими двумя точками, которые все-таки должны быть соединены в схеме усилителя, их разделяют резистором 2...10 Ом.
Также следует избегать возникновения других "земляных" петель, по которым мог бы протекать ток, вызыванный неодинаковым падением напряжения на "земляных" цепях. Поскольку полностью избежать этого можно только в конструкции "двойное моно", в конструкции с двумя каналами в одном корпусе нужно принимать меры для разрыва петлевых токов.
Кроме того, следует (чаще всего экспериментально) выбрать точку подключения корпуса устройства, если он металлический. В любом случае, корпус должен соединяться с землей строго в одной точке. Начинать лучше с точки входных разъемов. Здесь сигнальные "земли" от обоих каналов обычно сходятся в одну точку и имеют соединение с корпусом аппарата. Во избежание петли "земля у разъема левого канала" - "плата усилителя левого канала" - "мекка" - "плата усилителя правого канала" - "земля разъема правого канала" также можно включить резисторы небольшого сопротивления. Экранирующие оплетки кабелей между входом усилителя и входными разъемами (или, в данном случае, разъемами аттенюатора) подключаются к "земле" только с одной стороны - со стороны усилителя. Внутри экрана проходят два провода - земли и  сигнала.
Радиаторы усилителей должны быть также изолированы от корпуса и соединяться с ним в одной точке, возможно, через небольшой резистор, который может выгорать в случае, если изоляция выходных транзисторов пробилась на радиатор.
Цифровая "земля" также соединяется с аналоговой по возможности в одной точке. В остальном эти земли должны быть полностью разделены. Не должно быть никаких иных прямых или косвенных их соединений (например, сглаживающие или фильтрующие конденсаторы от цифрового питания или других цепей должны быть подключены исключительно к цифровой же "земле").

+1

9

Правильная разводка земель не только сильно влияет на уровень шумов, но также радикально влияет на искажения, т.к. цепь ОС измеряет сигнал относительно земли, и крайне важно, относительно чего же на самом деле происходит измерение.
В целом следует ориентироваться на разводку "земель" по схеме "звезда", сводя все проводники в одну точку, называемую "меккой", которая запитана от батареи конденсаторов. Сюда же приходит средний отвод силовой обмотки трансформатора. Если где-то возникает по необходимости местное соединение "лучей" звезды, следует соединять их через резистор сопротивлением в 10...100 раз больше сопротивления проводов "лучей". Это предотвратит образование магнитной петли как витка трансформатора, набирающей в себя помехи.

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

Разводка платы аналоговых сигналов выполнена с учетом этих требований.
Стоит обратить внимание, что микросхема PDA2310 имеет буквенный индекс UA (отобранная по THD+N < 0.0004%) и произведена именно фирмой Burr-Brown (на обратной стороне корпуса имеется круглый углубленный штамп с буквами ВВ). Рыночная цена этих ИС не менее $9 в партии от 1000 шт, так что чипы, предлагаемые дешевле - с большой вероятностью перемаркированные аналоги от Crystal Sound (CS3310), предназначенные для цифровых приставок и имеющие гораздо худшие показатели. Повезет, если более низкая цена - это выбраковка оригинала, связаная с нарушением условий хранения (например, окислились выводы микросхемы, мне такая попадалась. После очистки нормально паяется).
Стоит добиваться у продавца фотографий корпуса микросхемы, в том числе с обратной стороны, и пояснений за цену, если она менее $10 за штуку.
Поскольку микросхема имеет раздельные аналоговые земли (правый и левый канал) и цифровую землю, то они должны быть соединены именно около нее (см. даташит с примером правильной разводки).

+1


Вы здесь » Программирование ATMEL в BASCOM. » ! Санькины ПЛЮШКИ ! » Hi-End усилитель мощности с микроконтроллерным управлением